2004.10 還暦過ぎたプログラマー

わーくすてーしょんのあるくらし (85)

2004-10 大橋克洋

< 2004.09 オリンピック観戦のために HD レコーダー | 2004.11 プログラミング能力復活す >

私も今年の3月で62歳となってしまいました。「還暦過ぎたプログラマー」 を維持したいと、 久し振りにプログラミングをすこしずつ行なっています。 以前も書いたかも知れませんが、 年齢が行っても創意工夫やアイデアの湧出については、 ある程度鍛えていればそう衰えるものではありません。 加齢がプログラミング作業に与える最大の影響は 人間の記憶容量の減少です。 本格的なプログラミングには、 ソース内容すべてをまず頭の中のメモリー上に展開しておいて、 一気呵成に組んでいく必要があります。

世界の優れたソフトウエアを見ると、 一人の天才的な人間が比較的短期間でエイやっと創り上げたものが 多いということが、これを何より証明しています。 少なくとも私は大勢のチームで作ったアプリケーションに 感激するものをあまり見たことがありません。

一人の人間が一貫したポリシーで書くということは、 素晴らしいソフトウエアを創りだすには必要なことなのでしょう。 良いソフトウエアは、 絵画や彫刻、小説あるいは映画などと同様のアートですからね。 やはり、そこに「気」が入っていなければいけません。

「こんなことをやりたいんだけど、 そういえばあそこにあんな機能があったなあ」とか、 「これをやるには、あそこの部分に引っかからないよう 気をつけなければ」とか、 細かい路地裏のどこに何があるか、 どこの倉庫のどの棚あたりにどんな道具があったかを、 優れたプログラムを書くには熟知しておく必要があるということです。

○ オブジェクト指向プログラミングにはドキュメント作りも必須

これを解消するのが、 オブジェクト指向プログラミングです。 プログラム中の個々の部品を独立させ、 部品の中でどんな処理が行なわれているかを 外部から知らなくてもよいように組んでおけば、 基本的には部品の組み合わせだけで作業の多くが済んでしまうという。 つまり部品の内部の仕組みがどうなっているかを覚えている必要なく、 部品の種類さえわかればそれを組み合わせるだけで プログラムを作り上げていけるという仕組みです。

ところがどっこい、 実際にはなかなかそうもいかないのが悩みです。 電子カルテ NOA ではそのような考えで、 多くの部品を Framework というライブラリーに集積し、 必要に応じてその部品を呼ぶだけで作れるようにしました。 確かにこれによって、 まったく別のアプリケーションを作る場合にも これが利用でき、とても便利になりました。

しかし、 数ヶ月間プログラミングから離れているとすっかり内容を忘れてしまいす。 まだまだ私の部品の作りが甘いのと、 それぞれの部品の機能に関するしっかりしたドキュメントを 作っていなかったので、 部品の機能を理解しなおすためには、 結局ソースを覗いて回るしかなくなっているのです。

つまりオブジェクト指向プログラミングには、 「部品を機能別に整然と部品庫に収納しておく」とともに 「部品の機能を短時間で理解できるしっかりしたドキュメント作りも必須」 ということを、今更ながら自覚しました。 前者はやっているのですが、後者が未整備でした。 これは、どのオブジェクト指向の本にも書いてないことのようです。

しかし考えてみれば、 同様のコンセプトを早い時期に実現した UNIX の shell でも、しっかりしたドキュメントが on line manual でちゃんと付いていましたね。

○ Javaベースになっても手放せない MacOS X の Cocoa環境

最近書きはじめたプログラムは「健康ノート」の試作版です。 開発言語として長年使い慣れた Objective-C ではなくて Java で書いていくことにしました。

Objective-C は非常にシンプルで優れた言語なのですが、 「他のOSへの移植性などを考えると、これからはやはり Java だろう」 ということです。 もうひとつ、Objective-C で使っていた優れた機能の ほとんどが Java に取り入れられていることもあります。 つまり Java を使っていても、 Objective-C の頃との違和感が余りないのです。

