プログラムのリフォーム

前川賢治(Kenji Maekawa) 2014-08-20 13:30:00

最近、ふと俵万智さんのサラダ記念日を思い出した。「サラダ記念日」という歌集が発表され大きな話題になったのは、確か僕が高校生の頃だったと思う。

「この味がいいね」と君が言ったから七月六日はサラダ記念日


高校生の僕には、この歌の何が面白いのか、何を言いたいのかさっぱり理解できなかった。
それについては今でも大差はないのだが、なぜ今になってこの歌を思い出したかというと、我が家の記念日がいつの間にかやたらと増えているような気がするからである。どうやら女性はいちいち勝手な記念日を作っていくものらしい。

今月も結婚記念日と子供のハーフバースデー(いつから誕生日が半年単位になったのか?)がダブルであるらしく、本来ならこのような重要な記念日は別々にお祝いするべきところを、妥協して一緒にお祝いするプランでも許可するとのこと。8月は原爆記念日とか終戦記念日とか、日航機墜落とか、世の中的にもっと重要で、一人一人が考えなければならない記念日があると思うのだが…

何れにしても、このペースで記念日が増えていくとなると、我が家は一年中何らかの記念日をお祝いすることになると思われる。

僕も何かを考えたり作ったりしていると、たまに(本当に滅多にないのだが)これだと思うアイディアの種みたいなものが浮かんで来ることがある。
それまで考えていた断片的な事柄が一つのキーワードでつながるような感覚と言ったら良いのだろうか。そんな時は調子に乗って、何かを思いついた記念日を制定したくなる気分だが、しばらく経って考え直してみると、実はそうでもなかったとなる場合の方が多いので、やはり安易に記念日を制定することはやめた方が良さそうである。

先月ぐらいから、訳あって僕自身が古いプログラムを見直して改修する時間が増えているのだが、古いプログラムを見直してみると、そのプログラムの歴史と改修作業に携わった人の心が透けて見える。一般的に、プログラムの改修作業を行う担当者は、改修範囲を必要最低限に抑えて影響範囲を極力小さくしようとするものである。

しかし、それが論理的であるならば兎も角、とにかく自分が編集する行を一行でも少なくしようとした安易で無責任さを感じさせるコードは、誰もメンテナンスができない状態を作り出し、プログラムの寿命を縮めることになる。
勿論、コードのダブルチェックなどのプロセスを徹底することによって、このようなプログラムの老化はある程度は抑えることができるとは思うが、短期間で飛躍的に発展したインターネットなどの技術の進歩や、その時々の様々な事情を考えると、これはプログラムの年輪のようなもので、一概に担当者の無責任さやスキル不足を嘆いても始まらない。

現実には、既存のプログラムを改修する作業に経験の少ない若手エンジニアがアサインされるような状況もあるだろうし、そもそも複数の担当者(あまりスキルの高くない)がプログラムを触ること自体、プログラムの老化を早める因子である。

老化してしまったプログラムを若返らせる方法は、単純に言えばプログラムを作り直すしかない。
作り直すとは言っても、プログラムの年輪は悪いことばかりではなく、歴史的経緯を積み重ねてきたノウハウでもあるので、良い意味での歴史的経緯は継承しつつ、スパゲティ化してしまった部分をバッサバッサと切り捨てるリファクタリングを行い、シンプルで見通しの良いプログラムに生まれ変わらせる必要があるのだ。

しかし、この影響範囲が大きくリスクも高い作業を誰ができるだろうか?

まさに、難しい事情を抱える家のリフォームのような作業であり、過去の歴史的経緯を読み解きつつ、プログラムに新たな価値を吹き込むようなことは、
ビフォア-・アフターの巨匠にしかできないことなのである。

第一に、誰もそんなリスクは負いたくないので普通の担当者では荷が重すぎるし、周りのスタッフもついて来ないだろう。喧々諤々の議論をしたところで、リスクが高すぎるという正論には勝てないかも知れない。

さらに、最初のリファクタリング作業はある程度まで一人の頭の中で完結させるべきで、複数の担当者が関わった時点で、新たな年輪の積み重ねが始まると思った方が良い。

そんなことから、周りのスタッフの諦めの境地も含めて、僕たちの会社における巨匠ならぬ一番の「変人」(あくまでも変態ではない)の僕が既存のプログラムを書き直す時間が増えているという訳なのだ。

仕事として考えると地道で孤独な戦いでもあるとも言えるが、僕はそれも嫌いではなく趣味のようなものなので、少なくともゲームなんかよりも達成感があって、実は楽しいのである。

しかし、最近コロン(:)とセミコロン(;)の違いが見えにくくなってしまったのには閉口する。結局、パソコンの表示フォントサイズを一つ大きくしてしまった。どうやらプログラムの老化と同様に僕自身の老化も進んでいるらしいのである。

---------------------------------------------
前川@ドリーム・アーツ

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR