2017 年 8 月 9 日

ドリトル言語でのデータ処理機能の対応

兼宗 進、小林史弥（大阪電気通信大学）
白井詩沙香（武庫川女子大学）、山澤昭彦（イーテキスト研究所）

Outline
1. 研究背景と目的
2. ドリトルのデータ処理機能
3. まとめと今後の課題

1 新課程でのデータ活用• 小中高でデータ活用。数学でも統計重視• 共通教科「情報」でも統計的なデータ処理
情報 I(3) コンピュータとプログラミング(4) 情報通信ネットワークとデータの利用
情報 II(3) 情報とデータサイエンス(4) 情報システムとプログラミング

2

データを扱うプログラミングを提案• 情報 I, II の流れでデータを扱う流れは自然？
情報 I(3) コンピュータとプログラミング
アルゴリズム、シミュレーション(4) 情報通信ネットワークとデータの利用
データ操作
情報 II
(3) 情報とデータサイエンス
統計処理、グラフ等の視覚化(4) 情報システムとプログラミング

3 データを扱うプログラミング• 情報 I のプログラミングでデータを扱おう• 複数のデータは配列だが...
• 配列のインデックスを省略できる言語を使う
配列 a の要素を表示する例

int i;
for(i=0;i<5;i++) {print a[i];}foreach d in a {print d;}4 探索アルゴリズムの例• プログラムといえばアルゴリズム• 整列は難しいが、探索なら扱いやすい値が 3 以下の要素を配列 b に格納する例

int i, j=0;
for(i=0;i<5;i++) {if(a[i]<=3) {b[j]=a[i];j++;}}

foreach d in a {if(d<=3) {b.add(d);}}5

数だけを扱っても嬉しくない！

• 1 次元配列だと 1 種類の値のみ• 2 次元配列だと全体が同じ型！ orz• 構造体の配列は生徒が理解不能...
配列

30508070...

2 次元配列30 50
50 7080 75
70 80... ...

データフレーム

名前 数学 英語
田中 3050能城 5070鎌田 80
75
小松 70
80

...

...

...

6 データベース的なデータ操作• 言語にデータ操作を入れれば SQL が不要に
• 大量のデータから扱いたいデータを取り出す• データは表形式。２次元配列を簡単に扱いたい選択

tb = ta.selection(price<3);結合tb = ta.join(tc);7

データを扱うプログラミングを提案• 情報 II のデータサイエンスでプログラミングを扱おう
情報 I(3) コンピュータとプログラミング
アルゴリズム、シミュレーション(4) 情報通信ネットワークとデータの利用
データ操作
情報 II
(3) 情報とデータサイエンス
統計処理、グラフ等の視覚化(4) 情報システムとプログラミング

8 データサイエンスとは？
• 膨大な量の構造化データと非構造化データに潜む洞察を、統計、機械学習、データ・マイニン
グ、予測分析など の手法を使用して発見するプロセスのこと [1]• ビッグデータ時代の到来により注目を集めている[1] IBM アナリティクス : https://www.ibm.com/analytics/jp/ja/technology/data-science/

9 データサイエンスの能力とは• データに基づいて課題を解決する能力、統計的な思考力を通じて様々な課題を解決していく能力 [2][2] 社会人のためのデータサイエンス入門 : http://gacco.org/stat-japan/

10

現行の学習指導要領における取り扱い• 問題解決のための手段として、「社会と情報」「情報の科学」両教科において簡単なデータ分析が取り扱われている• 地球温暖化のような社会問題や学園祭の出し物を決める等、生徒に身近なものが多い例) CO2 排出量の平均値を算出し、平均値を大きく上回る素材の排気量を明らかにする

11 代表的な分析ツール• Excel• R• SPSS

12 Excel
操作をよく理解している者が、個人で利用する際にはデータの集計や加工、グラフ描画などを行う際に有効だが、操作をよく知らない生徒が授業の中で利用するには問題があり• 操作の説明が容易ではない• 処理の順番などを生徒が考えることが難しい課題１

操作の説明が容易ではない• 数式パレットやセルの指定範囲等、初学者の生徒には難しい(例) Excel で値の平均を求める– リボンから数式パレットを開き、AVERAGE 関数を挿入して対象のデータをドラッグして選択– あるいは、セルに「=AVERAGE(A1:A10)」と入力

課題 2

