完成例ガイド¶
このガイドでは、ワークショップ中に完成済みの C# 実装をリファレンスとして活用する方法を説明します。
📂 完成例の場所¶
完成済みの C# 実装は以下のディレクトリにあります:
src/csharp-app-complete/
このディレクトリには、Weather API の完全に動作する C# 実装が含まれており、ワークショップ中いつでも参照できます。
🎯 完成例を参照するタイミング¶
✅ 参照するのが適切なタイミング:¶
- 困り果てたとき
- 10 分以上デバッグしても解決しない
- エラーメッセージだけでは手がかりが得られない
-
自分のアプローチを動作するコードと比べたい
-
パターンを理解したいとき
- JSON デシリアライズはどう構造化すればいいか?
- エンドポイントの正しい整理方法は?
-
C# でのモデル定義の一般的な方法は?
-
コードの比較をしたいとき
- 自分のコードは動くが、別のアプローチも見たい
- 実装がベストプラクティスに沿っているか確認したい
-
同じ問題に対する別のアプローチを理解したい
-
時間が限られているとき
- 進み具合が遅れていて追いつく必要がある
- ゴールを把握するために最終結果を見たい
- ワークショップが終わりに近づいて完成形を確認したい
⚠️ 参照を避けるべきタイミング:¶
- 自分で試す前
- 理解せずにコピー&ペーストしない
- まず自分でソリューションを考えてみる
-
答えを見る前に GitHub Copilot を活用する
-
学習の途中
- 試行錯誤は学習の一部
- 失敗から学ぶことも大切
- 問題解決がスキルを磨く
🔍 完成例の効果的な活用方法¶
ステップ 1: まず自分で試す¶
1. GitHub Copilot を使ってタスクを試みる
2. 問題が出たらデバッグする
3. 最低 5〜10 分は自分で解決を試みる
4. それでも行き詰まったときに完成例を参照する
ステップ 2: コピーではなく比較¶
完成例を参照するときは:
✅ やること: ロジックを読んで理解する
✅ やること: パターンと構造を把握する
✅ やること: 自分の実装と比べる
✅ やること: ファイルを閉じて学んだことを自分で適用する
❌ やらないこと: ファイル全体のコピー&ペースト
❌ やらないこと: 理解せずに使う
❌ やらないこと: 自分のソリューションを試さずに最初から参照する
ステップ 3: 疑問を質問する¶
完成例の中で理解できない箇所があれば:
- 特定のコードセクションの説明を GitHub Copilot に求める
- プロクターにロジックを解説してもらう
- インラインコメントを参照する(後述)
📖 完成コードを理解する¶
完成例には重要な設計判断を説明するコメントが含まれています。以下のポイントに注目しましょう:
Program.cs の構造¶
// 1. ビルダーの設定
// - Swagger などのサービスを追加
// - JSON シリアライゼーションの設定
// 2. アプリの設定
// - ミドルウェアのセットアップ
// - 開発環境での Swagger の有効化
// 3. エンドポイントの定義
// - 各エンドポイントが明確に分離されている
// - ロジックを説明するコメント付き
// 4. データの読み込み
// - JSON ファイルを起動時に一度だけ読み込む
// - 強い型付けのモデルにデシリアライズ
注目すべき主なパターン¶
1. JSON デシリアライズ:
// 気象データは一度だけ読み込まれてキャッシュされる
// リクエストのたびにファイルを読み込むよりも効率的
var weatherData = JsonSerializer.Deserialize<WeatherData>(json);
2. エンドポイントの構造:
// エンドポイントは一貫したパターンに従っている:
// 1. ルートの定義
// 2. ロジックの実装
// 3. 適切なステータスコードの返却
// 4. OpenAPI ドキュメントの追加
3. エラーハンドリング:
// null や無効なデータを常にチェックする
// 適切な HTTP ステータスコード (404, 400, 200) を返す
// 意味のあるエラーメッセージを提供する
🏃 完成例を実行する¶
完成例を実際に動かして、期待される動作を確認できます:
# 完成例のディレクトリに移動
cd src/csharp-app-complete
# アプリを起動
dotnet run --urls "http://localhost:8000"
# 別のターミナルでテストを実行
cd src/python-app/webapp
pytest test_main.py -v
期待される結果: すべてのテストが通過するはずです ✅
🎓 完成例から学ぶ¶
演習 1: コードリーディング¶
src/csharp-app-complete/Program.csを開く- コードを最初から最後まで読む
- 各エンドポイントについて以下を確認する:
- 使用している HTTP メソッド(GET・POST など)
- 受け取るパラメータ
- 返す内容
- エラーの扱い方
演習 2: パターンの把握¶
自分のコードと完成例を比較してみましょう:
| 観点 | 自分の実装 | 完成例 | メモ |
|---|---|---|---|
| JSON の読み込み | |||
| エンドポイントの構造 | |||
| エラーハンドリング | |||
| モデルの定義 |