プログラミングとはなんだ! – 執筆の裏舞台01

昨年末(ほぼ今年)発刊された教科書の執筆に参加した。

副題にあるように教育工学と教育心理学の分野の執筆陣によって生まれた教職コアカリキュラムに対応した教職課程向けテキストである。想定読者は大学院生や現職教員も含んでいるので、内容は歯ごたえのあるものになっている。

私は、第14章を担当した。

当初受け取った依頼は「プログラミング的思考の育成を考える」という章題だった。

プログラミング的思考…私の嫌いな用語だ。(Inspired by リュグナー)

最初は引き受けるべきかどうかも少し悩んだ。嫌いだと公言しておきながら、その言葉を使わざるを得ない原稿を引き受けることは、主義主張に反していないか。

とはいえ、教科書執筆に参加できることは栄誉なことでもある。声をかけてくれたなら「こいつならできるだろう」という期待もちょっとはあっただろう。応えられるあてはないにしても引き受けない選択肢もない。

私は「プログラミング的思考」と真正面から闘うことにした。

まずは類似の試みを参照し、この手の原稿に求められているものをどう設定しているのか理解することから始めることにした。少し好戦的な言葉だが「敵情視察」というヤツである。

その当時、教職コアカリキュラムへの対応をうたったテキストとして次のようなものが発刊されていた。

プログラミング教育について単独の章を立てているのは、この2冊であった。前者は、石塚丈晴「第13章 プログラミング教育」。後者は、板垣翔大「第17章 プログラミング教育で育てる資質・能力」である。

先達が心血注いだ仕事をまな板の上に載せるのは本位ではないが、これらの成果を乗り越える気概をもって取りかかろうとすることは大事だろう。両原稿がどこまで到達したのかは見極めなければならない。

2019年発刊の石塚原稿は、執筆時期的には小学校へのプログラミング体験の導入が決まってしばらくの頃だったこともあるだろう、プログラミング教育導入の経緯と、諸外国の事例としてイングランドの教科Computingについて具体的に紹介をする流れを取っている。後半は学習指導要領におけるプログラミングの位置付けについて「プログラミング的思考」に触れつつ、「小学校プログラミング教育の手引 第二版」を参照しながら第5学年算数における例や低学年向けの活動案などを示したものになっている。

2021年発刊の板垣原稿は、限られた紙数の中でまとめる困難さもあっただろう。コンパクトにまとめるため、プログラミング教育の必要性から始めて、「小学校プログラミング教育の手引 第三版」を参照して、「プログラミング的思考」やA〜Fに分類されたプログラミングに関する学習活動を紹介しつつ、第5学年算数の例を示している。後半は駆け足でプログラミング言語と「プログラミングの3要素」として順次、反復、分岐の考えを図で示し、最後に中学校・高等学校のプログラミング教育とのつながりで情報活用能力を意識させている。

両原稿とも、時節における状況を的確に反映した内容だと思う。

なにより、この手の原稿のひな型が無い、ゼロの状態の中で形を作り上げられた点は敬意を表せざるを得ない。おかげで後続の私たちは、乗り越えるべきものを手にすることができているのだから。感謝感謝。

さて、私はどんなアプローチをとるべきだろう。

先達を参照したのち、私は再び「プログラミング的思考」の扱いをどうするか考え始めた。

私はすでに「アブダクション習得としてのプログラミング教育の検討」という研究報告の中で、プログラミング的思考の育成なるものと格闘していた。その経験をベースに、何かうまい扱い方はないものか考えつづけた。

一方で、コンピュテーショナルシンキング(Computational Thinking)を原稿の中で扱うことは決めていたわけで、このままだと、プログラミング的思考とコンピュテーショナルシンキングが同じ原稿で同居しているにもかかわらず、両者の関係性を明確にするロジックが無いままになっしまう。

最初のうちは「プログラミング的思考」という文言を排除しようかとさえ考えていた。しかし、教科書である手前、それをするのは非現実的だ。とはいえ、論理的思考の角度から考えた先の論考をもとに「プログラミング的思考とはアブダクティブな思考のことだ」と唱えるのも、プログラミングが捨象されてしまう。

執筆の素材となる断片を集める作業と並行して、プログラミング的思考とコンピュテーショナルシンキングとの折り合いをつけるための枠組みと表現を模索しつづけていた、ある時、開き直りが降りてきた。

