SHOEISHA iD

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

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

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

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

第1回

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

 本連載では、20代で渡米、往時の花形テック企業Sun Microsystemsでエンジニアとして働き、オープンソースのJenkinsプロジェクトを創始、その後スタートアップのCloudBeesでCTOを勤めた川口耕介さんが、エンジニアが抱える悩みに答えます。第1回の悩みは「動くものは作れるようになりました。格好いいコードを書けるようになるにはどうしたらいいでしょうか」です。

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

 「格好いいコード」という言葉の影には、自己表現への欲求と美意識が。いいですね。では、あなたの求めているものは何なのでしょう。格好いいコードとは、どんなコードなのでしょう。

サグラダ・ファミリアと格好いいコードの共通点

 僕にもありました、格好いいコードを希求していた時期が。Sun Microsystemsにいた時の話です。同僚達は、みんなJavaのAPIとその実装を作っていました。プログラミング言語とそのコア・ライブラリを作る仕事です。作った物は世界中の開発者達に見られる、使われる。当然、みんなコードの書き方にはひどく拘っていました。人によって好みのデザインがあり、コードレビューという文化もなかった時代だから、出来たコードは本当に千差万別でした。

 使う人には迷惑だっただろうけど、僕のような作り手にとってはとても良かった。色々な香りの漂う、色々な人の作品を見る。自分の中で、これはいいなとか、これは嫌だなとか、自分なりの印象が生まれる。それが、自分の仕事に反映されていきました。

 Javaは、Sunだけのものではありませんでした。大事なところは、IBMやOracleなど、肩で風を切るテック企業から人が集まって共同設計をしていました。窓からカリフォルニアらしい大きな青空を眺めながら、毎週のように開かれる電話会議に参加しました。言語の仕事には特定の顧客がいないから、締め切りもありません。俺たちが完成と言ったら完成、そんなところがありました。こういう特殊な環境も、「格好いい」コードを追求するための試行錯誤をするためにはいい環境でした。同じAPIに対して集まる色々な意見・視点。そうか、そんな考え方もあるのだな。

 APIは、互換性がとても大事にされるから、一度出荷するとやり直しがききません。それでいて、使う側から見た分かりやすさ、実装側の自由度、そして将来の拡張性、そういった相反する利害を調整する必要があり、設計のし甲斐のある仕事でした。一流のエンジニア達が発揮する、絶妙なバランス加減。時に怒号かなと思うような、白熱した議論。僕が当時心掛けていたのは、概念を整理していくと、自然にそれらがクラスとその相互作用に収斂してあるべき形に収まっていく、そういうことでした。大事な概念が自然な名前で置かれている、というのは理解を容易にする。必要な動作は、それらの概念の相互作用として記述できる。一言でいえば、適切な抽象化、ということになるでしょうか。

 APIの設計だけではなく、実装もたくさんやりました。

 実装側は、ソフトウェアの規模が大きくなるので、それをいかに適切な粒度の部品に分解していくかというところに注意を払っていました。例えば、当時、僕はXMLをJavaにマップするライブラリを作っていました。XMLのスキーマを読み取るライブラリ、Javaのコードを生成するライブラリ、そういう独立して再利用可能な部品を別々のライブラリとして作る。そうすることで、個々の部品にもユーザーやボランティア開発者がついたり、共同作業が簡単になったりします。

 バルセロナの有名な建築家ガウディは、懸垂曲線をモチーフにあのサグラダ・ファミリアをデザインしたそうです。懸垂曲線は、どの一点をとっても、掛かる力が綺麗に釣り合っていて美しい。僕は、そんな実装を目指していました。部品部品が隣り合う部品と綺麗に繋がっている、ネックレスのようなソフトウェア。

©Alaska - 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング