P2-22「ものグラミング」から「ものグラミング 2」へ～POSIX 中心主義に基づく IoT 開発方式の新しい展開～

From Monogramming to Monogramming2- New development of IoT Development Method Based on POSIX Centricism –大野浩之*1，松浦智之*2，森祥寛*1，
OHNO Hiroyuki*1, MATSUURA Tomoyuki*2, MORI Yoshihiro*1,*1 金沢大学総合メディア基盤センター，*2 ユニバーサル・シェル・プログラミング研究所*1 Informational Media Center, Kanazawa University *2 Universal Shell Programming Laboratory Ltd.
Email: mori4416@staff.kanazawa-u.ac.jp
あらまし：これまで我々が提案してきた「ものグラミング」は、ものづくりのためのプログラミング方式と当該方式を用いた実装環境であり、それを踏まえたものづくりと授業実践を行ってきた。そこで発見された課題と反省点から見直しをかけ、IoT 環境への適用も視野に「マイクロコントローラと POSIX コンピュータのそれぞれが担当する機能」の「選択と集中」を行い「ものグラミング 2」へ発展させた。本報ではこの説明と授業内容や教材について紹介する
キーワード：IoT，プログラミング教育，POSIX

1.

研究背景と POSIX 中心主義

「ものグラミング」は，もともとは趣味で電子工作を楽しむものづくり愛好家に，自分の作品とクラウド上のサービスを連携させるプログラムを「簡単」に「手早く」かつ「安全」に構成してもらうことを念頭に著者の大野が提案したプログラミング手法である(1)．
一般論として．ソフトウェアは「①簡単かつ素早く開発できる」「②完成後も長期に渡って必要な性能を維持できる」「③開発後 10 年あるいは 20 年という長い時間が経過していても修正が必要になったら即座に修正できる」ことが望ましい．しかし，実際には時間の経過とともに，開発したソフトウェアを取り巻く OS やミドルウエアやアプリケーションの仕様や実装が変化するため，②や③の実現は容易ではない．このような状況の下，テキスト形式のデータ処理を行う分野で①から③を満たすことに成功したのが，著者の松浦が主導的に進めている「POSIX中心主義」に基づくプログラミングである(2)．「ものグラミング」は POSIX 中心主義の影響を強く受けながら生まれた．
そのため，「センサから得た情報を処理してクラウド上のサービスに送る」「クラウド上のサービスからの指示をアクチュエータに渡す」といった IoT 機器を使ってよく行う処理では，POSIX 中心主義の 3 要
素「POSIX 準拠」「交換可能性の担保」「W3C 準拠」から極力逸脱しないようにしている．POSIX 中心主義に基づくプログラミングでは，POSIX の仕様から逸脱しないように書かれたシェルスクリプトを用いる．
「ものグラミング」においてもこれに習い，例えばセンサからデータを受けるのであれば，データを受け取った直後からデータ処理は全て POSIX 中心主義に基づいて書かれたシェルスクリプトで行うし，何らかのデータをアクチュエータに送るのであれば，アクチュエータにデータを送る直前までは，POSIXの仕様から逸脱しないように書かれたシェルスクリプトに担当させる．こうすることで， IoT 機器を取り扱うプログラミングでも，これまで POSIX 中心主義で対応してきたデータ処理と同様の高い互換性と長い持続性が確保できる．これが「ものグラミング」の根底にある考え方である．

2.

ものグラミング 2「ものグラミング 2」の特徴は，ものづくりのためのプログラミングにおける「適材適所」と「選択と集中」を徹底したことである．このため，センサやアクチュエータを操作する際には，Arduino UNOのようなシンプルな組み込みマイコンを採用し，センサやアクチュエータの数だけ用意する．そして一つのマイコンにはセンサやアクチュエータのうちの一つだけを接続する．センサを担当することになったマイコンはセンサからの値を読んだらシリアルポート（主に USB 接続で与えられている）を介してPOSIX 機にデータを送る作業だけを行う．アクチュ
エータを担当することになったマイコンは POSIX機からデータを受け取ってアクチュエータを動かす作業のみを担当する．これを簡便に表わしたのが図

図 1― 287 ―教育システム情報学会 JSiSE2019
第44回全国大会 2019/9/11-9/13

