Yahoo! JAPAN

「AIが書く時代」に中島 聡が実践する開発スタイルとは?

エンジニアtype

「AIが書く時代」に中島 聡が実践する開発スタイルとは?

AIがあらゆるコードを自動生成し、修正し、完璧に動かせるようになるーー
一昔前であればSFと言われたような世界は、もはや遠い未来の話ではない。

OpenAIの「Codex」や「GitHub Copilot」は人手を介さずにテストやバグ修正をこなし、Anthropicの「Claude Opus 4」、Googleの「Jules」、Amazonの「Kiro」といったコーディングエージェントも次々と実用化が進んでいる。

コードを書くという行為そのものの価値が薄れゆく中で、エンジニアは何に喜びを見出し、どのような役割を担っていくべきか。

インターネット黎明期からソフトウエア開発の最前線を牽引してきたエンジニア・中島 聡さんが、AIとの開発現場で培った「人間ならではの価値」を語る。

ソフトウエアエンジニア 実業家
中島 聡さん(

@snakajima

早稲田大学大学院理工学研究科修了・MBA(ワシントン大学)。1985年に大学院を卒業しNTTの研究所に入所し、86年にマイクロソフトの日本法人(マイクロソフト株式会社、MSKK)に転職。89年には米国マイクロソフト本社に移り、ソフトウェア・アーキテクトとしてMicrosoft本社で Windows 95 と Internet Explorer 3.0/4.0 を開発。Windws95に「ドラッグ&ドロップ」と「(現在の形の)右クリック」を実装したことによって、両機能を世界に普及させる。後に全米ナンバーワンの車載機向けソフトウェア企業に成長するXevo(旧UIEvolution)を2000年に起業し、19年に352億円(3億2000万ドル)で売却。元EvernoteのCEOが立ち上げたmmhmmの株主兼エンジニア。現在はフルオンチェーンのジェネラティブアートの発行など、Web3時代の新たなビジネスモデルを作るべく活動している。堀江貴文氏に「元米マイクロソフトの伝説のプログラマー」と評された

目次

「良いコード」を書くには、まだ人の手が必要AIはもはやチームの一員。スコープを絞って仕事を任すコードに込めた「思想」すら、AIがくみ取ってくれるエンジニアの喜びは、実装ではなく価値提供にこそ宿る

「良いコード」を書くには、まだ人の手が必要

長年コードを書いてきて痛感しますが、優秀なエンジニアとそうでないエンジニアとでは、最終的に作られるコードの質が大きく異なります。

コードを成長させていく過程では、どうしても複雑さが増し「スパゲッティ化」してしまうため、頻繁なリファクタリングによって、コードをメンテナンスしやすく保たなければなりません。そのためエンジニアには「コードが汚くなってきたな、リファクタリングしなければ」と自ら気付き、能動的に行動することが要求されます。

ただ、今のところ、AIがそのような行動をするのを、私は見たことがありません。AIは「動くコードを書く」ことには非常に長けていますが、必ずしも保守性や拡張性まで考慮された「良いコード」を書いてくれるわけではありません。

この事実を、私は現在開発中のAIネーティブなソフトウエア「MulmoCast」(※)で身をもって体験しています。

MulmoCastの開発では、動画や音声を自在に扱えるライブラリ「FFmpeg」を使っています。FFmpegでは、画像や音声をパイプラインに追加した順番でインデックスが割り振られ、後からそれを参照する際には、その番号を使う必要がある。この仕様が非常にやっかいで、少し順番が変わるだけで、動作が崩れてしまいます。

AIはこのような制約に応えるコードも正しく出力してくれるのですが、そのコードを人間が読んで理解するにはいささか複雑で、私も最初はかなり苦労しました。

しばらくはAI任せで開発を進めていたのですが、ある程度ソフトウエアが複雑化していった時点で、「このままではメンテナンス不可能なソフトウエアになる」と判断し、大規模なリファクタリングを手動で行ったんです。

具体的には、FFmpegの命令を直接扱うのではなく、その上にインデックスを抽象化する小さな構造体をかぶせることで、参照の仕組みを人間にも理解しやすい形に整理し直しました。結果、コードの見通しが大幅に良くなり、人間にも理解しやすく、保守や拡張もスムーズに行えるようになっています。

まさにこれが、冒頭で述べた「コードの質を保つための、人間による能動的な行動」の一例です。

(※)さまざまなアイデアを、漫画・動画・ポッドキャスト・スライド・ドキュメントなど、マルチモーダルな形で解説する(または、してもらう)ためのプレゼンテーションツール

AIはもはやチームの一員。スコープを絞って仕事を任す

とはいえ私にとって、既にAIはソフトウエア開発における強力なパートナーとなっています。

前述したFFmpegは高機能ですが、独自のスクリプト言語を持つため習熟が難しい。そこで、まずは「ChatGPT」か「Claude」にコードを書かせることから始め、そのコードを自身で取り込みながら開発を進めるアプローチを取りました。ライブラリの仕様に関しても、AIが書いたコードを読むことで学び、理解を深めていく流れです。

FFmpegを使った音声のつなぎ合わせやBGMの重ね合わせ、画像からの動画生成と、多岐にわたる複雑な処理が必要でしたが、AIの力を借りることで、開発着手から約1カ月でベータ版をリリースするところまで到達できました。このスピードは、AIの力なくしては到底不可能だったでしょう。

ソフトウエア開発でAIを使う際には、ゼロからコードを書かせる場合と、既存のコードに機能追加させる場合がありますが、私はどちらのケースでも「可能な限りスコープを絞って一つの仕事に集中させる」ようにしています。いずれは、より大きなスコープの仕事を任せられるようになるかもしれませんが、現時点では、スコープを絞った方が質の高い仕事をしてくれる印象です。

ちなみに、私はAIが書いたコードを全て自分でレビューし、完全に納得した上で取り込んでいます。そういった意味では、昨今話題の「バイブ・コーディング(Vibe Coding)」とは一線を画しており、「FFmpegに詳しいジュニアエンジニアを雇い入れて、コードを書いてもらっている」イメージに近いです。

この「シニア(人間)とジュニア(AI)の協業」という考え方が、現在の私の開発スタイルの基本です。したがって、「人間がゼロからコードを書く意味」をことさらに意識することはありません。

可能な限りAIにコードを書かせ、人間は人間にしかできない部分を補う。これが、現時点での最も効率的なAIとの付き合い方です。

そして今、人間が担っているリファクタリングに関しても、次のステップでは頼めばAIがやってくれるようになるでしょうし、もう少し賢くなれば、頼まなくてもやってくれるようになると期待しています。

コードに込めた「思想」すら、AIがくみ取ってくれる

AIの登場によって、エンジニアが自分の「思想」や「意図」をコードに反映させるプロセスも、大きく変化しています。

かつては、設計やリファクタリングの中で、エンジニア自身がコードに意味を込めていく作業が不可欠でした。しかし今、そうした意図ですら、AIがある程度読み取り、自動でコードに落とし込んでくれるようになっています。

中でも「Cursor」は、オートコンプリート機能が非常に優秀で、特にリファクタリング時に威力を発揮します。私は頻繁にコードを整理し直すのですが、私の意図を汲み取って、期待通りの提案を返してくれるCursorのおかげで、生産性は大きく向上しました。

AIが書いたコードを、レビューもせずに採用することはまだしていませんが、将来的にそんな時代になっても不思議ではない。エンジニアを雇う際に、その人の信頼度に応じてレビューの仕方が変わるように、AIに対しても「どれだけ信用できるか」によって付き合い方が変わっていくのでしょう。

実際、私の長男で「BabyAGI」の開発者・中島洋平は、「バイブ・コーディング」という言葉が生まれる前から、それを実践していました。

彼はAIにコーディングを任せ、ほとんどレビューせずに開発を進めるスタイルです。彼にとっては、コードそのものではなく「動くこと」が重要。コードの質やメンテナンスのしやすさなどは二の次なのです。

コードの意味や構造にこだわって書くタイプのエンジニアとはスタンスが異なりますが、そもそもの目的も用途も大きく異なるので、それはそれでアリだと考えています。

エンジニアの喜びは、実装ではなく価値提供にこそ宿る

AIによって書かれ、人の目を通さずに採用されたコードの比率が増えていくようであれば、「どうやって動いているか誰も理解できないソフトウエア」が誕生してしまうのも、遠い将来のことではないように思います。

急速な進化の過程では、それに応じて人間の役割が変わるのは当然であり、「人の役割はこうあるべき」と決めてかかるのはよくない。AIはあくまで道具なので、その能力に応じて任せられる仕事は任せれば良いし、人間はAIにこなせない部分を補うだけの話です。

いずれ、人間はAIに自然言語で指示するだけで、コードは全てAIが書く時代が来るでしょう。しかし、それもまた、今の私たちがコンパイラに頼って自らマシン語を書かなくなったのと同じ、ごく自然な進化の姿に他なりません。

では、そのとき、エンジニアとしての喜びや達成感は失われてしまうのでしょうか。私は、そうは思いません。

機械語でコードを書く楽しみがC言語に変わり、そしてPythonやTypeScriptで書く楽しみに変わってきたように、今後は「自然言語を使った指示でAIに仕事をさせる楽しみ」に変わるだけです。

結局のところ、エンジニアにとっての根源的な喜びは「自分の仕事によって、どんな価値を世の中に提供できるか」という一点に尽きるのであり、AIの助けを借りたところで、その本質は変わりません。

むしろ大きく変わるのは、提供できる価値のスケールです。これまで100人、1000人のエンジニアが集まらなければ提供できなかった価値が、AIの力を借りることによって一人で提供できるようになってしまう。

裏を返せば、AIの進化により「価値を提供できる側に立つ人」の比率が減っていく。何もこれはエンジニアに限った話ではありませんが、それだけは確実な未来だと言えるでしょう。

編集/今中康達(編集部)

【関連記事】

おすすめの記事