35
IoT 時代に資する 「ものグラミング」教育の ための授業開発と実践 2016319中村和敬, 石山雅三, 松浦智之, 當仲寛哲 ユニバーサル・シェル・プログラミング研究所 北口善明, 森祥寛, 大野浩之 金沢大学総合メディア基盤センター

IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

Embed Size (px)

Citation preview

Page 1: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

IoT 時代に資する「ものグラミング」教育のための授業開発と実践

2016年 3月 19日中村和敬, 石山雅三, 松浦智之, 當仲寛哲ユニバーサル・シェル・プログラミング研究所

北口善明, 森祥寛, 大野浩之金沢大学総合メディア基盤センター

Page 2: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

目次

1. はじめに

2. 本教育プログラムの特色

3. 金沢大学での実践(2015年度後期)4. 得られた知見と評価

5. 大学コンソーシアム石川(UCI)での実践

(2016年度前期)6. おわりに

2

Page 3: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

1. はじめに

● 情報科学技術は応用分野毎に発展してきた

○ 例1 : 組み込みエンジニア(ハード)■ ハードの事なら任せろ !!■ 組み込みOS, ハードウェア制御 , リアルタイムスケジューリング etc, etc…■ でもネットワークやアプリケーションとかよくわからない ...

○ 例2 : アプリケーションエンジニア(ソフト)■ アプリケーションやネットワークの事なら任せろ !!■ 各種サーバ , ネットワーク , UI etc, etc…■ でもハードとかよくわからない ...

3

Page 4: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

1. はじめに

● 応用分野毎に重視される知識の違い○ 大きく分けて二種類

● 1. 情報科学的な知識 ← 概ね共通○ アルゴリズム / データ構造等、背景となる数学

○ サイバネティクス、数値制御等、システム的な考え方

○ OS / ネットワーク等、基本的なシステムの構造

● 2. 製品知識 ← 分野毎の差が大きい○ 開発環境 : プログラム言語 , ICライタ...組み込み分野で顕著

○ ハード部品 : 回路設計, インターフェース ...○ ソフト部品 : ライブラリ, サーバ...

4

Page 5: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

1. はじめに

● IoT 時代の到来

○ IoT =組み込み技術 + ネットワーク + アプリ

ケーション

○ IoTエンジニア(ハード + ソフト)■ 横断的な知識を持った人材が必要■ 技術だけじゃなく技適などの法制度や、国際標準の知識も必要...

5

Page 6: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

1. はじめに

● IoT 時代の教育プログラムの問題点

● 情報科学的な知識 ← こっちを教えたい

● 製品知識 ← 演習に必要

○ 分野毎に差あり → 時間を取られる

○ 分野毎に異なる知識が重荷

→ 新しい教育プログラムを開発

6

Page 7: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

2. 本教育プログラムの特色

● 応用分野を横断して様々なシステムに触れる○ ハードウェアの制御 ~ データ分析まで実際に受講者が操作

● 教材システム→Unixとシェルスクリプトで開発○ 実行環境例 : Raspberry Pi → Linux が動作

● 背景に三つの概念○ 1. ものグラミング、 2. POSIX 中心主義、 3. ユニケージ開発手法

前提となる知識や経験を削減して

受講者は情報科学の理解に集中! 7

Page 8: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

2.1 ものグラミング

● これまでの電子工作ではプログラミングに

関する様々な知識と経験が必要○ 例 : Arduino = 全部プログラムしてやらないといけない

○ 開発環境の知識 : プログラム言語、ライタ

○ ハードウェア制御の知識 : プログラミングの定石、個々のハードウェア部品

○ ネットワークの知識 : IoT 製品を作るため

プログラミングの知識と経験が前提とされ

あたらしくはじめる際の障害になっている!8

Page 9: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

2.1 ものグラミング

● ものグラミング : プログラミングの負担軽減

「モノづくり」中心の単一(モノ)アプローチ○ 組み込み Linux 搭載ハードウェアを使用

○ 例 : Raspberry Pi = OS が多くを代行してくれる

○ 電子工作に特有のコンポーネント群をインストール : Wiring Pi など

○ Unixシェルコマンドを活用し、開発工程におけるプログラミングの割合を大幅に減らす

○ これにより、 PC やサーバを操作する際と同じ知識、同じ考え方で電子工作を行なえる

→多くの人が気楽にものづくりに参加し

ものづくり本来の楽しさを満喫出来る! 9

Page 10: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

2.2 POSIX 中心主義

● 従来のシステム開発 : 仕様の安定しない製品を

基盤としてシステムを開発

→数年で動作しなくなる

前提知識とシステムの更新コストの断続的発生!!

長期間使える知識が身に付かない

10年勉強しても10年後には一線に居られない 10

