当日の進行表と演習手順です。参考プロンプトや答えは本書には載せず、配布フォルダの hints にまとめています。まず自分で問いを立て、行き詰まったときに hints を開いてください。AIが返した内容をそのまま信じず、動かして確かめる。この姿勢を一日通して持ち帰っていただくのが狙いです。
座学と演習をおよそ半々で進めます。所要時間は時刻ではなく分量で示します。講義・演習 [420min] に定着・休憩 [100min]・予備 [20min] を加えた合計 [540min] で、60〜90分に1度を目安に、学んだ内容の定着時間を兼ねた休憩を [10min] 取ります。
| No. | 内容 | 区分 | 所要 |
|---|---|---|---|
| 1 | イントロダクション | 座学 | [15min] |
| 2 | グループワーク: AI時代のエンジニアに必要な能力 | 演習 | [30min] |
| 3 | AIとの協働の仕方 | 座学 | [25min] |
| - | 定着・休憩(GWの意見と協働の分担を手元メモに) | 休憩 | [10min] |
| 4 | プロンプトエンジニアリング概論 + Copilot演習(Java/Python) | 演習 | [55min] |
| 5 | コンテキストエンジニアリング概論・実践 | 座学 | [30min] |
| - | 昼休憩 | 休憩 | [60min] |
| 6 | ワーク: AIに問いを立てる力 | 演習 | [40min] |
| 7 | 解説・振り返り | 座学 | [20min] |
| - | 定着・休憩 | 休憩 | [10min] |
| 8 | AIとの協働(出力を評価する力) | 座学 | [25min] |
| 9 | 生成AI利用におけるセキュリティとリスク | 座学 | [25min] |
| 10 | AI時代の開発スタイル | 座学 | [25min] |
| - | 定着・休憩 | 休憩 | [10min] |
| 11 | エージェントモードを活用した不具合調査実践(Java/Python)前半 | 演習 | [50min] |
| - | 定着・休憩(演習の中間。修正内容を見直す) | 休憩 | [10min] |
| 11 | 同・後半 | 演習 | [45min] |
| 12 | AIネイティブなシステム設計(上流から下流まで一気通貫) | 座学 | [20min] |
| 13 | まとめ・振り返り・質疑・アンケート | 座学 | [15min] |
| - | 予備(質疑の延長・個別質問に充当) | 予備 | [20min] |
| 合計(講義・演習 [420min] + 定着・休憩 [100min] + 予備 [20min]) | [540min] |
座学は No.1, 3, 5, 7, 8, 9, 10, 12, 13 で合計 [200min]、演習は No.2, 4, 6, 11 で合計 [220min] のおよそ半々です。これに定着・休憩 [10min]×4回・昼休憩 [60min]・予備 [20min] を加えて合計 [540min](9:00〜18:00)です。表の休憩は60〜90分に1度の目安で置いており、確実に取ります(連続の稼働は50〜85分)。分量の大きい演習3(No.11)は中間で必ず休憩を挟みます。
本書の演習手順は No.4・No.6・No.11 と補助演習に対応します。No.2 のグループワークは進行に沿って講師がご案内します。
演習で扱うのは、保守の現場を模した小さな Java プログラム「機器点検サマリー」です。CSV から機器の一覧を読み、点検期限を過ぎた機器とカテゴリ別の台数を表示します。
配布フォルダの構成は次のとおりです。java-inventory が演習で触る本体、python-aux が補助演習、_reference_完成形 は答え合わせ用です。研修中は _reference_完成形 を開かずに進めてください。
本来は、登録12台のうち点検期限を過ぎた機器を一覧表示し、サーバー・ネットワーク機器・UPS のカテゴリ別台数を正しく数えます。ところが現状はうまく動きません。どこがおかしいのかを、演習を通して Copilot とともに突き止めます。
機器名やデータはすべて演習用に作られた架空のものです。実際の業務のコードや顧客から預かった情報を Chat に貼ってよいかは、社内ルールと案件の契約に従ってください。
同じ依頼でも、プロンプトの書き方で返ってくるコードの質が変わります。曖昧な依頼と、文脈・制約・出力形式をそろえた依頼を比べ、違いを体感します。進行表の No.4 に対応します。
「このコードを直して」のような漠然とした依頼と、対象・症状・制約・出力形式をそろえた依頼とで、Copilot Chat の返答がどう変わるかを比べます。プロンプトの骨格を自分の言葉で組み立てられるようになるのが目標です。
InspectionService.java を開き、Copilot Chat のビューを開いてください。まず countByCategory メソッドに注目します。このメソッドはカテゴリ別の台数を数えますが、今は期待どおりに動きません。
同じ対象に対して、まず漠然とした依頼を1回、次に文脈と制約と出力形式をそろえた依頼を1回、Copilot Chat に投げてください。2つの返答を見比べ、説明の具体さ・修正案の的確さ・余計な変更の有無がどう違うかをメモします。Java の文字列比較に関する観点が出てくるはずです。
2つの依頼の差を3点書き出せたら完了です。プロンプトの組み立て方と比較の観点は hints/step01_prompt_engineering_hint.md を参照してください。
同じ整った依頼を Python 側(python-aux/format_log.py)にも投げ、言語が変わると返答がどう変わるかを観察してみてください。制約や出力形式の効き方は言語をまたいで共通です。
良い答えは良い問いから生まれます。プログラムの不可解な出力を前に、何をAIに聞けば原因に近づけるかを設計するワークです。進行表の No.6 に対応します。
エラーや想定外の出力に出会ったとき、いきなり「直して」と頼むのではなく、自分なりの仮説を立て、それを確かめる問いへ言い換える練習です。問いの質が、AIから引き出せる情報の質を決めます。
Main.java を実行してみてください。日付の読み取りでエラーが出て途中で止まるか、止まらなくても表示される台数に違和感が残ります。出力(またはエラーメッセージ)をよく読み、気づいたことを書き出してください。
観察から仮説を2〜3個立て、それぞれを Copilot Chat に確かめる問いの形に書き換えてください。たとえば「この例外はどの行で、どんな入力のときに起きるか」「カテゴリ別台数が0になるのは比較方法のせいか」のように、答えが検証可能な問いにします。立てた問いを実際に投げ、返答が原因の切り分けに役立ったかを評価します。
原因にたどり着く問いを1つでも作れたら完了です。問いの立て方の例と、効く問い・効きにくい問いの比較は hints/step02_questioning_hint.md を参照してください。
同じ症状について、あえて効きにくい問い(「なんで動かないの」など)も投げてみてください。返答の粒度がどう落ちるかを見ると、問いの質と返答の質の関係が体感できます。
エージェントモードに調査を任せ、複数ファイルにまたがる不具合を特定して直します。任せきりにせず、提案を一つずつ評価しながら進めるのがこの演習の肝です。進行表の No.11 に対応します。
このプログラムには3つの不具合が仕込まれています。日付形式の混在、期限超過の判定での末尾漏れ、カテゴリ集計の比較方法。どれも現場で起こりがちな種類の誤りです。
Copilot のエージェントモードに不具合の調査を依頼し、返ってきた原因の特定と修正案を評価しながら、3つの不具合を順に直します。AIに任せる範囲と、人が確かめる範囲の線引きを実地で確認します。
java-inventory フォルダ配下のソースを VSCode で開き、Copilot Chat をエージェントモードに切り替えてください。Main.java をいったん実行し、現状の症状(例外で停止する、または台数がおかしい)を確認しておきます。
まず日付の読み取りで止まる不具合をエージェントモードに調査させ、原因の説明と修正案を受け取って評価し、妥当なら取り込みます。次に Main を実行し直し、期限超過の台数とカテゴリ別台数を確認します。残る2つの不具合(末尾の1台が漏れる、カテゴリが常に0になる)について、症状を文脈として渡しながら順に調査・修正します。各ステップで、提案された変更が他の箇所に副作用を与えていないかを必ず確認してください。
3つの不具合をすべて直し、Main の出力が期限超過の機器を漏れなく一覧し、カテゴリ別台数が正しく出れば完了です。各不具合の原因・調査の進め方・修正の要点は hints/step03_agent_debug_hint.md を参照してください。
エージェントモードはファイルの編集やコマンド実行をまとめて提案します。承認する前に、何をどう変えようとしているかを必ず読んでください。意図しない箇所まで書き換える提案は、その場で却下して依頼し直します。
直したコードに対して「このクラスの単体テストを書いて」とエージェントモードに依頼し、境界条件(末尾・ゼロ件・日付形式)がテストに含まれているかを評価してみてください。テストの抜けに気づけたら、評価する力が働いている証拠です。
Java の演習に余裕があれば、Python の短いスクリプトでも同じ進め方を試します。雑多なログを読みやすい形に整える小さな課題です。
言語が変わってもプロンプトの組み立てと出力の評価は同じだと確かめます。Python のサンプルログを、レベル別に集計し読みやすく出力するスクリプトを Copilot とともに仕上げます。
python-aux フォルダを開き、format_log.py と sample.log を確認してください。スクリプトには未完成の箇所(TODO)があります。
ログをレベル(INFO / WARN / ERROR)ごとに数え、件数の多い順に表示する処理を、Copilot Chat に文脈と出力形式を渡して書かせます。返ってきたコードを実行して結果を確かめ、必要なら問いを立て直します。
レベル別の件数が正しく表示されれば完了です。参考プロンプトと完成例の考え方は hints/step04_python_log_hint.md を参照してください。
一日を通して扱った「問いを立て、出力を評価し、責任を持って取り込む」という流れを、自分の業務に引き寄せて言葉にします。
次の3点を、終了前に手元でメモしてください。明日からの業務で、今日の進め方をどこに当てはめられそうかを具体化するためのものです。
今日、原因に近づけた問いはどんな形だったか。文脈・制約・出力形式のどれが効いたか。
AIの提案で、評価して却下した・直させたものは何か。どう気づいたか。
自分の担当業務で、エージェントモードや Chat を使えそうな場面を1つ挙げる。
配布フォルダの振り返りシートに、この3点をそのまま書き出す欄があります。研修後に見返せるよう、具体的な場面の名前で書いておくのがおすすめです。