RでTALIS2018

2019年6月19日にTALIS(国際教員指導環境調査)2018年調査結果が公表されました。

TALIS - The OECD Teaching and Learning International Survey (OECD)
http://www.oecd.org/education/talis/


「OECD国際教員指導環境調査(TALIS)2018調査結果」(文部科学省)
http://www.mext.go.jp/b_menu/toukei/data/Others/1349189.htm


「OECD 国際教員指導環境調査(TALIS) 2018年報告書について」(国立教育政策研究所)
https://www.nier.go.jp/kenkyukikaku/talis/index.html


『教員環境の国際比較 OECD国際教員指導環境調査(TALIS)2018報告書 学び続ける教員と校長』(ぎょうせい)
https://shop.gyosei.jp/products/detail/10041

調査結果についての概要や分析は,上記のサイトから資料や報告書を入手していただくとして,今回はOECDが提供している調査回答データをRで利用しようというのが本題。以前,PISA2015で挑戦したことをTALIS2018でもやってみようということになります。(RでPISA2015RでPISA2015〈その2〉RでPISA2015〈グラフ〉

OECDのTALIS 2018サイトで公開されているデータはこちら

TALIS 2018 Data
http://www.oecd.org/education/talis/talis-2018-data.htm

それぞれの統計処理パッケージ(SAS, SPSS, STATA)用のデータが配布されています。とりあえずSPSS用のファイルをダウンロードします。

今回は「SPSS_international.zip」を先に覗いてみることにしましょう。

校長
ACGINTT3.sav(小学校) 
BCGINTT3.sav(中学校)
CCGINTT3.sav(高等学校)
教員
ATGINTT3.sav(小学校)
BTGINTT3.sav(中学校)
CTGINTT3.sav(高等学校)

どのファイルが何に該当するのか説明が添えられていないので,中身から判断します。

質問文を参照するためには質問紙データをダウンロードします。

TALIS 2018 questionnaires
http://www.oecd.org/education/school/talis2018questionnaires.htm

国立教育政策研究所で公開されている日本語版や各国の質問用紙は,OECDの国際版をベースに作成されているので問題番号の対応は自分で調べます。

とりあえず,小学校教員用質問紙「ATGINTT3」の問題番号と英語・日本語の質問文対応データを作成しましたのでこれを使います。それから国名も日本語の方がいいでしょう。

ATGINTT3 質問文データ
http://www.edufolder.jp/files/talis2018/ATGINTT3_Q.csv

国別コードと国名データ
http://www.edufolder.jp/files/talis2018/ISO3166.csv

小学校教員用質問紙「ATGINTT3」用のみですが,最低限必要なデータは揃いました。

本来ならば,質問項目に対応した回答項目データも作成して,回答も日本語で分かりやすく表示できるとよいのですが,データ作成の手間の問題なので,とりあえず後に回します。

さて,RとR Studioをインストールしておきます。これは以前のPISA2015での記録を参照してください。

今回も最初に一度読み込むための「talis2018_base.R」と質問グラフを生成する毎に実行する「talis2018_script.R」という2つのスクリプトファイルに分けて作成しました。

質問項目ごとに回答の数が異なるので,毎度修正しなければならないという課題は残っていますが,とりあえず動作すると思います。

「talis2018_base.R」

# talis2018_base.R
# For TALIS2018
# K.RIN
#

#ライブラリ読み込み
library(readr)
library(tidyverse)
library(plyr)
library(haven)

#データファイル読み込み
ATGINTT3 <- read_sav("ATGINTT3.sav")

question_items <- read_csv("ATGINTT3_Q.csv", col_names = TRUE, col_types = list(col_character(), col_character(), col_character()))

country_code <- read_csv("ISO3166.csv", col_names = TRUE, col_types = list(col_character(), col_character(), col_character(), col_character()))

「talis2018_script.R」

# talis2018_script.R
# For TALIS2018
# K.RIN
#
# ★設定項目(★マーク)
# ・質問ID(「selected_question = " "」の部分)
# ・表示順(「order_setting = 1」の部分)
# ・表示順の組合わせ(「mutate('list_order' = `1`)」の部分)

library(plyr)
library(tidyverse)

#★質問番号
selected_question = "TT3G55I"

#★表示順(降順1,昇順-1)
order_setting = 1

#ラベル
y_label <- "パーセント %"
x_label <- "国"
legend_label <- "回答"

#質問文データから質問番号に該当する質問文を抽出
if (is.na(question_items$ja[grep(selected_question, question_items$q_no, value = FALSE, fixed = FALSE)][[1]])) {
q_title <- paste("【", selected_question,"】")
} else { #質問文が空欄でなければ…
q_title <- paste("【", selected_question,"】", question_items$ja[grep(selected_question, question_items$q_no, value = FALSE, fixed = FALSE)][[1]])
}

#回答データ抽出
stu_tmp <- subset(ATGINTT3, ATGINTT3[[selected_question]] != "NaN") #無回答を除く(質問してない国もあるため)
data_ans <- table(stu_tmp[["CNTRY"]],stu_tmp[[selected_question]]) #質問番号のデータを抽出

ans_df <- as_tibble(data_ans,validate = FALSE) #df(データフレーム)へ変換
colnames(ans_df) <- c("CNT", "answer", "count") #dfの列ラベル設定
ans_wide <- spread(ans_df, answer, count) #横長dfへ変換

#行番号をデータに変換して列として追加
#★グラフ表示順を決める回答項目の数値合計を列として追加[ +`2`+`3`+`4`+`5`]
ans_wide <- ans_wide %>% rownames_to_column('num') %>% mutate('list_order' = `2` + `3`)

#num列の数字を文字から数値にモード変換
mode(ans_wide$num) <- "integer"
typeof(ans_wide$num)

#国コードをもとに国名をcountry_name列として追加
ans_wide <- ddply(ans_wide, "CNT", transform, country_name = country_code$Name_ja[grep(CNT, country_code$Alpha3)])
#列ラベルの設定
colnames(ans_wide) <- c("num", "CNT", "1", "2", "3", "list_order", "country_name") #※回答項目3つの場合(, "4")

#縦長dfに変換
ans_df <- gather(ans_wide, answer,count,-num,-CNT,-list_order,-country_name)

#国コードと回答で並べ替え
ans_df <- arrange(ans_df, desc(CNT), desc(answer))

#パーセント計算(描画計算用パーセント)
ans_df <- ddply(ans_df, "CNT", transform, percent = count / sum(count) * 100, 0.1)
#小数点以下1桁処理(表示用パーセント)
country_ans <- ddply(ans_df, "CNT", transform, percent_rounded = round_any(count / sum(count) * 100, 0.1))
#数値合計した分のパーセント数値を計算(表示順序用パーセント)
country_ans <- ddply(country_ans, "CNT", transform, list_percent_order = round_any(list_order / sum(count) * 100 * order_setting, 0.1))


#ラベル位置計算
country_ans <- ddply(country_ans, "CNT", transform, percent_label_y = cumsum(percent)-0.5*percent)

#フォント準備(Mac用)
#
quartzFonts(HiraKaku = quartzFont(rep("HiraginoSans-W3", 4)))
par(family = "HiraKaku")

#グラフ描画準備
#
graph <- ggplot(country_ans, aes(x = reorder(country_name, list_percent_order), y = percent, fill = answer)) + 
ggtitle(sprintf("%s", q_title)) + #タイトル
ylab(y_label) + #国ラベル
xlab(x_label) + #パーセントラベル
coord_flip(expand = FALSE) + 
geom_bar(stat = "identity", position='stack') + 
geom_text(aes(y = percent_label_y, 
label = paste(format(percent_rounded, nsmall = 1),"")), color = "white", size = 4) + #データラベル
scale_y_reverse(breaks = c(100.0,75.0,50.0,25.0,0.0), 
labels = c("0%","25%","50%","75%","100%")) + #横軸
scale_color_manual(values = rainbow(7)) + #カラー
theme_bw() + 
theme(plot.margin = margin(1, 1, 1, 1, "cm"),
plot.title = element_text(family = "HiraKaku", size = 10), 
plot.caption = element_text(family = "HiraKaku", size = 10),
legend.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), 
axis.text.x = element_text(family = "HiraKaku", size = 9), 
axis.text.y = element_text(family = "HiraKaku", size = 10))

