Skip to content

Lesson 6: 複数ファイルの関係把握

クラス: 初級
所要時間: 約35分
前提知識: 初級 Lesson 1〜5 完了済み


1. 解説

なぜ複数ファイルの理解が重要か

実際の開発では、1つの機能が複数のファイルにまたがる。

ユーザー登録の処理フロー例:
routes/auth.js → middleware/validate.js → services/userService.js
    → models/User.js → utils/email.js → config/mailer.js

Claude Code は複数ファイルを一度に読んで関係性を把握できる。

複数ファイルを扱う指示パターン

bash
# 全体像を把握
「src/ の全ファイルを読んで、アーキテクチャを説明してください」

# 特定の流れを追う
「ユーザーが /login にPOSTしたとき、どのファイルのどの関数が呼ばれますか?」

# 横断的な変更
「User モデルに phone フィールドを追加します。
 影響を受けるすべてのファイルを教えてください」

# 整合性確認
「routes/*.js services/*.js で呼ばれているメソッドが
 すべて実装されているか確認してください」

クロスファイル修正の注意点

1. まず影響範囲を調べる
   「この変更で修正が必要になるファイルは何ですか?」

2. 変更の順序を決める
   「依存関係の最下層から変更します。まず models/ から」

3. 整合性を保ちながら進める
   「models/User.js を変更しました。次に services/userService.js を更新してください」

2. 実践

Step 1: 複数ファイルからなるプロジェクトを作成

bash
mkdir -p ~/claude-practice/elementary/lesson6/{src,routes,services,models,middleware,utils}
cd ~/claude-practice/elementary/lesson6
bash
claude
以下の構造のNode.js + Express アプリを作成してください。
ファイル間の依存関係を意識して実装してください:

models/product.js
- Product クラス(id, name, price, stock, category)
- CRUD操作(findAll, findById, create, update, delete)
- インメモリデータストア(配列)

services/productService.js
- models/product.js を使ったビジネスロジック
- getProducts(filters): 検索・絞り込み
- createProduct(data): バリデーション付き作成
- updateStock(id, delta): 在庫更新(マイナスになる場合はエラー)

middleware/validate.js
- validateProduct(req, res, next): リクエストボディのバリデーション

routes/products.js
- GET /products: 一覧取得(?category=, ?minPrice=, ?maxPrice= クエリパラメータ対応)
- GET /products/:id: 1件取得
- POST /products: 新規作成
- PUT /products/:id/stock: 在庫更新

src/app.js
- Express アプリのセットアップ
- ルーターの組み込み

Step 2: データフローを追う

POST /products にリクエストが来たとき、
どのファイルのどの関数が順番に呼ばれるか追ってください。
特にバリデーションがどのタイミングで行われるか説明してください。

Step 3: 横断的な変更

Product モデルに description フィールドを追加します。
影響を受けるすべてのファイルを調べて、必要な変更をすべて行ってください。
変更するファイルと変更内容を先に一覧で示してから、実際に変更してください。

Step 4: 整合性チェック

routes/products.js が呼び出しているすべてのサービス関数が
services/productService.js に実装されているか確認してください。
未実装の場合は実装してください。

3. 確認課題(Assignment)

課題 6-1: 依存関係マップの作成

このプロジェクトのファイル間の依存関係を
Mermaid 形式のグラフで表現してください。

graph TD の形式で、どのファイルがどのファイルを
require/import しているか可視化してください。

達成条件: 全ファイルが含まれた依存関係図が生成されること

課題 6-2: 新機能の影響範囲調査

「商品にレビュー機能を追加する」場合、
1. 新しく作成が必要なファイル
2. 変更が必要な既存ファイル
3. 変更の優先順位と順序

を分析してください。実際の変更は行わず、計画だけ立ててください。

達成条件: 影響を受けるすべてのファイルが特定され、実装順序が論理的であること

課題 6-3: バグの横断的な修正

bash
# services/productService.js に意図的にバグを混入(手動で行う)
# updateStock が負の在庫を許可してしまうバグ
updateStock(-999) で在庫がマイナスになってしまいます。
これを修正するためには何ファイルを変更する必要がありますか?
すべての関連する修正を行ってください。

達成条件: updateStock が在庫をマイナスにできなくなり、関連するルートも適切にエラーを返すこと


自己チェックリスト


次の型

Lesson 7: 関数・クラスの追加 →

Claude Code Dojo