見出し画像

生成AI時代のプログラミング的思考についての考察

生成AIと教育の話を考える上で、やはりプログラミング教育は避けては通れない。これまで自分は構築主義的学習観に基づくプログラミング教育を信奉し、研究し実践を積み重ねてきた。昨年末につぶやいたこの内容が、生成AIの登場によってより注目されるんじゃないかと思っている。

このツイートの背景を深ぼったnoteも書いてるのでぜひ読んでほしい。

「プログラミング的思考」という言葉を問い直す

プログラミング教育はどこに向かっていくのだろうか。ここで、Computational Thinking を日本独自に解釈した「プログラミング的思考」なるものを文部科学省的が説明している文章を見てみよう。

自分が意図する一連の活動を実現するために、どのような動きの組合せが
必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力

小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)

ここで着目すべきは、ChatGPTの登場によって「どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」が必要なくなったということだろう。これまでは、記号(=プログラミング言語の関数やブロックなど)の組み合わせによってコンピュータに自分が意図することを伝える必要があった。しかし、ChatGPTは自然言語でそれを処理する。つまり、これから問われてくることは、自分が作りたいもののゴールを描き、それを生成AIに説明していく能力であると考えられる。とするならば、私たちはようやくプログラミング的思考という言葉に振り回されることなく、子どもたちと「自分が意図する一連の活動」はどんなことかを考えることに集中することができるようになるだろう。

「自分が意図する一連の活動を実現するために、完成した姿を想像し、生成AIとの対話等を通じて、一連の活動を余すことなく自然言語の形で論理的に生成AIに説明することができる」

新しいプログラミング的思考の解釈例

僕の所属しているNPO法人みんなのコードがつい先日発表した「生成AIの初等中等教育でのガイドライン策定に向けた提言」でも、「『コンピュータと適切に対話する力』の育成」を重視している。
とにもかくにも、生成AIによってプログラミング的思考という言葉に踊らされることなく、コンピュータを使って作品を創造することに集中できるようになったことは何よりも素晴らしいことだ。「自分の意図する一連の活動」とはなにかを具体化していく。生成AIを使ったワークショップはこのあたりに取り組むとおもしろそうである。ありがとうChatGPT。

ゲームをモデル化する

ChatGPTに仕様を伝えて実装するコードを生成してもらうことはみんなやってるけど、ChatGPT上でそのモデルを構築するようなワークショップはもっとおもしろいかもしれない。
友人と ChatGPT 上で「ウミガメのスープ」を実現できるかで盛り上がった。ChatGPTにゲームマスターをやってもらうことで、その場にいるみんなが回答者として参加することができる。以下は、GPT-4 に投げたプロンプトと、その結果、及びプロセスである。なお、実験するためにあえて回答を表示させ、そこに近づくように自分が行う回答を寄せている。

🙋🏻 水平思考ゲームをしましょう。あなたはゲームマスターで、私に問題を出題してください。その後、私が質問をするので、YesまたはNoで答えてください。例外として、わからない場合は「わからない」と答えることを許可します。それ以外のことを回答してはいけません。私が入力した答えが、問題の答えと一致していたら、正解を教えてください。10ラリー以上続いた場合は正解を表示してください。ただし、今回はテストプレイのため、あなたが生成した回答の妥当性を検証したいので、最初に質問と答えを両方出力してください。
🤖質問: ある男が、家に帰るとすぐに電気を消しました。その後、男は泣き始めました。なぜでしょうか?
答え: 男は船長であり、彼が電気を消したことで、遠くの灯台の光が見え、それが彼の船が難破した場所であることに気づきました。そのため、彼は泣き始めました。
🙋🏻 男が帰ってきた家は私たちの家と同じような家ですか
🤖 Yes
🙋🏻 男はなんらかの身体的痛みを感じて泣いていますか
🤖 No
🙋🏻 精神的な悲しみですか
🤖 Yes
🙋🏻 男は過去の出来事を悔やんで泣いていますか
🤖 Yes
🙋🏻 男はなんらかの事故起こしましたか
🤖 Yes
🙋🏻 男は車のライトをつけずに運転し、事故を起こしてしまいましたか
🤖 No
🙋🏻 男はなんらかの乗り物を運転していましたか
🤖 Yes
🙋🏻 男はパイロットですか
🤖 No
🙋🏻 男は船乗りですか
🤖 Yes
🙋🏻 男は船で事故を起こしましたか
🤖 Yes
🙋🏻 男は電気を消したことで別の何かを見ましたか
🤖 Yes
🙋🏻 男が見たのは光ですか
🤖 Yes
🙋🏻 男は家の電気を消したことで見えた光を見て、過去に船で事故を起こした場所を思い出してしまいましたか?
🤖 正解です!男は船長であり、彼が電気を消したことで、遠くの灯台の光が見え、それが彼の船が難破した場所であることに気づきました。そのため、彼は泣き始めました。