print(graph) #グラフ描画

以上で「Plots」ウインドウにグラフが描画されると思います。

また詳細は〈その2〉を予定しています。

NHK WORLD「静かで、にぎやかな世界~手話で生きる子どもたち~」英語版

昨年(2018)NHK ETVで放送されたETV特集「静かで、にぎやかな世界~手話で生きる子どもたち~」の英語版がNHK WORLDで放送され,期間限定配信されている。

A World of Boisterous Silence (NHK WORLD PRIME)
https://www3.nhk.or.jp/nhkworld/en/ondemand/video/3016028/

個人的にずっと見逃し続けていた番組だったので,英語版とはいえ,今回の配信は絶好の視聴機会となった。おおよその番組の内容と反応は日本語のページで見ることが出来る。

ETV特集「静かで、にぎやかな世界~手話で生きる子どもたち~」
https://www.nhk.or.jp/docudocu/program/20/2259611/index.html

【再放送】小さな手でおしゃべりする子どもたち
https://www6.nhk.or.jp/nhkpr/post/original.html?i=14501

番組では,多くのろう学校で手話が禁止されてきたと紹介されているが,手話を活用した指導の議論は大きなトピックスとされ,ろう教育における専門性や人材確保・研修の問題として関係団体から提言も出されている。いわゆる手話法と口話法の対立問題は,ろう教育における根本問題としてずっと存在してきた歴史がある。

