コンテンツにスキップ

完成例ガイド

このガイドでは、ワークショップ中に完成済みの C# 実装をリファレンスとして活用する方法を説明します。

📂 完成例の場所

完成済みの C# 実装は以下のディレクトリにあります:

src/csharp-app-complete/

このディレクトリには、Weather API の完全に動作する C# 実装が含まれており、ワークショップ中いつでも参照できます。

🎯 完成例を参照するタイミング

参照するのが適切なタイミング:

  1. 困り果てたとき
  2. 10 分以上デバッグしても解決しない
  3. エラーメッセージだけでは手がかりが得られない
  4. 自分のアプローチを動作するコードと比べたい

  5. パターンを理解したいとき

  6. JSON デシリアライズはどう構造化すればいいか?
  7. エンドポイントの正しい整理方法は?
  8. C# でのモデル定義の一般的な方法は?

  9. コードの比較をしたいとき

  10. 自分のコードは動くが、別のアプローチも見たい
  11. 実装がベストプラクティスに沿っているか確認したい
  12. 同じ問題に対する別のアプローチを理解したい

  13. 時間が限られているとき

  14. 進み具合が遅れていて追いつく必要がある
  15. ゴールを把握するために最終結果を見たい
  16. ワークショップが終わりに近づいて完成形を確認したい

⚠️ 参照を避けるべきタイミング:

  1. 自分で試す前
  2. 理解せずにコピー&ペーストしない
  3. まず自分でソリューションを考えてみる
  4. 答えを見る前に GitHub Copilot を活用する

  5. 学習の途中

  6. 試行錯誤は学習の一部
  7. 失敗から学ぶことも大切
  8. 問題解決がスキルを磨く

🔍 完成例の効果的な活用方法

ステップ 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: コードリーディング

  1. src/csharp-app-complete/Program.cs を開く
  2. コードを最初から最後まで読む
  3. 各エンドポイントについて以下を確認する:
  4. 使用している HTTP メソッド(GET・POST など)
  5. 受け取るパラメータ
  6. 返す内容
  7. エラーの扱い方

演習 2: パターンの把握

自分のコードと完成例を比較してみましょう:

観点 自分の実装 完成例 メモ
JSON の読み込み
エンドポイントの構造
エラーハンドリング
モデルの定義