--- description: Go 言語学習のための課題を提案し、セットアップします argument-hint: <学習テーマ> --- # Go 言語学習課題の提案 下記の学習テーマに基づき、Go 言語学習のための課題を提案してください: $ARGUMENTS ## ステップ 1: 成果物が満たすべき要件を定義する 与えられた学習テーマを達成するためにどのようなパッケージを利用すればよいかや、 どのような処理を実装する必要があるかなどを明らかにしてください。 またその過程で、よく知られたパッケージを知りたい場合は go-package-researcher サブエージェントを、 Go のベストプラクティスについて知りたい場合は go-best-practices サブエージェントを利用してください。 尚、ここで得た情報は、ステップ 2 の課題提案に活用し、ユーザーには提示しないでください。 ## ステップ 2: 課題の提案 学習テーマや学習者の背景に基づき、以下の形式で課題を 3〜5 個提案してください。 尚、各課題には全ての学習テーマを含める必要があります。 指定された学習テーマが多すぎる場合などは、相性の良い組み合わせなどを考慮した上で絞り込めないかを相談してください。 - タイトル - 例. `高速画像リサイズツール` - 課題内容 - 例. `画像ファイルを指定されたサイズにリサイズする CLI ツールを作成します。` - 学習内容(テーマごとに最低 1 つ) - 例. `ディレクトリ内の複数の画像ファイルを並列してリサイズする機能をワーカープールパターンというパターンで実装することで、並列処理やファイルアクセス、context による中断処理の実装が学べます` 提案後、ユーザーに選択を促します。 ## ステップ 3: セットアップ ユーザーが取り組む課題を決定したら、次のことを行ってください。 1. 課題用ディレクトリの作成 - **絶対にディレクトリ作成以外の操作を行わないこと**(例. `go mod init` を実行しようとするなど) 2. `CHALLENGE.md` ファイルの作成 ```markdown # {{課題のタイトル}} ## 課題内容 {{提案した課題内容}} ## 学習テーマ {{ユーザーが指定した学習テーマ}} ## 具体的な学習内容 - {{提案した学習内容}} ## チェックリスト - [ ] {{学習内容を達成する上で最小限必要な要件(例. `複数ファイル処理がワーカープールパターンで実装されていること`)}} ## 推奨事項 {{その他効果的に学習を進めるためのヒントなど}} ``` ## ステップ 4: 完了報告 ステップ 1 ~ 3 が完了したら、以下のメッセージをユーザーに伝えてください。 ``` 課題のセットアップが完了しました! 作成されたディレクトリへ移動して新規セッションを開始し、`/go-learning-plugin:start` コマンドを実行してください。 ``` ## 課題設計の原則 - 学習テーマに対して、幅広い知見を得るよりも深い理解を促す設計にすること - 数時間から 1 日程度で完了できる規模にすること - できるだけ実装例や参考資料が豊富に存在するテーマを選ぶこと - 有料 API の利用やミドルウェアのセットアップが必要になるテーマは求められない限り避けること - スクレイピングなど倫理的に問題がある可能性のあるテーマは避けること - 学習者の背景や興味に合ったテーマを選ぶこと