それでも圧倒的な規模の聴者社会で生きていくためには,自らが日本語の発音を訓練したり,他者の口話を読み取る読心術を習得するといった努力がなされてきたというのが,日本のろう教育の流れなのだろう。

明晴学園は私立学校であり,手話環境の確保を特徴とした学校。

慣れた手話によってストレスなくコミュニケーションしている児童生徒の様子を生き生きと描写した番組は,大きな反響を呼び,様々な賞も獲得している。

番組の後半に,高校や大学に進学した卒業生の様子が紹介されている。

授業や講義の教員による口話を字幕生成システムを使って獲得しようとしたり,学校側のノートテイキング支援について相談する場面などだ。

そもそも,進学を受入れてくれる学校自体が少ないことや,こうした対応をとってくれるかどうかも学校ごとに異なるのが現実だろう。

最近でこそ,GoogleがAndroidスマホで,リアルタイム連続書き起こし機能「Live Transcript」(音声文字変換)を実現したとして話題となり,聴覚障がい者にとって新しい利便性が提供されたが,だからといって配慮やサポートが不要になるといったことはあり得ないわけで,むしろよりきめ細かい対応が出来ると考えていくべきだろう。

この番組の示した聴者世界と聾唖者世界の構図を,コミュニケーション手段の異なる世界同士の構図として極端に捉えたとき,たとえば,旧いコミュニケーション手段に慣れきった世代と新しいコミュニケーション手段を使いこなす世代の対立を想像しないわけにはいかない。

先日も「ICT活用に遅れ 日本の小中教員、OECD調査で判明」(日経新聞)という報道がなされ,教員の勤務時間が依然として長時間傾向であることや,考える授業に割く時間が極端に少ないことなど,旧い手段で教育活動を続けている日本の傾向が浮き彫りになったばかり。

こうした普通学校の姿は,ろう学校では手話が禁止されていた,という番組内でのエピソードとオーバーラップするところがある。

もちろんどちらが本当のところ都合がよくて,本当のところ必要なのかは,人それぞれの選択だろう。

だから,私たちはよく考えることと,考えたことを選択できるようになることが大切だろうと思う。

データなのかプロファイルなのか

2019年6月25日。文部科学省と経済産業省から重要文書が公表された。

