> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/ja/2021/w22-prototypes-and-tracers.md).

# W22-プロトタイプと曳光弾

『達人プログラマー』で、プロジェクトを形にするための二つの概念、プロトタイプと曳光弾を読んだ。今進めている再設計にも参考になる。

プロトタイプは、生産ラインに入る前に作る型のようなもので、小さなデモであり、使い捨てのコードを生む。目的は、最終システムの特定の側面を探ることだ。実現可能性を評価し、方針を検証する過程に当たる。最後は検証用に作ったプロトタイプ全体を捨て、教訓だけを本格的な開発に活かす。たとえば、今回の再設計を支えるビルド・デプロイ方式は何か、依存管理によって基盤コードの再利用率をどう高めるか、といったことだ。

再設計は必ず数か月に及ぶ大きな仕事になる。変化する環境では、予想できない相互作用が多く生じる。チーム内のワークフローがある程度変わり、業務の一部の流入経路にも影響するだろう。曳光弾型の開発は、信頼できる対処法になる。

曳光弾とは何か。

> 曳光弾は通常の弾薬の間に挟んで弾倉へ装填される。発射されるとリンが燃え、銃から着弾点まで光の軌跡を残す。曳光弾が目標に当たれば、その後の通常弾も当たる。兵士はこれを使って照準を調整する。現実の条件のもとでリアルタイムのフィードバックを得る、実用的な方法だ。

私には、曳光弾型はストラングラー型やリーンの考え方に近く見える。通常弾との最大の違いは、リアルタイムのフィードバックだ。曳光弾型開発では、初めて取り組むものを実装するとき、照準、発射、フィードバック、調整のループを繰り返し、何周期もかけて真の目標へ少しずつ近づく。実際には曳光弾と通常弾を交互に使うべきだ。曳光弾で軌道を定め、枠組みを作り、余白を残す。協働する人が通常弾でその余白をどう埋めるか、理解できるようにする。

不慣れで変化の激しい環境では、プロトタイプと曳光弾を組み合わせてプロジェクトを進めるのはよい選択だ。プロトタイプ作成は、曳光弾を撃つ前の偵察と情報収集と考えられる。曳光弾のコードで、単純だが一通りそろった、最終システムの枠組みの構成要素を作る。最後に通常弾を一つずつ加えて深みを与え、目標を貫く。

<br>
