Agentic Codingが急激なモデルの進化に伴い民主化されてきていますがいかがお過ごしでしょうか。
「これやって〜」→「なんでやってないねん!」を経験しているだろうし、あるいは「なんでrm -rfしてるの!?」とか「なんでDBをDROPしてるの!?」とか、はたまた「出来上がったけど結局手直しめっちゃしてる…」とかとかもやっていると思います。私もそうです。
そういったAI自体の挙動や、ツール呼び出し、仕上がりを制御しましょうね、というものがハーネスエンジニアリングと呼ばれてます。が、この"ハーネス"という話題が非常に範囲が広いのでこれを語る前に、この範囲の話をしますよ、と明示したほうがいいんじゃないかなと個人的には思います。SREやるぞ!とかDevOpsやるぞ!などと同じ。
実際にOpenAIとAnthropicが語っている範囲もちょっと違います。根本は一緒ですが。
- ハーネスエンジニアリング:エージェントファーストの世界における Codex の活用 | OpenAI
- Harness design for long-running application development \ Anthropic
…でもちょっとまって。1年前2年前、あるいはもっと前の我々はそういった問題にも対処してましたよね?
例えば、チームに新しく来た人をチームの一員にしていくため、何かしらをチームと本人がやっていくわけですが、どうやっていましたっけ?
開発環境を整えて、ドキュメントを整えて、システム全体像をわかるようにして、いざコミット!コーディング規約、PR、CI、レビュー、リリース、監視、…..etc。やってはいけないことも、感覚的にそうりゃそうだろ、というものもあると思いますが、明示的に書いてあったこともアレコレあったと思います。要するに「開発体験を整理・改善し、本質に集中できるようにする」ということをやっていたはずです。
このあたりはAIに置き換わっても同じ話なのでは?
関連しそうな記事…
- ai-workspace、やりたいことが概ね出来上がった
- AIにワークフローを任せすぎてはいけない
- チームスペースのドキュメントをどう整理するか
- 新しくチームに来た人向けに何を書いておくか
- ドキュメントを育てていく
- 考古学というスキル
とはいえ、人間とAIは様々な点で違います、少なくとも今は。記憶が通用しない(暗黙知が通用しない)、圧倒的コード生成量、コンテキストウィンドウの限界…
そういった世界になったときに人間向けに行っていた規律とは少し異なるものが必要になるはずです。そこがハーネスエンジニアリングの本体なのではと思います。
「人間が開発体験を整えて人間の開発生産性を向上していく」をやってますが、まずは「人間が開発体験を整えてAIの開発生産性を向上していく」と「AIが開発体験を整えて人間の開発生産性を向上していく」をやっていく。ここでHuman in the loopが出来上がる。そして「AIが開発体験を整えてAIの開発生産性を向上していく」という世界にもっていく。そうなればHuman on the Loopな世界が実現し、AIが主体的に開発を進めて、人間が適宜監督や調整を行う形になる。この方向性こそが、今後のソフトウェア開発の主流になっていくんじゃないかなあ。