「スパゲティ・プログラム」。読者もご存知の通り,むやみにGOTO文で飛ばしたり,IF文の羅列で“底”の見えない入れ子構造になっていたり,変数の範囲が広すぎたりして複雑化・巨大化し,障害発生時の原因追跡や修正が困難なプログラムのことである。
今でこそプログラムのモジュール化や標準化が進み,コーディングを自動化する開発支援ツールも普及しているが,開発作業の大部分がSE個人の力量任せだった10年ほど前までは,スパゲティ・プログラムがあちこちで“繁殖”していた。レガシー・システムの保守に携わっているSEなら,その頃に作られたスパゲティ・プログラムに今でもよく出くわすのではないだろうか。そんなときSEは「げげげ,ついてない…」と肩を落とすに違いない。それほど忌み嫌われる存在なのである。
筆者が現役SEだった十数年前には,スパゲティ・プログラムを何とか根絶しようと,品質管理部門が開発ガイドラインを策定してプログラムの書き方を規則で縛ったり,情報システム部門がスタッフのプログラミング教育に力を入れたり,様々な対策を講じていた。しかし,文書による規則や教育だけでは限界がある。機能追加のたびに手を加えられたプログラムは,次第に“ツギハギ”だらけになり,スパゲティ・プログラムは繁殖を続けたのである。
ただ,今と少し違うのは,当時はスパゲティ・プログラムが一概に嫌われていたとは言い切れない点だ。出来上がったプログラムを上司が見て,「なんだ,この長くて訳の分からんプログラムは!」と怒りながらも,一方では「しかし,よくまあこんなもの作ったな」と妙に感心することもあったのである。
例えば,名文と悪文を想像してみるとよい。最近は評論にしても小説にしても,読みやすく分かりやすい文章が名文とされ,難解な文章は悪文とする風潮があるようだが,筆者はそうは思わない。実際,難解であるがゆえに味わいのある文章も存在するのである。
もちろん,プログラムと文章を同列に比較することはできない。後でメンテナンスする負担を考えれば,プログラムが難解であることは“悪”である。トラブルシューターの立場から見ても,スパゲティ・プログラムはひどく厄介だ。現在その職にある者で,歓迎する輩は誰一人いないだろう。
ただ,良くも悪くも作り手の考え方や性格,嗜好などがプログラムに反映され,それを“楽しむ”ことができた時代があったことを,ほんの少し頭の片隅に置いてほしいと思う。筆者は(時間に余裕があることが大前提だが),スパゲティ・プログラムと格闘するのが結構楽しかった。あたかも必死で我々をだまそうとするプログラマと,謎を解き明かそうとするトラブルシューターとの知恵比べは,独特のスリルがあった。まるで「怪人二十面相 対 明智小五郎」である。システム障害の原因を追跡していて「お!こんなところにカラクリが・・・」と目を見張るような経験をしたこともたびたびある。その瞬間の,カラクリを見破った快感は,こたえられないものがあった。
思うに筆者は,プログラムを通して,その作成者である人間を見ていたのだろう。プログラムをモノとしてではなく,作り手の知恵や性格を代弁する媒体ととらえ,プログラムの向こうにいる人間と対峙していたのである。だからこそ,難解なプログラムのバグを克服したとき,まるで真剣勝負に勝ったような快感が得られたのかもしれない。
繰り返すが,筆者は決してスパゲティ・プログラムを褒めているわけではない。だが,読者が何かの機会にこいつに出くわしたら,いたずらに激怒する前に,じっくり賞味してみてはいかがだろうか。意外な珍味を発見して,病みつきになっても責任は持てないが。
|