小学校段階は、プログラミング教育ではなくプログラミング体験をさせるといった語られ方もされるし、また、論理的思考という従前から重視されてきたものを今日的な社会課題のもとプログラミング的思考という言葉を使って再認識させたがっている。

こうした一連の言説が捕らわれているものは何か。逆に言えば、何を語るにしてもそこに捕らわれることによって今日的な議論の俎上に載せていることになるに過ぎないものとは何か。

それさえまぶせば、それなりであるもの。かつ、それをまぶすことに意味があること。

それは「プログラミング」ではないのか。

プログラミング?!…なんという堂々巡りだろう。そんなことはあらためて言うまでもないことではないか。私の心の中にだって、そう嘲り笑う影がいる。

けれども、そういうことなのだ。私はこの表現を中心に据えることにした。

プログラミングを視座とする思考/思考力

『学びを育む 教育の方法・技術とICT活用』195頁

斯くして、第14章は「プログラミングを視座とする思考力の育成を考える」という章題にすることを決めた。この言葉さえ掴まえておけば、あとは素材を揃えて、どう料理するかを考えればいい。

先達はプログラミング教育の導入経緯や必要を説くことから始めたが、私たちはそこから一歩前に進めて、プログラミングというものの重要性を認識することからスタートすべきだろうと考えた。

そうなのだ。プログラミング的思考やコンピュテーショナルシンキングが注目されていることを強調する言説は溢れているものの、そもそもプログラミングとは何かを考える機会はほとんどない。

私とて、プログラミングのささやかな経験はあるが、その言葉を深掘りしたことがあるほどプロパーではない。ここから「プログラミングとは何ぞや」という問いを抱きながら文献を漁り始める日々が始まった。

学びを育む 教育の方法・技術とICT活用』(北大路書房)は全国の書店からも注文できますし、オンライン書店でもご購入いただけます。

第14章の執筆にまつわる裏話の続きは、またそのうち。

謹賀新年 2024

明けましておめでとうございます。

2024年は、りん研究室にとって新しい門出の年となります。

本年もどうぞよろしくお願いします。

2024年 元旦

ゆく年 2023

2023年中は大変お世話になりました。

生成AIに明けて暮れる2023年でしたね。りん研究室も、関係する原稿を執筆する機会などがありました。

日常的には、検索するための予備的準備のツールとしてChatGPTを利用するようになり、プログラミングではGitHub Copilotなどがかなり役立ってくれています。

2023年はコロナ禍明けのタイミングともなりました。社会経済活動もずいぶんと以前のように自由が利くようになってきました。それはよかったなぁと思います。

様々なことが元に戻り始めてはいるものの、さて、また同じ場所に戻るべきなのか。いやいや、生成AIひとつとってもかなりの変化。ずいぶんといろんなことが変わっていますから、戻りようもない。

というわけで、間もなくりん研究室は、徳島時代に区切りをつけます。

徳島時代にお世話になった皆様にあらためて感謝申し上げます。

それではよいお年をお迎えください。

ICカードとクラウドをScratchで

2023年も残り僅かな時期となりましたが、私自身はここしばらく、プログラミング環境であるScratch3.0向けに開発した拡張機能を更新する作業をしていました。プログラミング環境のためのプログラミングというちょっと面白い作業です。

更新したのはScratchからICカードリーダーを使える拡張機能と、クラウドにデータを保存できる拡張機能です。前者を「パソリッチ」(PaSoRich)、後者を「ナンバーバンク」(NumberBank)と名付けています。

2つの拡張機能は、やりたかったことを実現するために突貫的に開発したものでした。

そのため、複雑なことに利用しようとすると、いろいろと機能不足や安定性に欠けるところがあり、多くの皆さんに使ってもらう水準には達していなかったというのが正直なところでした。

ずっと改修する機会をうかがっていたのですが、本業やら状況やらが目まぐるしかったこともあり、なかなか作業に取りかかれずに放置した状態となっていました。

そして、今回、その機会がやってきたというわけです。しかも、2023年は生成AI元年ともいうべき年であり、プログラミング作業においても生成AI技術が支援してくれるようになったことで、拡張機能の改修作業も効率的に達成することが可能となりました。