処理の順番などを考えることが難しい• 平均を計算し，次に分散を求めるといった「データ処理の流れ」という思考になりにくい⇒ 生徒の思考が Excel の操作手順を考えるといった「Excel の個々の操作」になってしまう13 R• 高度な解析・分析機能を備えており、大学の講義などの教育現場から、実務まで様々な場面で利用• コマンドラインから操作する CUI の言語であるが、Rstudio を使えば GUI での利用が可能⇒ ソフトウェアのインストールが必要で、管理権限の関係で先生方が環境を構築できない可能性あり

14 SPSS• IBM が提供する有料の統計解析ソフトウェア
であり商業用ソフトウェア• 基本的な解析・分析を扱うことができる• 高度な解析・分析を行うためには追加でパッケージの購入が必要．

⇒ 高等学校での利用を考えたとき、商業用のソフトウェアは導入の面において敷居が高い．

15 ドリトル• ドリトルは教育用に設計されたプログラミング言語• 高等学校の「情報の科学」 の教科書や教材で利用されている• Java の環境があれば特別なインストールは必要なくダウンロードのみで利用可能

16 ドリトル• 命令を実行した結果に続けて次の命令を送るカスケードと呼ばれる機能が用意されている
かめた＝タートル！ 作る。
かめた！ 100 歩く
90 左回り。

ドリトルをデータサイエンス学習に利用することで...
利点 1 データの分析の流れをそのままプログラムに書き起こすことができる
利点 2 操作手順を伝える場合にはプログラムを表示するだけで良い17 研究目的• 高等学校において容易にデータサイエンスを学ぶことができる学習環境を提供することを目的に、ドリトル言語のデータ処理機能を開発する

18 開発した機能• データサイエンス用の機能を検討する際に、ファイルなどから読み込んだ表形式のデータに対して、次々と処理の命令を送る形でデータの処理や分析を行えるようにした• カメの登場しないプログラム• 表をオブジェクトとして扱う

19 開発した機能一覧
処理
命令
データ入力 ファイルから作る
選択
射影
データ処理 結合
大きい順
小さい順
合計
平均
中央値
データ分析 最大値
最小値

動作
csv ファイルを読み込む
条件に合致する行を取り出す
列を取り出す２つのデータをくっつける
データを大きい順に並べる
データを小さい順に並べる
合計を求める
平均を求める
中央値を求める
最大値を求める
最小値を求める20 開発した機能一覧（つづき）
処理

命令
第 1 四分位数
第 3 四分位数
データ分析 度数
標準偏差
分散
クロス集計
円グラフ
棒グラフ
グラフ描画 折れ線グラフ
散布図
箱ひげグラフ
表の作成
度数分布表

動作
第 1 四分位数を求める
第 3 四分位数を求める
度数を求める
標準偏差を求める
分散を求める
クロス集計を行う
円グラフを描画する
棒グラフを描画する
折れ線グラフを描画する
散布図を描画する
箱ひげグラフを描画する
度数分布表を作る

21 ドリトルのデータ操作 (1)// 表データの入力
成績＝テーブル！"seiseki.csv" フィルから作る。
// 表データの整列と表示
成績！"組" 小さい順 表示。
// 箱ひげ図の表示
成績！"組" "国" 箱ひげグラフ 描画。

22 ドリトルでデータ操作（2）システム！"db" 使う．
商品=テーブル！"商品.txt"ファイルから作る．
売上=テーブル！"売上.txt"ファイルから作る．
結果 1=商品！ (売上) 結合．
結果 1!表示．
結果 2=結果 1！"年齢" 度数．
結果 2！"度数" "年齢" 折れ線グラフ．
結果 2!表示．

23 計測＋ネットワークの活用もドリトル＋ラズベリーパイで計測

24 開発の状況• 現状版（今日の説明内容）を公開– Web で公開中。V3.10 ＋ zip ファイル
– 学生が明日ポスター発表• 今後の計画– 統計関数の充実– 画面でのデータ操作– Web 版での動作– Excel 形式での出力など

25 作って感じたこと• インデックスをなくすと配列操作は容易• 表形式の二次元データが扱えると便利• DB 的なデータ操作は強力• プログラミングでの統計的なデータ分析は明瞭• グラフ表示は心が和む26 まとめ• 情報 I, II を想定して、「データ処理を中心に置いたプログラミングの流れ」を提案– 情報 I(3) 探索などデータを扱うアルゴリズム– 情報 I(4) 表形式の二次元データでデータ操作– 情報 II(3) 表形式データで統計処理とグラフ表示– 情報 II(4) サーバのデータをネットワークで操作• カメやネコのいないプログラミングの世界へ！