Page 11: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

2.2 POSIX 中心主義

● POSIX : 安定し普及している仕様○ UNIX 系 OS の基本仕様を定めた国際規格

○ 多くのベンダーが準拠している → 互換性が高く、頻繁に仕様が変わらず持続性が高い

● POSIX 中心主義○ 可能な限りPOSIX の仕様の範囲で実装を行なう

○ 上が不可能な場合,交換可能性が担保されたコンポーネントを用いる

○ Webブラウザ上で動かすプログラムに関しては, W3C勧告に準拠させる

● 25年間メンテナンスフリーのシステム

システム化本来の目的を長期にわたり達成11

Page 12: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

2.3 ユニケージ開発手法

● Unix シェルスクリプトによるシステム開発

● 企業システム内製化において多くの実績あり

● 様々な工夫でシステム開発の前提知識を削減

→ 業務知識豊富な現場スタッフが

自社システムを開発する事を可能に

● 安く、早く、柔らかいシステムを開発

12

Page 13: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3. 金沢大学での実践

● 金沢大学の学部三年生向けの講義として実施○ 数学, 物理専攻の学生が対象

○ 教職(情報)課程の必修科目

○ 新しいシステムを見ても大体理解出来るレベルを目指した

● 受講者人数は10人程度○ 今年は例年の倍 事前の宣伝の効果?○ 少人数のためきめ細やかな対応が可能

13

Page 14: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3. 金沢大学での実践

● 授業の開発と実施の体制

○ スタッフに各分野の専門家■ 電子工作、ネットワーク、Unix とシェルスクリプト、 教育工学

○ 演習に効果的な特別レイアウトの教室を使用

○ 全員に教材(Raspberry Pi)を1セットづつ配布

○ 経験豊富な教員(大野)が担当○ 受講者の反応を見ながら授業を実施

○ 助教 2 名が TA として参画○ それ以外のスタッフも適宜オンラインでサポート

14

Page 15: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

2. 本教育プログラムの特色

15

Page 16: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

16

Page 17: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

17

Page 18: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3. 金沢大学での実践 : 内容

1. UNIX とコマンドラインインターフェース○ 未経験者がターゲットのため

2. UNIX コマンドで操作するハードウェア

3. UNIX コマンドで操作するネットワーク環境

4. UNIX コマンドとシェルスクリプト○ 様々な分野を一通り体験

18

Page 19: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3.1 UNIX とコマンドラインインターフェース● シェル(CUI)を通じた操作を体験

○ ターミナルからのファイル操作

○ Raspberry Pi の GUI にも操作結果が反映される事を確認

○ CUI でもGUI と同等の操作が出来る事を確認

● ネットワークを通じた操作を体験○ ssh 経由でログイン& 操作

○ Raspberry Pi の GUI にも操作結果が反映される事を確認

○ 遠隔地からもネットワーク経由で操作が出来る事を確認

19

Page 20: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3.3 UNIX コマンドで操作するネットワーク環境● シェルを通じたtwitter の操作を体験

○ シェルスクリプト製 twitter クライアントを使用

○ tweet を投稿 & 取得

● 他のコンポーネントとの連携を体験○ スイッチを入れる度に tweet を投稿

○ 特定の tweet を取得するとLED を点灯

20

Page 21: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3.2 UNIX コマンドで操作するハードウェア● 新たにC言語などでプログラミングする事なく

シェルからハードウェアを操作

● gpio コマンドでGPIO ポートを操作○ GPIO ポート : 汎用 I/O ポート、 gpio コマンドは Wiring Pi ライブラリに同梱

○ LED の点灯/消灯 、 スイッチのOn/Offを検知

● $ gpio -g write 18 1 ←これだけでLED点灯

● コンパイル無しでこんなに簡単 21

Page 22: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3.4 UNIX コマンドとシェルスクリプト● シェルを通じたデータの整理を体験

○ 先の twitter クライアントを使用して tweetデータを収集

■ 2015年冬コミケ期間中幕張半径 1km以内のつぶやき

■ 1.4万件程度

○ tweet データはJSON 形式、日本語はエンコード

○ テキストのスペース区切り形式のデータに変換

● シェルを通じたデータの分析を体験○ 整理したデータを用いて分析

○ ある日に retweet された回数の多い順にユーザをランキング

○ データ分析処理をシェルスクリプトに22

Page 23: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

3.4 UNIX コマンドとシェルスクリプト● 発展的な話題

○ データ分析スクリプトにWeb 画面を付加■ Raspberry Pi 搭載の httpd を使用

■ シェルスクリプトでCGI を作成

■ 簡単な Web インターフェースを作成

○ 現役IT企業経営者を招いて講演■ 企業システム開発の現場

■ IT 関連業界の動向

