みなさま、こんにちは。おくむら(@nori_broccoli)です。
Geminiさんに、生成AIに頼り切りでプログラミングしちゃダメだよって記事を書いてと言ったらそこそこまともな記事を書いてくれました。研究活動でコードを書くことは多いですが、ちょっとした実験をするというぐらいならまだしも、そこそこ大きなプログラムとなると本当にロジックが合っているのかとかも分からないし、新しいアルゴリズムが必要なら自分で考えないといけないし、何だかんだで生成AIだけではうまくいかないこともあるということで、自力で書くトレーニングは大事だという前提で使ってもらうよう指導しました。
基本的にはGemini Code Assistで書いていってもらおうと思っています。基本的に無料だし、Claudeにしても何にしても、ちょっとしたプログラム程度なら差はないので、スピードアップのためのツールとして活用していってもらえたらなと思います。Gemini CLIのほうが良いということもあるかもですが、ま、それはどちらでも良いのではと感じです。

導入:身体の負担を乗り越え、変化する研究指導の最前線へ
体調不良(むちうち)が続く中、5名のゼミ生と1名の遠隔指導対象者に対して研究・プログラミング指導を行いました。近年の研究指導において最も重要かつデリケートな課題は、生成AIの急速な進化への対応です。学生たちはプログラミングの大半を生成AIに委ねることが可能になりましたが、単にコードを「生成」し「コピペ」するだけでは、研究者としての本質的な能力は育ちません。このゼミでは、生成AIを最大限に活用しつつ、真のプログラミングスキルを身につけるための「AIとの付き合い方」に焦点を当てて指導を行いました。
生成AI時代のプログラミング指導における核となる原則:
プログラミングにおける生成AIとの正しい付き合い方とは、「コードを生成させる道具」としてではなく、「思考を加速させ、検証プロセスを効率化させる協働者(コ・パイロット)」として扱うことです。特に研究活動においては、生成されたコードの論理的な妥当性、根拠、そして潜在的なバグを自力で検証し、責任を持つ能力が不可欠となります。
なぜ今、生成AIの「使い方」指導が必須なのか?
生成AIは単純な文法や定型的な処理のコード生成において驚異的な効率を発揮します。しかし、研究活動で求められるのは、独自の仮説を検証するための複雑なロジックの実装や、既存ライブラリの深い理解に基づく応用です。AIが生成したコードが「動く」ことと、それが「研究目的に合致し、信頼できる結果を出す」ことは全く別問題であるため、指導の重点が移行しています。
指導の背景にある課題意識は以下の通りです。
- ブラックボックス化のリスク:生成されたコードの仕組みを理解せずに使用することで、デバッグ能力や応用力が低下する。
- 研究の再現性の確保:AIが提案した方法論が本当に最適か、学術的な根拠に基づいているかを学生自身が判断する必要がある。
- プロンプトエンジニアリングの要求:適切なコードを生成させるためには、研究テーマや実装したいロジックを正確にAIに伝える「問いかけのスキル」が必要となる。
ゼミで伝えた「生成AIとの賢い付き合い方」5つの原則
ゼミ生たちには、生成AIを単なる「解答ツール」ではなく、「優秀な共同研究者」として扱うための具体的な行動指針を提示しました。これは、プログラミング教育からプロンプト・エンジニアリング教育へのシフトを意味します。
1. プロンプトは「指示」ではなく「設計書」として扱う
AIにコードを要求する際、単に「〇〇を動かして」と指示するのではなく、研究の文脈、入力データの形式、期待される出力結果、使用すべき言語やライブラリのバージョンを詳細に記述するよう指導しました。具体性を高めることで、精度の高いコードを引き出すことが、現代のプログラマーの重要なスキルとなります。
2. コードの「動作」ではなく「根拠」を検証する
AIが生成したコードがエラーなく実行されたとしても、そのロジックが研究テーマに対して妥当であるかを常に疑う姿勢を徹底させました。生成AIには誤情報(ハルシネーション)のリスクが内在するため、特に統計処理やアルゴリズムの選択においては、必ず学術的根拠や公式ドキュメントを参照し、クロスチェックを行うことを義務付けています。
3. エラーメッセージはAIへの「最高のインプット」である
プログラミングにおいてエラーは避けられません。エラーが出た際、学生が自力で解決しようとせず、すぐにAIに丸投げする傾向を修正しました。まずエラーメッセージを読み解き、そのメッセージと、関連するコードブロック、そして自分自身の仮説を添えてAIにフィードバックとして提供することで、デバッグのプロセスをAIと共同で行う能力を養います。
4. 「なぜ動くか」をAIに説明させる
生成されたコードを受け取ったら、次に「このコードがなぜ意図通りに機能するのか、各関数の役割を説明せよ」とAIに質問する習慣をつけさせました。このプロセスを通じて、コードの構造的な理解が深まり、AIが書いたコードも自分の知識として内包できるようになります。
5. 著作権と倫理の遵守
特に商用利用や発表が前提となる研究においては、AIが参照した可能性のあるコードの著作権やライセンス形態に細心の注意を払うよう指導しました。研究の誠実性(リサーチ・インテグリティ)を保つため、AIの利用履歴を適切に記録し、透明性を確保する重要性についても強く強調しました。
FAQ:生成AIとプログラミング学習に関するよくある質問
Q1: 生成AIにコードを全て書かせても、プログラマーになれますか?A: 単純な「コーダー」としての役割はAIに置き換わりつつありますが、問題解決やシステム設計、そしてAIが生成したコードの検証・修正を行う「エンジニア」としての能力は、人間が持つべき核心的なスキルとして残ります。Q2: AIが書いたコードはそのまま論文に利用できますか?A: 研究の信頼性を保つため、AIが生成したコードであっても、その研究者が内容を完全に理解し、検証し、修正の責任を持つ必要があります。利用したツール(生成AI)とそのバージョン、利用方法を明記することが、学術倫理上の推奨事項となりつつあります。Q3: プログラミング初心者にとって、生成AIは学習の妨げになりますか?A: 使い方が重要です。基本文法を学ぶ初期段階では、AIへの依存は理解を妨げる可能性があります。しかし、中級者以上であれば、AIをリファレンスやデバッグの共同作業者として利用することで、学習効率を飛躍的に高めることができます。