というわけで、2つの拡張機能は揃ってバージョン2.0にアップすることとなりました。

パソリッチは、ソニー社製ICカードリーダーPaSoRiをScratch3.0環境から操作して、ICカードのIDm(識別番号)を読み取ることができます。(※書き込みはできません)

ICカードのIDmを読み取れると何が嬉しいのでしょうか。

IDmごとに異なる表示や動きなどを実行できるようになります。つまり、かざしたカードによってプログラムの処理を変えることができるということです。電子マネーや会員カードのようなものがつくれます。

今回の2.0では…

  • 新しい型番のICカードリーダーに対応した
  • ICカードリーダーを複数接続して利用できるようになった
  • カードの読み取りに反応するブロックが利用できるようになった
  • デバイスのリセットができるようになった
  • 安定性を向上させた

などの改善改良を施しました。

1.0を開発した時点で対応していたPaSoRi(ICカードリーダー)は当時販売されていたRC-S380という型番のみでした。それが2年前(2021年)に新たな型番RC-S300に販売製品が置き換えられたため、新たに拡張機能を利用したいと思った方々が対応カードリーダーを入手できない状態になっていました。

新しい型番への対応は、挑戦してくださる利用者を増やすためにも重要な課題だったので、今回のバージョンアップで達成できたのはよかったです。

さらに、複数のICカードリーダーを接続したときや複数のプロジェクトからICカードを利用するときに生ずる様々な課題についても今回の更新作業で対応を試みました。

ナンバーバンクは、Scratchプロジェクトで扱っているデータをクラウド上のデータベースに保管することができます。Scratchの公式サイトで提供されているクラウド変数のようなものです。

クラウド上に保管できると何ができるのでしょうか。

プロジェクトで使っていたデータを、終了したあとでも後日再利用することができたり、他の人たちのプロジェクトと共有することができます。データの受け渡しで通信するようなこともできます。

今回の2.0では…

  • 動作の安定性と信頼性の向上
  • データの書き込みが発生したら反応するブロックが利用できるようになった

などの改良改善を行ないました。

ナンバーバンクは、Firebaseというサービスのデータベース機能を利用しています。このサービスを自分自身で登録してデータ保存に利用することもできます。

1.0まで、単純素朴なデータ保存で利用する分には問題はなかったのですが、連続して頻繁にデータ保存の処理を実行しようとすると呼び出しのコンフリクトや安定性に欠けていたのです。これを内部設計を見直して、発生した処理をこなせるように改修しました。

また、クラウド上にデータを読み書きできるのですが、1.0まではクラウド上のデータが書き込まれたタイミングを確認する方法がありませんでした。今回2.0で、特定の保管場所に書き込みが発生したら反応するハットブロックというものを追加しました。データの共有や受け渡しをする際に便利です。

ちなみに、先ほど書いた「Firebaseを自分自身で登録して…」という話は、自分自身でFirebaseサービスに登録して作成したデータベースのAPIキーを預けて、マスターキーを介して利用できるようにするMasterkeyBankという仕組みが用意されています。

これら2つの拡張機能を利用したい場合、すでに用意されている環境を利用するのが便利です。

ストレッチ3(Stretch3)環境は、豊富な拡張機能を用意してくれているScratch3.0環境で、利用者も多い人気のサイトです。他の拡張機能とも連携させながら挑戦してみてください。

なお、これらはSC2Scratchというサイトで情報をご紹介していますが、新しいバージョンを提供できるようになったので、対応した情報を更新する作業はこれから本格的に取りかかります。説明不足なところが多いかとは思いますが、いろいろ自由に試行錯誤して利用してみてください。

生成から助力へ

昨年(2022)の11月30日付けでOpenAI社がChatGPTを公開しました。

そのOpenAI社は2023年11月6日付けのDevDayイベントでGPTs(Assistants)を発表し、11月9日には課金ユーザー全員が使えるようになりました。GPT-4も相次ぐ新機能で細分化していた状態をシンプルにまとめなおして公開されました。

いよいよ生成から助力へとコマを進めようとしているようです。

ChatGPTについてあらためて…

それまで背後技術として議論されていたAI技術を、接面技術としてチャット形式で見せたことで話題をさらったのがChatGPTでした。多種多様なAI技術の中の一つである自然言語処理をスターダムに押し上げたわけです。

