Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

AIエージェントだけにコードを書かせたら、エンジニアの未来が見えた

こんにちは。技術本部Sansan Engineering Unit名刺メーカーDevグループの佐藤です。

今や生成AIの全盛時代となりました。Sansan株式会社でも、2025年のテーマを「AIファースト」と位置づけ、全社OKRとして「各組織の業務をAIに置き換える」ことを掲げました。Sansan Tech Blogをご覧になる皆さまも、きっとその活用を進めていらっしゃることと思われます。


そんな中でも話題なのが、いわゆるAIエージェント(以下エージェント)に指示を与えて、コードの大半ないしすべてを書いてもらう手法です。*1具体的には、エージェントとチャット形式でやり取りし、PR作成や修正まで自動で行ってもらいます。こういった手法は、コーディングの量や質といった生産性を直接的に上げるほか、エンジニアの労働における自律性の向上など、労働環境全般の改善にも資することができます。*2

エージェントだけで実装を完結させよう!

最終的な理想の1つは、恐らく、「エージェントがすべてのコーディングを行うこと」でしょう。しかし実際には、途中で少なからず人手が入るでしょう。あるいはチームメンバーやタスクごとにエージェントを使ったり使わなかったり、同じチームでも状況は一貫しないことが多いでしょう。実際に私の開発チームもそうでした。

そこで、我々はある試みを行うことにしました。それは、このエージェントのみであらゆるコーディングを行い、すべての実装を完結させることにしました。このとき、人間は手動で一切コードを書いてはいけません。どんなに上手く行かなくても、とにかくエージェントへの指示だけで、何とか実装を完成させます。結果として、約3カ月で100PRを作り、2つの機能を開発することに成功しました。

今回我々が使ったのは、自律型AIエンジニア "Devin" でした。しかし、どのエージェントを使うかに拘らず、エージェント全般の使い勝手などを知る上で、非常に有益な試みでした。そのため、今後Claude Codeといった別のエージェントを使うとしても、今回の経験を活かせると確信しています。

何を学んだか?

改めて明確になったのは、エージェント全般の得意不得意です。全般的には、いわゆる部分最適が求められる分野は得意であり、全体最適が求められる分野は不得意だと思われました。

エージェントの得意分野:部分最適

まずエージェントが大得意なのは、小さくて難しい作業です。具体的には、SQLのチューニングがそれに当たります。人間がSQLのチューニングを行う際は、漸進的な作業が必要になります。例えば、まず現状のテーブル設計やクエリを概観します。その上で、どのように改善できるかを検討します。さらに実行計画の取得や実計測により、その方針が本当に適切かを確認していく必要があります。これを一挙に行うのは、なかなか困難です。しかし、エージェントにかかれば、ほぼ完璧な改善策が一瞬で導き出されます。また、複雑なロジックの最適化なども得意です。大半の人間にとって認知負荷が高く、解決に時間がかかるようなループ処理なども、エージェントは立ちどころに最適化してくれます。

次に、単純な内容を大量に作るのも得意です。例えば、シンプルなCRUD APIを作るようなタスクであれば、もう人間のチェックすら殆ど不要です。既存の設計や実装に基づき、自動テストまで含めて、ほぼ完璧かつ素早く実装が完了します。あるいは、新旧処理の一括置換なども、迅速かつ正確に行います。既存の処理と互換性のある新しい処理を作った際など、IDEの補完機能では完全な置換は難しい場合があります。こういった場合でも、もはや人間がコードをgrepして1つずつ確認したり、置き換えたりする必要はなくなります。

既存の実装を読み込み、素早く真似できるのも、エージェントの特筆すべき強みの1つです。人間がそれを行う場合、設計資料や実際のコードを読み込み、時間をかける必要がしばしばあります。しかし、エージェントにそんな時間は必要ありません。同じような設計や実装であれば、既存の例を元に素早くこなせます。そのため、何か既存の処理を横展開するような場面も、エージェントを積極的に活用したいタイミングの1つです。

最後に、デバッグの心強い味方にもなります。何かエラーが起こった際、もし人間が直観で答えを導けなければ、エラー内容や関連する処理を1つずつ精査する作業が始まります。こういった状況においてエージェントは、手がかりを元にコードベースを素早く総当たりに照合するような、人間には難しいこともできます。こうした物量作戦が有効な場面も、現実には少なくありません。

これらの得意分野は、いずれも包括的な知識や判断をあまり必要としない、局所的な困難への対処といえます。言い換えると、「単純だが難しい」または「単純だが多い」分野とも言えます。

エージェントの苦手分野:全体最適

逆にいうと、「複雑」な分野は、一般にエージェントが苦手だと言えるでしょう。その代表例は、包括的な知識や判断を要する作業です。ビジネスロジックの整合性を取って実装するのは、そういった作業の1つでしょう。例えば、既存のモデルに何か新たな制約を追加するとします。制約自体はモデルが持つプロパティを少し弄れば追加できたとしても、そのバリデーションや、そのモデルとプロパティを呼び出す別の処理など、さまざまな場所で一貫して制約を働かせる必要があります。場合によっては、関連する別のモデルも調整が必要かもしれません。このようなある種の「気遣い」は、エージェントには難しいことです。そのため、間接的な影響範囲を漏らさないよう慎重に指示しないと、中途半端に修正するか、あるいは全く無視されます。

