iot 時代に資する 「ものグラミング」教育のための 授業開発と実践
TRANSCRIPT
IoT 時代に資する「ものグラミング」教育のための授業開発と実践
2016年 3月 19日中村和敬, 石山雅三, 松浦智之, 當仲寛哲ユニバーサル・シェル・プログラミング研究所
北口善明, 森祥寛, 大野浩之金沢大学総合メディア基盤センター
目次
1. はじめに
2. 本教育プログラムの特色
3. 金沢大学での実践(2015年度後期)4. 得られた知見と評価
5. 大学コンソーシアム石川(UCI)での実践
(2016年度前期)6. おわりに
2
1. はじめに
● 情報科学技術は応用分野毎に発展してきた
○ 例1 : 組み込みエンジニア(ハード)■ ハードの事なら任せろ !!■ 組み込みOS, ハードウェア制御 , リアルタイムスケジューリング etc, etc…■ でもネットワークやアプリケーションとかよくわからない ...
○ 例2 : アプリケーションエンジニア(ソフト)■ アプリケーションやネットワークの事なら任せろ !!■ 各種サーバ , ネットワーク , UI etc, etc…■ でもハードとかよくわからない ...
3
1. はじめに
● 応用分野毎に重視される知識の違い○ 大きく分けて二種類
● 1. 情報科学的な知識 ← 概ね共通○ アルゴリズム / データ構造等、背景となる数学
○ サイバネティクス、数値制御等、システム的な考え方
○ OS / ネットワーク等、基本的なシステムの構造
● 2. 製品知識 ← 分野毎の差が大きい○ 開発環境 : プログラム言語 , ICライタ...組み込み分野で顕著
○ ハード部品 : 回路設計, インターフェース ...○ ソフト部品 : ライブラリ, サーバ...
4
1. はじめに
● IoT 時代の到来
○ IoT =組み込み技術 + ネットワーク + アプリ
ケーション
○ IoTエンジニア(ハード + ソフト)■ 横断的な知識を持った人材が必要■ 技術だけじゃなく技適などの法制度や、国際標準の知識も必要...
5
1. はじめに
● IoT 時代の教育プログラムの問題点
● 情報科学的な知識 ← こっちを教えたい
● 製品知識 ← 演習に必要
○ 分野毎に差あり → 時間を取られる
○ 分野毎に異なる知識が重荷
→ 新しい教育プログラムを開発
6
2. 本教育プログラムの特色
● 応用分野を横断して様々なシステムに触れる○ ハードウェアの制御 ~ データ分析まで実際に受講者が操作
● 教材システム→Unixとシェルスクリプトで開発○ 実行環境例 : Raspberry Pi → Linux が動作
● 背景に三つの概念○ 1. ものグラミング、 2. POSIX 中心主義、 3. ユニケージ開発手法
前提となる知識や経験を削減して
受講者は情報科学の理解に集中! 7
2.1 ものグラミング
● これまでの電子工作ではプログラミングに
関する様々な知識と経験が必要○ 例 : Arduino = 全部プログラムしてやらないといけない
○ 開発環境の知識 : プログラム言語、ライタ
○ ハードウェア制御の知識 : プログラミングの定石、個々のハードウェア部品
○ ネットワークの知識 : IoT 製品を作るため
プログラミングの知識と経験が前提とされ
あたらしくはじめる際の障害になっている!8
2.1 ものグラミング
● ものグラミング : プログラミングの負担軽減
「モノづくり」中心の単一(モノ)アプローチ○ 組み込み Linux 搭載ハードウェアを使用
○ 例 : Raspberry Pi = OS が多くを代行してくれる
○ 電子工作に特有のコンポーネント群をインストール : Wiring Pi など
○ Unixシェルコマンドを活用し、開発工程におけるプログラミングの割合を大幅に減らす
○ これにより、 PC やサーバを操作する際と同じ知識、同じ考え方で電子工作を行なえる
→多くの人が気楽にものづくりに参加し
ものづくり本来の楽しさを満喫出来る! 9
2.2 POSIX 中心主義
● 従来のシステム開発 : 仕様の安定しない製品を
基盤としてシステムを開発
→数年で動作しなくなる
前提知識とシステムの更新コストの断続的発生!!
長期間使える知識が身に付かない
10年勉強しても10年後には一線に居られない 10
2.2 POSIX 中心主義
● POSIX : 安定し普及している仕様○ UNIX 系 OS の基本仕様を定めた国際規格
○ 多くのベンダーが準拠している → 互換性が高く、頻繁に仕様が変わらず持続性が高い
● POSIX 中心主義○ 可能な限りPOSIX の仕様の範囲で実装を行なう
○ 上が不可能な場合,交換可能性が担保されたコンポーネントを用いる
○ Webブラウザ上で動かすプログラムに関しては, W3C勧告に準拠させる
● 25年間メンテナンスフリーのシステム
システム化本来の目的を長期にわたり達成11
2.3 ユニケージ開発手法
● Unix シェルスクリプトによるシステム開発
● 企業システム内製化において多くの実績あり
● 様々な工夫でシステム開発の前提知識を削減
→ 業務知識豊富な現場スタッフが
自社システムを開発する事を可能に
● 安く、早く、柔らかいシステムを開発
12
3. 金沢大学での実践
● 金沢大学の学部三年生向けの講義として実施○ 数学, 物理専攻の学生が対象
○ 教職(情報)課程の必修科目
○ 新しいシステムを見ても大体理解出来るレベルを目指した
● 受講者人数は10人程度○ 今年は例年の倍 事前の宣伝の効果?○ 少人数のためきめ細やかな対応が可能
13
3. 金沢大学での実践
● 授業の開発と実施の体制
○ スタッフに各分野の専門家■ 電子工作、ネットワーク、Unix とシェルスクリプト、 教育工学
○ 演習に効果的な特別レイアウトの教室を使用
○ 全員に教材(Raspberry Pi)を1セットづつ配布
○ 経験豊富な教員(大野)が担当○ 受講者の反応を見ながら授業を実施
○ 助教 2 名が TA として参画○ それ以外のスタッフも適宜オンラインでサポート
14
2. 本教育プログラムの特色
15
16
17
3. 金沢大学での実践 : 内容
1. UNIX とコマンドラインインターフェース○ 未経験者がターゲットのため
2. UNIX コマンドで操作するハードウェア
3. UNIX コマンドで操作するネットワーク環境
4. UNIX コマンドとシェルスクリプト○ 様々な分野を一通り体験
18
3.1 UNIX とコマンドラインインターフェース● シェル(CUI)を通じた操作を体験
○ ターミナルからのファイル操作
○ Raspberry Pi の GUI にも操作結果が反映される事を確認
○ CUI でもGUI と同等の操作が出来る事を確認
● ネットワークを通じた操作を体験○ ssh 経由でログイン& 操作
○ Raspberry Pi の GUI にも操作結果が反映される事を確認
○ 遠隔地からもネットワーク経由で操作が出来る事を確認
19
3.3 UNIX コマンドで操作するネットワーク環境● シェルを通じたtwitter の操作を体験
○ シェルスクリプト製 twitter クライアントを使用
○ tweet を投稿 & 取得
● 他のコンポーネントとの連携を体験○ スイッチを入れる度に tweet を投稿
○ 特定の tweet を取得するとLED を点灯
20
3.2 UNIX コマンドで操作するハードウェア● 新たにC言語などでプログラミングする事なく
シェルからハードウェアを操作
● gpio コマンドでGPIO ポートを操作○ GPIO ポート : 汎用 I/O ポート、 gpio コマンドは Wiring Pi ライブラリに同梱
○ LED の点灯/消灯 、 スイッチのOn/Offを検知
● $ gpio -g write 18 1 ←これだけでLED点灯
● コンパイル無しでこんなに簡単 21
3.4 UNIX コマンドとシェルスクリプト● シェルを通じたデータの整理を体験
○ 先の twitter クライアントを使用して tweetデータを収集
■ 2015年冬コミケ期間中幕張半径 1km以内のつぶやき
■ 1.4万件程度
○ tweet データはJSON 形式、日本語はエンコード
○ テキストのスペース区切り形式のデータに変換
● シェルを通じたデータの分析を体験○ 整理したデータを用いて分析
○ ある日に retweet された回数の多い順にユーザをランキング
○ データ分析処理をシェルスクリプトに22
3.4 UNIX コマンドとシェルスクリプト● 発展的な話題
○ データ分析スクリプトにWeb 画面を付加■ Raspberry Pi 搭載の httpd を使用
■ シェルスクリプトでCGI を作成
■ 簡単な Web インターフェースを作成
○ 現役IT企業経営者を招いて講演■ 企業システム開発の現場
■ IT 関連業界の動向
■ キャリアパス23
4. 得られた知見と評価
● 授業に対する反響(良いもの)○ Unix とシェルで全てのシステムを作るアプローチが
興味深かった■ 統一理論的なアプローチに対する興味
○ コンポーネントを組み合わせて
目的を達成するアプローチが興味深かった■ モノリシックなアプリしか使った事がなかった為か
○ twitter データの分析から
ビッグデータ分析の可能性に対して興味がわいた24
4. 得られた知見と評価
● 授業に対する反響(悪いもの)○ なぜ新しくシステムを作らなければならないのか
分からなかった■ 既存アプリケーションの適用可能範囲の理解の不足
■ Google で検索は十分じゃない ? → 社内の機密は?
○ システム開発できる事は分かったが具体的に
どのようにすれば開発出来るのか分からかった
○ Unix とシェルでシステムを開発する事の
利点が分からなかった■ 我々の問題意識を明確に説明出来ていなかった 25
4. 得られた知見と評価
● 今回の授業の成果
○ 前提知識をUnixとシェルに限定する事で
様々なシステムに実際に触れる授業を
実施できた
○ システム開発に対する興味を喚起出来た■ 興味の二つの方向性 : 1. 開発手法それ自体、 2. システムの応用分野
○ コンポーネントを組み合わせる手法 → 理解しやすかったと思われる 26
4. 得られた知見と評価
● 課題
○ 授業の効果について
定量的な分析まで到達しなかった■ 手探りの状況で授業を組み立てていたため
○ 喚起された興味に
十分応える事が出来ていなかった■ 来年度は授業の手法や時間配分を見直す
27
5. UCIでの実践
● 2016 年度前期 大学コンソーシアム石川(UCI)において授業を実施予定
○ 一般人にも公開
● 興味の方向性毎に講義を実施(2コマ)○ 1. クラウド時代の「ものグラミング」概論
○ 2. シェルスクリプト言語論
○ 今回確認された興味の方向性に、それぞれ応える
● 学習効果の定量的評価・分析○ ルーブリックを使用する予定
28
5.1 クラウド時代の「ものグラミング」概論 ● 学習目標
○ 様々なシステムに実際に触れて理解する
● 最初は電子工作ベース
● 徐々に機能を追加
29
5.1 授業の流れ
1. スタンドアロンシステムの構築を通じて
背景と問題意識を説明○ メイカーズムーブメントなどの、近年の潮流
○ ものグラミング的開発環境 : Raspberry Pi を教材として使用予定、授業のメイン教材
○ 従来の組み込み開発環境 : Arduino を教材として使用予定、ものグラミング環境と比較
○ スタンドアロンなシステムについて見て行く
2. クラウドサービスの利用方法
3. ものグラミングシステムとクラウドの連携○ IoT の世界観と、製品開発の流れを説明
4. 自由にシステムを開発 30
5.2 シェルスクリプト言語論
● 学習目標
○ POSIX 中心主義の学習
○ Unix とシェルスクリプトによる
システム開発手法を習得してもらう
31
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
6. おわりに : 今回の成果(金大)● 前提知識をUnixとシェルに限定する事で
様々なシステムに実際に触れる授業を
実施できた
● システム開発に対する興味を喚起出来た
33
6. おわりに:今後の展開● 直近:新しい講義体制の発足
○ 継続:金沢大学での講義(後期・1コマ)
○ 新規:大学コンソーシアム石川での講義(前期・2コマ)
○ → 教育プログラムの洗練を図る
● 中期:トピックの充実(→詳細は予稿)○ 授業のモジュール化
○ 新しいハードウェアの導入(Raspberry Pi 3 や I2C)○ 情報専門学科におけるカリキュラム標準 J07 への準拠
● 長期:授業実施先の開拓○ MOOCs への展開
○ 海外、企業研修、生涯学習などへの展開 34
ご清聴ありがとうございました
連絡先 : [email protected]