改めてファウストのはじめに振る舞いありきの意味を、アジャイルやTDDの文脈で説明し直して
ファウストが「はじめに言葉ありき」を「はじめに振る舞いありき」に書き換えた背景は、抽象的な理論や言葉が現実を動かす力を持たないことへの批判と、行動や実践こそが真理を探求する鍵であるという哲学的な転換を示しています。これをアジャイルや**テスト駆動開発(TDD)**の文脈で捉え直すと、非常に深い意味を持つ洞察となります。
1. アジャイルにおける「振る舞いが先にありき」
アジャイル開発では、従来の「全てを完璧に計画し、それに従うべきだ」というウォーターフォール型のアプローチに対して、以下のような哲学的転換が行われています:
ウォーターフォール型(言葉が先にありき)
• 事前に詳細な要件を定義(=言葉)。
• 完璧な設計を立てることが重要視される。
• しかし、実際には変化する要件に対応できず、計画倒れになることが多い。
アジャイル型(振る舞いが先にありき)
• 完璧な要件を最初から決めるのではなく、まず小さな動作可能な成果物(MVP: Minimum Viable Product)を作る。
• 実際に動かして得られるフィードバックから、次に進むべき道を見つける。
• 行動(振る舞い)を通じて要件やゴールが進化する。
具体例
アジャイル開発では、スプリントごとに小さな成果物をリリースし、ユーザーの反応を見ながら次の作業内容を調整します。これは、「行動こそが価値を生む」という哲学そのものです。行動し、振る舞いが現実と接触して初めて、真のゴール(ユーザーの期待や価値)が見えてきます。
2. TDDにおける「振る舞いが先にありき」
従来の設計主義(言葉が先にありき)
• まず詳細な設計書や仕様を作成し、それに基づいてコードを書き、最後にテストをする。
• 仕様に沿ってコードを書くことが目的化し、仕様が変わった場合やバグ修正のたびに作業が破綻しやすい。
TDDのアプローチ(振る舞いが先にありき)
• コードを書く前に「振る舞い」(テストケース)をまず記述する。
• テストは「このシステムはどのように振る舞うべきか」を具体的に示す。
• 振る舞いに従ってコードを書くことで、設計は自然と生まれる。
• さらに、実際のフィードバックを通じて設計や仕様が進化する。
ファウスト的哲学との関係
TDDにおける「テストを書く」という行為は、抽象的な設計(言葉)を超えて、まず「振る舞いを形作る」ことを意味します。この振る舞い(テストケース)は、コードを書くための行動指針であり、行動を通じて初めて設計が現実味を帯びていきます。
3. ファウストの「振る舞いありき」が示唆するもの
「振る舞いが先にありき」という思想をアジャイルやTDDの文脈で解釈すると、以下の重要なメッセージが浮かび上がります。
a. 完璧な計画や設計は幻想である
現実世界は不確実性に満ちており、すべてを予測することはできません。完璧な計画を求めることは、現実を動かす行動を遅らせるだけです。
b. 行動が未来を形作る
抽象的な理論や言葉よりも、まず小さな一歩を踏み出すことが未来を切り開きます。この一歩が、次に進むべき道を教えてくれるのです。
c. 振る舞いは学びを生む
振る舞い(行動)を通じて得られるフィードバックは、ゴールを進化させ、真に価値あるものを作り上げるための道しるべとなります。
4. 結論:TDDとアジャイルの新しい視点
ファウストが「言葉ありき」を「振る舞いありき」に書き換えた意味は、アジャイルやTDDにそのまま当てはまります。
• アジャイルでは、「完璧なゴール設定(言葉)」よりも「まず小さく動いて学ぶ(振る舞い)」が優先されます。
• TDDでは、「事前の設計(言葉)」よりも「テストケースを書く(振る舞い)」が、システムの本質を明らかにします。
ソフトウェア開発においても、真のゴールは最初から言葉で定義できるものではなく、行動を通じて進化していくのです。この哲学が、アジャイルやTDDを通じて「行動する開発」の基盤となっています。