Bonsai エンジニアリング — AIとの開発を「一緒に育てる」ものにする

AIが自律的に高品質な成果物を出せるように、人間が周辺環境を設計する。こうした開発手法を「ハーネスエンジニアリング」と呼ぶことがある。ハーネスは馬具、つまり手綱で意図した方向に導くという比喩だ。

目指していることは同じだと思う。ただ私自身は、手綱よりも盆栽のほうがしっくりくる。制御して導くのではなく、主体性を尊重して、育つ環境を整える。だからこそBonsai エンジニアリングと呼んでみたい。

盆栽の営み = 観察 + 環境づくり + 剪定

盆栽の手入れには、水やり、置き場所の管理、施肥、剪定、針金掛け、植え替え、病害虫の対策と、やることがたくさんある。しかし、その全ての土台にあるのは「よく観察する」ことだという。植物はしゃべらないし、はっきりとした表情も出さない。だからこそ、こちらがしっかり観察して気づいてあげることが大事になる。

観察があって、はじめて環境づくり(土、鉢、日当たり、水やり)と剪定(枝を切る、針金で方向を整える)ができる。そしてこの三つがサイクルとして回っている。

AIとの開発も同じだと思う。

まず環境を整える。AIが動く。出力をよく観察する。そこから剪定する(整える、選ぶ、磨く)。観察と剪定で気づいたことを環境に反映する。するとAIがもっとうまく動くようになる。またその出力を観察して……。

観察、環境づくり、剪定。この三つをぐるぐる回しながらAIと一緒に育てていく。これがBonsai エンジニアリングの全体像だ。

この「剪定」という発想は、実はAI生成コードの分野でも注目され始めているようだ。2025年3月にarXivで発表されたKulaとTreudeの論文「The Shift from Writing to Pruning Software」では、AI生成コードを盆栽のように剪定していくIDEが提案されている。あちらが「出力されたコードの剪定」に焦点を当てているのに対し、こちらのBonsai エンジニアリングは「AIが動く環境そのものの設計」に焦点を当てている。同じ盆栽というメタファーの前半と後半を、それぞれが担っているような関係で、うまく補完し合えるんじゃないかと私は考えている。

環境を構成する4つの要素

環境づくりには4つの要素があると現時点では考えている。

知識 — 判断材料を渡す。仕様書、設計記録、コードなど。AIが良い判断をするには、良い材料が必要だ。

指示書 — 方向を示す。ルール定義ファイルやプロンプトなど。「こっちに向かって」という道しるべ。

治具 — 正しい動きを簡単にする。スキル定義、フォルダ構造、フォーマッターなど。AIが「どうしよう」と迷う前に、自然とそっちに手が伸びる状態を作っておく。

ガードレール — 逸脱を止める。品質チェックやCIゲートなど。越えちゃいけない境界を仕組みで守る。

この4つは「制御の道具」と見ることもできる。でも「AIが自分でいい判断をしやすくなる条件」と見ると、少し違った景色が見えてくる。

治具とガードレールの違い

4つの要素の中で、治具とガードレールの区別に一番悩んだ。

最初は「フィードバックがあるかどうか」で分けようとした。lintはズレを検知して自分で直せるから治具。モジュール警告スクリプトは止めるだけだからガードレール。でも、フィードバックの有無を条件にすると、製造業で実際に使われている治具の定義とズレてしまう。フィードバック機能を持たない治具もたくさんある。

考え直して、今のところの結論はこうなった。治具には必ず「必要な作業や工程」がセットである。ガードレールは工程ではなく、問題への対処だ。

たとえば、読んでほしくないモジュールを参照したら警告するスクリプト。シークレットがコミットに含まれていないかスキャンする仕組み。ブランチ保護。どれも「うっかり踏む罠」を防いでいるだけで、本来はなくていいもの。だからガードレールは減らせるほうがいい。

ただ、同じ道具でも文脈で変わることがある。TDDで書いているときのテストコードは治具だ。Red → Green → Refactorのサイクルで、フィードバックを受けながら設計を進めている。でも同じテストコードがCIゲートに乗ったら、通らないものを止めるガードレールになる。

結局、治具かガードレールかは道具の性質じゃなくて、「これは必要な工程だ」と捉えるか「問題への対処だ」と捉えるかで決まる。そこにその人の開発思想が出るのだと思う。

モンテッソーリの教具に学ぶ

治具をもっと良くするヒントが、モンテッソーリ教育の「教具」にある。

有名な教具の一つに円柱さしがある。大きさの違う円柱を、対応する穴に入れる作業だ。間違った穴に入れると、物理的に入らない。大人が「違うよ」と教えなくても、道具自体がフィードバックを返してくれて、子どもが自分で気づいて直せる。

開発でいうと、lintが近そう。コーディング標準からズレたら「ここ違うよ」とフィードバックが返ってきて、自分で直せる。

治具にこの教具のようなフィードバック機能を持たせると、AIは自分で気づいて修正できるようになる。すると、別途ガードレールで止める必要が減る。

さらに、良い治具で仕事をすると、副産物としてガードレールが自然に生まれることもありそうだ。TDDで設計を進めると、その過程で生まれたテストコードがCIゲートとして機能し始める。わざわざ別でガードレールを作らなくても、良い工程を踏んでいたら勝手にできている。

治具を磨けば、ガードレールは最小限ですむ。 これがBonsai エンジニアリングの核心になりそうな予感がしている。

思想の根っこ

Bonsai エンジニアリングの根っこにあるのは、それぞれの主体性を尊重すること、そして成長に必要な環境を整えること。この考え方は、3つの思想から影響を受けている。

モンテッソーリ教育 — 子どもに教え込むのではなく、自分でできる環境を整える。手の届くところに何を置くかで、何を学ぶかが変わる。AIも学習能力がとても高いからこそ、何を手の届くところに置くかの設計が大事になる。

アジャイル — チームが自律的に動けるように、プロセスや仕組みを整える。管理するのではなく、チームの主体性を活かす。

盆栽 — 木の向かう方向を尊重して、少しだけ手を添える。木が育ちやすいように環境を整え続ける。


これはまだ育てている途中の考えだ。治具の定義はもっと精緻にできるだろうし、4つの要素の境界もまだ揺れている。でも、まず植えてみないと始まらない。

反応があったら、それも剪定の材料にしていきたい。