もちろん技術的可能性については数年前から理解されていましたし、チャット形式は他にも試みがあったわけですが、様々な状況とタイミングがChatGPTに味方したことで、2023年の注目株となりました。大規模言語モデル(LLM)なんて専門用語が一般メディアで飛び交うようにもなりました。

2023年3月14日には訓練データとパラメーターをさらに大規模化したGPT-4を発表。内部的には視覚情報との関連性も学習しているといった高性能ぶりに世間は色めきだったのでした。(ちなみに視覚認識機能は9月25日にGPT-4Vとして公開されました。)

学習した情報の範囲でムリクリにでも応答するChatGPTに対して、他社は検索機能や参照元明示機能などを付加したチャットAIを提供。Googleもドタバタしながら追いつこうとしていたのも2023年のことです。

そんな他社の動きは我関せず、GPT-4の公開からさして間を置かずChatGPT Pluginがリリースされ、GPTのエコシステム形成プロセスはどんどん進んでいきました。

実際には、チャット形式のサービスであるChatGPTとは別に、開発用のサービスであるAPIというものがあり、このAPIという窓口を通して他社がGPTを利用してサービス開発できるようになっています。

これが様々な応用を拡げていく原動力となり、OpenAI社(とそれをバックアップしているMicrosoft社)が大躍進したということです。

2023年11月6日のDevDayイベントは、約1年前にChatGPTをリリースしてから動きつづけていたOpenAIによる公式イベントということもあり、これまでの集大成と今後への展望が詰まったものとなりました。

ChatGPTは再整理されて、あらたに自分自身でAIアシスタントを作成できるGPTsサービスが追加されました。これまで提供されたAPIサービスを使ってプログラミングをしないとオリジナルのAIチャットを作成できませんでしたが、GPTsによって手軽にオリジナルGPTが作成できるようになったのです。

これまでは、たくさんの知識のもとで文章生成ができるという射程範囲で提供されていたサービスを、ああでもないこうでもないと目的に合致するようにプロンプト(指示文)を工夫して使ってきたわけです。利用する際にそれを強いられてきたといってもよいです。

これからは、あらかじめ目的に添うように調整されたカスタマイズGPTを作成(これは作成者が苦労することになりますが…)しておき、公開することができます。利用する際は調整済のカスタマイズGPTに普通に問いかけるだけで、目的に添うように文章生成して応答してくれるというわけです。

つまり、助力してくれる(アシスタントな)AIとして用意し、使い始められることを狙っています。

現時点ではGPTsを作成するにも利用するにも有料のChatGPT Plusサービスに登録しなければなりません。

年内にはGPTストアを開設して、作成されたカスタマイズGPTを販売できるように展開していくようです。こうした試みを通して新しい応用アイデアを見つけていくことになるでしょう。

とはいえ、大規模言語モデルによる推論作業をブンブンと回すのに必要な計算処理リソース(コンピュータ)にかかるエネルギーは、得られる結果に対して余りに膨大で、正直なところリーズナブルとは言えません。

OpenAIのリソースも、GPTs発表後の11月8日頃には想定以上の利用量によってサーバーの負荷がハンパ無い状態になった模様。しばらくサービスが落ちる事態を招いています。復旧後もずいぶんのろのろ動作です。

今のところ発表直後のフィーバーもあり、直に膨大にトラフィックも落ち着いていくとは思いますが、こうしたシステムが環境的にも経済的にも持続的なものなのかはまだわからないといったところです。

そんなこと言いながら、りん研究室もご多分に漏れずGPTsでカスタマイズしたGPTを作成してみました。

教育と情報の歴史研究をゆるゆると進めているので、年表関連の情報は蓄積しいます。これをもとに「日本の教育と情報の歴史GPT」(HEI GPT)を作成してみました。

巨大な年表テーブルを作成しているだけのエクセルファイルですが、これをアップロードするだけでGPTが解析してくれるわけです。いまのところ「どんな歴史項目があるか?」的な質問をするくらいが関の山だとは思いますが、もっと丁寧につくっておけば、GPTがいろいろ解説してくれるようにできるかなと思います。

りん研究室も地味ぃ〜にAI利用研究を続けていきます。