Alexis Mabanza @ alexvolkihar.ovh

The Canonは正しい:現実の制約の中で過ごした1年

Aug 5 · 7min

English Version | Version Française

数日すうじつまえ、Federico Bartoliの The Canonんだ。AIコーディングエージェントとはたらくための12の原則げんそくをまとめた、みじかいマニフェストだ。文章ぶんしょうまっていて主張しゅちょうもはっきりしていて、冒頭ぼうとうおな一文いちぶんめくくられる。「どれもあたらしいはなしではない。だがいまや、すべて必須ひっすだ」。つづけて2かいかえした。わたしにとって、エンジニアリングの規律きりつについてかれた文章ぶんしょう本物ほんものかどうかをはかる、いちばんの目安めやすだ。

Bartoliの12の原則げんそくは、おおまかにうと4つのうごきにまとめられる。プロンプトをひらまえ解決策かいけつさくかたちめておくこと。一気いっきおおきく生成せいせいさせるのではなく、レビューできるちいさな単位たんいすすめること。エージェントの要約ようやくしんじるのではなく、すべてを検証けんしょうすること。そして、自分じぶん基準きじゅん毎回まいかいプロンプトでなおすのではなく、エージェントが実際じっさい場所ばしょのこしておくこと。普段ふだんわたし医療いりょうソフトウェアけにSymfonyをいている。このリストりすとんでも、あまり目新めあたらしさはかんじなかった。すでにはぶけなくなっている習慣しゅうかんそのものだったからだ。IEC 62304と、ルールをやぶればビルドを失敗しっぱいさせる静的解析せいてきかいせきツールは、近道ちかみちをほとんどゆるしてくれない。だから、Bartoliの12の原則げんそくのひとつひとつは、善意ぜんいではなくなにほかのものによって、すでにわたしされていた。

プロンプトのまえめる

Bartoliの2番目の原則げんそくは「たずねるまえめる」だ。これは医療機器いりょうききソフトウェアの世界せかい何十年なんじゅうねんまえからもとめてきたことと、そのままかさなる。事前条件じぜんじょうけん故障こしょうモード、受入基準うけいれきじゅんがはっきりするまで、コードにはさわらない。AIエージェントは、まだかたちになっていないアイデアにたいしても、それらしい実装じっそうよろこんで生成せいせいしてしまう。だからこそ、このルールはただしい。ある関数かんすう成功せいこうするまえなに拒否きょひすべきかを一文いちぶんれないなら、まだプロンプトを段階だんかいではない。それよりさきに、本当ほんとう要件ようけんさがしにくべきだ。

エージェントはこの規律きりつ安全あんぜんのための実践じっせんだとらない。ただプロンプトにわせてパターンマッチングしているだけだ。あいまいなプロンプトからは、自信じしんたっぷりな構文こうぶん着飾きかざられたあいまいな実装じっそうしかてこない。そして、そのあいまいさに気付きづくのは、たいていだれかのインシデントになってからだ。

ちいさなバッチと、唯一ゆいいつ証人しょうにんであるdiff

ちいさなバッチで」と「diffをむ」は、むしろひかえめなかただとおもう。すべての処理しょりがトランザクションマネージャーをとおり、すべてのオブジェクトが専用せんようのファクトリー経由けいゆでしか構築こうちくできないプロジェクトでは、一度いちどに12ファイルにまたがる変更へんこうはそもそもレビュー不可能ふかのうだ。わたしはエージェントに、そう単位たんいで(ドメインオブジェクト、それからローダー、ライター、ハンドラーと)ひとつずつ依頼いらいするようにしている。かくステップのdiffをあたまなかおさまるおおきさにたもち、記憶きおくにあるルールのおぼろげなイメージではなく、実際じっさいのルールとらしわせるためだ。

Bartoliの言葉ことばいまあたまのこっているのは「理解りかい負債ふさい」という言葉ことばだ。まずにれた1ぎょうぎょうが、いつかるインシデントにたいするちいさな借金しゃっきんになる。しかも金融きんゆう借金しゃっきんちがって、金利きんり事前じぜんにはおしえてもらえない。「コンパイルがとおった」ことが十分じゅうぶん基準きじゅんになったことなど一度いちどもなかった、というのを、これほどうまく説明せつめいした文章ぶんしょうほかんだことがない。

検証けんしょうだけは圧縮あっしゅくできない

しんじるまえ実行じっこうしろ」はたりまえこえるが、締切しめきりのプレッシャーのもとではエージェントの有無うむ関係かんけいなく、どれだけよく省略しょうりゃくされてきたかに気付きづくとこわくなる。エージェントによってわったのは原則げんそくそのものではなく、りょうだ。1時間じかんあたりにとおす「完了かんりょうしました」という報告ほうこくかずえたぶんだけ、しっかり検証けんしょうするわりにちでませたくなる誘惑ゆうわくつよくなる。わたし単純たんじゅんだが効果的こうかてきなルールにいた。テストもログもトレースもゆびさせないなら、エージェントがどれだけ流暢りゅうちょうかたろうと、「うごいている」は仮説かせつであって事実じじつではない。

ルールをコードする

Bartoliの11番目の原則げんそくは「ルールをコードする」だ。毎回まいかいプロンプトになおすのではなく、エージェントがむファイルに規約きやくく、というものだ。わたし本業ほんぎょうは、これがなぜうまくいくのかを極端きょくたんかたちしめしてくれる。そこでは規約集きやくしゅう努力目標どりょくもくひょうではなく、強制きょうせいりょくつ。アーキテクチャの制約せいやく――どのそうがどのそう依存いぞんしてよいか、どのクラスがファクトリー経由けいゆでしかインスタンスできないか、どのフィールドが絶対ぜったいにログにてはいけないか――は、それぞれ番号ばんごうられた独自どくじ静的解析せいてきかいせきルールによって裏付うらづけられ、コミットのたびにチェックされる。文書化ぶんしょかされた規約きやく自動じどうチェックは、おなじアイデアの2つの半分はんぶんだ。エージェントが無視むしできるスタイルガイドはたんなる提案ていあんにすぎない。リンターが強制きょうせいするスタイルガイドは、契約けいやくになる。Bartoliのこのルールは、一般いっぱんけいだ。わたしほうは、リスクのおおきさゆえにそれが選択肢せんたくしではなくなったときの姿すがたにすぎない。

たどりいた結論けつろん

12の原則げんそくは、どれも成立せいりつしている。規制きせい対象たいしょう安全性あんぜんせいかかわるソフトウェアの世界せかいでは、それらはもはや選択肢せんたくしではなく、そのソフトウェアが存在そんざいゆるされる理由りゆうそのものになる。もっとひろ読者どくしゃけてかれたはずのマニフェストのなかにそれをつけるのは、なんだか不思議ふしぎ感覚かんかくだった。エージェントと一緒いっしょにコードをいているなら、ぜひ原文げんぶんんでみてほしい。みじか文章ぶんしょうだが、そのみじかさに見合みあうだけの中身なかみがある。

> share on linkedin
>