ログ駆動開発 (LDD)
「かつて荘周は夢で胡蝶となった。(中略)はたして周が夢で胡蝶となったのか、それとも胡蝶が夢で周となっているのか。」 —荘子『斉物論』(紀元前4世紀頃)
注意: 本章はBe Frameworkが目指す「未来のビジョン」を記述したものです。現在のバージョンではすべてが実装されているわけではありません。
究極の透明性
Be Frameworkが目指すのは、コード、実行、ログ、仕様の全てにおいて究極の透明性があり、またその境界が曖昧になる世界です。
3つの透明性がもたらす可逆性
仕様書からコードを書き、実行してログが出力されるという一方通行の流れは当たり前のものです。しかし、Be Frameworkは以下の3つの透明性によって、完全な「可逆性(Reversibility)」の可能性を探ろうとしています。
- 構造的透明性 (Structural Transparency):
#[Be]属性によって、変容のフローがコードの構造そのものとして明示されています。これにより、静的解析だけでアプリケーションの全遷移図(Decision Graph)を描くことが可能です。
- 意味的透明性 (Semantic Transparency):
- 変数名は単なるラベルではなく、契約です。
$emailという名前はEmailクラスによる検証と思想的な定義(ALPSなど)を内包しています。これにより、変数名を見るだけでそのデータの「意味」と「保証」が分かります。
- 変数名は単なるラベルではなく、契約です。
- 実行透明性 (Execution Transparency):
- セマンティックログは、単なる「通過記録」ではなく、「なぜその決定に至ったか」という判断の根拠を全て記録します。
価値の無限ループ
この透明性が、AIによる「推測の排除」を実現します。
- Log: 人間(またはAI)が「あるべき物語」をログとして記述する。
- AI Construction: AIはそのログから、構造的・意味的透明性を頼りに、推測ではなく「作業」としてコードを組み立てる。
- Code: 生成されたコードは、時間的存在(Temporal Being)の定義になる。
- Execution: コードが実行され、契約通りのログが出力される。
- Verification: 出力されたログと、最初の物語(Log)が一致することを、実行透明性によって確認する。
このサイクルにより、「夢(Log)」と「現実(Code)」が相互に変換され続ける世界が完成します。
Log-Driven Development (LDD)
この可逆性がもたらす新しい開発手法が、Log-Driven Development (LDD) です。
“Code ⇔ Log ⇔ Specification”
TDD(テスト駆動開発)が「振る舞い(Doing)」を定義してから実装するように、LDDでは「物語(Log)」を定義してから実存(Code/Being)を生成します。
- Narrative First: 開発者はまず、「あるべき実行ログ(Semantic Log)」を書きます。これはシステムが辿るべき「物語」であり、アプリケーションを定義するDSL(ドメイン固有言語)そのものです。
```yaml
UserRegistration:
- Input: {email: “New User”, …} Becomes: ValidatedUser
- ValidatedUser: Becomes: RegisteredUser ```
- Specification Generation: ログから「仕様(どのような状態遷移が必要か)」が導き出されます。
- Code Generation: 仕様から、それを実現するための
#[Be]チェーンとクラス定義が自動生成されます。
未来のデバッグ
究極の透明性が実現された世界では、デバッグは「ログを読む」ことと同義になります。再現不可能なバグは存在しません。なぜなら、ログが完全な「実行可能な仕様書」となっており、そのログを流し込むだけで、システムは全く同じ変容プロセスを再現(Replay)できるからです。
結論: Code as Philosophy
冒頭の「胡蝶の夢」は古代の中国の思想家の荘子の逸話です。
夢の中で胡蝶(蝶のこと)としてひらひらと飛んでいた所、目が覚めたが、はたして自分は蝶になった夢をみていたのか、それとも実は夢でみた蝶こそが本来の自分であって今の自分は蝶が見ている夢なのか
LDDでログがコードになりえるのはまさにこの胡蝶の夢で、Be Frameworkの完全な透明性が、ログとコードの意味の境界を曖昧にします。意味的ログはいわば、アプリケーション実行のDSLです。その時、思想が言葉になり、言葉がコードになり、コードが物語になる。
Be Frameworkにおけるプログラミングは、単にコンピュータに命令することではありません。 それはまるで生命のようなデジタル空間における「時間的存在」を定義し、その変容の意味が物語(Log)を紡ぎ出させる行為なのです。