スポンサーリンク

【JavaScript】プログラミング授業案⑳【Power Queryデータ集約】

data-2355696_1920Code

いよいよ来年度からプログラミングを「情報Ⅰ」の中で学習していきます。
どんな授業を行うか、検証を兼ねて検討してきました。
これまでこのBlogでも、いくつかのプログラミング授業案を掲載してきました。
限られた時間数で何を教えるのか考えなくてはなりません。
前回、条件分岐を応用して1%当たりのシュミレーターを作りました。

【JavaScript】プログラミング授業案⑲【あたり1%くじ】
授業案の19時間目。前回から実際に授業で扱う教材として考えてきています。JavaScriptをつかってシミュレーションをしていきます。「1/100のくじは本当に100に1回あたるのか?」が投げかける疑問です。

今回は、Excelを利用して結果をまとめていきます。
PowerQueryを使うと、VBAをやマクロをわざわざ組まなくても取りまとめることができます。

授業展開

前回作成したプログラムを使って、生徒には何回であたりが出たのかシミュレーション結果をExcelに記録させます。
pq00
一人あたり10回シミュレーションします。
記録用のシートはかなりシンプルにしました。
Excelの関数の学習として、平均(Average関数)を求めます。
この段階でワークシートを用意します。
生徒には自分の結果を記入し、考えたことや気づいたことを率直に書いてもらいます。
そして、隣のペアの結果を確認して意見交換をしてもらいます。
ここでもワークシートにペアの結果を記入し、考えたことを書いてもらいます。

Power Queryでデータを整形する

Power QueryはMicrosoftのExcelに搭載されている機能です。

    Power Query (以前のバージョンの Excel でデータを取得& 変換と呼ばれる) を使用すると、外部データをインポートまたは接続し、そのデータをニーズに合った方法で(列の削除、データ型の変更、テーブルの結合など) 整形できます。

とのことです。
これにより、統一されたフォーマットを利用して集められたデータを一つのシートに集約することができます。
そして、簡単です。
以前はマクロを組んだりしたものですが、わざわざここでプログラミングしなくてもいいですね。

Power Query操作手順

まずは入力されたデータを集めます。
私の所属ではSky社のシステムが入っているので、データの配布・回収が簡単にできます。
共有フォルダを作って、そこに提出させる方法でもいいです。
今回は、一つのフォルダにデータを入れておきます。
pq01

先程のフォルダと別の場所にデータを集約させるExcelのファイルを作成します。
Excel→データリボン→データの取得→ファイルから→フォルダーからを選択します。
pq02

フォルダーの参照から、データを集めてあるフォルダを指定します。
pq03

データの一覧が出てきます。
結合→データの結合と変換を選択します。
pq04

Fileの結合でSheet1を選択→OKを選択。
pq05

プレビューが表示されるので、問題なければ左上の「閉じて読み込む」を選択。
pq06

大変美しいシートが作成されます。
pq07

結果の確認と考察

pq08
10回のシミュレーションを10回(人)行いました。
100サンプルがあるのですが、一人ずつの平均値はかなりバラツキがあります。
全体としては

平均値91.44
最大値544
最小値1

という結果が今回は得られました。
ここでワークシートを再び登場させます。
クラス全体のデータと自分やペアのデータの結果と比較して考察してもらいます。
50分授業だとこのあたりで途切れるでしょうか。
次の授業で、他のクラスの結果も紹介し学年全体のデータを作成し再度考察してもらいます。
ビッグデータとまでは言えませんが、だいぶミドルデータぐらいにはなるでしょうか。

まとめ

Power Queryでのデータ集約方法をまとめてみました。
同時に、シミュレーション結果をワークシートを利用して考察する授業展開の紹介です。
それにしても、1/100のくじなのですが、544回やらないとあたらないのもすごいですが、1回であたってしまうのもねぇ。
実際の懸賞などがどのようなアルゴリズムで作られているかわかりません。
しかし、まぁこんなもんでしょう。
課金したところで、全然当たらない時もあることに気づけると思います。
それよりも、人の手で毎回くじを引く手間をプログラムで比較的簡単にできてしまうところに感動してほしいです。
人の手で行う予定だったことを、乱数と数式によってモデル化しシミュレーションを行う。
一応、情報Ⅰの「モデル化とシミュレーション」「プログラミング」を網羅する授業展開のつもりです。
想定時間数は基本編2時間、シミュレーター作成1時間、シミュレーションと考察と説明2時間で計5時間
先に用語の説明をするより、特に「モデル化とシミュレーション」のところは、実習後に説明した方がイメージがリンクするのではないでしょうか。

コメント

タイトルとURLをコピーしました