人のコードで異文化体験
自分がどういうソフトウェアを書きたいのか。その追求とは別に、自分の考え方とは全く違う原理で作られたコードに触れるというのも、大事な学びの機会です。
当時、Javaのオープンソース界隈に、James Strachanという有名な開発者がいました。色々なスタートアップでエンタープライズ向けのミドルウェアを設計・実装していました。飛ぶ鳥を落とす勢い。憧れの人だった。
しかし、彼の書いたプログラムは、僕が大事にしていた設計原則・美しさとはてんで相容れないものでした。例えば、僕が設計の時に大事にしていた価値の一つに、間違いを誘発する自由度を持たない、というものがあります。これは実際の例ではありませんが、印象が伝わる簡単な例えを一つ。人間をモデルするPersonクラスを作っているとしましょう。人には必ず生みの母がいるので、それを仕様に加えるならば次のようになるでしょう。
class Person { ... Person getMother() { ... } }
James Strachan流は、ここで「void setMother(Person)」と生みの母を上書きするメソッドを入れてしまう感じです。え、そういうことが出来ちゃっていいんだっけ?と戸惑う。小さな違いのようで、大きな違い。
でも、彼のライブラリを使っていくと、そういう書き方にはそれなりのメリットがあることが分かってくる。本来の使い方の趣旨からは外れているかもしれないんだけど、ここはちょっとガムテープで今は貼っておきたい。ここでちょっと無理にでもこうできると便利だ...…ということが結構ある。ずるをさせてくれる。
そのうちに、声さえ聞こえてくるような気がしてくる。オープンソースだろ、ソースコードも全部おっぴろげよ。だからさ、使う人が使いたいように自由にやんなよ。ここでどうしてもこの変数を弄りたいっていうんだったら弄れるようにしておいてやるよ。子供がカッターを使いたいって言うなら、使わせてあげなよ。
南カリフォルニアの、陽光降り注ぐビーチでサーフィンでもやっているかのようなプログラム。Sunで自分たちがやっていたことは、厳つい神学者達の宗教論争だったような気さえしてくる。だらしがない、と僕が感じたものは、使う人に委ねる謙虚さ・鷹揚さでした。

余談ですが、後で本人に直接会ったら、本当にそんなノリの人だったのが可笑しかった。度の強い眼鏡の奥に可愛い大きな目。アロハシャツまで着ていましたからね。プログラミングは個性だな、と。