SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

川口耕介のエンジニア人生相談

格好いいコードを書けるようになるにはどうしたらいいでしょうか【川口耕介のエンジニア人生相談】

第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

石碑と砂浜、小説と手紙

 自分が希求するソフトウェアの形をまた一つ大きく変える出来事がありました。Launchableという自分の会社を使って、SaaSを作り始めた時のことです。

 同僚のコードレビューをしていました。ここはもうちょっと抽象化した方がいいな、と思ったのですが、三カ月後に残っているかどうか分からない機能・コードを丁寧に設計することにどれほど意義があるだろうか、と思い直しました。それよりは、早く出す方がよっぽど大事だ。むしろ、結果的に長く生き残ったコードを後追いで綺麗に手直ししていく方がずっと良さそうです。

 同様に、最初に物を出す時には、この機能が刺さるか刺さらないかが分からない。だから、犬小屋程度の堅牢さでサッと作って出す方がいい。プロダクト側の試行錯誤に素早く応じられる自由度の方がよっぽど大事でした。その上で、お客さんがついてきたら、そこで改めて人が住める堅牢さで作り直せばよい。

 フレームワークでは、一旦世に送り出してしまうと、非互換の変更を後から入れると多くの人に迷惑が掛かるから、事前に慎重に入念にデザインすることが合理的になる。でも、アプリケーションのコードでは、そうではありませんでした。

 今までの自分は石碑に字を刻む仕事をしていた、ということに初めて気付きました。書くというのはそういうことだと思って疑うことがなかった。しかし、今の仕事は、砂浜に枝で書く仕事になっていました。今まで自明だと思っていたことは、実は全然自明ではなかった。慄然としました。

 別のある日。同僚達と話しているうちに、僕が以前書いた「class Enum<E extends Enum」みたいな自己参照を含むGenericsを使ったコードが、理解の妨げになっていることが分かりました。これを機にGenericsについて社内で講習会もやりましたが、同時に、このGenericsで得られる若干の型安全性の向上と理解の阻害を秤に掛け、このようなGenericsの使用は取りやめることにもしました。

 読み手が五人しかいないコードだから、この五人が読みやすいコードを書くべきなんだよな、ということに思い至ったのです。ライブラリを書いていた時は、不特定多数に向けてコードを書いていたから気付きませんでした。

 小説ではなく、手紙なんだな。

©hunterpic2013 - stock.adobe.com

北極星さえも一つではない

 こうして振り返ってみると、格好いいコードというのは実に相対的なもののようです。流儀・好み・価値観の違い。それだけならばアートだけど、プログラミングはエンジニアリング、すなわち合目的性の追求です。環境が変化すると何が合理的かが大きく変化する。だから、僕が今目指している格好いいコードというのは、今、この環境において一番合理的なコードはどんな形なのか、その塩梅を見極めたプレーンなコードです。孔子曰く、中庸。アイスクリームで言うならばバニラ。誰が書いたのか分からない位が理想だ。

 あなたもそのようなコードを書いてくださいね、ということではありません。自分なりに、こんなコードが良いのではないのか、そういう仮説を持ち、実践に移し、出来た物を眺める。なんだか思っていたものと違ったな、などと考え、このコードを合目的にしている今の環境について考える。人の批評を目にし、あるいは他人の作品を眺め、次のプロジェクトに挑戦する。そういう作業を意図的に繰り返していく、その行為そのものに価値があるのであり、その時その時に理想とするコードの形が何なのかは、さほど重要ではありません。

 だから、あなたも自分にとって格好いいコードを手探りしながら色々試してみてください。あなたのいる環境、あなたの美意識、それは世界に一つしかない。だから、北極星さえも一つではなく、あなたの歩む道もまた、誰も通ったことのない道になるでしょう。素敵ではないですか。道とは、そもそもそういうもの、ですよね。

川口さんに答えてもらいたい質問を募集します!

 「川口耕介のエンジニア人生相談」では、エンジニアの皆さんからの質問を募集します。川口さんに聞いてみたい質問があれば、以下のフォームからお寄せください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

川口 耕介(カワグチ コウスケ)

 MicrosystemsにてJavaEEの開発に携わった後、オープンソースのCI/CDサーバJenkins及びそのコミュニティを作る。2010年よりCloudBeesにてJenkinsを事業化、CTOとして400人規模の会社へと成長させる一翼をになう。2020年よりLaunchable co-CEO。CloudBees、GoogleやNetflixなどがLinux財団と設立したContinuous Delivery Foundationにて技術監...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21459 2025/08/22 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング