ソフトウェアの法則
(52)

ソフトウェアとスポーツジム


── 技術の空洞化

 社会人になったばかりの娘が、何やらパンフレットを見ながら真剣に考えこんでいる。聞いてみると、学生時代と違って普段運動不足になりがちなので、フィットネスクラブに通って水泳でもしようかしらと検討しているのだという。バブル景気華やかなりし頃は新聞の折り込み広告で派手に宣伝していたのに、バブルがはじけて以後フィットネスクラブはいずこも経営難で、一部では閉鎖してしまったところもある。パンフレットを見ると、最近の広告は一味違っていて「入会金ゼロ」とか「無料体験コース」を設けたりと、サービス内容の充実で会員集めの努力をしているようである。

 こういったスポーツジムでは、様々な運動器具が用意されていて、それを使うと肉体のどの部位が鍛えられるかなどが細かく図解されボードに張ってあったりする。そして個々人の年齢・身長・体重はもちろんのこと、血圧、脈搏などの基礎データをもとにして指導員が個別のメニューを作ってくれて、それにしたがって自分の体力に合ったトレーニングができるようになっている。実際に運動をすると、その運動で消費した熱量を計算してくれて各自の体力評価を数字で示してくれる。至れり尽くせりの結構なサービスではある。

 なぜ私がそんなに詳しいかというと、私も以前はスポーツジムに通っていたことがあるからだ。しかし、ジムの室内より戸外で運動することの方がはるかに気持ちが良いことを知ってからは、滅多に行くこともなくなってしまった(もっとも、今でも花粉の飛ぶ春先のシーズンだけは、できるだけ戸外でのスポーツは避けスポーツジムを利用するようにしてはいるが)。
 バーベルを持ち上げたりランニングマシンの上で走ったり、あるいはサイクリングマシンを必死でこいだりして汗を流すのである。最近は、若者ばかりでなく働き盛りのサラリーマンや中高年の年配の人たちも増えてきている。女性も多い。

 このように、老若男女がスポーツに精を出すのは素晴らしいことである。そもそも人類は、大昔は自分で狩りをして原野を走り回り、自ら獲物を捕獲してはそれを食して生きてきたはずなのである。しかし現在の我々は「頭脳労働」と称する手段を編み出し、自ら身体を動かさなくても食っていけるようにしてしまった。人類の身体的堕落は、実はこのときから始まったといってよい。

 最近の子供たちの体力低下は著しいという。飽食の時代に生きている彼らは、確かに体格だけは立派である。しかし勉強、塾通い、習いごとなどに追い立てられ、遊ぶといってもテレビゲームに夢中になる程度で戸外での遊びの時間はほとんどないといってもよい。その上、電車、自動車、自転車(注1)‥‥と足がわりになるものが多いこの省力化された社会に生きている限り、彼らは体格に見合った体力を維持できなくなってきているのは至極当然のことといえるであろう。体力測定などでよく指摘される筋力、持久力、柔軟性の低下は、慢性的な身体運動の不足からくるものだからである。
【注1】最近は、自転車さえも電動化されてしまっている。


 しかし幸か不幸か、こういった基礎体力の低下があっても当人たちは滅多に不便を実感することはない。そして、生理的な機能にかげりが現れる30代の後半になってはじめて、その影響が現れて身体の不調を訴えるようになるのだ。数十年にわたる運動不足が、やがて心筋梗塞、高血圧、糖尿病、胃潰瘍といった成人病や肥満、腰痛などを引き起こすようになる。つまり体力の低下はすぐに現れるが、病気は数十年という長い歳月を経た後に徐々に現れるというわけである。

 こういった指摘は大抵の人は耳にたこができるほど聞かされており、十分に了解しているはずなのだ。したがって我々は普段からスポーツで身体を鍛えなければいけないという脅迫観念に追い立てられるようにして日々暮らしているといってもよいであろう。運動はしたいが何となく気が進まない、あるいは時間がなくて‥‥などと理由を付けて思い悩んでいる人は多いに違いない。
 しかし一度スポーツをやる習慣が身につくと、それは単に身体を鍛えるとか体力を維持するとかが目的ではなくなってくるから不思議である。実際にスポーツをしてみると分かるが、運動すること自体が楽しみになってくるのである。これはストレスの発散による精神的な効果もあるのであろう。

 モンテスキュー(注2)の「ローマ人盛衰原因論」によれば、古代ローマ人は生活のすべてを戦争技術を磨くためにささげていたという。水浴びやダンスさえも、戦争に備えた鍛練だったのである。一方、面白いことにモンテスキューは、その時代(つまり1700年代)の人々にとってそれらがもはや諭楽でしかなくなっている事実を嘆いている。しかし、何も嘆くことはないのだ。いつの時代にあっても、人間は何事であれ結局は自身の楽しみに変えてしまうものなのだから。
【注2】Montesquieu(1689-1755)フランスの政治哲学者


 古代ローマ人の水浴びやダンスが、現在においては水泳やエアロビクスという名のダンスに変わってしまった。しかもそれだけではなく、運動の目的が戦争に備えての身体作りから自ら楽しむことへと変わってしまったのである。

 コンピュータの分野でも、実は同じようなことが現在進行中である。「部品化」という手法が導入されて以来、多くのプログラマがプログラム作りの機会を失い“運動不足”になりつつある。更に最近では、オブジェクト指向(OO)という技術の導入により、プログラマは益々プログラムを作らなくなってしまった。技術的に難しい部分はプログラミングしなくてもすむような便利な時代になってしまったのである。

 私が大学を出て会社に入ったのは、丁度「オープンショップ制」というものが職場に導入され始めた頃であった。それまではいわば「クローズドショップ制」と呼ばれ、研究者や技術者は何か高度な技術計算をしたい場合は、機械計算を担当する専門のプログラマにその解析からプログラム作りまでの一切の作業を依頼する方法がとられていた(いわば、職業軍人に敵との戦闘一切を任せていた訳ですな)。

 しかしそのような体制では多くの研究者・技術者の多種多様な要求に応えられなくなるのは自明のことであった。そこでオープンショップ制といって、研究者や技術者がプログラマとなって自らプログラムを作ることにしたのである。一定の講習を受けた後に、彼らには高価なコンピュータの使用が許可されるようになった(もちろん限られた形ではあったが)。そして機械計算を担当していた専任のプログラマ達は、技術指導することにより彼らを支援する立場に代わったのである。国民皆兵の時代になった訳である。
 このときに使われたプログラム言語が、あのFORTRANだったのだ。以来、学校でもどこでもFORTRANプログラミング全盛の時代となったのである(ビジネス分野では、COBOLが使われるようになったのは周知のとおり)。

 そして、世の中ではプログラマの不足が叫ばれるようになり、遂には「ソフトウェア危機(Software Crisis)」という言葉が出現するに至った。このままでいくと深刻なプログラマ不足が起り、数年後には全国民(!)がプログラマになったとしても、まだプログラマの数の不足を解消できないだろうと言われるようになってしまった。
 私は当時、自分の両親や兄妹ばかりでなく、隣家の生まれたばかりの赤ん坊までもがプログラマになっている図を一瞬頭に思い描いたものだ。しかし(おのおの方、安心めされよ)もちろん現実はそんな風にはならなかった。

 国民総プログラマ化のはずが、現在ではプログラム作りの機会を失って“プログラミング技術の空洞化”が起ころうとしている。更に、人件費の関係で、ソフトウェア作りの仕事は東南アジア、中国、インドなどの国々に発注した方が安く良いものができると言われるようになってしまった。

 このままでは、日本のソフトウェア業界は早晩よい仕事を失い、技術的な面で衰退していくことであろう。彼らプログラマは、こう言うかもしれない。今は仕事がないだけで、そのうち仕事が来ればプログラミングなんか何時でも再開できると。しかしそう高を括っているうちに、知らず知らずのうちに基礎体力の低下が進み、気が付いてみたらプログラミングができないプログラマになってしまっている。最新のプログラミング技術から取り残され、濡れ落ち葉のような存在になってしまっている自分を発見する、ということになるのではあるまいか。

 それでは、どうしたらよいか。
 我々は将来の戦争に備えて平素からプログラミング技術の鍛練に励み、基礎体力の維持に努めればよい。いや、それだけでは多分長続きしないだろうから、ここは古代ローマ人のひそみにならい“楽しみ”のためのプログラミングを実践すべきであろう。
 プログラマ経験者なら、アルゴリズムを構築することの楽しさを知っているはずだ。そして、コンピュータ上でそのプログラムを実際に実行してみると、案に相違してなかなか思うようには動いてくれないことも知っている。しかしそこであきらめないで、デバッグに取り組み苦心惨澹の末にどうにかプログラムを動かすことに成功したとする。その瞬間の感動と喜び! この種の喜びというのは、苦労した度合いに正比例して大きくなる傾向があり、場合によっては生涯忘れられないほどの素晴らしい体験となることすらある。こういうことは、昔プログラマなら誰でもよく知っているはずのことである。

 あの楽しみを、むざむざと放棄してしまうことはなかろう。もし貴方がプログラム作りから今は離れている存在であるならば、これからは“楽しみ”のためのプログラム作りを始めてはどうか。そのためのプログラミング言語として、私は「スクリプト言語」を勧めたい。スクリプト言語というのは、UNIXにおけるBoneシェルやCシェルのようなコマンド言語のことである。インタプリタで即実行されるので極めて扱いやすいという利点がある。

 楽しみのためのプログラミングとして、私がこれまでやってきた例をここで紹介することにしよう(注3)。私はソフトウェア開発の実務から離れた当座、退屈なので一時期私的な時間にはCプログラムなどを作ったりしていたが、その内にパソコン上でもUNIXのようにシェルプログラムを作れないものかと考えるようになった。
