●チームでソフトウェア開発に取り組むための教育手法を研究されています。
ソフトウェア開発の現場では、開発者がチームを組んで作業を進めることが一般的です。教育機関も学生がチームで開発する演習を多く取り入れていることから、私の研究室ではチーム開発を主眼に、社会で活躍できるエンジニア育成のための教育手法を研究しています。
●開発にはどのようなことが大切ですか?
学生に「ソフトウェア開発とはどのようなものだと思う?」と尋ねると、多くが「プログラミング」と答えます。しかし、開発におけるプログラミングの比重は半分以下で、むしろ、顧客のニーズを具現化するためのコミュニケーションスキルや作ったものに対して責任を取れるようになるためのマネジメント能力を養うことが重要です。
●開発教育においてAIの使用をどのように考えていますか?
社会では、膨大なテキストデータで学習した大規模言語モデル(Large Language Models=LLM)を活用するAIを使ったソフトウェア開発が急速に普及しています。最近のAI はプログラミングだけでなく、開発のあらゆる面をサポートすることができるようになりつつあります。学校のプログラミング教育にAIをどのように使うべきかという研究も増えており、禁止するよりも「うまく取り入れた方がいい」という意見が広がっています。
本学では2年生の「Java演習」というプログラミング言語の基礎を学ぶ授業で、理解を手助けするためにAIの使用を認めています。2025年度に使用の有無を調べたところ、9割以上の学生がバグ修正やコード作成などにAIを使っていることが分かりました。
3年生はソフトウェア開発を前提にしたPBL(プロジェクト学習)に以前から取り組んでいるのですが、2025年度はAIエージェントをメンバーの1人として扱うような仕組みを開発に取り入れました。この授業は私1人ではなく、同じ学科の福安直樹教授と本田澄准教授と3人で考え、指導に当たりました。
●AIエージェントがメンバーの1人とは面白いです。どのように授業を進めましたか?
全14回の授業のうち、最初の5回はWebアプリを開発する基礎やサンプルアプリを個人で作る演習に取り組み、その後、チームでアプリを開発していきます。学生は3、4人でチームを構成し、開発の進ちょく状況を教員に毎回報告します。教員はそれに対してフィードバックしながら進めていきました。
●AIエージェントはどのように使ったのですか?
学生がAIを利用して開発する際、①学生が「〇〇のコードを書いて」とAIに指示②AIがコードを作る③生成したコードを学生がコピーして使う、という流れがほとんどです。一方でAI技術の進んだ現在では、人間が「〇〇を作って」と指示するだけでAIエージェントがソフトウェアを設計・実装し、動かすことができるようになっています。人間は完成したアプリの動作を確認すればよいだけです。便利ですが、質の低いコードが混ざることや意図しないセキュリティーリスクが高くなることもあります。何より、教育という観点では全てをAIエージェントに任せきりでは意味がありません。
例えば、「調査」と指示した時の定義は以下のようになっています。
そこで、人間とAIエージェントが協調して開発を行う「仕様駆動開発(Spec-Driven Development=SDD)」という手法を用いることにしました。この手法ではAIエージェントをどのように動作させるかを明確に定義したファイルを用意して、「調査」「計画」「実装」「レビュー」の各ステップでAIに成果物を作らせ、人間がそれぞれを確認して開発を進めます(図1)。
例えば、「調査」と指示した時の定義は以下のようになっています。
・調査結果を調査レポートとして docs/reports/investigate/ ディレクトリに都度記載すること
・ファイル名は調査日時や内容が分かるようにする(例:YYYY-MM-DD_調査内容.md)
・調査内容、発見した事項、推奨事項を明確に記載すること
・特に指定がない場合、実装方法についての調査にはまずGitHubの igakilab/springboot_samples リポジトリを参照すること
・必要に応じて参考コード例を含めること
・参考にしたURLがある場合は、必ず記載すること
・重要:このフェーズでは絶対にコードを書いてはいけない
-
(図1)仕様駆動開発では、「調査」「計画」「実装」「レビュー」の各ステップでAIに成果物を作らせ、人間がそれぞれを確認して開発を進める
●AI使用は教育に効果的でしたか?
AIの使い方はチームによりばらつきがありました。AIの使用が少ないチームほどコードの内容を理解している傾向はありましたが、AIが書いたコードについてのインタビューを教員が実施する機会を設けることで、学生全体のソフトウェアに対する理解度を上げることができました。学生からは、AIの使用によりコーディングの速度が上がった、コードを理解するスキルが向上したなど基礎的な技術が身についたことや、AIの生成物に問題が無いかを常に確認する習慣がついた、複雑な問題を分割してAIに渡すことができるようになったという感想も寄せられました。
●学生はどんなアプリを作りましたか?
将棋をテーマにしたゲームでは、従来にはない「忍び」や「囮(おとり)」などの駒を作成できるユニークな作品を作っていました(図2)。身近な物を思い切り拡大した画像から徐々にズームアウトして写っている物を当てるゲームでは、大人数で勝負して盛り上がっていました。運動のトレーニングの取り組みを日記のように投稿して他者と共有できるアプリを作ったチームもあり、多様なジャンルのアプリが完成しました(写真)。
-
(図2)「忍び」など従来にはない駒を作成できる将棋のゲーム
-
(写真)AIエージェントを活用してアプリ開発をする学生
●今後、この授業はどのように発展させていきますか?
学生がAIをどのように使うかは自由な意思を尊重しますが、使い方が分からなかったり、使い方が間違っているから結果として使えなかったりということにはならないようフィードバックを工夫していきたいと思います。
プログラミングのスキルは学生間で大きな差があります。AIを使ってその差を埋めることができれば、プログラミングが苦手な学生も積極的に開発できます。ただ、速いスピードでコードを書くことはできなくても、完成したコードを理解できる力は必要ですし、AIの作ったものでも責任を持てるような開発をしてもらいたいです。日々進む技術に合わせて、常に教育もブラッシュアップを続けていきたいと思います。



