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つの要素の境界もまだ揺れている。でも、まず植えてみないと始まらない。
反応があったら、それも剪定の材料にしていきたい。