また、複数の情報間で一貫性を保って行動するのも苦手です。このことを最もよく理解したのは、既存のコードからOpenAPI形式でAPIドキュメントを作ってもらおうとしたときでした。どんなに注意深く指示しても、必ずどこかしらのAPIが欠けていたり、間違っていたり、あるいは全く存在しない架空のAPIが含まれたりしました。また、複数のリポジトリやサービスに跨るアプリの実装においても、似たような問題が起こりました。

デザインを含む実装は、以上とは異なる複雑性を含む分野です。前提として、我々が使ったエージェントであるDevinは、現状画像ファイルやFigmaなどのデザインツールを直接読み込むことが出来ません。一方で、1コンポーネントの実装に際しても、色や大きさ、影や配置など、事細かな指定が存在します。これらを逐一言葉で説明しようとすると、多大な労力が必要であり、また漏れも容易に発生し得ます。そのため、デザインの調整を含む実装は、現状非常に厳しいと言わざるを得ません。ただし、この問題はMCPを使うことで改善される可能性があります。*3

エージェントとの付き合い方を工夫しよう

今回の試みを通じて、エージェントはツールではなく、むしろ人間の部下として扱った方が適切なのではと思わされました。ただし、要領よく「一を聞いて十を知る」タイプではなく、不器用だが生真面目な専門家に近いでしょう。文字通り「エージェント(代理人)」として働いてくれます。

そんな彼/彼女との付き合い方にはコツが要ります。まず、とにかくタスクは細かく、曖昧さを排除することです。背景や行間を読み取るなど、「よしなにする」ことを期待してはいけません。そして、少なくとも現時点ではすべての仕事を任せず、適切に分担する必要もありそうです。元々の企画は「エージェントだけで実装を完結させよう」だったため、今回は無理やりすべてのタスクを任せました。しかし、上述のような苦手分野においては、却って効率が落ちたことも否めません。そのため、今回の経験を生かし、何を任せるべきかは吟味すべきでしょう。得意不得意に合わせて仕事を分担するのも、人間と全く変わりません。また、そういった苦手なタスクの中でも、特にフロントエンドの大半の実装はまだ任せられないでしょう。なぜなら、デザインの調整を伴わないフロントエンドの実装は、殆ど存在しないためです。ここはエージェントと我々、双方における今後の改善に期待です。

エンジニアの未来:人類総マネジメント時代へ

エージェントにすべての実装を任せる試みは、課題こそあれど、既にかなりの成果が上がりました。そのため、恒久的な施策とすることも検討しています。
そこで改めてタイトルに戻ります。この施策が完全に恒久化した未来において、エンジニアはいよいよコードを書く必要がなくなります。そうなると、少なくとも実装者としてのエンジニアは消滅します。開発段階では、いわゆる上流工程を担当するエンジニアのみが存在し、下流工程を担当するエージェントに仕事を任せることになります。このエージェントは殆ど人間のようであり、実際に自然言語で指示します。また、その指示の具体的な内容や、指示全体を取りまとめるタスクなども、エンジニアが考えて書く必要があります。作業の見積もりに際しても、自分ではなくエージェントが、その指示やタスクをどの程度の期間で終えるかを元に行います。
この状況はつまり、もはやすべてのエンジニアが実質誰かのマネージャーになることを意味します。そしてその誰かとは、エージェントにほかなりません。言い換えれば、エンジニアは受注者から発注者へ、作業者から管理者へと、その姿を変えるのではないでしょうか。このような変化の中で、エンジニアに求められる能力やその比重も変わっていくに違いません。その未来を少し先取りして体験できるよう、皆さんも一度エージェントにすべてを任せてみてはいかがでしょうか?

Sansan技術本部ではカジュアル面談を実施しています

Sansan技術本部では中途の方向けにカジュアル面談を実施しています。Sansan技術本部での働き方、仕事の魅力について、現役エンジニアの視点からお話しします。「実際に働く人の話を直接聞きたい」「どんな人が働いているのかを事前に知っておきたい」とお考えの方は、ぜひエントリーをご検討ください。

*1:この手法は "Agentic Coding" とも呼ばれます。Sansan Tech Blogには、そのなんたるかについての記事があります。ぜひご一読ください。buildersbox.corp-sansan.com

*2:ちなみに、私の属する名刺メーカーの開発チームは、メンバーがさまざまな支店に散らばる、いわば「拠点分散型組織」となっています。そこで生産性を高める手法の1つとしても、エージェントは有用だと考えます。詳しくは別の記事にまとめております。宜しければご覧ください。 buildersbox.corp-sansan.com

*3:デザイン実装の自動化に関しては、Figma MCP, Figma Code Connectを使った例がSansan Tech Blogにあります。こちらも非常に興味深い内容であり、一読の価値ありです。 buildersbox.corp-sansan.com

© Sansan, Inc.