**********************************************************************
セッションs3c
テーマ:mrubyを使ったプログラミング教育
講師:田中和明(九州工業大学)
日時:2017/8/25 10:30-11:40
参加人数:15名(終了時)
**********************************************************************
(議事録本文)
構成
1. Ruby, mrubyとは
2. プログラミング教育について
3. デモ

1.Ruby, mrubyとは
プログラム言語Ruby
* 日本発のプログラム言語
* オブジェクト指向型スクリプト
* 可動性が高い
* Webアプリケーション開発で広く使われている
* ISO/IEC 30170, JIS X 3017

Rubyのメリット
* 再利用性
* 可読性
→開発効率が高い

Rubyプログラムの実行
* インタプリタ方式
> 実行路にコードを解析する
> プログラムを書いてすぐ実行できる(コンパイル不要)
* 動的な実行
> 動的なメモリ管理
> 開発者がメモリを管理する必要がない

組込みソフトウェア開発にRubyの良さを取り入れたい
→課題がある

mrubyとは
* Rubyを軽量化した実装
> 実行時の消費メモリが少ない
> ある程度のリアルタイム性
* 文法はRubyと同じ
* 他のシステムに組み込んで使える
> Cプログラムからmrubyプログラムを呼び出せる
> mrubyプログラムからCの関数を呼び出せる

mrubyの利用事例
* ネットワークルータ
* Apacheモジュール
* mrubyマイコンボード
* ETロボコン
* 組み込みシステム向けライブラリ


2.プログラミング教育について
目的
* Notプログラム言語の教育
* 「時代を超えて付点的に求められる力としての『プログラミング的思考』などを育むことであり、コーディングを覚えることが目的ではない」
プログラムを作るのが大切なのではなく、そのプロセスが大切

教材の要件(初等・中等教育)
* 簡単に導入できる
* 考え方を記述できる
* キーボードが使えるようになる
* ものが動く(組み込み)

開発の流れ
PCでプログラム作成→USBでダウンロード→組み込み機器で実行(LED, SW, モータドライバなど)

もう一つの要件
* 開発環境の共通化
> テキスト、カリキュラムの継続性
* デバイスが変化する可能性
> 入手可能なデバイス
> コスト
> ローカルアレンジが可能

ハードウェアの抽象化
* VMでハードウェアを抽象化する
* 提供する機能
> LED:デジタル出力
> スイッチ:デジタル入力
> モータ:PWM
> センサ

3. デモ
島根県で実際にプログラミング教育を行った
参加者数16人(小4〜中2)
一人一台パソコンを使ってプログラムを作成、組み込みボードで実装

用意したもの
ハードウェア:Cypress PSoc5LP,Cortex-M3 64KB RAM/256KB Flash
ソフトウェア:自作の開発環境
VM:いくつかのI/Oを扱える

VMに各メソッドを作成しておく
全て小文字にしておく←大文字小文字が混在するとそこでミスが起きやすくなる

質疑応答
Q:小学生は英語の単語の意味を理解できるのか
A:できない。この記号はこの機能というように把握させる

Q:mrubyをゲームで使うのか?
A:実際にすでに使われている。アメリカのゲームや、プレステ4でも使われている。ゲームでよく使われている言語はLUA。

Q:プログラミングの勉強において、ループでつまずく人がいる。
A:田中さんの教え方は、ループを使わないと後々大変だと教え込む。


■まとめ
mrubyとは
* Rubyを軽量化した実装
* システムに組み込んで使える
mruby(プログラミング)教育の導入における重点
* プログラム作成においてどのように考えそのプログラムを作成したのかということに重きが置かれていること
> プログラムができたかではなく、そのプロセスを大切にする