JAEMS2019発表情報ガイド – 開発の裏舞台

走馬灯のようにあれこれが浮かんでくる季節です。

日本教育メディア学会(JAEMS)という学会があり、その年次大会を私の職場で開く機会がありました。2019年のことで、新型コロナウィルス感染が始まる前のお話になります。

実行委員長を任された私は、学会発表の情報ガイドWebを構築したいと思い立ったのでした。

今回は、このサイトの開発の裏舞台をご紹介します。

学会大会というのは研究者にとって「発表の場」であることが基本。

そういう世界なのに「聴き専」になりがちな私。少々居心地が悪くなることは多いです。まあそれは自業自得。そういう時はいろいろ吸収して、次に発表できるように精進するだけです。

さて、聴き専参加者にとって、いつも悩みの種なのは発表プログラムの把握です。

昨今では学会大会のWebサイトの構築は当たり前で,プログラムや発表抄録・要旨・論稿などもPDF化されたものが共有される形になっています。

この、デジタル化やWebサービスの作り込み具合は学会によって異なります。

たとえば、日本医学会みたいな巨大学会(?)だと、学会大会専用のアプリも提供されており,学会参加をサポートするようになっています。

一方、多くを占める中小の学会の場合、専用アプリを開発するような予算規模はないので、単純に日程表やら会場別の発表一覧をWebサイトに掲載するのが精一杯。

モバイル端末から閲覧できるのは有り難いのですが、Webサイトの設計デザインによっては、大変見づらいもの、参照しづらいもの、使いづらいものがあるのです。

発表会場を渡り歩くような「聴き専」にとって、大会サポートアプリのようなものがないと、現在進行している発表が何なのか、次は何が予定されているのかなど、素早く知りたいのに、パッと探せないのです。

というわけで、学会の年次大会の運営を引き受けた機会に、それを解消する試みをしてみようと思い立ったのでした。

そのとき開発したのが「JAEMS2019発表情報ガイド」です。

さすがにアプリを開発する余裕はなかったので、様々な端末から参照できるWebサイトにしました。全体の研究発表一覧と現在日時と連動した現在発表中の発表一覧が表示できます。

研究発表一覧は、普通に全発表が一覧表示されます。

モバイルだとこんな感じ。

端末によって表示は小さいですが、その辺は慣れもあるかなと。

一覧の最初にあるのは、絞り込みアイコンです。

2日間の大会で、各発表セッションに記号が付されています。セッションは発表部屋単位ということになりますが,現実の教室名との対応は省いちゃいました。

いずれにしても、これらをタップやクリックすることで、すばやくセッションごとの一覧が表示されます。これが大事でした。

一覧画面は…

発表ごとに2行表示していて、1行目に発表タイトルと各種情報アイコン、2行目に発表者を表示しています。タイトルをクリックすると要旨などの詳細が表示されるようになっています。

一覧の右上肩には、表示した時点での現在時刻を表示しています。目線を下にして、発表予定時刻と比較できるように置いてあります。

実現したかったのは情報アイコンでした。

絞り込みアイコンと共通化しているものに加えて、午前午後を表わすアイコン、発表開始時刻を表わすアイコンを追加しています。

お目当ての研究発表が実施されるタイミングを視覚的に掴めるようにする工夫です。

日程とセッションのアイコンはタップまたはクリックができて、指定した絞り込みの一覧に切り替えることができるようになっています。

アイコンはsvgフォーマットで作成したので,時刻アイコンではデータ部分を可変的に設定できるようになっています。

情報アイコンは詳細ページでも利用しています。

そして、現在進行中の発表を一覧するページもあります。

残念ながら、リアルタイムで表示する仕組みのため、いまページを開いても何も表示されないです。(すべて終了した過去のため)

でも当日は、現在日時をもとにさきほどの一覧が絞りこまれて表示されました。そうすることで、いま発表中の一覧やセッションアイコンから次の発表を探したりなどできたわけです。

実際に使うと、日時との連動のタイミングを5-10分程度前倒しでずらしておくと次の行動計画に役立てやすかったかなとか、改良すべき課題も見えました。

以上が「発表情報ガイドWeb」の表の概要です。

Webサイト構築には、Google Firebaseを利用しました。

発表情報はFirebaseのFirestore機能にストアするようになっています。

Webサイト部分は単純にHTML5で作成し,FirebaseのHost機能を利用して公開しています。

管理者は発表内容の登録や修正などができます。そのための認証機能はFirebaseのAuthentication機能を利用しています。

あとあとの大会でも使えるように、csvの入出力もできるようにはつくりました。

