石碑と砂浜、小説と手紙
自分が希求するソフトウェアの形をまた一つ大きく変える出来事がありました。Launchableという自分の会社を使って、SaaSを作り始めた時のことです。
同僚のコードレビューをしていました。ここはもうちょっと抽象化した方がいいな、と思ったのですが、三カ月後に残っているかどうか分からない機能・コードを丁寧に設計することにどれほど意義があるだろうか、と思い直しました。それよりは、早く出す方がよっぽど大事だ。むしろ、結果的に長く生き残ったコードを後追いで綺麗に手直ししていく方がずっと良さそうです。
同様に、最初に物を出す時には、この機能が刺さるか刺さらないかが分からない。だから、犬小屋程度の堅牢さでサッと作って出す方がいい。プロダクト側の試行錯誤に素早く応じられる自由度の方がよっぽど大事でした。その上で、お客さんがついてきたら、そこで改めて人が住める堅牢さで作り直せばよい。
フレームワークでは、一旦世に送り出してしまうと、非互換の変更を後から入れると多くの人に迷惑が掛かるから、事前に慎重に入念にデザインすることが合理的になる。でも、アプリケーションのコードでは、そうではありませんでした。
今までの自分は石碑に字を刻む仕事をしていた、ということに初めて気付きました。書くというのはそういうことだと思って疑うことがなかった。しかし、今の仕事は、砂浜に枝で書く仕事になっていました。今まで自明だと思っていたことは、実は全然自明ではなかった。慄然としました。
別のある日。同僚達と話しているうちに、僕が以前書いた「class Enum<E extends Enum
読み手が五人しかいないコードだから、この五人が読みやすいコードを書くべきなんだよな、ということに思い至ったのです。ライブラリを書いていた時は、不特定多数に向けてコードを書いていたから気付きませんでした。
小説ではなく、手紙なんだな。

北極星さえも一つではない
こうして振り返ってみると、格好いいコードというのは実に相対的なもののようです。流儀・好み・価値観の違い。それだけならばアートだけど、プログラミングはエンジニアリング、すなわち合目的性の追求です。環境が変化すると何が合理的かが大きく変化する。だから、僕が今目指している格好いいコードというのは、今、この環境において一番合理的なコードはどんな形なのか、その塩梅を見極めたプレーンなコードです。孔子曰く、中庸。アイスクリームで言うならばバニラ。誰が書いたのか分からない位が理想だ。
あなたもそのようなコードを書いてくださいね、ということではありません。自分なりに、こんなコードが良いのではないのか、そういう仮説を持ち、実践に移し、出来た物を眺める。なんだか思っていたものと違ったな、などと考え、このコードを合目的にしている今の環境について考える。人の批評を目にし、あるいは他人の作品を眺め、次のプロジェクトに挑戦する。そういう作業を意図的に繰り返していく、その行為そのものに価値があるのであり、その時その時に理想とするコードの形が何なのかは、さほど重要ではありません。
だから、あなたも自分にとって格好いいコードを手探りしながら色々試してみてください。あなたのいる環境、あなたの美意識、それは世界に一つしかない。だから、北極星さえも一つではなく、あなたの歩む道もまた、誰も通ったことのない道になるでしょう。素敵ではないですか。道とは、そもそもそういうもの、ですよね。
川口さんに答えてもらいたい質問を募集します!
「川口耕介のエンジニア人生相談」では、エンジニアの皆さんからの質問を募集します。川口さんに聞いてみたい質問があれば、以下のフォームからお寄せください。