しかし!!です。 実際にアプリケーションを書くとなると、 GUI についてはとてもではないが Java 環境は MacOS X の Cocoa 環境の快適性とは比ぶべくもありません。 それでも「意地になって GUI も native Java で」というやり方もあるのですが、 今回は Java のトレーニングというよりも、 「健康ノートのサンプルを作ってその仕様について考えたい」 ということにあるので、 GUI は Cocoa 環境で行くことにしました。

やあ、やはりこの方がとってもとっても快適です。 Java の GUI 開発環境も色々でてきましたが、 NeXT 時代に培われた Cocoa の完成度を見てしまった人間にすると、 まだどれも未熟なのもでしかないのです。 Cocoa では単にひとつのメソッドを呼ぶだけですんでしまうことを、 Java ではいちいち基本的なところから記述して行かねばなりません。

特に不便なのは、 Java ではある view 上に他の view を描く場合、 基本的には自由な位置に置くことができず、 タイリング形式になってしまうことです。 これは早く何とかして欲しい最大の問題と言えるでしょう。 Cocoa では当たり前のようにできていたことが、 Java になると「うー、何でこんなことが簡単にできないんだー」 と歯ぎしりすることしきりです。 GUI に関連しない部分について Java はかなり満足できるのですが。

MacOS X の Cocoa で提供されている GUI 開発環境 InterfaceBuilder は、NeXT 登場の頃からのもので 15年もの間 地道に改良が重ねられてきました。 しかし、見た目はもちろん基本的機能のほとんどが 初代 NeXT の頃すでに提供されていたものです。 これも一人の天才が一気に作った作品なのかも知れませんね。

○ 筋トレ・ダイエットで脳も活性化

昨年春から、筋トレ・ダイエットを行っていることを書きました。 この効果の証拠として2つ嬉しいことがありました。

1つは「肝機能が正常に戻った」ことです。 若い頃は酒が強く、いくら呑んでも変わらず呑ませても面白くないという ことで「大橋に酒を呑ませても無駄だ」と言われていたのですが、 5年ほど前から弱くなりました。そのうちいつの間にか肝機能障害 がでていることがわかったのです。 後から考えると、薬剤による肝機能障害だったのだと思います。 しかし「まあ、歳だから呑めなくても丁度良いか」と思い、 過ごしてきました。 ところがダイエットを始めて半年後、 肝機能を測定してみると何と正常値に戻っているではありませんか。 その頃から酒も以前のように呑めるようになりました(流石に 若い頃のような馬鹿のみはしません)。

おそらく脂肪肝だったのが正常に戻って、 肝臓の修復能力が正常に機能するようになったのだろうと考えています。

2つ目は「頭のもモヤモヤが消えた」ことです。 還暦を越えた頃から何か難しいことを考えようとすると、 頭の中が「水飴をこねくるような」あるいは 「クモの巣がはったような」状態でうまく動かないことが多くなりました。 飯より好きな、これさえやっていればどんなストレスも吹っ飛ぶ プログラミング作業でさえ、おっくうになってきたのです。 しかし肝機能正常化とともに、次第に頭もすっきりしてきました。 どうやらプログラミング能力も元に戻って来たようです。 高脂血症が改善されて、いわゆる「血液がサラサラ」になり 脳循環が快復したのだろうと思います。

ということで、患者さんには何はともあれ「歩く」ことをお勧めしています。 単に「運動しなさい」では、こちらで言っている意味と、 相手の捉えるイメージがまったく違う可能性があります。 しかし「歩く」という言葉については余り間違った理解がないであろうことと、 歩くことは動物の基本であること、 また中年以後の女性に起こってくる骨粗鬆症の予防などの意味もあるからです。 私自身、歩かない日があると確実に体重が増えることから見ても、 「歩く」ことはお勧めのひとつです。

< 2004.09 オリンピック観戦のために HD レコーダー | 2004.11 プログラミング能力復活す >