all things must pass

記録と備忘録による自己同一性の維持を目的とするものです。

6/18 日本のソフトウェア開発の歴史にまつわる極私的な思い出

最近、こういう記事を見た。

 

tech.nikkeibp.co.jp

極めて親しい友人のやってるソフトも載っている。うむむ成る程ねえ、大変なんだねえ。

 

しかし平成ですら記事にしなきゃ誰も覚えてないような歴史になるのであれば、その一つ前の昭和のことなんて、もはや忘却の彼方じゃないか。ということで、本当に記憶が消え去ってしまうまえに、昭和のソフトウェア開発に関するきわめて私的な思い出を記しておくことにする。ワタシも気を抜くと、最初からC++でプログラムを書いていたような気がしてしまうくらいだ*1

 

さて。

 

 

1988年、最初に勤めた会社で最初に関わることになった仕事がこれの開発だった。

museum.ipsj.or.jp

新しいOSの立ち上げ期に関われるというのは、ソフトウェアエンジニアにとっては夢のようなことで、こればっかりは自分で作ると言い出さない限り、どうしても運任せになる。ざっくりフェルミ推計をすると(計算は略)、一回のエンジニア人生のうちでその当たりクジをひけるのは1/10000くらいの確率だろうか。あるOSのファーストバージョンに関わったよと言える人は、石を投げてもなかなか当たらないということだ。

 

ではその貴重な体験、当時ありがたがっていたかというとそうでもなくて、まずメインフレームとSystem/38(AS-400のルーツね)が野合したようなアーキテクチャにがっくりきてた。ええー、ダサいですよね?とか。どうせならシングルレベルストレージまでやっちゃいましょうよ、とか。

学校を出たての、生意気で、自分にやれないことはないと思い込んでるバカな若者の抱きそうな感想だ。別の部署ではΣ OSをやっていて、それがむちゃくちゃうらやましかったのも、今思えばまことに大馬鹿であって、穴があったら入りたいような話である。あのΣですよ、Σ。それがうらやましかったなんて、若さとバカさが空回りしているような人にしか抱けない感情だ。バカだなあオレ。

でもそのバカが我慢ができなかったのは、仕事のありようが西部戦線塹壕戦にも似た大規模消耗戦だった事だ。職業としてのソフトウェア開発は、『どうしてそんな愚かなことをやっているの?』というオドロキと絶望の連続から始まったのだった。

 

開発規模が大きくなるとき、その管理・運営の難しさは指数関数的に増大する。だから実施可能なサイズに分割して進めていくという考え方は素直に理解できた。それはアルゴリズムの問題だ。分割統治法は規模の大きなものに人間が立ち向かうときの一つの基本だもの*2。コミュニケーションパスが制限された、上意下達的な組織運営は息苦しくはあったけど、仕方がないと納得することはできた訳だ。

問題は、分割したにせよ膨大な開発要員(分割オーバーヘッドの対応を含むので実際ににはより多くの人員)を必要とし、しかもプログラマーの質が大いにばらついていた事にある。配属先の10人ほどのチームで*3、新人の自分からみてスゴいと尊敬できる人は一人だけ、まあまあコンピューターを体系立てて判ってるなという人がもう一人、あとは仕事の手順の反復精度が高い人が二三人、そして残りは...。おいおい、みんなボクより給料もらってるよね?新人はボクだけだよね?

ただでさえ泥沼の状況で(例えばプログラムが落ちたとき、メモリ管理が悪いのか、プロセス管理に問題があるのか、はたまた通信管理に不具合があるのか、それとも自分のプログラムがやっぱり悪いのかが、OS自体のコアダンプを取らないと判らないということが毎日欠かさずに発生する)、言語もまともに扱えないような諸先輩の後始末をするというのはまさに地獄で、なぜこんなの雇ってるのよ、と思われる人たちがゴロゴロしていた。その具合たるや船が七分に海が三分どころの騒ぎじゃなかったのだ。

 

なんで、こんなの雇ってるんだよ!かえって時間が取られるじゃないか! 

 

どうしてなんだろうねえ、なんでこんなことになるんだろうねえ。

月の残業が200時間を超える戦場に右も左も判らないまま放り込まれて、指揮官の号令に従って突撃を何ヶ月も繰り返すうちにある日突然停戦となるという理不尽な経験、それが会社員としての最初の仕事だった。しかも地獄である直接的な理由はハッキリしている。構成員のレベルが低すぎるのだ。

 

 

リスク管理も、プロジェクトマネジメントの各種技法も知られていない昭和の末期の大作戦だ。頭数がそろえばなにがしかの結果がでるものだと期待され、そしてそれを基礎においたスケジュールが構築されるのは避けがたいことだったのかもしれない。でもね、コンピューターって何なのか、ソフトウェアを作るというのはどういうことなのか、それも判らない兵隊を使って戦争をしようとしてたのは、やはりどうかしているとしか思えない。

いや、そうじゃないな。きっとあのとき戦争指導をしてた人たちは、プログラマーは歩兵みたいなもので、命令に従って塹壕を掘ったり、突撃したり、玉砕したりすればいいと思ってたんだろうな。そして、砲兵や機甲部隊とうまく連携させながら動かしていけば、戦争に勝てると思ってたんだろうな。

もちろんプログラマーは歩兵じゃない。もっとクリエイティブな仕事だ。でも、そんなあたりまえのことが、昭和の終わりにはまだ当たり前じゃなかったのだ。