もともと、年次大会を運営するためにGoogleアカウント(Gmailアドレス)を取得しましたので、そのアカウントでそのままFirebaseサービスも利用したわけです。システム的には無料範囲になります。

予算確保の難しい中小規模の学会にやさしい感じ。

大会準備をしながら実験的につくったので、「聴き専」として自分自身がフル利用することができなかったのは残念でしたが、なんとか動いてはいたようです。なので、使い勝手の部分はまだまだフィードバックが少ないので、改良の余地がたくさんあると思います。

これをブラッシュアップして、次に受け渡しができるんじゃないかなと思っていたわけですが、大会の事後処理をしたあとは放心状態。

やがてコロナ禍がやってきて、引き継ぎもずいぶんあっさりと終わってしまったので,2019年だけの幻サイトとなりました。

とはいえ、この経験は無駄にはなっておらず、枠組みを転用した、Scratch3.0拡張機能向けのサービスサイトが生まれています。まぁそれでよしとしましょう。

というわけで、役立ちそうで役立たなかったWebサイトの開発の裏舞台でした。

コンピュータ科学の扉を探して – 執筆の裏舞台02

01

教職コアカリキュラム対応のテキストの執筆に参加した。その執筆にまつわる裏舞台の第2回。

教職向けテキストでプログラミング教育を扱ったものは多くない。特に単独の章を設けてまで扱ったものは数少ない。あとは部分的に触れるに留めているものがほとんどである。

小学校へのプログラミング体験が導入されたことをきっかけとして、プログラミング教育を題材にした書籍は多々刊行された。それらの中には教員の研修を意識したものもある。

しかし、今回の執筆にあたって、参考・参照すべきものは、慎重に検討する必要があるだろう。

プログラミング教育に関する言説を乱暴に振り返ると、次のようなものが考えられそうだった。

  • 情報処理・計算機科学分野のもとで展開するプログラミング教育
  • 大学におけるプログラミング教育
  • MITの取り組みを源流とするプログラミング教育
  • パーソナルコンピュータブームにともなうプログラミング教育
  • ネットワークとフリーソフトの文脈におけるプログラミング教育
  • 中等学校段階におけるプログラミング教育
  • モバイルデバイス時代のプログラミング教育
  • STEM・Makers教育の文脈におけるプログラミング教育
  • 小学校におけるプログラミング教育
  • AI時代のプログラミング教育

プログラミング教育というよりも、そのときどきのプログラミング学習の動きを捉えた部分もある。たとえば、パソコンブームの際に子どもたちがBASIC言語などを触れたり習得したりした文化が存在したが、これはある種の学習活動だったし、そこにプログラミング教育的な言説が成立していたと考えられる。

さて、先達原稿は、どちらもSTEM・Makers教育の文脈や小学校におけるプログラミング教育の導入あたりを射程にして執筆されたことがわかる。これは時節を反映した原稿としては当然だっただろう。

確かに文部科学省「小学校プログラミング教育の手引」を無視することができないとはいえ、私たちはこれを乗り越えるためにも参照範囲を拡げる必要がある。

板垣原稿がそうしていたように、中等教育におけるプログラミング教育の言説を参照することは大事なのかも知れない。

「プログラミング的思考」なる用語において強調される「順次」「分岐」「反復」は、すでに中学校で扱われていることを根拠に引っ張ってきているところもあるし、共通教科「情報」に至るまでの高等学校情報科にも様々な蓄積がある。

たとえば、情報科教育に関しては次のような文献がある。

現行学習指導要領を対象としたものはこの3冊になる。また、旧学習指導要領を対象とした文献が他にも流通しているので適宜参照してもよいだろう。

高等学校情報科に関する書籍は、情報科学分野の執筆者が関わっている率が高く、そういう意味ではプロパーによるプログラミングの言説が読めるのではないかと期待された。

しかし、「プログラミングとは何か?」という問いを解消するには至らなかった。

誤解無きよう、これらの文献がプログラミングについて書いていないというわけではない。

どちらかといえば、プログラムやプログラミングについて丁寧に解説をしてくれている。モデル化とシミュレーションも扱っている。アルゴリズムとプログラミング指導のポイントさえ載っている。

にもかかわらず、そこには学習指導要領をがっちりと意識した縛りのようなものが敷き詰められており、それに沿うように専門知識が展開してしまっていた。

おそらく私が「プログラミングとは何か」という問いでみつけたいのは、プロパーの人々が素でプログラミングを語っている様子なのだ。その語りの印象をうまく翻訳して原稿に載せたいと考えている。

高等学校情報科について理解するには意義ある文献たちだけれども、そもそもの原点を知るためには、もっと源流に近づく必要がありそうだった。