20190625「新時代の学びを支える先端技術活用推進方策(最終まとめ)」(文部科学省)

20190625「「未来の教室」とEdTech研究会 第2次提言」(経済産業省)

その前から,いろんな文書が発出されていて,追いかけるのが大変なくらいだ。

20190606「規制改革推進に関する第5次答申」(規制改革推進会議)

20190611「AI戦略 2019~人・産業・地域・政府全てにAI~」(統合イノベーション戦略推進会議|首相官邸)

20190621「学校教育の情報化の推進に関する法律案」(参議院本会議)

20190621「経済財政運営と改革の基本方針2019」(経済財政諮問会議|内閣府)

20190621「規制改革実施計画」(閣議決定)

基本的には政府の動きは連動しているので,表現は様々としても書いてある基本方針は同じようなもの。これらの中でも「規制改革実施計画」が閣議決定されたものという意味で重要になる。関連資料から教育の部分を借りて載せてみる。

20190621 edu tech

パソコンを1人1台水準で市町村毎の格差が無いように調査・公表することや,パブリッククラウドの利用が可能であることを明確化することを決めた。その他,質の高い教育の実現やデジタル教科書の活用,個別最適化された学びの実現と教育の役割見直しについて,検討と必要な措置をすることになった。

必要な措置に,予算措置が含まれているのだとは思うが,そうは確約していないところに苦しさが滲む。あとの文書はひたすら考え方や方針を描くのに徹している。

冒頭の2つの文書に戻ってみれば,文部科学省の示した文書には,やたらと「教育ビッグデータ」という言葉が踊る。経済産業省の方は「学習ログ」だ。

曰く,データを蓄積し教育ビッグデータとして分析するためにも,サービス提供者や使用者ごとに異なることがないよう,データやデータフォーマットの標準化が必要なのだと。諸外国の事例を見る観点もそこに集中した結果,我が国向けに「学習指導要領のコード化」が適当なんだと帰結する。

文部科学省の文書全体は,これ以外にも,先端技術の活用やら,ICT基盤としての端末とネットワーク環境整備についても言及されている。必ずしも教育ビッグデータばかりではない。とはいえ,逆に経済産業省の文書の方が,各種実証事業の成果を差し込んでいる分だけ文部科学省の文書以上に教育的な観点で提言を発信していて,なんだか文部科学省の教育の情報化は,すっかり総務省に毒されちゃったままな感もある。

もちろんこれは,新時代の学びを支える「先端技術活用」をどうするか考える文書なので,新時代の学びがどんなものかは守備範囲でないともいえる。

けれども,教育ビッグデータやら学習ログに関する語り口を読み込むにつれ,データ主体である学習者がどんどん従属的な立場に追いやられているような感覚が強まってしまうのだ。

サービス提供者やデータ分析者にとっての可用性や利便性を配慮した「データ」の整え方ばかりが優先記述され,学習者本人が自身の学習プロファイル(データ)に対してどれだけのオーナーシップを確保できるのかについては補足程度のことしか書きこまれていない。

本来であれば,36頁に補足された「欧州においては…」のくだりは,もっと前面に持ち上げ,日本でも学習者自身による学習プロファイル・データのコントロールについて大胆な提言なり方針を打ち出すべきだ。

それはとりもなおさず,1人1台端末という予算措置の当てもない話で足踏みを繰り返さず,1人複数アカウントによって複数のデバイスを利用した学習環境を考えるフェーズに飛び込むことでもある。

データのコード化やフォーマットの互換性は,そこに商機があれば民間企業がいくらでも努力して変換でも接続でもして乗り越えて,気がつけばデファクトスタンダードを作り上げてしまう。わざわざ政府が税金を使ってやることではない。

しかし,データ保護規則のようなルール作りは,国や政府のイニシアチブでやってもらわないと,民間企業の自助努力だけでは難しい。それはFacebookやGoogleの事例を見ても明らかである。

