nn-anatomy

実装メモ (Implementation Notes)

このファイルは v1 完成までの開発記録。プロジェクト紹介・利用案内は ../README.md を参照。設計の全文は design.md、数学リファレンスは math-notes.md、授業進行プランは lesson-plans.md

大学情報系学部・初学者向けに、ニューラルネットワークの forward / backward / update を ノード 1 つずつの粒度で観察できる GUI シミュレータ。配布物は単一 HTML で、ブラウザで開くだけで動く (v1)。

以下は v1 完成までのフェーズ別ログ + UI/UX 調整の記録。後追いで触る人がコードを読むときの「なぜそうなっているか」の参考。


進捗

フェーズ 内容 状態
P0 設計書 完了 (docs/design.md)
P1 純計算 (rng, model, datasets) + NumPy 参照実装 + 数値一致テスト 完了
P2 view.js の静的描画 + Forward 1 回実行 + 式の展開 (Forward 時) 完了
P3 Forward / Backward アニメーション + Backward 式展開 完了
P4 Update / 学習ループ / Loss 曲線 完了
P5 決定境界 / Lesson 定義 完了
P6 単一 HTML への bundle / オフライン検証 完了

P6 で動くもの (P5 に加え):

単一 HTML を生成するには:

make bundle   # → build/nn_sim.html (単一 HTML)

P6 後の追加 (A/B 系)

P5 で動くもの (P4 に加え):

P4 で動くもの (P3 に加え):

P3 で動くもの (P2 に加え):

P2 で動くもの:

ローカルで動作確認するには:

make serve   # → http://localhost:8000/ でブラウザから開く

開発環境

初回:

uv sync              # Python 依存 (numpy, pytest) を .venv に揃える
node --version       # v20 以上であることを確認

テスト実行

make test            # JS + Python の全テストを一括実行
make test-js         # tests/js/*.test.mjs を node --test で
make test-py         # tests/py を uv run pytest で
make fixtures        # tests/fixtures/*.json を NumPy 参照実装から再生成

現時点で Python 16 件 (うち P6 バンドラ 7 件) / JS 55 件 のテストが通っている状態。

ディレクトリ

prompt/              プロジェクト総則 (既存前提)
docs/design.md       設計書 (最新版)
docs/math-notes.md   画面で展開される数式の定義・導出リファレンス
docs/lesson-plans.md Lesson1〜8 を授業で進行する際のプラン
src/js/              JS 純計算 (rng, model, datasets) + view/explain/controller
src/index.html       UI エントリ (P2 以降)
tests/py/            NumPy 参照実装 + pytest
tests/js/            node:test ベースの JS 単体テスト
tests/fixtures/      参照実装が生成する共通フィクスチャ (JSON)
tools/bundle.py      単一 HTML 生成スクリプト (make bundle から呼ばれる)
build/nn_sim.html    配布用単一 HTML (make bundle が生成, .gitignore 対象)
Makefile             開発タスク一覧 (make help)
pyproject.toml       uv が管理する Python 依存

main.pyuv init が残したスキャフォルド。本プロジェクトでは使わないので削除して構わない (権限の都合で自動削除しなかった)。