1 である．なお，いずれの場合もマイコンと POSIX機との通信はテキスト形式で行う．POSIX 機上でのPOSIX 中心主義に基づくデータ処理との親和性を確保するためである．そして，同じ POSIX 機に接続されたセンサやアクチュエータを互いに連携させたり，クラウドを介して他のネットワーク上の他の機材やサービスとも安全かつ確実に連携させるような高度な機能の実現には，POSIX 系 OS を搭載したコンピュータを活用し，マイコンには担当させない．POSIX
機上で用いるソフトウェアは，POSIX 標準コマンド群とこれらを活用する POSIX 中心主義に基づくシェルスクリプト，そして慎重に選んだ少数の新規コマンド類に限定する．
「ものグラミング 2」では「適材適所」「選択と集中」を徹底させるため，仮にセンサが一つしかなくその値を読み取って液晶表示器に表示するだけであっても，単純構成のマイコン 2 台（センサ担当と液晶表示器担当）と POSIX 機 1 台の合計 3 台を投入することになる．センサの値を液晶表示機に表示するために 3 台のコンピュータを投入する方法は一見すると高コストに思えるが，高い柔軟 性 と 安 全 性 を 確保 で きる ． さ ら に こ の 方法 はPOSIX 中心主義に沿っているため，20 年以上先であっても動作し，容易に改修でき，安全性であることを担保できる．したがって，中長期的な視点で見れば無駄でも高コストでもなく，保守性に優れた性能価格比に優れた方法である．

3.

普及啓発～授業での実践演習～

2016 年度から 2018 年度まで、ものグラミングとPOSIX 中心主義を題材として，大学コンソーシアム石川いしかわシティカレッジ提供科目として、「クラウド時代の「ものグラミング」概論」と「シェルスクリプト言語論」の 2 つの授業を開講してきた(3)。
2019 年度前期からは、ものグラミングからものグラミング 2 へと発展させる形で「ものグラミング概論」の授業内容、演習内容を再構築し、シェルスクリプト言語論とともに 2 つの授業を実践した。また，
8 月末に前述の 2 つの授業をまとめて集中講義として「シェルスクリプトを用いた「ものグラミング」
演習－POSIX 中心主義に基づく電子工作－」を開講する。
これらの授業では、授業を履修する学生にはノートパソコンを準備してもらい、そのパソコンを使った演習にて、ものグラミング 2 とシェルスクリプトについて学んでいく。必要な IoT デバイスは、教員側で準備し，学生に授業期間中貸出している。また、シティカレッジ提供科目であることから、受講してくる学生の所属が、電子情報工学系の学生だけでなく、いろいろな属性をもっている。そのため前段の知識がそろいにくく、授業開始直後の数回は、パソコンの設定（Windows10 の場合は WSL の導入から、Ubuntu アプリのインストールと設定、kotoriotoko(4)を始めとするいくつかのコマンド群のインストールなど）や、GUI ではない CUI による操作方法、コマンドライン入力とは何か？ コマンド入力の方法などを説明しなくてはならない。そこで著者の森を中心に、これら前段の知識を e ラーニングなどで学習可能とする教材の作成を行い、授業開始時にできるだけ同じ状態で作業を始められるように整えたいと考えている。教材整備においては、YouTube 等に掲載できるような動画形式で作成することを検討しており，e ラーニングや反転学習用教材として使用するだけでなく，英語対応等も行い，国内だけでなく英語圏を中心に世界展開を目指したい。ただ、これらの前段の知識は、OS やシステムのアップデートに伴って、順次修正が必要となるため、どこまで対応するかを見極める必要がある。

4.

まとめと展開「ものグラミング」の新しい方式となる「ものグラミング 2」についてその概要を述べつつ普及啓発活動について述べた．
「ものグラミング 2」は，「適材適所」「選択と集中」の考え方により，マイコンにはマイコンにしかできない作業をさせ，一般性の高いデータ処理は POSIX 機上のシェルスクリプトで対応させる．これにより，POSIX 中心主義に則った高い互換性と長い持続性を IoT 機材のプログラミングにも導入できることが分かってきた。
また、著者の大野は、2018 年 5 月から 9 月までカ
ナダ国ノバスコシア州立ダルハウジー大学にてサバティカル滞在中に、滞在先の研究室にて「ものグラミング 2」を実践し、学生にも指導を行った。他にもインド国ハイデラバード州のインド工科大学ハイデラバード校などでも実践しており、普及啓発に関する知見が溜まってきている。作成を進めている教材とあわせて、海外での展開も考えていきたい。
謝辞
本研究は，金沢大学総合メディア基盤センターと USP研究所の共同研究として推進された．関係各位のご厚意ご高配に，深く感謝する．

参考文献(1) 大野, 森, 北口, 中村, 松浦, 石山, 當仲，“ものづくりのための「ものグラミング」と実践的教育環境の構築”，
DICOMO2016，1335-1340, 2016-07.
(2) 松浦智之, 大野浩之, 當仲寛哲，“ソフトウェアの高い互換性と長い持続性を目指す POSIX 中心主義プログラミング”，デジタルプラクティス 8(4)，352-360，
2017-10-15．
(3) 大学コンソーシアム石川いしかわシティカレッジ，⟨https://www.ucon-i.jp/newsite/city-college/index.html⟩（参照 2019-06-16）(4) 秘密結社シェルショッカー日本支部，恐怖！ 小鳥男(オンライン)，入手先⟨https://github.com/ShellShoccar-jpn/kotoriotoko⟩ （ 参 照2019-02-04）― 288 ―