今回のエントリは思い出を綴ることが目的なので、どうしてなの、という方向には行かない。そのときに自分がイライラしたり、がっかりしたことを書き起こしていくだけだ。でもこうやって記憶の扉をひらいてみると、相当に腹を立ててたんだな、ということがハッキリ判ったな。そうだ、ソフトウェアを作るということがゾンザイに扱われているということに腹を立てていたんだ。

 

 

結局どこかで大きな判断がされたらしく、追加のテストが必要だという意見を耳にすることがある状況で、しかしバージョン1の出荷を向かえることになった。

そのような訳で、88年の、つまり昭和の最後のクリスマスは、突然戦場から放り出された帰還兵のように、日常に適合できないまま街をうろうろしているうちに終わってしまった。4月から横浜に住んでいたというのに、こんな時どこに行くべきかも判らないままだったのだ。

そして年明け早々に昭和も終了した。

 

 

いまもソフトウェア産業の片隅で暮らしているのは、このときのルサンチマンがあるから、ではない。プログラマーこそがソフトウェア産業のすべての礎であり、そこから始める以外に答えがないと思い続けているし、それが当たり前になるのをこの目で見たいのだ。会社も変わり、職種も変わり、いまでは流れ流れて経営サイドの末席であるのだけれど、それでもプログラマーファーストでなければならないというのは変わらない。

いや、それともルサンチマンもあるのかな?

 

...

本日はスウィートな回想・追憶モードであった。であれば、最後にその大規模消耗戦のなかでも特に忘れがたい光景のことを記して締めくくりにしよう。

 

遅れに遅れたその新OS開発(ワタシが入社する前からすでに大炎上していたのだそうだ)、しかしいつかはどうにかしなければならない時がやってくる訳で、出荷に向けた品質確保の大攻勢(テスト&デバッグの総力戦)を行う事になった。そのこと自体は、まあそういうものだと思う。問題は、その大攻勢の開始に当たっての或る出来事だ。

多分10月の初旬だったと思う。おそらく月曜だったんじゃないかな。幸い、空は晴れていた。朝、戸塚のソフトウェア工場の屋上にVOSK関係者全員が集められ、(たしか)ソフトウェア工場長から出荷までもう一踏ん張り、ここを全員で乗り切ろう的な激励を受けた、のだと思う。

多分とか、おそらくとか、たしかとか、と思うとか、曖昧な表現が続くのには理由がある。このあとに続けて行われたことが文字通りあまりにも衝撃的で、記憶が錯乱してしまったのだ。

 

そのアリガタイ激励のあと、ソフトウェア工場の屋上にいた我々は、ラジオ体操を、全員でやったのだった。多分、第二まで。団結の儀式だったのか、それとも挨拶だけでは間が持たないと思ったのか、はたまた朝の集会とくればラジオ体操をやるのが日立というものだろう、という超越論的判断だったのか。ともあれ、10月のその朝、屋上に集まった数百人の我々は、大攻勢発起の大集会の締めくくりとして全員でラジオ体操をやったのだ。男女を問わず、年齢を問わず、所属会社を問わず、あるOSの開発に関わっている全員がそろって、ラジオ体操を至極大真面目にやったのだ*4

 

それまでの人生でもっとも非現実的光景だった。おそろしいことに、それは夢ではなかったのだ。

本当に開発が追い込まれると、日立では全員でラジオ体操をやるのだ

 

そこから30年あまり、幾つもの修羅場案件を乗り越えてきた人生であるのだけど、その度に『まだラジオ体操までは行ってないはずだ。全員集めてラジオ体操をやろうと思うほど、頭は煮えたってないはずだ。まだ大丈夫、最悪はこの先だ』と内心唱えてきたのは秘密だ。そして、全員集めてラジオ体操をやらなきゃならぬと思うようなヤマに出会わないまま現役を退きたいものだと、心の底から思うのだ。

 

*1:もちろんそんな事はなくて(アルバイトとはいえ)この業界にゲソをつけたのはZ80アセンブラからだ。間接アドレッシング(Cでいうところのポインタ)が理解できたときに、これで書けないプログラムは無くなったなと思ったのは、なんともかわいらしい事だった。CALL時のスタックへのレジスタ待避を全自動化するために(もしくは規約をもれなく徹底するために)コンパイラが存在するのだ、と無邪気な理解をしたのはそれから程なくしてだ。無邪気?そう十代の少年だったからね。

*2:分割統治法、英語だとdivide-and-conquer method、ところでconquerに対応する訳語は征服だ。だからdivide-and-conquer methodを直訳すると分割征服法となりそうなものなのだけど、なぜだか定訳は分割統治法。さて、この訳を定めた人たちの気分はどんなものだったのだろう。昔から気になっているのだ。

*3:いま気がついた、これ一個分隊だ。そう捉えれば、2チームで一つの課というのはまさに小隊構成だ。そうか課長は小隊長くらいか、まあここからが管理職だから士官なのだと言われればその通り。色んなところに軍隊の影響って残ってるのだなあ、と妙に納得してしまう。でも、だったら士官学校卒をいきなり課長にしてしまうという乱暴さが必要なのだとも思うのだけど。全ての人にチャンスが開かれている(ように見える)というのが高度経済成長を支えたのかもしれないけど、士官と下士官って役割も必要な教育も違うよねという常識をないがしろにしたことが、その後の日本の衰退を招いたのかしら、とか。

*4:なにしろ工場長が相対しているからね