10ラリー以上続いてはいるものの、わりといい感じである。GPT-4は水平思考ゲームを理解できているので、問題もいい感じに作ることができている。一方で、GPT-3.5では水平思考ゲームを理解することはできなかった。
私たちが「水平思考ゲーム」として認識している営みを具体的な言葉で説明し、3.5でも理解できるようになったら、そこには作ることの歓びが生まれるだろう。今度子どもたちと一緒に3.5にどうやったら伝えることができるか、試行錯誤を繰り返しながらやってみたいと思う。

新たなアンプラグド的実践が生まれるか

GIGAスクール以前のプログラミング教育界隈でよく聞かれたアンプラグド・コンピューティング。これはコンピュータを使わずにカードなどでプログラミング的思考を育むことを目的に行われていた実践で、コンピュータ環境が整っていない時代によく行われていた。
それに対して、私たちはよく「コンピュータを使って実際にプログラミングをすることが重要である」と繰り返し批判してきたが、生成AI時代のプログラミング教育は、あのときのアンプラグド的実践のように「モデル化する力、すなわち論理的思考力を育むためにプログラミングはせずにChatGPTで行えばいい」というような議論になってしまうのだろうか
このあたりは現時点で答えが出ているわけではない。これは、創造性とはなんたるかという根源的な問いそのものと深く関わっているため、そんなかんたんに結論は出せない。
僕自身は、それは創造的な行為だと現時点では思っている。自らのこだわりをどのように具体化していくか、そのプロセスで学習されるはずだったあれこれは経ないかもしれないけど、作ることの歓びは感じることができるだろう。プロンプトに修正を加え、自分が思い描く正解や、いいと思ったものに近づけていく。それはまさに創造的な活動そのものだし、それを否定することはナンセンスであろう。

以上、生成AI時代のプログラミング的思考についてかんたんに考えてきた。まとめは ChatGPT に書いてもらおう。

この文章は、プログラミング教育の方向性について考察しています。文部科学省が提唱する「プログラミング的思考」に代表されるように、これまでのプログラミング教育はコンピュータに命令を与えるための記号の組み合わせに焦点が置かれていました。しかし、自然言語処理の進化により、ChatGPTなどの生成AIによって、記号を使わずに自分が作りたいものを説明することが可能になりました。そのため、プログラミング的思考という言葉に振り回されず、子どもたちと「自分が意図する一連の活動」を考えることに集中することができるようになったと述べられています。また、ChatGPT上でゲームをモデル化するワークショップなども提案されています。さらに、アンプラグド・コンピューティングや、生成AI時代のプログラミング教育における創造性との関係にも触れられています。

GPT-3.5によって生成

生成AI時代のクリエイティビティについては別のnoteに改めてまとめて考察したい。SneakPeak 的に少しだけ書くと、問題の所在は生成AIにより誰でもかんたんにいろいろなものが作れるようになったという事実をどのように受け止め、どの方向で捉えるか、というあたりだと思う。
ああ、考えることは楽しい。この歓びは人間に与えられた楽しみだ。

宮島衣瑛です!これからの活度のご支援をいただけると嬉しいです!