その上で,教職員や児童生徒学生に対して自分のプロファイルを記録するのに必要なアカウント付与の措置を何らかの形で実現すべきである。それは現実的には民間企業のサービスへの登録といった形にはなろうが,そのためにもアカウントに紐付くプロファイルデータについて本人の権利が約束される必要がある。

さらに他でも主張されているように,デジタル・シチズンシップ教育などの取り組みも一刻も早く充実化が目指されなければならないと考える。

全体としてはいろいろなことが動き出しそうな雰囲気を感じるものの,いざ具体的な中身となると,どこから手を付けたらいいのか分かりにくく,マインドセットの変革といった精神論だけが残りそうな,そんな予感もする。

アカウント整備をしなきゃ,どんなIT整備もAI戦略もただのゴミ

珍しく釣りタイトルですが,内容はそのままです。

このところ政府(首相官邸・内閣府)あたりから「規制改革推進会議」や「統合イノベーション戦略推進会議」関連で小中高等学校に関わるデジタル技術による教育改革について情報発信がなされています。

令和元年6月6日 規制改革推進会議」(首相官邸)

「令和元年6月11日(火)午前 統合イノベーション戦略推進会議について」(首相官邸)

AI教育だ,タブレット配備だと,新しい内容を付け加えてみたり,焼き直してみたり。

けれども,どんな提案も額面通りには期待できません。

それは,どれにも「教職員・児童生徒のアカウントを提供する」必要性について責任持った記述が見受けられないからです。タイトルに書いたことを再度はっきり申し上げれば…

学校教育に関わる教職員・児童生徒たちのアカウント(メールアドレス等)を整備することなしに,いかなるIT/ICT整備も,ICT活用教育も,AI戦略も,実質的にはなんら個々人の仕事や学習には帰さない,ただのゴミとなる

しかないのです。

そういうことを分かっている人は多いのに,一番面倒くさい部分だから誰も責任持って言及しないのです。

頑張る関係者がいる地方自治体は,地方自治体独自でアカウントを発行し,管理し,研修し,教育しようとしています。だから「うちではやっているよ」というところも無くはない。

けれども「うちでもやっているよ」は地域として恵まれていても,IT戦略とかAI戦略としては,他もやってるよじゃないと,ぜんぜんダメなんです。そうしないとお互いつながらないし。

だから,あなたがIT教育とかAI教育とかプログラミング教育とかでも,何かしらに接する際は,必ず「アカウントの方はどうやって提供したり管理していますか?」と聞いてみることで,それがどれくらいの程度のものなのか判断つきます。そこで苦い顔して頑張ってますという人がいたら,慰めた上で,やっぱり一緒に考えないとダメです。

最低限,都道府県レベルでアカウント問題は取り組まなければならず,そんなに国家戦略にしたいなら,本来は政府レベルでちゃんと教職員と児童生徒および大学生にもアカウントの提供やサポートをする方策を実現しないと意味がありません。

もちろん,個人の情報を個人がコントロールするための仕組みや教育(情報活用や情報モラル)も同時に考える必要がありますが,それらもコミコミで考えなきゃ意味がないということです。それくらいいままでのツケが大きいということでもあります。

スマートカードとScratch 3.0と教育と

ICカードリーダーをScratch 3.0と組み合わせて使える拡張機能を開発しています。

ICカードは世界的にSmart Card(スマートカード)と呼ばれています。クレジットカードが実用の代表例で,カード表面のICチップ端子を利用する「接触型」が有名ですが,最近では電子マネーでもお馴染のかざすだけで利用できる「非接触型」があります。

今回,ソニー社の非接触型スマートカードリーダーライター「PaSoRi」(RC-S380)をWebブラウザから通信できる技術でScratch 3.0と組み合わせました。先人たちの知見を利用させていただいて実現したので,貴重な情報を共有していただいたこと改めて感謝したいと思います。

開発したScratch 3.0拡張機能は「PaSoRich」(パソリッチ)と名付けて,以下のサイトで試験公開しています。公式のScratch 3.0サイトでは個人が開発した拡張機能を公開する仕組みが整ってないためです。

