われわれは,2015年度からUSP研究所と金沢大学総合メディア基盤センター*1の大野,森らとの間の共同研究「IoT時代に資するユニケージ[1]開発手法の普及啓発に関する研究プロジェクト[2]」を出発点として,「シェルスクリプト」を土台にした教育プログラムの設計について研究を開始した.そしてその実装として,さまざまな講義などを実践してきた.
われわれは,講義を通じて,履修者にシェルスクリプトを用いたプログラミングによって,電子工作から大規模データ処理に至るさまざまな情報技術に触れる機会を提供している.履修者の多くはプログラミングなどに関する専門教育を受けていない大学生であるが,彼らに対して,情報技術に対する理解を深めるとともに,最も根幹をなす基盤知識と技術を学ばせている.現代社会では,新しい技術やハードウェア,プログラミング言語,アルゴリズムなどが次々に登場している.その中で,流行り廃りに影響されることのない(あるいは影響されることの少ない)「情報技術」を学ばせること,そして,そのための教育プログラムを設計し,社会実装することが,われわれの研究目的である.
これにより,各種ソフトウェア・ハードウェアプロダクトの使い方といった表面的な学習に終始せず,むしろコンピュータの原理やアルゴリズム,技術仕様・規格といった普遍的な領域について深く理解した人材を育成し,彼らが情報産業界で長年にわたって活躍できること,そして彼らが効率的かつ可読性・保守性・持続性の高いコードを生産して社会基盤を構築できるようにすることを目指す.またこの取り組みは,情報技術教材そのものの普遍性を高めることにも効果的であり,教育現場における教材開発や教員教育の負担軽減もねらいの1つである.
本稿では,この目的達成のためにわれわれが実践した教育プログラムの設計と実装について論ずる.
近年,情報技術はさまざまな分野で活用され,それらの技術を持つ人材が必要とされている.2010年代始めにはICTなどが,2010年代半ばからはデータサイエンスやDX,Society5.0などの言葉で表される情報技術を元にした社会の変革が求められてきた.2010年代初頭頃から電子工作を中心としたメイカーによる新たなものづくりの潮流は,新たな文化であるとしてクリス・アンダーソンによって名付けられた「メイカームーブメント[3]」が広がった.メイカームーブメントの広がりは,これからの情報技術が,ソフトウェアとハードウェアの両方の取り扱いが必要となることを示している.2020年代に入り,工業化社会(Society3.0)から情報化社会(Society4.0)への移行は完了し,社会全体にどのようなデータをどのように存在させるのか,そして存在するさまざまなデータをどのように活用するかが重要となっている.そのため教育機関では,情報技術に親和性を持った,さまざまな情報技術を持つ人材を育成する取り組みが必要となった.
これに応える形で,日本の初等中等教育では「教育の情報化[4]」が,高等教育では「ICT活用教育の充実」などが継続的に実施されている.その中で情報技術に関しては,情報活用能力の育成が求められている.情報活用能力の議論は,1990年代の後半から続けられているが,2020年代の現在では,この能力は初等中等教育に限るものではなく,高等教育や社会全般においても必要なものとなっている.
日本の高等教育のICT活用教育の充実は,2000年代半ばから,各高等教育機関やその連携などによる組織的な取り組みが進められていった.金沢大学においては,学類*2入学時にノートパソコン[5]を準備させPCを必携としていることも,この中の取り組みの1つである.金沢大学の学生が,講義にパソコンを持ってくることが可能なことも,本研究実施の背景となっている.
ユニケージ開発手法は,業務システム内製化の要求から,情報技術教育を十分に受けていない者であってもソフトウェア開発・改修・保守が担えるようにするための次のような原則[6]を守りながら発展してきた.
このようなユニケージ開発手法の目的や原則は情報技術教育においても有効であると考え,われわれはこの考え方を取り入れた講義「計算科学特論」(4.1 2015年度参照)を実施することとした.
ユニケージ開発手法の原則は,UNIX哲学[7]が示す「定理」の多くと考え方が一致しており,原則を守るうえで都合が良いため,開発プラットフォームとしてUNIX系OSを採用している.また,開発の主体となる言語についても同定理に従ってシェルスクリプトを採用している.
シェルスクリプトは,UNIX系OSを操作するUNIXシェルのコマンド文から構成されており,コンピュータ操作の自動化,アプリケーションの実行,さらにはアプリケーション同士の連携なども行える.また,テキストデータ加工(部分抽出,文字列検索・置換,挿入,削除など)やファイル操作(作成,名前変更,複製,移動,一覧表示,削除など)のためのコマンドがOSインストール直後から多数用意されており,後から自作してそれを実行することもできる.
これにより,シェルスクリプトは,互換性の高さや,可読性の良さ(専用ソフトウェアが不要なため),処理の軽さ(低性能なコンピュータでも扱いやすい),長寿命(専用ソフトウェアの製品寿命に依存しない),耐障害性(専用ソフトウェアの調子に依存しない)というメリットを得られる.さらに,テキストファイル含む,ファイルを中心としたデータ管理が可能となる.特にシェルスクリプトが動くUNIX系OSでは,データの出入口もハードウェア(デバイス)も便宜上ファイルに見せかけて扱うため,デバイスからの,あるいはデバイスへのデータ転送が,ファイルの読み書きと同じ要領で実現できる.
このようなメリットにもかかわらず,本研究を開始した2015年から2022年の現在に至るまで,シェルスクリプトはコンピュータを扱ううえで必要な技術であっても,シェル上でコマンドをシェルスクリプトに仕上げる方法を中心に教授するような講義はほぼ存在していなかった.これは国立大学協会に所属している国立大学法人のシラバスとして公開されている2022年度の講義内容からも明らかである.公開されているシラバスを確認すると,シェルスクリプトを学ばせることをあらかじめシラバスに記入している講義が,シラバスを全文検索できた大学62校のうち37%に存在した*3.高い割合に見えるが,確認できた講義数はわれわれの講義を含めて45講義であり,それらの講義で教授する内容のほとんどが,高水準言語を用いたプログラミングやアルゴリズムなどに関するもので,シェルやコマンド,シェルスクリプトについては,それらの講義の中で数回程度教えると書かれていることがほとんどであった.
一方で,MITでは以下のような講義「The Missing Semester of Your CS Education [9]」が行われており,そこでは「コンピュータに代表される計算システムは,手作業を自動化するようにつくられているが,多くの学習者は,繰り返し作業を手作業で行ったり,IoT機器の操作やデータ処理などでコマンドラインインタフェースのツール,特にシェルを十分に活用できていない.」と述べ,行った講義をYouTubeで公開している.この講義資料はボランティアのサポートを受けて各国語に翻訳されている.
われわれは,POSIXが長期間にわたって変更されないことから25年後も使用可能なプログラムを作成する方法論についても導入を図った.
一般論として,ソフトウェアは以下の3点が満たされていることが望ましい.
しかし,実際には時間の経過とともに,開発したソフトウェアを取り巻くOSやミドルウエアやアプリケーションの仕様や実装が変化するため,(2)や(3)の実現は容易ではない.そこでPOSIX環境下でシェルスクリプトを中心に使用し,プレーンテキスト形式のデータ処理を行うことで(1)から(3)を満たすことに成功したのが,著者の松浦が提唱した「POSIX中心主義」に基づくプログラミングである[10].これによって松浦は,多くの高水準言語で作られたプログラムやコードなどが,アップデートによって動かなくなってしまうことに対して,長期間使用可能なコードのプログラミング方法を提示した.
このPOSIX中心主義は,「POSIX準拠」「交換可能性の担保」「W3C勧告準拠」の三要素から成り立っており,これを踏まえることで,25年後も使用可能なプログラムを作成できるとしている.ここでPOSIX準拠とは,プログラム作成時の基本指針としてPOSIX(IEEE Std 1003)規格[11]に極力準拠することである.特に問題がない限りはこの文書で記されている文法やコマンド,オプション,正規表現,保証される出力結果のみに依存したプログラムを書く.これは単独のPOSIX環境下のUNIX系OS上で動かすプログラムや,クライアントサーバ構成をとるアプリケーションにおけるサーバ側プログラムが対象となっている.次に交換可能性担保とは,POSIXの範囲では実装が難しい処理を実現するための指針である.交換可能性とは,今利用している依存ソフトウェア(仮にAとする)と同等機能を有する別の実装(仮にBとする)が存在し,何らかの事情によりAが使えなくなったときでも,Bに交換することでAを利用していたソフトウェアを継続して使える性質として定義し,これを担保しうる可能性のことである.POSIX中心主義では,交換可能性の担保を条件にPOSIXの範囲外のコマンドの使用を認めている.最後にW3C勧告準拠とは,クライアントサーバ構成をとるクライアント側アプリケーション開発のための指針である.2022年現在,この構成においてクライアント側に用いられる主な技術はWeb(HTML/CSS/JavaScriptなどの規格の集合)であり,POSIX準拠の指針が適用できない.しかし,Webにも,下位互換を重視しながら,ブラウザ間の互換性が確保できるように多くのブラウザ開発団体が準拠しているW3C勧告があり,クライアント端末向けにWebプログラムを作成する場合はW3C勧告への準拠に努めるという指針が設けられた.
われわれの教育プログラムでは,シェルスクリプトを中心に据えて設計と実装をしている.その意義は,履修者がさまざまな場面でシェルスクリプトを使用できるようになることである.このシェルスクリプトはPOSIX中心主義のもとで作られることを前提とした.POSIX中心主義に従って作成したシェルスクリプトは,25年後であっても使用可能となる.さらにPOSIXに準拠した環境であれば,OSなどを問わず,POSIXの範囲内で同じように使用可能となる.同時に,後述(3.5.2参照)のシェルスクリプト言語論1のような,シェルスクリプト自体を教えるための講義の場合や,シェルスクリプトを用いて大規模データ処理を演習する講義の場合などでは,POSIX中心主義から外れる場合もある.
われわれは,シェルスクリプトを積極採用することで,UNIX哲学に基づく普遍的なシステム開発やプログラミングが可能な情報技術を身につけることが可能であるとして,以下の教育プログラムを設計した.
すべての教育プログラムでは,POSIX中心主義のもとでシェルスクリプトを使用できるようになることを目的としており,これによって,流行り廃りに影響されることのない(あるいは影響されることの少ない)情報技術を身につけさせる.学習者は,コンピュータを使ってあらゆる種類の電子的なデータや情報を作成や処理などを行うために,POSIX中心主義を前提としたシェルスクリプトの使い方を学ぶことになる.(1)では,メイカームーブメントの流れから,情報技術で取り扱うべき範囲としてソフトウェアとハードウェアの両方に対応するために,シェルスクリプトを用いてIoT機器を始めとするセンサやアクチュエータなどを,ときにはインターネットでデータの送受信を行いながら扱う方法を学ぶ.(2)では,データサイエンスで必ず必要となるインターネットを通じて大量に入手できるさまざまなデータ類の取り扱い方法,特に表計算ソフトウェアでは処理しきれない量のデータを処理するために,大規模データ処理の方法を学ぶ.そしてこの(1)(2)を円滑に学ぶための前段として,(3)でシェルスクリプトを使ったプログラミング方法を学ぶ.
われわれの教育プログラムで提示する全講義(3.3より提示)は,情報技術を身につけさせるための,いわゆる,情報教育としては,最も基礎的な知識と技術の学びとして想定している.このためわれわれの教育プログラムは,何らかの教育課程には組み込まれておらず,講義も教養科目(金沢大学では共通科目)として実施しており,受講開始時点では,履修者にはパソコンに関する高度な知識や技能ではなく,使用可能なパソコンの準備とその使用能力を求めている程度である.
履修者が講義で学ぶシェルスクリプトを入力するターミナルは,WindowsOSやmacOSなどで動いているさまざまなソフトウェアやアプリケーションと違い,グラフィカルインタフェース(以下,GUIと言う)ではない.このためマウスを使った操作は行えず,入出力には,コマンドラインインタフェース(以下,CLIと言う)と呼ばれる文字が表示されるだけの画面に,キーボードから直接コマンドを入力する.履修者の多くは,CLIを使用したことがなく,コマンド入力や入力したコマンドの修正などの作業において,最初にマウス操作によるカーソル移動を試みてしまい,結果として正しい操作が行えず,CLIそのものへの不満を募らせることがある.
すべての講義では,最初にPOSIXに準拠したUNIX系OSが使用可能な環境として,このターミナルを履修者が準備したパソコンに用意させる.パソコンが,WindowsOSであればWSL(Windows Subsystem for Linux)をインストールさせ,macOSもしくはLinuxであればそれ自体がPOSIX環境であるので最初から利用可能なターミナルを使用させることとした.
macOSのターミナルを使用する場合は,Homebrew [12]をインストールさせ,さまざまなコマンド群のインストールが可能になるようにした.これはPOSIX中心主義における交換可能性の担保を実現するために必要とされるもので,Homebrewのようなパッケージ管理ソフトによって,POSIX文書にないソフトウェアやコマンドであっても導入できる環境を整えさせる.また,履修者は,われわれの提示している講義内容のためだけにパソコンを使用するのではない.さまざまな活動に併せて,さまざまな形でソフトウェアやコマンドを導入することがあるため,新しいソフトウェアやコマンドをインストールする方法を学ばせるためにも必要となる.
一方,WSL上ではUbuntuを導入するのでコマンド管理にはUbuntu/Debian環境で推奨されているaptコマンドを採用し,apt-getコマンドは非推奨とした.これは,講義や演習において,2種類の微妙に異なるコマンドの混用を許すと,履修者に余計な誤解や混乱が生じることをこれまでの経験で得ていたからである.シェルにはsh,csh,bash,zshなどがあるが,対話的利用ではbashを,シェルスクリプトではshを用いることを原則とし,大規模データ処理などで後述のPT4Aを用いる場合にはbashを使用している.対話的利用とは,CLIの画面にコマンドを打ち込み,逐次その結果の出力を見ながら作業をする利用方法である.この場合に要請されるのは,作業効率向上である.shでは,ヒストリー機能が無かったり,入力間違いを訂正する機能が無いなど作業効率が悪いこと,対話的利用における操作自体はその一連のコマンド操作を記録し,後世に残す対象とはしないため,POSIX中心主義の制約を課す対象とはせず,bashを使用する.またPT4Aのコマンド群では,シェルスクリプトとして使用する際に,仕様としてbashが求められているため,bashを使用する.bashを使用する場合は,必要に応じて最近のmacOSで採用されているzshへの読み替え方法を提供することとした.以上の対応により,履修者は,自身のノートパソコンでPOSIX環境下のCLI端末を使用でき,パソコンのOSの種類によらず,シェル上の操作やシェルスクリプトプログラミングなどの作業を同じように実施可能になった.
講義では,その後,CLIによる操作方法,コマンドライン入力とは何か,コマンド入力の方法,記号の読み方と入力方法などの説明を行う.コマンドライン入力は,UNIXコマンドによる処理がファイルの処理であることから説明する.これは前述のUNIX哲学に基づく処理であること,その中のシェルスクリプトのコマンド群はC言語などによるプログラミングの結果の活用にほかならないこと,シェルスクリプトのコマンドを使って,データ処理を行う場合,その多くは,データファイル内に書かれたプレーンテキストを扱うことになり,直観的な作業が可能になることを説明する.そして,1コマンドごとの結果を確認しながら,コマンドとコマンドを「|(パイプ)」でつなぐことで,段階を追った作業が可能となり,最終的にある特定のファイル処理を行うスクリプトが完成する.これは扱うデータの発生源や種類,規模が異なっても,同じような作業となる.ここまで行うことで,環境構築が完了する.
なお,これら環境設定やコマンド入力などに必要となる知識や技術については,できるだけ講義開始前までに作業や習得が完了していることが望ましいため,「ものグラミング」や「大規模データ処理」に関連した講義受講者のための参考情報*5」というGoogleスライドを作成し,単独でオンライン学習が可能な教材を準備して,講義開始までに事前に必要な作業と知識の習得をさせる.これらの作業は,履修者によってその進捗や作業内容に差ができるため,別途,作業進捗を書くための共有スライドやスプレッドシートをGoogleドライブ上に用意し,履修者が相互に進捗確認しながら作業ができるようにしている.このスライドには,プログラミングで使用する記号の読み方や入力方法なども記載しており,学習できるようにしている.一方で,WSLのインストールについては,マイクロソフト社のアップデートによって,インストール方法がターミナルへのコマンド入力だけでできるようになり,作業内容がスライド1枚分のチートシートの提示で収まるようになった.これらの作業によって,履修者の所持しているパソコンをできるだけ同じ状態で受講や演習をさせることが可能となり,講義開始時には補足的な説明を行うだけで良いようにしている.
教材へのGoogleスライドやスプレッドシートなどをGoogleドライブ上に用意する活用方法は,学習管理システムを介した教材提示を容易にするとともに,教材単独でのアクセスも容易にする.学習ログなどを解析する学習分析の観点からは問題もあるが,履修者の所属が,一大学にとどまらない大学コンソーシアム石川いしかわシティカレッジ[13]などで講義を行う際には,教材提示方法として有効である.また,一部教材への編集権を履修者にも与えることによって,講義中の課題到達確認なども容易に行うことができる.本来は,学習管理システムを用いることが望まれるだろうが,履修者の属性などを勘案したとき,この方法が妥当であると判断した.
ここからは,教育プログラムごとの内容と講義設計について説明する.
メイカームーブメントは,電子回路を利用した電子工作を中心としたものづくりへの挑戦をしやすい環境を作った.一方で,これまでマイコンボードを用いた電子工作を完成させるために必須だったプログラミングが,インターネットへの接続機能などの付加により複雑さが増しており,この知識や技術の習得へのコストが挑戦への躊躇要因となっている.これを解決するために提供する方法が後述の「ものグラミング」であり,われわれはPOSIX環境下での「ものグラミング」によるプログラミング技術の習得する教育プログラムを作成した.
この教育プログラムでは,ものグラミングの考え方によるIoT機器などの取り扱い方法を学び,それらを扱うために必要なプログラミング技術の習得と,機器類との間で授受されるデータ処理の方法を学ぶことが目的である.この目的のために,履修者は,「ものグラミング」におけるIoT機器などの取り扱い方法として,センサやアクチュエータなどを搭載した電子デバイスをPOSIX機(POSIXに準拠したUNIX系OSを搭載したパソコンやマイコンなど)に接続することから始める.この教育プログラムでは,接続するセンサやアクチュエータなどは,主にArduino [14]で制御される.履修者はそれらを使用するためにArduino IDEを使ってスケッチを書き,データの取得やアクチュエータの操作をする.取得するデータやアクチュエータの操作にはプレーンテキストを使用する.これによって,人間にも理解しやすいデータ送受信が実現できる.履修者は,さらにセンサで測定したデータを,MQTT [15](mosquittoコマンド[16]を使用する)を使ってクラウドに向けて送信する方法を学び,センサが得たデータをTwitterでつぶやくことまでをシェル上でコマンドを使って行う.逆に,Twitterでのつぶやきの内容に応じて,Arduinoを制御してLEDを点灯させたり,アクチュエータを動かしたりする.履修者は,1行のコマンドライン(ワンライナープログラム)や簡単なシェルスクリプトを書くことで,IoT機器や,センサ,アクチュエータなどを操作できるようになることを目標とする.このため講義ではさまざまなIoT機器やセンサ,アクチュエータなどを使用する.
「ものグラミング*6」は,もともとは趣味で電子工作を楽しむものづくり愛好家に,自分の作品とクラウド上のサービスを連携させるプログラムを「簡単」に「手早く」かつ「安全」に構成してもらうことを念頭に著者の大野が提案したプログラミング方法である[17], [18].大野は,2022年現在,ものグラミングについて,電子デバイスの選択やPOSIX機との接続方法や取り扱いによって,ものグラミング1から始まる5種類のものグラミングを提案している.われわれの教育プログラムでは,ものグラミング1とものグラミング2の範囲でIoT機器などを扱うための講義を構築しており,以下ではグラミング1と2について述べる.
「ものグラミング1」は,Raspberry [19]のような小さいが本格的なPOSIXに準拠したUNIX系OSが動作し,さまざまなセンサやアクチュエータなどと接続が可能となったマイコンが誕生した過程で生まれた.生まれた当初の「ものグラミング1」は,POSIX機単体でセンサからデータを受け取った直後からの処理を前述のPOSIX中心主義に則ったシェルスクリプトで行う作業方法であった.この方法によって,IoT機器などを取り扱う場合でも,高い互換性と長い持続性の確保を可能とした.
この考えを発展させて,ものづくりのためのプログラミングにおける適材適所と選択と集中を徹底させたのが「ものグラミング2」である.「ものグラミング2」では,センサやアクチュエータを操作する部分は,Arduino UNOのようなシンプルな組み込みマイコンに担当させ,それをセンサやアクチュエータの数だけ用意する.そのうえで,センサを担当するマイコンはセンサからの値をシリアルポート(主にUSB接続による)を介してPOSIX環境を使用できるRaspberry Piやパソコンなどにデータを送るだけの作業を行う.アクチュエータであればその逆の流れとなる.これを端的に表したものが図1である.
このとき,この構成を実現するためにPOSIX機上で実行するワンライナーは以下になる.
左側の矢印 cu -l /dev/tty... | command_A | ...
右側の矢印 ... | command_X | cu -s /dev/tty...
ここで利用しているcuコマンドは1980年台からPOSIX機に用意されている,シリアルポート介して他のシステムに遠隔アクセスするターミナルエミュレータであるが,「ものグラミング2」では標準入出力(STDINとSTDOUT)をシリアルポートを接続するコマンドとして利用している.
どの「ものグラミング」の場合でも,このマイコン外とのデータやり取りにおいてはデータはプレーンテキスト形式で扱い,データの処理が必要な場合はPOSIX機(Raspberry Piやパソコンなど)側で,POSIX中心主義に則って行うこととし,センサやアクチュエータを担当するマイコンでは行わない.これをPOSIX中心主義の観点から見ると,センサやアクチュエータを取り扱う電子デバイスがどのように動いているかをPOSIX機側は知る必要が無く,POSIX機に接続した組み込みマイコンはPOSIX機から見るとプレーンテキストを送受信してくるだけのデバイスに過ぎないからである.ものグラミングは,電子デバイスをPOSIX中心主義に基づいて取り扱えるようにするために電子デバイス側に課している条件設定であるともいえる.
これによって,扱うセンサやアクチュエータの数が増えても,容易に機能の切り分けができるようになる.これはセンサやアクチュエータだけの話ではなく,それを扱う人員にもあてはまり,グループで作業するときなど,自分が得意な分野を担当する形で役割分担をし,作業に貢献できるようになる.
全16回からなる2単位の演習型の講義で,大学コンソーシアム石川いしかわシティカレッジで開講するため履修者の所属の幅が広くなっている.講義の目的は,以下の3点に集約できる.
また,履修者の到達目標として
を定めた.
履修者には,センサなどの機器を貸し出し,貸し出した機器を図2のように履修者のパソコンに接続して操作することから始める.
使用する機器については,「ものグラミング」の発展とともに表1のように変遷した.
最初期のRaspberry Pi以降は,「ものグラミング2」を前提に,Arduinoを中心とした機器を使用している.使用している機器の選択理由は,Arduinoに接続するセンサやアクチュエータが使いやすいこと,ドキュメントが整っていることである.センサやアクチュエータなどの操作を学ぶにあたって,機械的構造を知ることは重要である.しかしそのすべてを1つの講義で解説することは難しい.そこで,既存の良くできたドキュメントを講義でも参考にできることは有意義であると考え,講義で使用する機器を選定した.
使用するセンサやアクチュエータはArduinoで制御されるため,履修者のパソコンにArduino IDE [23]をインストールさせ,スケッチを書き,Arduinoでセンサやアクチュエータを制御させる方法を学ぶ.センサが取得したデータは,プレーンテキスト形式でシリアル接続をしたPOSIX機(履修者のノートパソコンなど)に送られる.履修者は,送られてきたデータをワンライナーまたはシェルスクリプトで制御する方法を学ぶ.この過程でmosquittoコマンドを使ったクラウドを介したデータの送受信,その際にタイムスタンプや送信者名などをデータに付加する処理についても学ぶ.また,履修者には,kotoriotoko [24]を使って,コマンドラインからTwitterを操作する環境を与え,センサのデータをMQTTを介してTwitterに送って投稿やダイレクトメッセージとしたり,Twitter上のつぶやきを抽出してMQTTを介してアクチュエータの動作に反映させる手法を学ばせる.さらにこれら一連の操作をシェルスクリプトにまとめ,IoT機器などを取り扱う方法として習得させる.
金沢大学共通教育で実施する4日間全16回分の講義からなる2単位の演習型の集中講義である.集中講義のため,4日間で全16回の講義を実施する.実施目的,履修者の到達目標および講義内容は,クラウド時代の「ものグラミング」概論と同じであるが,集中講義という講義形態であるため,一定の期間中に集中的に解説と演習を行うことができる点が異なる.特に演習はできるまで行うことが可能となる.
金沢大学共通教育で実施する全8回からなる1単位の演習型の講義である.クラウド時代の「ものグラミング」概論の講義から,要素を抜き出して,8回の講義に組み直した.実施目的は,クラウド時代の「ものグラミング」概論で示した3つの目的と同じである.また,履修者の到達目標として
と定めた点が異なっている.16回の講義を8回にしたために,クラウド時代の「ものグラミング」概論に比べると講義内の演習時間が少ないが,「ものグラミング」に必要な要素はすべて伝えられる.
ある特定のファイル処理を行うスクリプトでは,それを構成する各々のコマンドは,行える操作が限定されているため,行いたい作業を簡単には記述できなかったり,記述できても処理が完了するまでに時間がかかることがある.そこで用意されたのが,USP研究所が開発したエンタープライズ向けコマンド群uspTukubaiで,PT4A [25]はこれらをパーソナル環境で動作させるためのパッケージである.PT4Aはアカデミック分野に対して,無償提供(利用者登録が必要)されていて,Windows10・11のWSL,macOS,GNU/Linux(Ubuntu,CentOS)で利用可能となっている.PT4Aで提供されているコマンドは,そのままPOSIXコマンド(wcなど)と同じ機能を持つコマンドや,awk,sedコマンドを使用することで同じ処理は可能となるコマンドもある.しかし,使用するOSやハードウェアで微細な調整がなされていて処理速度が速いこと,awkやsedコマンドを使用するのに比べて簡単にスクリプトが書けることが,PT4Aの優位点となる.
われわれの教育プログラムでは,このPT4Aなどを使用することで,シェルスクリプトで大規模なデータの処理を容易に行う方法を学ぶことが目的である.この目的のために,履修者は,処理する大規模データが保存されたUSBメモリ(後述)をPOSIX環境で処理できるようにするためのマウント作業から始める.マウントされることで,大規模データにアクセスが可能となるので,これから処理すべき大規模データがどのようなものかを示す.同時にデータは,シェルコマンドを使って処理することが可能となるので,基本的なシェルコマンドを使わせて,簡単な処理をさせる.PT4Aの使い方としては,USBメモリ内にいくつかのサンプルスクリプトがあらかじめ保存されているため,講義内でサンプルスクリプトで行われる処理内容を解説するとともに,サンプルスクリプトの使い方を示し,履修者に処理をさせる.履修者は,サンプルスクリプトに手を加えて,アメダスデータから日本各地の気象情報を分析するか,Twitterのつぶやきデータを分析するかして,レポートにまとめることを目標とする.
なお,われわれの教育プログラムにおける大規模データ処理では,最終的なレポートの作例として表計算ソフトウェアによるグラフを用いる方法を提示した.ただし,教育内容が特定の表計算ソフトウェアの使い方に偏ってしまえば,当初の目的である普遍性の高い情報教育とはいえなくなる.そこで,表計算ソフトウェアに依存する部分では,CSVなどの汎用テキスト形式データ取り込み機能,棒グラフ・折れ線グラフといった基本的なグラフ作成機能だけに留める.
もし統計計算などが必要になる場合には,各表計算ソフトウェアが持つ組込み関数を使うのではなく,シェルスクリプトやUNIXコマンド上で計算プログラムを実装し,計算とテキスト形式へのデータ変換を済ませた状態で表計算ソフトウェアに与えるように指導する.こうすることで,教育内容の普遍性を維持できるとともに,履修者は計算アルゴリズムそのものについての理解を深める機会を得られる.
大規模データ処理を容易に行う方法を学ぶために,まずは処理を行うための大規模データを準備した.準備にあたって,われわれは,データサイエンス教育などを実施する場合,大規模データとして求められるのは定型データ(構造化データ)と非定型データ(非構造化データ)の2種類であり,その規模は現行のExcelで取り扱い可能なレコード数の上限(1,048,576行)を大きく超える規模と考えた.そして,シェルスクリプトを使って処理するためには,データファイルはプレーンテキストベース(TXTファイルやCSVファイルなど)で作られている必要がある.また,講義で使用するためには,履修者にデータを渡す必要があるが,その大規模データとしてのデータファイルサイズを勘案するとUSBメモリに保存し,授業期間中貸し出すこととなる.一定程度の数量が購入可能で,貸し出し可能なUSBメモリの容量としては256 GB(2021年末頃で約3,000円/本)の機種となり,ここからデータサイズの上限が決まる.そこでわれわれの教育プログラムでは,定型データとして気象庁アメダスデータ[26]を,非定型データとしてTwitterのつぶやきを特定のキーワードで集めたデータを用いることとした.以下が定型データ,非定型データについての詳細である.
気象庁では,アメダス*7と呼ばれるシステムを運用しており,そのための観測施設を日本の各地1,300ヵ所に有している.ここで取得されたデータは,気象庁のWebページから公開されており,誰でも取得可能である[27].またこれらのデータは,気象庁の外郭団体である「一般社団法人気象業務センター[28]」からの一括購入も可能である.われわれの教育プログラムで使用する大規模データとしては,購入可能な2008年から2021年までの1分ごとの1,320地点のデータを,共同研究者であるUSP研究所が購入した.これは圧縮されたバイナリデータで保存されており,1年間で約6億8000万レコード,全部で約90億レコード分,1,420 GB分のデータであった.これらのデータをテキストデータに変換し,2020年までのデータは,10分ごとのデータになるように間引き,2021年のデータについては,1分ごとのデータとした.併せて,記録されているデータの項目も整理し,「観測所,時刻,雨量,気温,風速,風向,日照時間」という形で,1年ごとにファイルを分割したデータセットを準備した.この結果,合計でレコード数1,263,388,904,およそ63.6 GBのファイルが用意できた.このうち,2018年,2019年,2021年のデータについては,履修者が授業で演習に使用するパソコンの性能を考慮し,月ごとにデータを分割したファイルも用意した.
Twitterでつぶやかれたつぶやきは,著者の1人である松浦によって作成されたコマンド群kotoriotokoを用いて収集した.kotoriotokoでは,特定のキーワードで検索をかけてつぶやきを収集することができ[29],われわれの教育プログラムでは,「オリンピック/パラリンピック」を中心にキーワードを設定したつぶやきを収集した.収集期間は2019年7月14日から2021年9月26日までで,全187,831,519ツイート,およそ82.8 GBの非定型データとなった.なお,非定型部分はつぶやきの文章部分であるが,つぶやかれた日時などについては定型化されている.このためデータ全体としては半構造化データの形をとっている.
金沢大学共通教育で実施する全8回からなる1単位の演習型の講義である.この講義では,履修者にノートパソコンを準備してもらい,そのパソコンを使ってシェルスクリプトによる大規模データ処理の演習をさせる.また,履修者の到達目標として
と定めた.講義内容は表2のとおりである.
講義では用意した大規模データを,250 GBのUSBメモリに保存して履修者に貸与する.これは使用するデータが大規模であり,ダウンロードし自らのノートパソコンに保存させることは難しいと判断したからである.シェルスクリプトを使用する環境としてWindows10/11の場合はWSL上にUbuntuを導入してターミナルを起動し,macOS/Linuxの場合はOSに搭載されているターミナルを使用する.講義第1回,第2回で,POSIXに準拠したUNIX系OSが使用可能な環境を構築,PT4Aのインストール,WSLにおけるUSBメモリのマウント/アンマウント方法を行う.第3回,第4回で,USBメモリ内の大規模データの内容の紹介と,実際のデータの閲覧方法を通じて,基本的なコマンド操作方法を解説,実践する.コマンド操作方法の解説では,教員が解説をしながら,履修者の目の前でスクリプトを構築していき,順次,データ処理方法を教授する.さらに,シェルはインタプリタであるので,シェルの操作結果を逐一見せながら操作を継続し,スクリプトとして完成させる過程を見せることで,他の高水準言語より分かりやすい形でデータ処理が行えることを示す.第5回以降は,USBメモリ内に添付した,サンプルスクリプトを用いたデータ分析例(図3)の解説と,実際に分析をした結果を提示する.この講義を通じて,履修者は自分のパソコンを使って,処理時間はかかっても簡単に大規模データ処理ができることを知り,サンプルスクリプトの活用などの演習によって,シェルスクリプトを用いた大規模データ処理手法を習得する.
金沢大学共通教育で実施する全16回からなる2単位の演習型の集中講義である.集中講義のため,4日間で全16回の講義を実施する.実施目的,履修者の到達目標および内容は,シェルスクリプトを用いた「ものグラミング」演習およびシェルスクリプトを用いた「大規模データ処理」の内容をあわせた内容になる.集中講義であるため,短期間に集中的に解説と演習を実施できる.特に演習は講義時間中に履修者にできるまで行わせることも可能である.
POSIXに準拠したシェルやコマンド群をできる限り用いて,プログラミングを行う「POSIX中心主義」を踏まえれば,25年後であっても使用可能なプログラムを作ることが可能となる.そこでわれわれの教育プログラムでは,シェルやコマンド群の活用方法と,そこからシェルスクリプトを組んでいく基本的な手法を学ぶこと,さらにその際にPOSIX中心主義を踏まえたプログラミング方法を学ぶことを目的とする.
全16回からなる2単位の演習型の講義で,大学コンソーシアム石川いしかわシティカレッジで開講するため履修者の所属の幅が広くなっている.そこでわれわれは学生や社会人聴講生が,履修しやすいように開講時間をシティカレッジで最も遅い,19:10から20:40までの時限に設定し,web会議システムを使用したライブ配信によるオンライン講義とした.これによって社会人などの聴講をしやすくし,県外からの履修者にも広く門戸を開いた.この講義では,プログラミング言語としてのシェルスクリプトの基礎を学び,実際に使用するための方法を学び,さらに自分でコマンドを作成するための方法を学ぶ.そこで,履修者の到達目標として
と定めた.講義回と講義概要は,表3のとおりである.
この講義は,全16回の講義を5つのパートに分けた.
第1パートでは,履修者は,シェルを用いたプログラミングで実際に何ができるのか,そのメリットとデメリットなどについて学習する.同時に履修者が扱っているパソコンにPOSIXに準拠したUNIX系OSが使用可能な環境の構築をする.さらに,シェルスクリプトで何ができるようになるかについての理解を深めるため,実際にシェルスクリプトを使ってビジネスをしている方に講演してもらい,ビジネス現場におけるシェルスクリプトの利用について解説する.これによって履修者に,シェルスクリプトを身につけることによって何ができるようになるかを明確にイメージさせる.
第2パートでは,履修者は,第1パートで整えたPOSIX環境を使って,具体的なシェルスクリプトの使い方とシェルスクリプトで実際に何ができるのかを演習とともに学習する.GUIではないCLIについての説明から始め,履修者はシェルの入力とシェルスクリプトの構築,実行方法を学ぶ.そのために17個のシェルの基本コマンドについて解説し,実行したいことを実行するために,逐次,コマンドを伸ばしてスクリプトを組む手法について演習を行う.履修者は,回を追うごとにコマンドラインが伸びていくことで,シェルスクリプトの仕組みと意義,意味を知ることができる.また新しいコマンドの導入方法についても解説し,その例として,aptコマンドを使ってインストール可能なslコマンドやcalcコマンドをインストールさせ,さらにaptコマンドではインストールできない,Twitterのつぶやきなどをコマンドラインから行えるkotoriotokoのインストールを実施した.
第3パートでは,履修者は,シェルのコマンドを作成する方法について学ぶ.さまざまなコマンドを使用してシェルスクリプトを組み上げる作業を行う中で,使用しているコマンドを自分で作成できることを知り,自分でコマンドを作成する際の方法や注意点を知ることで,シェルスクリプトによるプログラミングをより効果的に行えるためである.
第4パートでは,履修者は,ターミナルで使用可能なテキストエディタの種類と使い方について学ぶ.またシェルスクリプトを構成するコマンドの中から,重要なものについて,その機能と使い方を具体的な演習とともに学ぶ.特にsedコマンドやawkの使い方をていねいに説明することで,履修者のできるようになることの幅を広げる.
第5パートでは,履修者に,これまで学習してきた内容を用いて,自分なりのコマンドを作成するという課題を与えた.コマンド作成作業では,いきなりコマンドを作成するのではなく,コマンドのマニュアル(manファイル)を作成させ,作成したいコマンドの内容について議論をした.その後実際にコマンドを作成し,そのコマンドについて評価をした.
全16回からなる2単位の演習型の講義で,大学コンソーシアム石川いしかわシティカレッジで開講するため履修者の所属の幅が広くなっている.この講義は,シェルスクリプト言語論1を開講するまでシェルスクリプト言語論という講義名で実施してきた,プログラミング言語としてのシェルスクリプトの応用的な使い方,特にPOSIX中心主義に基づくプログラミングを学ぶ.履修者の到達目標としては,
と定めた.講義回と講義概要は,表4のとおりである.
シェルスクリプト言語論2では,全16回の講義を4つのパートに分けた.基礎編では,履修者は,POSIXとシェルスクリプトについての基本的な知識と,POSIX中心主義とそのプログラミング方法について学んでいく.実例編では,履修者は,POSIX中心主義に準じた具体的なシェルスクリプトによる簡単なプログラミング演習をする.応用編では,履修者は,アプリケーション作成に向けてデバックとバージョン管理方法について学び,あらかじめ準備した郵便番号から住所を検索するアプリケーションを写経(学習者にあらかじめ図4のようなプログラミング例などが印刷された教材*8を配布し,学習者はそれを見ながらプログラムを作成していく作業.学習者にコピー&ペーストは行わせない)を通じて作成する演習を行う.最後のまとめでは,履修者は,これまでのまとめと演習などで作成した内容についての総括を行う.
この講義では,POSIXに準拠したUNIX系OSが使用可能な環境としては,教員側でPOSIXサーバを用意して,履修者に対してアカウントを発行し,SSHにてログインさせる形を取る.そのため演習環境を整備も,SSHで教員側のPOSIXサーバにログインするための環境構築となる.なお,講義中で,履修者に対してPOSIXに準拠したUNIX系OSが使用可能な環境設定についての解説は行う.これによって,履修者のパソコンにはターミナルエミュレータをインストールするだけで済むようになった.
ターミナルエミュレータは,当初,TeraTermを用いていたが,2021年度からはコードエディタであるVisual Studio Code(以下,VSCode)をインストールさせ,VSCode内でSSHなどの拡張機能をインストールさせることでターミナルの代わりとしている.VSCodeは,オープンソースで開発され,国際化が行われており,多種多様なプラグインが揃っているという特徴があり,著者らの調査の範囲では,英語圏の多くの大学でも積極的に採用されているといった特徴を有し,今後長期間にわたって国内外で利用されていくと考えられる.これがVSCodeを採用した理由である.
この環境構築方法は,クラウド時代において,インターネットを介してサーバを操作することが前提となるであろう社会においては,ローカル環境である学生のPC環境を整える作業を最小限にしながら,一般的なPOSIX環境下のサーバを扱うことを学べるという点で,優位な方法と考えた.また,履修者のパソコンへのインストール作業などを最小限にすることも,講義の主旨以前の内容で履修者が躓いてしまう可能性を減少させることができる.
同時に履修者の所有しているパソコンの性能が極端に低い,あるいは古い場合を除き,パソコンの性能によらず同等の学習ができる点もメリットである.併せて,POSIXサーバを教員側が管理できるため,履修者の進捗状況の把握がしやすく,必要に応じてサポートもしやすい.特にこの講義では,写経を有効な学習方法と位置づけており,その進捗管理やデバックサポートなどがしやすい.
従来は履修者から演習上の質問を受けた場合に履修者のパソコンの画面を覗き込まなければならず,場合によっては履修者のパソコンを教員が操作するために教員の指がキーボードのキートップやポインティングデバイスに直接触れることもあったが,この方法では教員のパソコンからログインして診断・指導できる.これにより,対面講義であっても感染症対策としてのソーシャルディスタンスを確保できるようになった.また,Web会議システムを用いたオンライン講義においても,参加形態によらず同等の教育を受けることができる.これは,今後,対面以外の講義形態が定着していくと考えたときの重要な要素であり,国境を越えた国際的な教育展開時にも必要となる.
一方でデメリットも存在する.履修者は講義期間中に学習のためにPOSIXサーバにアクセスしているため,講義期間が終了すればサーバ自体にアクセスできなくなる.この講義では,ある程度の期間,アクセスを許可しているが,それは永遠に続くわけではない.従って,履修者は,講義終了時に,講義中に行ったさまざまな作業による成果物などを手元にコピーしておく必要がある.また,履修者数が増えたときに機能不全に陥ってしまう.履修者が10名,20名であれば,同様に講義を実施できても,100名,200名,さらに1,000名以上になれば,それぞれのスケールで対応方法を検討しなくてはならない.
前節で論じたわれわれの教育プログラムは,実際にシェルスクリプトを活用した講義を実施する中で,その内容の改善を図っている.ここからは,2015年度後期から2022年度まで開講してきた講義について,時系列に沿って,年度ごとに行われた前節講義内容の補足と改善点を述べる.
まず,講義の種類と開講時期は図5のようになる.なお,履修者の到達目標については,毎年見直しをかけているが,特に大きな変更は行われていない.
後期に,大野が担当している講義「計算科学特論」(金沢大学数物科学類3年生向け)で,われわれの教育プログラムの試行をしたのが,この研究の出発点である[30].この講義で,われわれの研究グループとして初めて,Raspberry Piを教材として用い,UNIXとコマンドラインインタフェース,UNIXコマンドで操作するハードウェア,UNIXコマンドで操作するネットワーク環境,UNIXコマンドとシェルスクリプトなどについて,学生が所持しているノートパソコンを使った演習を踏まえて実施した.なお,計算科学特論は,2022年現在まで,内容を更新しながら継続して実施している.
前期より大学コンソーシアム石川いしかわシティカレッジにて,「クラウド時代の『ものグラミング』概論」と「シェルスクリプト言語論」を開講した.この2つの講義が,われわれの教育プログラムによる教育の本格的な開始である.
講義を開始時点でWindows10がリリース(2015年7月29日)されていたが,多くの履修者は,まだWindows7を使用していた.そのためPOSIXに準拠したUNIX系OSが使用可能な環境として,履修者にはCygwinをインストールさせた.なお,履修者の使用するパソコンのOSがWindows10に切り替わることを前提に,2016年8月2日のWindows10アップデートに伴いリリースされたWSL(Windows Subsystem for Linux)のベータ版を,履修者のUNIX系OSが使用可能な環境に使用することを検討開始した.
前期に大学コンソーシアム石川いしかわシティカレッジで「クラウド時代の『ものグラミング』概論」と「シェルスクリプト言語論」を開講した.
この段階では,POSIXに準拠したUNIX系OSが使用可能な環境として,WSLは選択肢の1つという位置づけであった.履修者は自身の環境に応じて,CygwinかWSLをインストールした.
後期に大学コンソーシアム石川いしかわシティカレッジで「クラウド時代の『ものグラミング』概論」と「シェルスクリプト言語論」を開講した.この年度から「ものグラミング」は,「ものグラミング2」に発展した形で講義「クラウド時代の『ものグラミング』概論」に盛り込まれ,使用する機器が表1のようにArduinoとエレキットとなった.
この段階では,POSIXに準拠したUNIX系OSが使用可能な環境として,WSLをWindowsOSを使用している履修者のほぼ全員が使用できるようになった.
前期に大学コンソーシアム石川いしかわシティカレッジで「クラウド時代の『ものグラミング』概論」と「シェルスクリプト言語論」を開講した.金沢大学の学生に対して,金沢大学共通教育で,夏休み期間中の集中講義「シェルスクリプトを用いた『ものグラミング』演習」を開講した.集中講義として開講したのは,受講形態の違いによる講義内容および実施方法を検討するためである.
前期に大学コンソーシアム石川いしかわシティカレッジで「クラウド時代の『ものグラミング』概論」と「シェルスクリプト言語論」を開講した.本講義も,2020年5月14日に開始日を変更した上で,Web会議システムを用いたオンラインによるライブ配信型講義として実施した.なお,2020年7月末には講義実施方法指定の指示緩和がされ,オンラインに加えて対面講義も行うハイフレックス形式で講義を実施した.金沢大学共通教育で,夏休み期間中の集中講義「シェルスクリプトを用いた『ものグラミング』演習」をハイフレックス形式で開講した.オンラインで参加する学生には,あらかじめ貸与機器などを郵送した.
金沢大学共通教育で,Q1*9に「シェルスクリプトを用いた「ものグラミング」演習」をQ2に「シェルスクリプトを用いた「大規模データ処理」演習」を開講した.夏休み期間中の集中講義「シェルスクリプトを用いた『ものグラミングと大規模データ処理』演習」を開講した.なお,金沢大学では,学生に対してデータサイエンス教育を行うために,データサイエンス特別プログラムを実施している[31].われわれは,この特別プログラムに協力し,これら3つの講義を提供した.後期に大学コンソーシアム石川いしかわシティカレッジで「クラウド時代の『ものグラミング』概論」と「シェルスクリプト言語論」を開講した.
この段階では,POSIXに準拠したUNIX系OSが使用可能な環境として使用しているWSLの機能が整えられ,インストール作業などが容易になった.
前期に大学コンソーシアム石川いしかわシティカレッジで「シェルスクリプト言語論1」を開講した.後期に「クラウド時代の『ものグラミング』概論」と「シェルスクリプト言語論2」を開講した.シェルスクリプト言語論2は,これまで実施してきたシェルスクリプト言語論の講義内容のまま改称した講義である.金沢大学共通教育で,Q1に「シェルスクリプトを用いた「ものグラミング」演習」をQ2に「シェルスクリプトを用いた「大規模データ処理」演習」を開講した.夏休み期間中の集中講義「シェルスクリプトを用いた『ものグラミングと大規模データ処理』演習」を開講した.
2022年度前期開講の講義「シェルスクリプト言語論1」の履修者は全14名であった.履修者の内,学生7名(内金沢大学学生は2名,5名は石川県内別大学生),社会人聴講生7名で,学生と社会人という異なる属性で半分に分かれた.この結果,講義中の講師からの質疑などへの回答が,学生からは理論的な視点から,社会人からは実務的な視点からのものが多くなった.講義では,こういった視点の違いを利用して,履修者への「あなたにとってのシェルスクリプトとは?」といった問いかけに対して,質疑応答の内容の幅が広がり,履修者を講義内容についてより深い理解に導くことが可能となった.
また履修者からの「コマンドの作り方を学びたい」という意見を受けて,コマンドそのものを作成する講義を,全体の講義内容を調整しつつ2回実施した.この講義では,当初,全16回の講義を4つのパートで分けて実施する計画であったが,この質問を受けて5つのパートに分けることになった.このコマンド作成を学びたいという意見は,講義における最終課題にも影響を与え,履修者には最終課題として「自分で何らかのコマンドを作成する」を課した.講義では,最終課題のほかにも,表5にあるような課題を課し,適宜進捗状況を確認していった.
コマンド作成課題の後,学生の履修者から「私にとって初めてコマンドを作るのは想像より難しく,複数人の受講者にとって講義3回分のサポートのみでは間に合っていないように感じました」という意見が出された.また,講義内容全体に対して「講義スライドでは参考にするとよいページなどが示されていましたが,特にオプションや引数を扱えるようにするのは難しく感じました.そのため,講義内でオプションや引数を扱ってみる演習を行いサポートをすれば,スムーズにコマンド作りに移れるのかなと思いました」という意見もあり,シェルスクリプトやコマンドを初めて用いる学習者には,まずコマンドのオプションや引数の扱い方の演習がより必要であることが分かった.
2022年度夏休み期間中に開講した集中講義「シェルスクリプトを用いた「ものグラミングと大規模データ処理」演習」の履修者は全19名であった.集中講義であるため,学生からは「はじめは授業で何について話されているのか,よく分からなかったのですが,3日目くらいからwsLが何かが何となく分かってきて,最終的にはwsLで基本的なコマンド(less,ls,sl,data)などは使えるようになりました」というような反応が返ってきた.一方で「内容があまりに豊富で4日間かっつめで語りきれるような内容ではなかったので,集中講義として受けてしまったのはやや後悔した.受けるなら普通の授業で受けたいところ(学生提出の原文ママ)」という反応もあり,講義と講義の間に1週間という内容を咀嚼する期間がある通常の講義との違いが如実にでてきた.
「ものグラミング」手法の普及啓発を意図した教育活動はすでに海外でも実施している.一方,シェルスクリプトを用いた大規模データ処理に関する教育活動はこれから企画して展開する段階にある.「ものグラミング」の海外展開はまだ限定的ではあるものの以下に述べるようにインド,カナダでは大学学部生を対象とした講義やワークショップを実施したり,卒業論文や修士論文の研究活動の中に「ものグラミング」教育を組み込んだりしてきた.また,ポルトガルでも今後の展開についての議論を行った.以下では時系列ではなく,地域別にこれまでの経緯と今後の展開のうち実現が確実あるいは検討が進んでいる事項について述べる.
インドでは2018年にハイデラバード州のハイデラバード工科大学において,「ものグラミング1」をベースにしたワークショップを開催した.当時,同大学でもRaspberry Piの利活用に注目が集まっており,学生にもRaspberry Piは人気が出始めていた.当時はまだ「ものグラミング2」手法が確立していない時期だったため,コマンドラインやシェルスクリプトを活用してRaspberry Pi単体でデジタル入出力を行う方法(すなわち「ものグラミング1」)を実践して見せた.その際,前述のUNIX哲学に通じる物事はシンプルであることが重要であること(Keep it simple)を説く「KISSの法則」を紹介し,われわれのアプローチの重要さを強調した.
今後は,2023年度後半に現地にて対面型の「ものグラミング2」ベースのワークショップや大規模データ処理演習を実施する方向で準備を進めている.
カナダ最東端にあり大西洋に突き出す形のノバスコシア州の州都ハリファクスには同州最大となる州立ダルハウジー大学がある.著者の一人(大野)はこの大学のコンピュータ工学部に2018年にサバティカル研修として5ヵ月ほど滞在した.滞在中,訪問先の研究室で「ものグラミング1」手法を学部および大学院生に伝えるとともに,まだ完成はしていなかった「ものグラミング2」手法についても議論しその内容を発展させた.2018年9月に帰国した後も,同大学の同学部には2018年に1度,2019年に2度,2020年に1度訪問して「ものグラミングワークショップ」や関連レクチャーを開催している.その後は,新型コロナ感染症の世界規模での蔓延により,2020年後半以降は現地での対面方式でのワークショップ[32]は開催できていない.
今後は,2023年以降に対面型のワークショップを再開する方向で,カナダ側と調整を行っている.さらに,シェルスクリプトを用いた大規模データ処理演習についても,250 GB USBメモリ中のデータはそのままにし,解説文書とスクリプトのコメント部分を英訳した「英語版USBメモリ」の作成を終え,英語圏での対面型の演習の準備を整えているので,オンライン型ならただちに,対面型の場合は2023年度中に実施できる状態にある.
ポルトガルのリスボンにはUSP研究所のヨーロッパ拠点がある.同拠点から紹介を受け,同拠点の技術者とともに2018年にリスボン大学工学部を訪問し,「ものグラミング1」について技術的説明を行い今後の連携について話し合いを行った.リスボンでの「ものグラミング」の展開はこれからであるが,USP研究所ヨーロッパ拠点ではすでにPT4Aのビジネス版であるTukubaiの利用が進んでいるので,「ものグラミング」だけでなくPT4Aを使った大規模データ処理教育についてはもリスボン大学工学部でワークショップ形式で展開できる.
今後は,新型コロナウィルス蔓延が終息する前提で2023年度後半に,前述のインドと連携してワークショップや演習を展開する方針を堅持する.
本稿の著者の一人のナカサンはタイから来日して国内で修士課程と博士課程を終えて学位を取得し,その後金沢大学に就職してわれわれの研究グループに合流した経緯を持つ.その後2022年5月にタイに帰国して現職(カセサート大学)に就いた.このためカセサート大学のコンピュータ工学部には「ものグラミング」やシェルスクリプトを用いた大規模データ処理演習を受け入れる人的環境が整っている.また,2022年10月には同大学から著者らが勤務する金沢大学に,今後の大学間の広範な連携を模索するための目的で訪問団が訪れ,その際に著者らの連携も話題になった.その際,われわれは大規模データ処理演習用に用意した250 GB USBメモリを手渡し,今後の具体的な連携について協議した.
今後は,2022年度中に大規模データ処理演習のパイロット授業をオンラインで実施し,タイの新学期が始まる2023年6月以降に現地で大規模データ処理演習と実機を用いる「ものグラミング」ワークショップを実施する.
情報技術教育には,コンピューターリテラシーから始まり,さまざまなプログラミング言語,アルゴリズム,データサイエンス,機械学習,深層学習など,比較的容易なものから高度なものまでたくさんの講義がある.しかし多くの教育機関でほとんど行われていないのが,われわれが実施しているシェルスクリプトを中心に据えた学びであり,講義である.これらは独学もしくは研究室,ゼミなどで先輩からの指導という形で学ぶことが多い.このような状況の中,われわれの教育プログラムの実践によって,通常では情報技術教育のミッシングリンクとも呼べるものを埋めることができる.この観点は,MIT有志によって作られた「The Missing Semester of Your CS Education」が高い評価を得て,さまざまな言語によって翻訳されていることからも明らかである.そしてわれわれの教育プログラムでは,The Missing Semester of Your CS Educationでも指摘されているパソコンを始めとした計算システムを効率的,効果的に扱うことが可能となり,時間の浪費だけでなく,データ損失やタスクが完了できないなどの問題も未然に防ぐことができる.The Missing Semester of Your CS Educationでは,エディタやバージョン管理,セキュリティと暗号までであるが,われわれの教育プログラムでは,大規模データ処理まで含んでいる.この演習をこなすことで,シェルスクリプトの使用によるデータ処理を身につけることができ,定型データ,非定型データを問わずに,さまざまな解析を行えるようになる.これは講義の最終課題として提出されたレポートからも読み取ることができ,もっとも優秀なレポートでは,オリンピックへの肯定的な意見のつぶやきと,日本の内閣支持率との関係性を論じたものがあった.ほかにも,金沢市と富山市の平均気温の差や,金沢市と佐賀市の不快指数の比較などが論じられていた.必ずしも履修者全員が,しっかりとした分析をし,立派なレポートの作成ができているわけではないが,最低限,提供したデータとサンプルスクリプトを用いて計算をし,その結果をまとめることはできていた.
また,POSIX中心主義によるプログラミング方法は,時間経過によらず使用可能なプログラムが作れるだけでなく,25年後に,どのような計算機であってもPOSIX環境下であればプログラミングを行える技術を身につけることとなる.そして,IoT機器などとの組み合わせでは,データそのものの生成から,ネットワークを介したデータの送受信,データの整形と整理が,1行のスクリプトで可能となる.Society5.0において,「ものグラミング」の考え方は,社会のいろいろな場所に設置,配置され稼働されるIoT機器などの取り扱い方法のソフトウェア面からの有力な提案の1つといえる.
一方で,2022年段階においては,教育プログラムの設計と実装(と感想の評価)までしかできておらず,定量的な評価にはいたっていない.2015年度からの講義では,履修者が一桁台であり,定量的な評価が難しかったこともあるが,履修者も徐々に増え,2019年度に開講した集中講義などでは20名以上の履修者がでてきた.その後のコロナ禍で,教室の収容人数が大幅に削減されたこと,講義形式に制限が加えられたことなどもあり,評価が難しくなっている.なお,金沢大学には,オンラインシステムを用いた授業評価アンケートも存在するが,2021年度までは履修者による回答が任意であったっため回答数が極端に少なく評価ができなかった.2022年度に入ると,授業評価のシステムが変更され,履修者のほぼ全員が回答をする形になったので,その結果の一部を抜粋したものを図6として掲載した.この図6は,学習目標の達成度を把握するための図である.この図では,縦軸が履修者総数(N)に対する回答者数の割合であり,横軸が達成度の評価で,これは履修者が−50から50までの点数をつけて自己評価する.このため中心が0点となり,右に行くほど評価は高い.これを見ると,学習目標の達成度として,履修者は一定程度の達成をしていると自己評価していることが分かる.しかし,あくまでも生の自己評価のデータを示したものであることから,これ以上の評価は難しい.
2022年度に入り,コロナ禍に端を発する状況も落ち着いてきたこともあり,今後は定量的な評価を実施するため,その評価基準などの設計と実装を行う.評価基準の設計と実装においては,2022年度から新しい学習指導要領が高等学校に適用されることに伴い,必修となった教科情報の科目「情報1」を踏まえ,それを学び,さらに2025年に実施される大学入学共通テストの「情報」を受けて入学してくる学生たちを基準とすることが必要である.これは2025年度以降の高等教育初年次(大学1年生向け)の情報教育の在り方が,既存の教育からの変更が求められるのは「情報」が大学入試科目となったことから明らかである.情報1の教育内容が情報分野に関して非常に充実しており,特にプログラミングやアルゴリズム教育では,従来のビジュアルベーシックからの脱却が図られ,その内容も優れている.これらが大学の入学試験科目としても必要とされるため,高等学校での情報教育の在り方自体が変わるとわれわれは評価している.そのため,評価基準の設計についても2025年度入学者基準で準備している.
ここまで,われわれが設計した教育プログラムの内容と,それに基づく講義について論じた.この教育プログラムは,単にデータサイエンス教育の1つに「シェルスクリプト」を取り込むというだけでなく,プログラミングやデータ処理などのさまざまな場面で,その有効性や効率性,さらに普遍性を,シェルスクリプトを用いることで担保できること,教授することができる.また,この教育プログラムの核の1つであるものグラミングを踏まえることで,柳戸によるカルマンフィルターを使った倒立振子[33]や,松浦による時間同期コマンドの作成[34]に至っている.今後,さらに金沢大学大学院博士課程前期の全学生選択必修講義「スマート創成科学」の一部でも,この教育プログラムを実施することになっており,放送大学石川学習センターでも対面講義「シェルスクリプトデータ処理演習」の実施をするなど,国内での教育展開を図っている.
謝辞 本研究は,金沢大学学術メディア創成センターとユニバーサル・シェル・プログラミング研究所の産学連携共同研究として推進された.関係各位のご厚意ご高配に,深く感謝する.
金沢大学総合メディア基盤センター助教.博士(理学),大型計算機を用いた数値計算でクォークの閉じこめ機構について研究.2006年からICTを教育に活用する手法の研究に従事し,金沢大学のポータルを作成.教育システム情報学会 会員.
(有)USP研究所 技術研究員,(株)松浦リッチ研究所別働隊 代表取締役隊長.経年劣化に強いソフトウェアやデータ保存形式についての研究を主として推進し,その成果をソフトウェア開発・保守で実践し,また教育・出版等で普及・啓発を図っている.
金沢大学学術メディア創成センター助教を経て2022年6月よりカセサート大学専任講師.
金沢大学学術メディア創成センター教授.博士(理学).東京工業大学大学院講師,郵政省通信総合研究所(現NICT),内閣官房併任を経て2006年より現職.非常時情報通信,情報セキュリティ,ものづくり支援などの研究に従事.
会員種別ごとに入会方法やサービスが異なりますので、該当する会員項目を参照してください。