【注3】これは、もしかすると私の自慢話になってしまうかもしれない。自慢話というものは書いている本人は大変気分のよいものである。しかし、その分読まされる人は面白くない。むしろ不快であろう。仮にn人の人が不快(-)に思うとすると、その分自慢している方はn人分の気分のよさ(+)を一人で実感できることになるのではあるまいか。そうであるとすれば、これで全体的なプラスマイナスのバランス(?)はとれていることになる。ご容赦願いたい(??)。


 そこで、MS-DOSのコマンドだけを用いてプログラムを作ること(いわゆるバッチプログラム)に挑戦してみた。そして各種のコマンドを徹底的に使い込んだ結果、条件判定、繰返し、四則演算(整数のみ)などのプログラム作りに必要な基本的な機能がすべて備わっているのを確認することができた。更に、各種のコーディング技法やコーディングスタイルを編み出し、パソコン上でシェルプログラミングの世界を構築することに成功したのである(注4)。この成果を一冊の本(注5)にまとめて出版したところ、読者からはかなりの反応があった。後で出版関係者から聞いたところでは、同じような本を計画していた人が(誰かは知らない)この本を読んで出版を断念したとか。
【注4】ここで確立したプログラミングスタイルと技法の一部は、PC-Magazine誌(PC MAGAZINE, User-to-User pp.459-460,September 10,1991:ZIFF-DAVIS PUBLISHING COMPANY)で紹介されている。
 プログラム例としては、トラ技コンピュータ(特集“私の作った10行プログラム”1994-9:CQ出版)に入選作19番として掲載されているものが(いささか、トリッキーではあるが)参考となろう。


【注5】MS-DOSシェルプログラミング(サイエンス社)
 その他、この関係の著作2件がある。


 このようにして私は、コマンドオタク(?)となって楽しみのためのプログラミングの世界を構築し、そこに自ら没入することができたのであるがもう一つ満たされないものがあった。何しろMS-DOSのコマンドなので、プログラムの実行速度が恐ろしく遅かったからである。バッチプログラムで“三つ山くずし”のようなゲームプログラムを作っても、遅くて到底実用にはならなかった(どんなに時間が掛かっても、ちゃんとアルゴリズム通りに動作して結果が出てくることを確認できるのは、それはそれで非常に楽しいことではあったが)。

 そのうちに、ワークステーションの世界で使われていたPerlという言語がパソコン上にも移植され、パソコンユーザでも簡単に使えるようになった。そこで私は早速コマンドオタクを卒業し、Perlへと移行したのであった。

 Perlという言語は、CシェルやC言語に似たところがあり、あまり細かいことにこだわらずにプログラムが書けるところがよい。省略時解釈を利用して何事も「よきにはからえ」で済ますことができる点が、私は特に気に入っている。それに何よりも、この言語のよいところはMS社製品ではないところだ。フリーソフトウェアなので誰でも無償で自由に使うことができる。バージョンアップのたびごとに買い直す必要もない。
 最近はこの他にも色々なスクリプト言語が世に出ているから、自分に合ったものをみつけるのもよいであろう(注6)。昔プログラマの人たちには、是非一度試してみることをお勧めしたい。
【注6】VBScript,WSH(Windows Scripting Host)などがある。


 無論、楽しみのためのプログラム作りだけでは、いわゆる“技術の空洞化”は防げないであろう。しかし上司が常にプログラミングに関心を持っている職場では、部下たちはプログラム作りの重要性を常に意識するようになるのではなかろうか。アメリカでは、肥満していると管理者にはなれないという。つまり自分の体重さえコントロールできない人間が、部下を管理統率できるはずがないという考え方なのである。
 肥満してプログラミングの能力も、プログラミングに対する関心さえも失ってしまった上司の下では、優秀なプログラマが育つわけがないと私は不遜にも思うのである(注7)。■

【注7】私の職場には優秀なプログラマが沢山いるんです、はい。