ICカードリーダーが使えるScratch 3.0体験サイト

https://con3office.github.io/scratch-gui/

非接触型スマートカードリーダーで何ができるようになるのか。

単純に,スマートカードの実用例を疑似体験できる教材の開発が出来ます。

たとえば「shopping_banking_20.sb3」というデモプログラムは,電子マネーの登録チャージと買物決済をシミュレートしたものです。

Shopping banking03Shopping banking02

今まで自作のおもちゃ紙幣を使った買物や支払い体験は行なわれてきました。紙幣と商品という実物交換によって買物(売買)の仕組みを実践的・体験的に学習するわけです。

今後は,電子マネー等のキャッシュレス決済も日常生活に普及することを考えると,そうした可視化の難しい仕組みを実践的・体験的に学習する手段が別に必要になります。

このデモプログラムは,その助けになるのではないかと考えています。

平成29年改訂学習指導要領では,小学校家庭科で「買物の仕組みや消費者の役割」を,中学校技術・家庭科で「金銭管理に関する内容」が新設されるなど,消費者教育の充実が図られました。キャッシュレス化についても中学校の学習指導要領解説で言及されています。検討に値する題材と考えます。

ただし,家庭科全体からすれば,この単元に割り当てられる時数は限られています。総合的な学習の時間との連携を視野に入れて,ポイント還元やFinTechを含めた今日の電子経済社会について探究していく学習活動を構想するくらいでないともったいないかも知れません。

技術的なデモンストレーションとして「math_0to9card_15.sb3」というプログラムも作りました。

スマートカードを数字と記号カードとして登録して,かざすと式が入力でき,「=」カードで計算結果を表示するというものです。

20190609

20190609b

あらかじめお伝えしておきますが,計算できるといっても「便利ではありません」。

ぜんぜんスマートじゃないです。

あくまでもスマートカードを数字入力方法に使えるという実演が出来るという程度のものです。式の入力はキーボードで入力した方が遥かに早いです。

このプログラムを作ってみて分かったことは,スマートカードを利用するのは,ある程度まとまった情報や行為と組み合わせて初めて意味があるということです。たとえば,決済情報や伝言メッセージといったものは,カードを識別して結びつけるのに適しています。

このプログラムの実用性はゼロですが,大事な役割が1つあります。

拡張機能PaSoRichに対応したプログラムを開発する土台に利用してもらうことです。

このプログラムには…

・カード読取機能
・カード登録機能
・数字スプライト表示機能

という基本機能が用意されています。

先ほどの買物と電子マネー決済プログラムのようなものも,このプログラムの中身を再利用しながら開発するのが一番手っ取り早いといえます。

たとえば,スマートカードごとにメッセージを伝える「伝言板プログラム」のようなものも,このデモプログラムを土台にして作ることが出来ると思います。合成音声を組み合わせて使うのも面白いかもしれません。

さて,スマートカードリーダー「PaSoRi」に対応した拡張機能は出来ました。

ただ,世界の人たちは日本とは別形式のスマートカードを使用していることも多いです。

Scratch 3.0は世界中の人が利用しているプログラミング環境ですから,世界の人たちが利用しやすい手に入れやすいカードリーダーに対応させた方が良いはずです。

そこで,海外製スマートカードリーダーであるACS社の「ACR122U」を手に入れて開発してみようと考えました。米国Amazonで安価に注文できる商品の一つです。

早速,先に開発した拡張機能で使っていたWebUSBという技術と同様な手法で動作させようと試してみたのですが,残念ながら諸事情でこの方法での使用がブロックされている模様。そう簡単にはいかないようです。

そういう意味では日本のPaSoRiが使えるというのは国際的にも珍しいということ。こういう体験を世界に先駆けてScratchで体験できる特権があるともいえます。

拡張機能の国際デビューにはまだ時間がかかりそうですが,ご覧いただいたようにアイデア次第でスマートカードを学校教育で実践的に体験できる教材をいろいろプログラミングすることができます。

この機会にいろいろ考えてみてはいかがでしょうか。