RでPISA2015

 PISA2015の「ICT活用調査」の分析記事が話題になっています。

  OECDのWebサイトには,各種報告書とともにデータファイルも統計ソフトファイルとして公開されていて,ダウンロードすれば自分で集計処理をすることが可能です。(集計概要は「Compendia」としてExcelファイルにまとめられています。)

 普通に詳細を検討するなら,概要ファイルをExcelで処理した方が楽だと思いますが,せっかくなので,Rという統計環境に挑戦することにしました。

 (追記20170114:「RでPISA2015〈その2〉」もご覧下さい)

 Rは,統計分析のためのプログラミング言語です。市販の統計ソフトが裏側で処理していることを利用者自身がプログラミングすることで,希望に応じた統計分析処理を行なわせることができるというわけです。その代わり,ボタン1つで処理させるような手軽さはないというのが敷居の高いところです。

 しかし,R言語とそのための環境を構成するソフトウェアは,オープンソフトウェアとして無償で公開されて,世界中の専門家が仕事で利活用している優れものです。研究を生業としているものとしては,一度はちゃんと触れておきたいソフトウェアです。

 取っ付き難さはあれど,導入手続は簡単です。

 1. Rをダウンロードする。 (たとえばこちらから https://cran.ism.ac.jp )

 2. RStudioをダウンロードする。 https://www.rstudio.com/products/RStudio/ 

 3. RとRStudioをインストールする。

 4. RStudioを起動する。

 これで,準備が出来ました。あとは,データファイルを読み込むなどして,統計処理を命令していきます。

 ちなみにRとRStudioですが,Rが言語命令を処理する本体ソフトウェアで,RStudioは操作のしやすい窓口(インターフェイス)を提供する統合環境ソフトです。

RStudio

 左上がプログラムを編集する場所,左下「コンソール」が実際に命令をする場所,右上にいろんなデータの一覧,右下がファイル一覧ですが,タブで切り替えるといろんな情報を表示できます。

 参考情報として三重大学の奥村先生による「PISA 2015データを読む(未完)」というWebページが貴重な入り口を示してくださっていますので,これをまず試してみましょう。

 初めてだと「取得から読み込みまで」の部分で音を上げそうですが,Rは標準で備わっている機能を命令で呼び出す以外にも,パッケージというものを足していくことで機能拡張させることが可能なので,PISAのデータファイルが他のソフト向けのものでも,該当するパッケージさえあれば読み込む機能を追加できます。そうやって読み込んでみるとPISAデータは結構メモリ食うねって話が書いてあります。

 しかし,ここではRStudioという統合環境ソフトを使うことにしたので,この辺をかなり楽にクリアできてしまいます。

 macOSであれば,PISAからダウンロードした圧縮ファイル(たとえば PUF_SPSS_COMBINED_CMB_STU_QQQ.zip)を展開して出来上がったファイル(Cy6_ms_cmb_stu_qqq.sav)を自分のホームディレクトリに移動させれば,RStudioのファイル一覧画面で確認することができます。これをダブルクリックなどして開こうと(インポートしようと)すると,必要なパッケージをダウンロードするか?と(英語で…)聞いてきますので,その指示に従って操作すれば読み込みに関しては完了してしまいます。

 上の画面写真の赤い矢印あたりにある「Pacakges」というタブで切り替えると,現在手元にあるパッケージ一覧と利用するかどうかのチェックマークが並んでいて確認できます。この一覧にないパッケージは「install」ボタンで探しに行ってダウンロードします。

 「PISA 2015データを読む(未完)」では,「data」という変数(オブジェクト)に読み込んだデータが格納されたのですが,RStudioを使って上記の方法をとると「Cy6_ms_cmb_stu_qqq」という名前になるんじゃないかなと思います。続く「回答の分析」の解説と命令はその部分を置き換えて,コンソール内で操作すればWebページ通りになると思います。

 さて,問題はここから先です。

 他の質問に対する回答集計や選択肢の異なる場合の処理など,どうやったらいろいろ見ることができるのでしょうか。できればExcelのようにグラフ作成したらパッと視覚的に確認できると嬉しい。

 しかし,Rに挑戦する場合には,パッと出るのを「自分でプログラミング」しなければなりませんから,R言語を使って試行錯誤することとなります。

  奥村先生のWebページが「(未完)」なのは,経験のある方でもそれなりに時間をかける仕事になるからで,さまざまな質問形式のPISAデータをRで読むとなると煩雑さはやむを得ないところです。

 というわけで,私も完成とまではいきませんが,少しチャレンジした成果を以下に載せておきたいと思います。R言語は初めてですので,各所のお知恵を拝借して組んでみた,とりあえず動いたというレベルです。Rプログラミングの参考にはなりませんが,とりあえずPISAデータをいじってみたいという皆さんの参考になればと思います。プログラムを編集する場所(左上)に貼り付けて実行してみてください。

 なお,このプログラムは学校質問紙「SC017Q07NA」という質問のグラフを描くものです。質問番号やファイルを変えて改良してください。

# For PISA2015 rev2
# K.RIN

library(haven)
library(ggplot2)
library(plyr)
library(tidyverse)

#student_raw <- read_sav("~/Cy6_ms_cmb_stu_qqq.sav")
school_raw <- read_sav("~/Cy6_ms_cmb_sch_qqq.sav")

#質問文(手動で質問文をコピペ)
q_title <- "Is your school’s capacity to provide instruction hindered by any of the following issues?\n[SC017Q07NA] A lack of physical infrastructure\n (e.g.building, grounds, heating/cooling, lighting and acoustic systems)"
#回答選択肢(手動で設定のこと)
ans_limits <- c("1","2","3","4")
ans_labels <- c("まったく\nあてはまらない","どちらかといえば\nあてはまらない","どちらかといえば\nあてはまる","とてもよく\nあてはまる")
#ラベル
y_label <- "パーセント %"
x_label <- "国"
legend_label <- "回答"

#回答データ抽出(国別クロス集計)
tmp <- subset(school_raw, school_raw$SC017Q07NA != "NaN")
country_ans_table <- table(tmp$CNT,tmp$SC017Q07NA)
ftable(country_ans_table)

#縦長dfへ変換
country_ans_long <- tbl_df(country_ans_table)
#横長df版クロス表
country_ans_wide <- spread(country_ans_long, Var2, n)
#国別idづけ(いまのところ利用せず…)
country_ans_wide <- country_ans_wide %>% rownames_to_column('id')
#idを文字から数値へモード変換
mode(country_ans_wide$id) <- "integer"
#国別id付き縦長df
country_ans_long <- gather(country_ans_wide, answer,count,-id,-Var1)

#並べ替え(表示の関係で逆順に)
country_ans_long <- arrange(country_ans_long, desc(Var1), desc(answer))

#列名変更
colnames(country_ans_long) <- c("id", "CNT", "answer", "count")
#パーセント計算(グラフ描写用)
country_ict <- ddply(country_ans_long, "CNT", transform, percent = count / sum(count) * 100, 0.1)
#小数点以下1桁処理(ラベル表示用,合計が100%にならないことあり)
country_ict <- ddply(country_ict, "CNT", transform, percent_rounded = round_any(count / sum(count) * 100, 0.1))
#ラベル位置計算
country_ict <- ddply(country_ict, "CNT", transform, percent_label_y = cumsum(percent)-0.5*percent)
country_ict <- arrange(country_ict, desc(CNT), desc(answer))

#フォントファミリー設定
quartzFonts(HiraKaku = quartzFont(rep("HiraginoSans-W3", 4)))
par(family = "HiraKaku")

#グラフ描画
graph <- ggplot(country_ict, aes(x = CNT, y = percent, fill = factor(answer))) + geom_bar(stat = "identity", position='stack') + scale_color_manual(values = rainbow(7)) + theme_bw() + geom_text(aes(y = percent_label_y, label = percent_rounded), color = "white", size = 3) + scale_y_reverse(breaks = c(100.0,75.0,50.0,25.0,0.0), labels = c("0%","25%","50%","75%","100%")) + coord_flip(expand = FALSE) +
ggtitle(q_title) + scale_fill_discrete(limits = ans_limits, labels = ans_labels) + ylab(y_label) + xlab(x_label) + labs(fill = legend_label) + theme(legend.title = element_text(family = "HiraKaku", size = 10),plot.title = element_text(family = "HiraKaku", size = 10), legend.text = element_text(family = "HiraKaku", size = 7), axis.title = element_text(family = "HiraKaku", size = 9), axis.title.y = element_text(angle = 0, vjust = 0.5))

print(graph)

参考資料

PISA 2015データを読む(未完)」(奥村晴彦)
Rクックブック』(オライリー)
Rグラフィックスクックブック』(オライリー)
ggplot2 — きれいなグラフを簡単に合理的に」「tidyr — シンプルなデータ変形ツール」(Heavy Watal)
ggplot2 documentation」(Hadley Wickham)
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」」(tera monagi)

『視聴覚教育』2016年1月号論考

 日本視聴覚教育協会『視聴覚教育』2016年1月号に論考を書かせていただきました。

林向達(2016)「教育と情報の歴史研究への誘い」,視聴覚教育2016年1月号,6-9頁

 これまでも教育と情報の分野に歴史研究の動きはありましたが,そろそろ本格的な研究活動として行きましょうという宣誓的な原稿であり,それに関連したトピックスを3つほど詰め込んだ読み物です。

 「年表」「用語」「統計」というキーワードから歴史を考えてみようという趣向でしたが,私の力不足もあって一つ一つを十分に扱いきれませんでした。それでも,少しは歴史に触れる糸口になっているのではないかと思いますし,こんな頼りない研究者に任せるくらいなら私がやるといってくださる方が出てくれば,それでも目的は果たすことになると思います。

 論考では,統計調査のトピックスとして,学校のデジタルテレビ整備台数に関するデータを紹介しています。そこでお伝えしたかったことは,学校種による整備率の格差であり,そして経年的に追いかけても格差が解消されるには程遠いペースでしか整備されないことでした。

 掲げた数値は文部科学省の調査結果をもとにしてグラフも作成して掲載しました。しかし,私の不注意による明らかなミスがあったこと,そして脱稿後に「学校基本調査」の確定値が発表されたため,執筆に使用した速報値と差異が出たこと。そのため掲載した「図2」のみ訂正が必要になりました。

Seigo

 凡ミスとタイミングのずれが混在した恥ずかしい間違いですが,ここでお詫びして訂正します。

 本来であれば誌面でご覧いただくところですが,訂正を含めてPDFでご紹介してます。ご笑覧ください。

 林向達(2016)「教育と情報の歴史研究への誘い」(数値訂正版)

 

Scratch用スライド教材作成部品ファイル

===

Keynote for iCloud上の 「Scratch用スライド教材作成用部品ファイル

上記リンクで閲覧とダウンロードが可能です。

===

今年は12月7日から13日まで「コンピュータサイエンス教育週間」とされています。

プログラミングだけというわけではないでしょうが,この期間に合わせて米国を始めとしたプログラミング教育推進団体が世界で活発にイベントなどを開催しています。(参考記事「世界的なプログラミング教育推進運動「Hour of Code」、日本に本格上陸」CNET)

私も授業の中でScratchを紹介して,学生たちにプログラミングを体験してもらっています(Scratchを学ぼう)。

最近は参考図書も増えてきているので有り難いのですが,授業で自分なりの解説をしたり,自作のプリント教材を用意しようとすると,Scratchの画面を映し出して指し示したり,画面キャプチャしてブロック等を印刷するといった手間がかかります。

というわけで,自前でスライド教材を作成するためにScratchの画面要素を部品にしてファイルの中にまとめ始めました。これを使えばスライドでもプリントでも部品を組み合わせて例示するのに便利です。

もともとはScratchの財産ですので,皆さんにも自由に使ってもらえたらと思います。まだ細部を作り込んでいないので,改変しやすさは足りないですが,代表的なブロックを紹介したり,組み合わせを示すことには使えると思います。

ファイル形式はApple社のKeynoteファイルです。容量は大きいですが,拡大縮小が奇麗にできるのでこの形式を好んで使っています。Keynote for iCloudからはPowePoint形式でもダウンロードできます。

日本教育工学会 SIG活動 成果物 2015

===

SIG-04 教育の情報化

 学校の情報設備環境を整備するための指針「整備ガイドライン

SIG-05 ゲーム学習・オープンエデュケーション

 ゲーム学習とオープンエデュケーションの研究動向と研究リソース「SIG-05レポート2015

===

 日本教育工学会(JSET)は,2014年度からSpecial Interest Group(SIG)という活動形態を始めました。

 学会という場所は,人々が集まって多様なテーマを追いかけている場なので,これまでも学会大会で「課題研究」という形の特定テーマについて束ねて発表をする機会が設けられていました。そうすることで旬な研究テーマについていろんな研究を求めていくことができるというわけです。

 とはいえ,1年1回の学会大会の場が軸になったのでは,この目まぐるしい速度の時代に対応するのも難しくなってきたことも事実で,もう少し柔軟な研究活動形態が求められていたということになります。そのためのJSETにおける一つの提案が「現代的教育課題に対するSIG 」という活動でした。

 JSETのSIGは6つでスタートし,今年新たなものが加わって全部で11のSIGになりました。

 先行したSIGではすでに様々な活動が行なわれ,活動記録は学会のホームページ「SIG活動」にも掲載されています。

 いくつかのSIGは成果物という形も出してはいるのですが,学会のホームページに掲載するということになると,その辺はまだ事務手続きの世界が残っているため,2015年10月3日現在でも掲載されていないというのが実情。そこから脱して動くのがSIG活動の意義ですから,実際のところはソーシャルメディアなどを経由して公表されていたりします。

 ここでは,2015年9月にあった学会大会で紹介された2つの成果物を掲載します。また,日本教育工学会では「日本教育工学会倫理綱領」を定め掲載しました。

 

GoogleアカウントとApple ID

 大学のゼミナールを立ち上げるにあたって,ゼミの情報環境を整備しています。

 職場はGoogle Apps for Educationを契約して,大学のメールシステムをGmailベースで管理しています。今年度,教職員の移行が完了したことで全学的な運用を開始したところです。

 Google Appsの提供するサービスを利活用できる状態にあるわけですが,まだ全学的な運用を開始したばかりで,メールシステムとしての利用が先行し,各種サービスを大学業務や教育・学習に有効活用するまでにはいたっていません。つまり,これからいろんな使い方を提案していける面白い時期でもあります。

 りんゼミでは,ゼミ生にiPadを活用してもらう計画のため,各自のApple ID取得を求めています。すでに私的にiPhone等を利用してApple IDを取得してあれば,それを利用してもらえばよいとします。基本的に「個人用」としてApple IDを取得してもらいます。

 すると学生は「大学のGoogleアカウント」と「個人のApple ID」2つ持つことになります。

 大学から学生個人に割り当てられているGoogleアカウントは,大学の「在籍者(または卒業生)」を前提としたもので,プライベートに使う「個人用」とは言えません。その辺で2つのアカウントに違いをつけつつ,連携運用させていこうという計画です。

 ちなみに,Androidスマートフォンを所有している人は,携帯電話契約時に個人用Googleアカウントを登録している場合もあります。これも組み合わせて考えてもよいのですが,今回は除外して考えることにします。

 ゼミ生のアカウントの使い分けイメージはこんな感じです。

用途 大学のGoogleアカウント 個人のApple ID
コミュニケーション 大学全般の連絡等に ゼミ関係の連絡に
カレンダー 大学全般・ゼミの予定共有に (個人利用,必要に応じて連携)
ファイル共有 大学関連の配布物をメインに (個人利用,必要に応じて連携)
サービス Googleのサービスやアプリの利用に iPadアプリやApple系サービスの利用に
他社サービス登録用 大学関係の活動に使うもののに 社会人になってからも使うものに

 GoogleやApple以外のサービスやアプリでメールアドレス登録の必要なものもありますが,大学やゼミでの活動に使用するものであれば大学のGoogleアカウント(のメールアドレス)で登録することにして,卒業後に社会人になってからも使いそうなものには個人のApple ID(のメールアドレス)で登録させるといった使い分けになると思います。

 一方,ゼミ自体で代表アカウントを作って,ファイルや情報を共有・保管したり,代表メールアドレスとして使用できれば便利です。

 GoogleとAppleの両方にアカウントをつくる場合,どちらでもメールアドレスを作れることになりますが,2つも代表アドレスは必要ないですし,管理も面倒です。そこでどちらか一方でメールアドレスを作成して,それをもう一方の登録に使用する方法をとります。

 本来なら大学のGoogleアカウントでゼミ代表アドレスが作れると,ドメイン的にもそれっぽいですし,Googleクラスルームというサービスが利用できるメリットも受けられます。一方で,大学の管理下に置かれて外部との連携や共有で融通が利かない面もあったりしますから,一長一短。今回は,Apple IDでメールアドレスを取得後,そのメールアドレスを使ってGoogleの一般アカウントとして登録することにします(つまり,今回の方法はGmailを使わないということになります)。

 ちなみに「大学のGoogleアカウント」と一般の「個人Googleアカウント」の違いは,Google Apps for EducationのWebサイトに以下のような説明があります。

個人アカウントとの違い

 大学のアカウントは,組織利用向けにセキュリティ機能が強化されているため,容易に外部との情報共有が起こらないよう作られていて安心ですが,一方で,社会や他校といった学外との情報共有をしたい場合には面倒がつきまといます。ただし,これらは設定次第ですので,教育機関の情報ポリシーをどう策定し,管理していくかはそれぞれの組織によって異なりますし,管理者によっていくらでも調整が可能です。

 ゼミのアカウントは次のようなことに使います。

ゼミアカウントの用途
代表メールアドレス 共有ドライブ 共有カレンダー 例示用アカウント
アプリ購入 共有デバイスの管理 外部サービス登録

 当初は教員が管理しますが,ゼミが軌道に乗ったら,ゼミ長の学生に管理者を任せたりできるかなと思います。例示用アカウントというのは授業でアカウントの利用事例を見せるときのダミーアカウントみたいな役目です。もっともこれは別に作った方がよい場合もあります。

 以上,ゼミナールを運営していくにあたって,どのようにGoogleアカウントとApple IDを登録し利用するのか,おおよそのイメージをご紹介しました。

 今回は大学のゼミナールでのお話ですが,小さな研究グループやサークル,団体用のアカウントをつくる際にも考えなければならないことだと思います。Googleアカウントの利便性が高いので,基本的にはそれだけ取得しても十分役立ちますが,たとえば共用するiPadなどのAppleデバイスがあるような場合だとApple IDの位置づけをどうしても考えなければならないと思います。

 また,外部サービスや個別のアプリを利用する場合にもアカウントの問題は避けて通れません。そうしたものの登録や運用をどうするのか。今後は,そうした個別具体的なお話もお伝えします。