弁護士ドットコム株式会社 Creators’ blog

弁護士ドットコムがエンジニア・デザイナーのサービス開発事例やデザイン活動を発信する公式ブログです。

開発系AIツールの探索とAI時代の「富豪的プログラミング」

ブログタイトル画像「開発系AIツールの探索とAI時代の「富豪的プログラミング」」と記載されている。 こんにちは、CTOの@stanakaです。

年明けから2か月間、社内でさまざまなAIを活用した開発ツールを試してきました。当社ではすでにGitHub Copilotを標準的に導入していますが、他にも良いツールがあるはずだということで、エンジニアの皆さんに新しいツールを積極的に試してもらいました。

今回試した主なツールは以下のとおりです。

  • Cursor
  • ChatGPT Plus, Pro
  • Claude Pro
  • Claude Code
  • Cline
  • Devin

もっといろいろ試せるとよかったですが、リソースは有限なので今回はここまでとしました。取り組みの様子はブログでもいくつか紹介していますので、ぜひご覧ください。

creators.bengo4.com

AIによるプログラミングの変化

社内で特にAIツールを使いこなしているエンジニアの傾向を観察すると、単一のツールに限定するのではなく、用途や状況に応じて複数のツールを組み合わせていることが分かりました。

例えば、

  • 難しいタスクでは、リアルタイムで対話的に進められるCursorやClineを使用。
  • 作業は単純だけれど量が多いタスクでは、指示を出すだけで自動的にPull Requestまで作成してくれるDevinを活用。

特にDevinが指示に基づいて自動でPull Requestを作成してくれる様子を見ていると、AIを非同期で使いこなすことが生産性向上の鍵を握っていることを強く実感します。

現時点では、AIに完全に任せられる部分はまだ限られており、

  • ゴールの定義(何を作るか)
  • 最終的な品質の確認

は当面人間が行う必要があります。ただ、これらの間にある「実際のコーディング作業」をいかにAIに任せていけるかが今後の大きなテーマです。できるだけAIを活用していくためには、これまでとは異なる考え方を取り入れていったり、よりうまくAIを使いこなすノウハウの蓄積が大事となり、組織全体として取り組むことが全体的な生産性向上に求められるでしょう。

またこの2か月間でも、CopilotのAgent modeの登場、Devinのアップデート、Claude 3.7 sonnetとClaude Codeのリリースなど、新しいツールや機能が次々と登場しており、当面は進化の勢いは継続し、継続的に方法をアップデートし続けていくこととなりそうです。

AI時代の「富豪的プログラミング」とは

AIを活用したプログラミングは、これまでとはまったく違うようですが、コンピューターサイエンスのこれまでの進化の延長線上とも捉えることができます。

コンピューターサイエンスは、抽象化のレイヤーを積み重ねることで、複雑なことを簡単に実現できるよう進化してきました。

  • コンピューター黎明期:機械語(バイナリ)での直接記述
  • プログラミング言語の進化:アセンブリ言語 → C言語 → JavaやPythonなどの高水準言語や関数型プログラミング言語

これらの流れの延長に、AIを活用したプログラミングがあります。

  • これまで:各種プログラム言語 → (コンパイラによる変換) → 機械語 → 実行
  • AI時代:自然言語(プロンプト) → (LLMによるプログラム言語生成) → 各種プログラム言語 → (従来のコンパイラによる変換) → 機械語 → 実行

将来的には、プログラム言語はあくまで「中間言語」として扱われ、目的や制約を自然言語で記述するだけでAIが処理してくれるようになる可能性があります。しかし、AIが生成するコードには非決定性(結果が一意に定まらない)があるため、安定性を保証するためには、AIが生成した中間コードをスナップショットとして保存・管理する仕組みが必要になるかもしれません。

1990年代に増井俊之先生(先日、最終講義をされていました。時代が流れるのは早いですね……!)が提唱された「富豪的プログラミング」は、コンピューティング資源を潤沢に使い、開発効率を優先する考え方でした。AI時代では、AIによる実装やその最適化が簡単に行えるため、この「富豪的」な考え方が再び重要になるかもしれません。

富豪的プログラミングで提唱された2つの考え方は、AI時代ではこう読み替えられます。

  • メモリや実行効率を気にしないでお気楽にプログラムを作る → 実装コストを考えないで、お気楽に指示をする
  • 条件が変わるたびにすべての計算や表示を行なう → 前提が変わったら、それまでの実装を捨てて、すべて作りなおす

これらによって、以下のようなことが実現できます。

  • これまで避けられてきた行きすぎた抽象化や早すぎる最適化が、AIにより低コストで実現可能に
  • 自然言語レベルの指示でAIが最適化を自動で行うため、技術的負債が一瞬で解消されるように

例えば、gccコマンドに -O2 オプションを与えるようなノリで、プロンプトに"最適化しておいて"と書いておけば最適化してくれるような世界です。コンパイル時間を気にして-O2オプションを付けないでおくプログラマがいないように、AIが苦労するのを気にして"最適化しておいて"と書かないプログラマはいなくなるかもしれません。(2025年現在はLLMのコストはそんなに安くはないので、今現在は書かずにおきたくなるかもしれませんが…)

こうした新しいプログラミングの考え方は「AI時代の富豪的プログラミング」とも呼べるのではないでしょうか。

AIをフルに活用したプログラミングはまだ黎明期であり、今後どのように進化していくのかが非常に楽しみです。長年コンピューターに携わっていますが、まだまだ興味深い進化が続いていて飽きません。皆さんもこの変化の波を楽しみながら乗りこなしていきましょう!