つまり、コンピュータ科学の扉を探してまわることだ。

読んでいるあなたは、少し呆れ始めているかも知れない。

教職課程向けテキストのプログラミング教育を扱う原稿で、こんな回りくどいことをする必要があるのかと。

あらかじめ断っておけば、行きつく先に意外な答えはない。

回りくどいことをしてもしなくても、おそらく出来上がる原稿に違いはない。

それでも、コンピュータ科学の扉を探して覗き込もうとする必要があると考えているのは、プログラミング教育の領域で出会った方々を理解したいという欲求があるからだ。

たとえば、Scratchの日本での普及に伴走している阿部和広先生や、Viscuit開発者である原田康徳先生と、直接お話した経験がある。ご両人ともソフトウェア工学やコンピュータ科学の専門家であり、様々な語りや記述の端々に、そうした専門性がにじみ出ているのを感じられる。

文系起点の学際学徒である私からすると、同じコンピュータを語るにしてもその方々との大きな差を感じずにはいられない。

埋められる差ではないが、埋める努力をすることが誠実な向き合い方だと思う。

プログラミング教育に関する原稿に携わるのであれば、コンピュータ科学について自分なりにでも探索を経ておかなければ、記述の強度は保てない。

無駄な我流に過ぎるが、そういう流儀で原稿執筆の準備をした。

とはいえ、「プログラミングとは何か」をコンピュータ科学関連の文献に尋ねるのは、また違った難しさにぶつかることになった。

コンピュータ科学の世界で、プログラミングとは何かという素朴な問いに答える意味がないからである。

そりゃプログラムをつくることでしょう…と。

プログラミング(Programming)とは,いうまでもなくプロムグラム(program)を作成することである.そして現実世界におけるプログラムは,まとめられてソフトウェアとなり,コンピュータ(電子計算機)をただの電子部品の集合体から,きわめて強力で高速な情報処理システムへと変身させる.

プログラミングの方法 – 岩波講座ソフトウェア科学』(岩波書店)まえがき

プロセッサが計算機のときには,アルゴリズムはプログラム(program)と呼ばれる形で表わされる.プログラムはプログラム言語(programming language)で書かれる.また,アルゴリズムをプログラムとして表現することをプログラミング(programming)という.

計算機科学入門〔第2版〕』(近代科学社)7頁

プログラミング(programming)とはプログラム法,あるいはプログラムするということである.何をどうプログラムするのか,それが問われる.

コンピュータサイエンス入門(第1版)』(サイエンス社)100頁

定義的な説明としては、これらの引用に準ずることで十分だろうと思う。

語用的な理解としては、まだこれだけでは不十分である。プログラミングに対してどのような解釈の幅があるのかを理解するには、もっと渉猟する必要がある。

そんなことを思いながら紐解いていたのは、竹内先生と玉井先生の著書だった。

この2冊は、専門家の立場からプログラミングやソフトウェアの世界に誘ってくれる貴重な著作である。

「ソフトウェア」などの言葉の語源といったところから興味深い話を展開している。

プログラミングについて…

プログラムとプログラミングの違い
 どっちも同じようなものだと言わないでください.名詞としてのプログラムとプログラミングには,楽譜と作曲ぐらいの違いがあります.

『プログラミング道への招待』(丸善出版)55頁

プログラミングとは、プログラミング言語という人工言語でプログラムを記述するという仕事である。だからその作業は、小説や詩や論文や戯曲を書くという言語による創作行為と似ている面がある。

『ソフトウェア社会のゆくえ』(岩波書店)17頁

どちらも創作的なイメージを用いて、ずいぶんと一般向けにかみ砕いている印象に読めるかも知れないが、これらの記述以降もプログラミングとプログラム(ソフトウェア)に関する興味深い記述が続いている。

文芸(芸術)としてのプログラミングやプログラミングの美学といった話題に至ると、これはもうプログラミング教育の範疇を越えてしまいそうだけれども(その文脈に構造的プログラミングの話もあるけれども),こうした景色の存在を意識しながら、そろそろ出発点に戻った方がよさそうだ

「プログラミングとは何か」という問いを設定したところまで戻り,一旦それを置いておくことにしよう。

プログラムとは何か、プログラミング言語とは何か、コンピュータとは何か…などなど。

こうして広がっていく問いを包括するであろうコンピュータ科学全般について、これを読み手に意識化させることが大事なのだろうという思いが強くなった。

第14章の最初のページで「コンピューテーショナル」(Computational)、続くページで「コンピューティング」(Computing)という用語をあらためて持ち出したのは、こうした回り道の結果である。

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

第14章の執筆にまつわる裏話はまだまだ続きます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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