更新:
turing-pattern-lab
Web MVP
チューリング・パターン体験アプリ 要件定義書(MVP)
1. 概要
1.1 アプリ名
Turing Pattern Lab
1.2 目的
チューリング・パターン(反応拡散系)によって生成される自然界の模様を、ユーザーが視覚的かつ直感的に体験できるWebアプリを提供する。
教育用途、サイエンスアート用途、数学への興味喚起を主目的とする。
1.3 対象ユーザー
- 数学や自然科学に関心がある一般ユーザー
- プログラミング学習者
- 学生
- 教育関係者
- サイエンスアート愛好家
- 生成アートに関心があるユーザー
2. MVP方針
MVPでは「まず触って楽しい」ことを重視する。
数式の詳細説明や高度なパラメータ調整機能は後続フェーズとし、初期版では視覚的な体験価値を優先する。
3. システム構成
3.1 フロントエンド
- React
- TypeScript
- Vite
3.2 描画
- HTML Canvas
MVPではCanvasを採用する。WebGL対応は将来拡張とする。
3.3 バックエンド
- なし
- 完全クライアントサイドアプリ
4. 主要機能
F-01 パターン生成
概要
チューリング・パターンをリアルタイム生成する。
要件
- 初期表示時に自動生成を開始する
- Canvas上にパターンを描画する
- アニメーションとして時間発展を表示する
- MVPではGray-Scottモデルを採用する
F-02 プリセット選択
概要
代表的な模様をワンタップで切り替えられるようにする。
プリセット例
- Zebra:シマウマ風のストライプ
- Giraffe:キリン風の網目模様
- Leopard:ヒョウ柄風のスポット
- Coral:サンゴ風の有機的模様
- Maze:迷路風のパターン
要件
- プリセット名を表示する
- 選択すると即座にパラメータが反映される
- MVPではサムネイル画像は必須としない
F-03 パラメータ調整
概要
模様の変化を体験できるよう、主要パラメータを調整可能にする。
MVP対象項目
- Feed
- Kill
将来候補
- Diffusion A
- Diffusion B
- Iteration speed
- Noise amount
UI
- スライダーで調整する
- 現在値を数値表示する
- Feed / Kill は微調整ボタンで0.0001単位の増減ができる
F-04 ランダム生成
概要
ランダムなパラメータを生成し、予期しない模様との出会いを提供する。
要件
- Randomボタンを配置する
- クリックするとFeed/Killなどの値をランダム設定する
- 再生成時は初期状態もリセットする
F-05 一時停止/再開
概要
アニメーションを停止・再開できるようにする。
要件
- Pause / Resume を切り替えられる
- 停止中も現在のパターンは表示維持する
F-06 画像保存
概要
生成したパターンを画像として保存できるようにする。
要件
- PNG形式で保存する
- Canvas内容をエクスポートする
- ファイル名は
turing-pattern.pngなどとする
F-07 ミニ解説
概要
チューリング・パターンの概要を短く説明する。
表示内容
- チューリング・パターンとは何か
- なぜ模様が生まれるのか
- 自然界の例
MVP要件
- 固定テキストでよい
- 詳細な数式解説は必須としない
F-08 カスタムプリセット保存
概要
Randomやスライダー調整後の現在設定を、ユーザーが再利用できるプリセットとして保存する。
要件
- 現在のFeed / Kill / Seedを保存できる
- 保存名をユーザーが指定できる
- 保存済みプリセットをプリセット選択に表示する
- 保存済みプリセットを削除できる
- MVPではブラウザのlocalStorageに保存する
5. 画面構成
5.1 ホーム画面
構成
- ヘッダー
- アプリ名
- 短い説明文
- メイン領域
- Canvas描画エリア
- 操作パネル
- プリセット選択
- Feedスライダー
- Killスライダー
- Randomボタン
- Save Presetボタン
- Delete Presetボタン
- Pause/Resumeボタン
- Save PNGボタン
- 解説エリア
- チューリング・パターンの短い説明
5.2 レスポンシブ方針
PC
- Canvasを大きく表示
- 操作パネルを右側または下部に配置
スマートフォン
- Canvasを上部に表示
- 操作パネルを下部に縦並びで配置
6. 非機能要件
6.1 パフォーマンス
- PCでは60fpsを目標とする
- スマートフォンでは30fps以上を目標とする
- 端末性能に応じてCanvas解像度や計算ステップを調整できる設計とする
6.2 対応ブラウザ
最新版の以下ブラウザを対象とする。
- Chrome
- Safari
- Edge
6.3 アクセシビリティ
- ボタンやスライダーには適切なラベルを付与する
- 色だけに依存しないUIにする
- キーボード操作に極端に弱い実装を避ける
6.4 デプロイ
- Vercelでのデプロイを想定する
- 静的Webアプリとして配信可能な構成にする
7. 将来拡張
Phase 2
- カラーパレット選択
- グラデーション表示
- パラメータのURL共有
- フルスクリーン表示
- プリセットサムネイル
- パターン生成履歴
Phase 3
- WebGL/GPU対応
- 3Dチューリングパターン
- AR表示
- 高解像度アート出力
- 教材モード
- 数式表示モード
8. MVP完成条件
以下が動作することをMVP完成条件とする。
- パターンがリアルタイム生成される
- 5種類以上のプリセットを切り替えられる
- Feed/Killをスライダーで調整できる
- ランダム生成ができる
- 一時停止/再開ができる
- PNG保存ができる
- スマートフォンで画面が破綻しない
- READMEと要件定義書が整備されている
8.1 実装済みスコープ
初期MVPでは、React + TypeScript + Vite のクライアントサイド構成で以下を実装対象とする。
- Gray-ScottモデルによるCanvas上のリアルタイム描画
- Zebra / Giraffe / Leopard / Coral / Maze の5プリセット
- Feed / Kill のスライダー調整
- ランダム生成
- Random / 現在設定のローカルプリセット保存
- 一時停止/再開
- Canvas内容のPNG保存
- PC / スマートフォン向けレスポンシブUI
- プリセット定義とランダム値範囲の最小単体テスト
9. 開発上の優先順位
- CanvasでGray-Scottモデルを表示する
- プリセットを実装する
- Feed/Killスライダーを実装する
- Random / Pause / Save PNGを実装する
- レスポンシブUIを整える
- ミニ解説を追加する
- テストとREADMEを整備する