12-factor-fasd

12 Factor FASD(Fully Autonomous Software Development)

日本語 | English | GitHub

はじめに

文脈

FASD(Fully Autonomous Software Development) とは、要件定義より後の設計・開発・テストを AI に自走させるソフトウェア開発手法を指します。AI または人によってつくった要件定義を与え、最終成果物の生成まで自律的に動かします。人間による介入、たとえば承認は一切ありません。FASD の結果を受けて、フィードバックを反映してもう一度走らせることは可能ですが、FASD の最中に人間が割り込むことはありません。その名のとおり、AI が完全に自律的に動きます。

FASD の目的は、ソフトウェアの開発コストを減らすことです。AI を用いた開発パラダイムは Lv1:人手、Lv2:人間 with AI、Lv3:AI with 人間、Lv4:AI となっており、FASD は Lv4 にリーチするものです。Lv3 以前よりも、はるかにコストを抑えることができます。

用語を定義します。FASD を実現する何らかの製品を プロダクト と呼ぶことにします。また FASD によってつくられた最終成果物を ファスドウェア(Fasdware) と呼ぶことにします。

本ドキュメントと対象読者について

本ドキュメントは、現時点で先進の域に留まっている FASD を成功に導くためのエッセンスを 12 の TIPS として整理します。12 Factor Agents に触発されていますが、これの内容は含みません。しかし本質的には似通っています。12 Factor FASD は、FASD のための、より具体的な本質に踏み込みます。もし 12 Factor Agents が未履修なら、先に理解しておいた方が良いでしょう。

本ドキュメントの対象読者は、FASD を探索している個人または企業です。探索のヒントに役立てる――具体的には実際に取り入れてみたり、議論のネタにしたりといったことを想定しています。

注意点として、すでに述べたとおり、FASD はまだ先進的なものであり、確立されたプラクティスはありません。本ドキュメントは、そんな難題に挑む皆さんにインスピレーションを与えるために書きました。

12 Factor FASD

1: 要件定義に必要な事前情報はプレーンテキストで太らせろ

なぜなら、書かれていないことはやりようがないから。

Actions:

Background:

Considerations:

2: 要件を検証可能にせよ

なぜなら、要件を検証できないと品質や完了の判定ができないから。

Actions:

Background:

Considerations:

3: 品質はプラガブル(交換可能)にせよ

なぜなら、品質とは合意事項であり単一の絶対解は存在しないから。

Actions:

Background:

Considerations:

4: コンポーネントもプラガブルにせよ

なぜなら、ソフトウェア全体または大部分を一度につくりきるのは非現実的だから。

Actions:

Background:

Considerations:

5: ワークフローは厳密に設計と修正を行えるようにせよ

なぜなら、エージェントに秩序を与えるのはワークフローだから。

Actions:

Background:

Considerations:

6: エージェントは Composite にせよ

なぜなら、再現性と柔軟性のバランスを取れる塩梅だから。

Actions:

Background:

Considerations:

7: デリバラブルは LX(LLM Transformation) 的に解釈せよ

なぜなら、LLM の、道具としての価値は「人間が想定したとおりの UI/UX を実現すること」ではなく「問題無く使えること」であり、前者は後者の必要条件ではないから。むしろ前者を満たしてなくても後者を満たせる塩梅があるはずだから。

Actions:

Background:

Considerations:

8: ビジュアルを排除せよ

なぜなら、ビジュアルは LLM Friendly ではないから。

Actions:

Background:

Considerations:

9: コンテキストウィンドウを超過する前にアボートせよ

なぜなら、物忘れ(コンテキストウィンドウの超過)は低品質を招くから。

Actions:

Background:

Considerations:

10: 待ち時間はコーヒータイム未満にせよ

なぜなら、フィードバックループの効率が最重要だから。

Actions:

Background:

Considerations:

11: オンボーディングの自走を可能にせよ

なぜなら、チームワークにかかるコストを減らして、その分を多様な実験に回すべきだから。

Actions:

Background:

Considerations:

12: 非機能要件はクラフトマンシップに則ってベストエフォートせよ

なぜなら、非機能要件とは人間と人間の契約であり、環境の制約と思惑も絡むため、FASD として行うのは筋違いだから。

Actions:

Background:

Considerations: