研修ゴール共有、ツール紹介、2日間のスケジュール説明
ガバナンス基礎、理解度確認テスト、Copilot環境セットアップ
環境確認、インラインサジェスト、Copilot Chat基本操作
メソッド生成、DTO、CRUD処理、例外処理の自動生成
生成コードのレビュー実践、修正依頼、複数パターン比較
学びの整理、質疑応答、Day 2の予告
2日間で何を身につけるか。Javaスクラッチ研修で培った「自力でコードを書く力」に、AIによる効率化という武器を加える。配属後すぐ使えるスキルを持ち帰る研修です。
Javaで2ヶ月コードを書いた経験がある皆さんだからこそ、AIがどれだけ効率化してくれるかを体感できます。手書きの苦労を知っている人ほど、Copilotの価値がわかる。
インラインサジェスト、Copilot Chat、スラッシュコマンドを自在に操れる状態
メソッド作成、CRUD処理、例外処理をAIの力で高速に書ける
セキュリティ、ロジック、命名規約の観点で問題を見つけて修正を指示できる
社内の生成AI利用要領を理解し、やってよいこと・いけないことを判断できる
わからないことがあれば、チャットに書き込んでください。サブ講師が随時対応します。セッション末の質疑応答でもまとめて回答します。
AIを武器にするには、まずルールを知る必要がある。ガバナンスを固めてから、Copilotの世界に飛び込みます。
AIが書いたコードの最終責任は、すべて人間にあります。
Copilotはコードを提案するだけです。そのコードを採用し、コミットし、デプロイする判断をしたのは人間。動いても動かなくても、セキュリティ事故が起きても、責任を取るのはAIではなくあなた自身です。この前提を、2日間を通じて忘れないでください。
1年以内に、定型的なコードのほとんどはAIが書くようになると言われています。皆さんが配属される頃には、「コードを書く」こと自体より「AIが書いたコードを管理し、品質を担保する」ことが開発者の中心業務になっていく可能性が高い。
| AI支援型(今回の研修) | AI駆動型(近い将来) | |
|---|---|---|
| コードを書く主体 | 人間が書き、AIが補助する | AIが書き、人間が管理する |
| 人間の役割 | コーディング + Copilotのサジェスト採否判断 | 要件定義・レビュー・品質担保・アーキテクチャ設計 |
| 求められるスキル | プログラミング力 + AI活用力 | 設計力 + コードを読む力 + AIへの指示力 |
| 現場での状況 | 多くのプロジェクトで導入中 | 一部の先進プロジェクトで実践開始 |
今回の研修は「支援型」が中心です。ただし、皆さんが配属されて1年後には「駆動型」が主流になっている可能性が高い。どちらの局面でも、AIが出したコードを読んで判断できるエンジニアであることが前提になります。
AIが書く量が増えるほど、コード管理の重要性は増す。レビューできないエンジニアは、AIに仕事を奪われるのではなく、AIが生んだ問題の責任だけを負うことになります。「読めるエンジニア」であることが、AI時代の最低条件です。
GitHub Copilotの裏側では、大規模言語モデル(LLM)が動いています。LLMは大量のコードとテキストを学習し、「次に来るトークン(文字や単語の断片)」を確率的に予測する仕組みです。
LLMは「もっともらしいコード」を生成しますが、正しいコードとは限りません。自信満々に間違えることがあります。これをハルシネーション(幻覚)と呼びます。
会社が許可していないAIツールを業務で使うことを「シャドウAI」と呼びます。個人のChatGPTアカウントに業務データを入力する、許可されていない拡張機能をインストールするといった行為は、情報漏洩やコンプライアンス違反につながります。会社が許可したツールだけを使ってください。困ったときは社内のガイドラインを確認するか、上長に相談してください。
顧客データ、APIキー、パスワードをプロンプトに入力してはいけません。Copilotへの入力は外部サーバーに送信されます。
AIが生成したコードをレビューなしで本番環境に配置することは禁止です。SQLインジェクションやハードコードされた認証情報が含まれる可能性があります。
Copilotが提案するコードは、学習元のコードと類似する場合があります。OSSライセンスの確認は開発者の責任です。
存在しないAPIやメソッドを自信満々に提案することがあります。コンパイル・テストで必ず検証してください。
| 場面 | OK | NG |
|---|---|---|
| コード補完 | 一般的なロジックの補完を受け入れる | 機密情報を含むコードの補完 |
| Copilot Chat | エラーの原因を聞く、リファクタリングを依頼 | 顧客データを貼り付けて質問 |
| テスト生成 | /tests でテストコードを生成 | 生成テストを検証せずにパス扱い |
| ドキュメント | /explain でコード説明を生成 | 社内機密ドキュメントの要約を依頼 |
| 配属先 | 上長に利用可否を確認してから使う | お客様環境で無断でCopilotを有効化 |
password = "admin123" というハードコードがあった。どうする?事前セットアップ(1時間)で基本的な環境構築は完了しているはずです。ここでは最終確認と動作テストを行います。
VSCodeの右下にCopilotアイコンが表示され、アイコンが回転していなければ正常に動作しています。アイコンに斜線が入っている場合は認証が必要です。
Windows環境ではWSL(Windows Subsystem for Linux)を使うことで、ホストOSから隔離された環境で開発できます。CopilotやGitHub連携の認証情報をコンテナ内に閉じ込め、万が一のセキュリティリスクをホスト環境に波及させない運用が可能です。配属先でもこうした仮想環境での開発が推奨される場合があります。
| 操作 | ショートカット | 説明 |
|---|---|---|
| サジェスト受け入れ | Tab | 提案されたコードを確定する |
| サジェスト拒否 | Esc | 提案を破棄する |
| 次の候補 | Alt + ] | 別の提案パターンを見る |
| 前の候補 | Alt + [ | 前の提案パターンに戻る |
| Copilot Chat起動 | Ctrl + Shift + I | サイドパネルでチャットを開く |
| インラインチャット | Ctrl + I | コード内で直接指示を入力 |
選択したコードの説明を生成します。知らないコードの理解に便利。
選択したコードの問題を検出し、修正案を提示します。
選択したコードに対するテストコードを自動生成します。
JavadocやJSDocなどのドキュメントコメントを自動生成します。
6月末から2週間かけて取り組んだ最終演習のテーマを、今度はCopilotの力で再構築します。手作業で苦労した同じ課題に、AIを使ってどこまで速く・高品質に仕上げられるか。体感の差がそのまま、AIを使う意味の証明になります。
AIを活用した開発は選択肢ではなく、これからの標準になります。「AIを使っていかなければならない」という現実を、手を動かして理解する時間です。そして、ここで得た感覚を持って「自分で学んでいく」段階に入ってください。
本セッションの演習テーマは、Java最終演習と同じテーマを使用します。テーマの詳細は研修当日までに別途共有されます。以下のハンズオンでは、Copilotの基本的なコード生成テクニックを先に習得します。
Javadocやメソッド名を書くだけで、Copilotが中身を推測して提案してくれます。研修で書いた経験があるからこそ、「自分なら10分かかるコードが数秒で出てくる」驚きがわかるはず。
Copilotは開いているファイルの内容をコンテキストとして使います。同じプロジェクト内の他のクラスやインポート文も参照するので、プロジェクト全体を開いた状態で使うと精度が上がります。
フィールドを定義するだけで、getter、setter、toString、equals、hashCodeを一括生成。LombokやRecordの提案も出てきます。
CopilotにRecordへの変換を依頼することもできます。Copilot Chatで「このクラスをRecordに変換して」と指示してみてください。
DAOクラスやSpring Data JPAリポジトリのCRUD処理は、Copilotが得意とする領域です。パターンが決まっているため、高精度な提案が返ってきます。
CopilotがSQLを文字列連結で生成する場合があります。必ずパラメータ化クエリ(PreparedStatement)になっているか確認してください。文字列連結はSQLインジェクションの温床です。
数値をクリックすると表示されます 出典: GitHub Research 2022
Copilotが生成したコードを鵜呑みにしない。レビューして判断する力が、AIと仕事をするエンジニアの必須スキルです。
2人1組になり、Session 03で生成したコードを交換してレビューしてください。上記3つの観点でチェックし、問題を見つけたらCopilot Chatに修正を依頼します。
以下のコードには複数の問題があります。見つけてCopilot Chatに修正を依頼してください。
文字列連結でSQLを組み立てている。PreparedStatementに変更し、パラメータバインドを使用する。
rs.next()のチェックがない。ResultSetが空の場合にnullが返り、toUpperCase()でNPEが発生する。
n, e, p では何を表しているか不明。name, email, password と明示的に書くべき。
パスワードをSystem.out.printlnで出力している。機密情報をログに出してはいけない。
「AIが出したものはそのままだと信頼できない」。これを頭ではなく体で理解するワークです。配布されるコードにはAIが生成したハルシネーション(存在しないAPIの使用、誤ったロジック)が意図的に含まれています。
以下のコードにはAIが生成した「もっともらしいが間違っている」箇所が複数あります。まず5分間目視で探し、次にCopilot Chatに「このコードの問題点を指摘して」と依頼して比較してください。
正しくは Collections.sort(orders, Comparator.comparing(Order::getCreatedAt)) または orders.sort(...) です。AIがもっともらしいメソッド名を捏造した典型例。
正しくは LocalDate.parse("2026-01-01") です。ISO形式なら引数1つで十分。
order.getNote() がnullの場合、isEmpty()が先に呼ばれてNullPointerExceptionが発生します。null チェックを先に書く必要があります。
flatMapはStream APIのメソッド。正しくは orders.stream().flatMap(o -> o.getItems().stream()).collect(Collectors.toList()) です。
人間とAI、それぞれ得意な検出パターンがあります。どちらか一方では見落としが出る。両方を組み合わせることで品質が上がります。
| 依頼の仕方 | 良い例 | 悪い例 |
|---|---|---|
| セキュリティ修正 | 「このSQLをPreparedStatementに変更して」 | 「直して」 |
| リファクタリング | 「変数名をわかりやすく変更して」 | 「きれいにして」 |
| エラーハンドリング | 「nullチェックを追加して、nullの場合は空文字を返して」 | 「エラー対策して」 |
プロンプトは具体的に。何をどう変えてほしいかを明示するほど、Copilotの出力精度は上がります。
まずは皆さんで考えてみてください。どう思いますか?
AIはあくまでツールです。最終的にコードをレビューし、コミットし、デプロイしたのは人間。AIの提案を採用した時点で、そのコードの責任はあなたにあります。
AIが便利だからこそ、レビュー工程を省略してはいけない。「AIが書いたから大丈夫」は通用しません。むしろAIが書いたコードほど、注意深くレビューする習慣をつけてください。
Day 1のキーメッセージを確認して、明日に備えましょう。
Copilotはツール。コミットボタンを押すのはあなたです。
禁止事項を理解した上で、使える場面ではどんどん使う。怖がる必要はない。
具体的な指示、適切なコンテキスト、明確なゴール。この3つが精度を左右します。
テストコード生成(JUnit)、デバッグ支援、リファクタリング、そして総合演習。設計書から実装、テスト、レビューまでの一連の流れをCopilotと一緒に駆け抜けます。