■ キャリアパス23

Page 24: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

4. 得られた知見と評価

● 授業に対する反響(良いもの)○ Unix とシェルで全てのシステムを作るアプローチが

興味深かった■ 統一理論的なアプローチに対する興味

○ コンポーネントを組み合わせて

目的を達成するアプローチが興味深かった■ モノリシックなアプリしか使った事がなかった為か

○ twitter データの分析から

ビッグデータ分析の可能性に対して興味がわいた24

Page 25: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

4. 得られた知見と評価

● 授業に対する反響(悪いもの)○ なぜ新しくシステムを作らなければならないのか

分からなかった■ 既存アプリケーションの適用可能範囲の理解の不足

■ Google で検索は十分じゃない ? → 社内の機密は?

○ システム開発できる事は分かったが具体的に

どのようにすれば開発出来るのか分からかった

○ Unix とシェルでシステムを開発する事の

利点が分からなかった■ 我々の問題意識を明確に説明出来ていなかった 25

Page 26: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

4. 得られた知見と評価

● 今回の授業の成果

○ 前提知識をUnixとシェルに限定する事で

様々なシステムに実際に触れる授業を

実施できた

○ システム開発に対する興味を喚起出来た■ 興味の二つの方向性 : 1. 開発手法それ自体、 2. システムの応用分野

○ コンポーネントを組み合わせる手法 → 理解しやすかったと思われる 26

Page 27: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

4. 得られた知見と評価

● 課題

○ 授業の効果について

定量的な分析まで到達しなかった■ 手探りの状況で授業を組み立てていたため

○ 喚起された興味に

十分応える事が出来ていなかった■ 来年度は授業の手法や時間配分を見直す

27

Page 28: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

5. UCIでの実践

● 2016 年度前期 大学コンソーシアム石川(UCI)において授業を実施予定

○ 一般人にも公開

● 興味の方向性毎に講義を実施(2コマ)○ 1. クラウド時代の「ものグラミング」概論

○ 2. シェルスクリプト言語論

○ 今回確認された興味の方向性に、それぞれ応える

● 学習効果の定量的評価・分析○ ルーブリックを使用する予定

28

Page 29: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

5.1 クラウド時代の「ものグラミング」概論 ● 学習目標

○ 様々なシステムに実際に触れて理解する

● 最初は電子工作ベース

● 徐々に機能を追加

29

Page 30: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

5.1 授業の流れ

1. スタンドアロンシステムの構築を通じて

背景と問題意識を説明○ メイカーズムーブメントなどの、近年の潮流

○ ものグラミング的開発環境 : Raspberry Pi を教材として使用予定、授業のメイン教材

○ 従来の組み込み開発環境 : Arduino を教材として使用予定、ものグラミング環境と比較

○ スタンドアロンなシステムについて見て行く

2. クラウドサービスの利用方法

3. ものグラミングシステムとクラウドの連携○ IoT の世界観と、製品開発の流れを説明

4. 自由にシステムを開発 30

Page 31: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

5.2 シェルスクリプト言語論

● 学習目標

○ POSIX 中心主義の学習

○ Unix とシェルスクリプトによる

システム開発手法を習得してもらう

31

Page 32: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

5.2 授業の流れ1. 背景と問題意識を説明

○ UNIX ・ POSIX の歴史 & 現代のシステム開発の現状と問題点

2. シェルスクリプトの書き方

3. 様々な処理の書き方○ Twitter API を通じて取得したデータを UNIXコマンドを使用してのデータマイニング

○ join 、sort 、uniq 、awk といったコマンドを用いての RDBMS と同等の処理の開発

○ CSV 、JSON 、XML 等のマシンリーダブルなデータのパース

4. Web インターフェースの付加○ Cookie 、 Ajax などの Web を支える技術について解説

5. 自由にシステムを開発

32

Page 33: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

6. おわりに : 今回の成果(金大)● 前提知識をUnixとシェルに限定する事で

様々なシステムに実際に触れる授業を

実施できた

● システム開発に対する興味を喚起出来た

33

Page 34: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

6. おわりに:今後の展開● 直近:新しい講義体制の発足

○ 継続:金沢大学での講義(後期・1コマ)

○ 新規:大学コンソーシアム石川での講義(前期・2コマ)

○ → 教育プログラムの洗練を図る

● 中期:トピックの充実(→詳細は予稿)○ 授業のモジュール化

○ 新しいハードウェアの導入(Raspberry Pi 3 や I2C)○ 情報専門学科におけるカリキュラム標準 J07 への準拠

● 長期:授業実施先の開拓○ MOOCs への展開

○ 海外、企業研修、生涯学習などへの展開 34

Page 35: IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践

ご清聴ありがとうございました

連絡先 : [email protected]