[コラム] プログラミング教育・学習に生成AIを活用することの懸念とは[2024/10/11]
懸念を生成AIに聞いてみた
皆さん、こんにちは。株式会社ナレッジエックスの中越です。
このコラムでは、前回、生成AIをプログラミング教育・学習にポジティブに活用してどのように研修効果を高めていくか、というようなテーマでのお話をしていました。しかし、生成AIを取り入れることに本当に懸念はないのでしょうか。
どう思いますか?
急に言われても・・・という方も多いかと思います。かくいう私も同じです。
そこで、「プログラミング教育・学習に生成AIを活用することの懸念」としてどんなことが考えられるか、生成AI(Claude 3.5 Sonnet)に聞いてみました。やはり気になるポイントは、コード生成に生成AIを使うことではないかと思いますので、その点にフォーカスして質問してみました。
生成AIへの質問
プログラミング未経験者がプログラムを学習する際、コード生成に生成AIを利用する場合、危惧される内容とその対応策としてどのようなことが考えられるでしょうか。
生成AIの回答と私のコメント
プログラミング未経験者が生成AIを利用してコード生成を行う際、いくつかの危惧される点とその対応策が考えられます。以下にそれらをまとめます:
注)箇条書きのa./b.等の記号は筆者が整理のために付与した。「私コメント:」とあるのは生成AIの回答に対して筆者の意見であり生成AIの回答ではない。
1. 理解不足のリスク
危惧:
- a.生成されたコードの仕組みや原理を理解せずに使用してしまう。
- b.プログラミングの基本概念や構造を学ぶ機会を逃す。
対応策:
- c.生成されたコードを単に使用するだけでなく、各行の意味を理解しようと努める。
- d.基本的なプログラミング概念(変数、制御構造、関数など)を並行して学習する。
- e.生成AIに説明を求め、コードの各部分の役割を理解する。
私のコメント:
- 対応策1-d.について
- 基本的なインプットは生成AI利用でも欠かせない。動画などによる知識インプットは不可欠と思われる。
- 対応策1-c.および1-e.について
- 上記1-d.の対応をしている前提で、不明点は根気よくAIに聞くように受講者に促す。
- それでもわからない場合は講師に質問させる。
- 受講者同士での口頭での理解度確認をする機会を増やし、理解度促進のモチベーションを高める。
- 知識定着度を細かく測定するための小テストを作り、受講者自身に理解度の確認を促す。
2. 誤った学習や悪習慣の形成
危惧:
- a.非効率的または古いコーディング手法を学んでしまう。
- b.生成AIに過度に依存し、自力でコードを書く能力が育たない。
対応策:
- c.複数の情報源(教科書、オンラインチュートリアル、コーディング規約)を参照し、ベストプラクティスを学ぶ。
- d.生成AIを使用する前に、まず自力でコードを書こうと試みる。
- e.コードレビューを受けるなど、人間の経験者からフィードバックを得る機会を作る。
私のコメント:
- 対応策2-c.
- 入門レベルの受講者がそういったものを自分で探しに行くのはハードルが高いので、 対応策2-e. にあるように講師にレビューを求めることが妥当。
- もしくは、講師が生成AIの回答を事前にチェックし、問題点があれば全体にフィードバックする機会を必ず設けるようにする。
- 上記を達成するためには、研修運営側として、生成AIの模範解答、もしくは回答を得るためのプロンプト一覧を用意しておく必要がありそう。
- 天秤AIのように複数のAIに同時に回答を投げて見比べるなどの方法もあるが、どれが良いコードなのか判断するのは受講者には荷が重いのであまり適切ではないだろう。
- 対応策2-d.
- いったん、生成AI利用でうまくいくコードを作れてしまうと、なかなかその依存から脱却することは難しいだろう。
- 少なくともテンプレート的なコードを作るのはAIにやらせたほうが省力化の面でも良い。
- そのため、一律にAIを禁止してもメンタル面であまり良い効果を得られないばかりか、学生時代にすでに生成AIによるコード生成を体験している世代が入社してくると、生成AIを封じられた環境を与えることが高いストレス(環境の理不尽さ、非効率さなどから)を感じる可能性がある。
- 研修全体として、この問題は生成AIを利用せずに自力でチャレンジする、など明確にアナウンスして独力で書かせる演習をチェックポイント的に作る。または、コードを書かせて採点するライティングテストのようなものを1日1回設ける
- どうして全部生成AIじゃなく、独力でコードを書くのか、についての明確な動機づけを最初に行う必要もある。
3. セキュリティリスク
危惧:
- a.セキュリティ上の脆弱性を含むコードを知らずに使用してしまう。
- b.個人情報や機密データを不適切に扱うコードを生成してしまう。
対応策:
- c.セキュリティの基本原則を学び、生成されたコードをセキュリティの観点から評価する。
- d.信頼できるソースからのセキュリティチェックツールを使用する。
- e.センシティブな情報を扱う際は、必ず経験者のレビューを受ける。
私のコメント:
- セキュリティ面については初等研修ではいったん脇に置く。軽視しているわけではないが、これは生成AI利用如何に関わらず起こりうる話題であり、本記事のフォーカスから外れると思われるため。
- もちろん、セキュリティに配慮したコーディングは、どこかではフォローしなければいけないが、現状は別建ての研修で解決するのが一般的と思われる。
4. エラー処理の不足
危惧:
- a.生成AIが完璧なエラー処理を含むコードを常に生成するとは限らない。
- b.エラー処理の重要性を認識せずにコードを使用してしまう。
対応策:
- c.エラー処理の重要性を学び、生成されたコードにエラー処理が適切に含まれているか確認する。
- d.様々なケースでコードをテストし、エラーが適切に処理されているか確認する。
- e.エラー処理を追加するよう生成AIに指示し、その過程を学ぶ。
私のコメント:
- 対応策4-c.および4-d.
- 異常系、正常系について早くからカリキュラムに組み入れておく
- Javaでいえば例外処理を取り扱った後に教えるなど
- 対応策4-e.
- まず初等教育の段階では、ハルシネーションリスクを意識させる意味でも、エラーハンドリングなど異常系部分については自分で考えさせたいところもある。だが、生成AIでできるとなれば任せたくなるだろう。やはりここも講師によるレビューが重要か?
5. 独創性と問題解決能力の欠如
危惧:
- a.常に生成AIに頼ることで、創造的な問題解決能力が育たない。
- b.プログラミングの本質的な楽しさや達成感を味わえない。
対応策:
- c.生成AIを参考にする程度に使い、自分でロジックを考える時間を多く持つ。
- d.小さなプロジェクトを自力で完成させる経験を積む。
- e.他の学習者と協力してプロジェクトを進め、アイデアを共有する。
私のコメント:
- 対応策5-c.
- ロジック、アルゴリズムを中心としたコード生成は生成AIがかなり得意としている領域である。
- ただ知識としてそれらロジック、アルゴリズムをある程度理解していないと、コードがレビューできず、正しいかどうかの判断ができないリスクが高まる。
- ロジック、アルゴリズムに習熟するようなワークを入れるなどの工夫が必要か。
- 対応策5-d.および5-e.
- 開発演習(グループによる疑似的なシステム開発を行う演習スタイル)などのフェーズである程度キャッチアップできる可能性がある
6. 言語や環境の特性の見落とし
危惧:
- a.特定のプログラミング言語や実行環境の特性を理解せずにコードを使用してしまう。
対応策:
- b.使用する言語や環境の基本的な特性、制約、ベストプラクティスを学ぶ。
- c.生成されたコードが特定の環境で適切かどうか、常に評価する習慣をつける。
- d.複数の言語や環境でプログラミングを経験し、それぞれの特徴を比較学習する。
私のコメント:
- いったん、初級プログラミング研修においては、ここまでの考慮はしなくてよいと思われる。
- 対応するとすれば次の段階の研修でも良いだろう。
これらの対応策を意識しながら生成AIを活用することで、プログラミング未経験者でも効果的に学習を進めることができるでしょう。重要なのは、生成AIを単なるコードの供給源としてではなく、学習を補助するツールとして活用する姿勢を持つことです。
まとめ
ちょっと長くなってしまったので、ChatGPT(GPT4o)に要約してもらい、少し取捨選択したものが以下となります。
プログラミング未経験者の研修で生成AIを活用する際のポイントを整理すると以下のようになります。
まず、生成AIを用いるとコードの理解不足や誤った学習が懸念されます。従って重要なのは生成されたコードを学習材料として捉え、背景にある原理を理解する努力をすることです。基本的な概念を学ぶために、動画やテキストを使った教育コンテンツの導入が有効です。また、不明点は生成AIに質問するだけでなく、講師や他の受講者と積極的に議論する場を設けることで理解を深められます。
生成AIの利用に過度に依存することは、自力でコードを書く能力を妨げる可能性があります。それを防ぐためには、まず自らコードを書こうとする試みを奨励し、コードレビューを通じてフィードバックを受ける機会を積極的に設けます。また、生成AIの使用と自力でのコーディングをそれぞれ明確にする演習を取り入れることで、両方のスキルを向上させます。
最終的には、生成AIはコード生成のツールではなく、学習を促進するためのサポート役として使う姿勢を育むことが重要です。独創性や問題解決能力を培うためにも、生成AIに頼るのではなく、自発的に学ぶ姿勢と基礎を固める教材を提供することが求められます。
いかがだったでしょうか。少し、方向性が見えてきたような気もしてきました。では具体的に既存の研修コンテンツ、カリキュラムはどうなっていくべきなのか、次回以降でまた考えてみたいと思います。
以上