作成者別アーカイブ: Yu Tamura

不明 のアバター

Yu Tamura について

第二言語習得の研究者。博士(学術)。英語教育のことや統計・データ分析に関わること、趣味のサッカーのことなどについて書いています。

就活で「AIに代替されるぞ」って言われてぐうの音も出なくなってしまう外国語学部の学生さんへ

Photo by Markus Winkler on Pexels.com

はじめに

最初に断っておくと,私はまだ現在の勤務先である関西大学の外国語学部に着任して3年目で,なおかつ3, 4年次生の授業を担当したことがありません。よって,この記事で書くことは見聞きした話と想像だけで書いています(自分が直接就活している学生に聞いたわけでもなく,就活している学生の指導(授業担当)はしていません)。一応念頭に置いているのは自分の所属先の学生ですが,どんな外国語学部の学生さんにももしかすると参考になるかもしれません。いや,ならないかもしれません。

もう一つ断っておくと,私自身はいわゆる一般的な意味での企業への就職を目指した就職活動を経験したことがありません。採用の面接の経験というのは,教員採用試験時の面接と,現在の勤務先の採用面接のみです。よって,タイトルの「AIに代替されるぞ」も聞いただけの話(後述)です。

背景

先日(といっても結構前),弊学のキャリアセンターの方から,近年の就職状況の話みたいなのとともに,うちの学部生の就活に関する「ホンネ」というような話も聞きました。その中で,「語学をアピールしようとしても,『そんなのAIに代替されてしまう』と言われてしまう」(大意)みたいなのがありました。

これに対してのアプローチは私の中ではとりあえず2つあって,1つは語学×somethingのsomethingを就活の前までに身につけようというものです。やっぱり語学とあとなにか一つ自分の強みがあれば,そしてその掛け合わせを持っている人があまりいないのであれば,それは自分の強みになるし,需要もあると思います。ただ,今回はそちらの話はあまりしません。むしろ,「AIって言葉にビビらないように知識を持っておこう」という話です。

今回の記事では,外国語学部の学生とか,自分の語学力をアピールポイントにして就活をしようと考えている学生さんを念頭に書くので,AI(人工知能)というのも,画像認識とかよりも言語理解が関わるようなところにだけフォーカスします。

川添愛さんの本を読め

とりあえず,難しい専門書とかをいきなり読む必要はないかなと。まずはこの本を読んでおけば,AIのこととか,言語を理解することとはどういうことなのかというのが理解できると思います。同時に,いま現段階でのAIの限界点もわかってくると思うので,そうなれば「AIに代替されるぞ」なんて言われても,少しは反論(就活で反論していいのかは知らない)もできるかと思うのです。見た目が結構難しそうなのですが,かなり易しく書かれているので就活に臨む段階の学部生の知識レベルであれば問題なくついていけると思います。むしろ,後半部分の言語に関わる部分で理解が難しいと感じるならば,メタ言語的知識というか,言語学的な知識をつけることが必要かもしれません。

うちの学部に限って言えば,カリキュラム上1年生で語学のスキル系の授業を履修し,2年次に留学し,という感じで,どちらかというと「言語を使う」方を重視する傾向にありますが,言語に関する知識を持っているというのは,AIがこれからもっと精度があがっても重要となる知識だと思います(今のカリキュラムはそれはそれでいいところもあるし,現状2年になったときに留学に耐えられる英語力を身に着けさせようと思ったらやむを得ないところもあるので否定はしませんけども)。

あとは,以下の本(物語)も面白いです。

これを読むと,機械への命令(入力する言葉)がいかに重要か,そして機械は世の中の誰でもが使いこなせるものでもない(もちろん訓練すればできるようになるわけですけど)ということが理解できると思います。できれば,物語を読む中で王子の命令がうまくいかないのはなぜか,自分なりの答えを考えてから先に読み進めていってもらいたいなと思います。そういう思考訓練をすると,自分の言語の知識も再構築されるのではないでしょうか。そして,その知識は「AIに(簡単には)代替されないだろう」ということもわかると思います。

別に,私はAIについて楽観論というか,別に大したことないという意見を持っているわけではなくて,言語の理解ってめちゃくちゃ難しくて,まだまだ明らかにされていないことだらけなのだということを言っています。

そもそも,人間の言語に関わる謎って,めちゃくちゃいっぱいあるんですよ。もちろん,それが全部明らかにならないと人工知能がうまくいかないわけではないのですけど。でも今のディープラーニングの技術でいくのであれば,中身は人間にも理解できない仕組みで動くわけですから,エラーが起こったときの原因を突き止めたりできません。これは色んなところでも指摘されていることですね(上述の『ヒトの言葉・機械の言葉』の72-75ページとか)。

入力と出力の関係がわかってないということはつまり,出力がうまくいっているのかを人が判断しないといけない場面はどれだけディープラーニングを使った翻訳ソフトが発展してもなくならないということではないでしょうか。その判断ができるのは,言語の知識を持っている人に限られるわけで,その知識がある,と言えるのであれば,就活で脅されても対応できるのではないでしょうか。

おまけ

で,もう少しビジネス方面にも目を配っておこうとしたら,次の新書も読んだらどうでしょうか。

こちらの本はもっと人工知能の実装の部分の話も多いですが,基本的な理解の部分では『ヒトの言葉・機械の言葉』の第一章と重なる部分もあります。こういう話でもっと知識を得たいと思ったら,参考文献欄に載ってる本を読んでみたらいいのではないでしょうか。

おわりに

別にここで紹介した本を読んだら万事解決ってわけではないんですけど,AIって言われたら全知全能の神みたいな存在だと思ってしまってる人って採用側の人にもいたっておかしくないと思うのです。そのときに,怯まず冷静に会話できるくらいの知識はもっていてほしいなというのが私の願いですね。知識だけ知ってたって現場じゃ役に立たないぞとか言われるのかもしれないんですが,人工知能のことをよくわかってもいないのにAIのことを語る人のほうがよっぽど役に立たないんじゃないのかなとか思いますけどね。

この記事で言いたかったのは,新書レベルでも本を読んで知識を持っておくことは(それがある程度自分の専門である「言語」という部分にも関わるのであるからなおさら)大事ですよということが1つです。もう一つは,「言語のプロフェッショナル」という謳い文句を体現しようと思ったら,言語そのものについての知識(言語学的知識)も大事ですよということです。うちの学部でも言語学系の科目は開講されてますし,曜限があわないとかだったら文学部の授業に出させてもらうとかもありだと思いますよ。私も学部のときに,ゼミで扱ってた統語論の授業に興味を持って,違う学部の言語学の授業に出させてもらったことがありました。そこまで熱意をもってやるのは難しいなぁという方は,『ヒトの言葉・機械の言葉』だけでも読んでみてほしいなと思います。

なにをゆう たむらゆう。

おしまい。

活動の足し算と引き算

Photo by Pixabay on Pexels.com

はじめに

大学で使用されることを想定とした教科書を作るっていうのを考えたとき,必要最小限の核となる部分だけを提供して,あとは自由にやってくださいねっていうスタンス,つまり教師に足し算な考え方を要求する場合と,逆に盛り盛りにアクティビティを盛り込んで適宜飛ばしてくださいっていう引き算的な思考を要求する場合(注),どちらがいいんだろうなっていう話です。

足し算のメリット・デメリット

メインだけ決まっていてあとは自分で,という場合,当然ながら教師が考えることは多くなりますよね。事前にどういう活動をやるか,あるいは事後にどういう活動をやるか,みたいなことも含めて。これって自分の中にある程度こういう授業をやりたいみたいな軸があって,それに合わせて教科書を選ぶような人だったら授業をやりやすいでしょうね。今日のメインは唐揚げです!ってだけ言われたら,揚げ物に合わせてなんかさっぱり目の副菜作ろうかなとか,むしろ唐揚げをアレンジして酢鶏的なもの作ろうかなとか,そういうの考えるの好きな人だったり,自分が食べたいものがはっきりしている人だったらその考える過程も楽しめるでしょう。自由にできるというのはメリットです。一方で,考えたいけど考える時間はない,準備する時間もない,とにかくすぐにご飯を食べたい(食べさせたい)という人にとっては,献立が全部きっちり書いてあったり,あるいはもうすぐに食べられるようなお惣菜がある方が便利なわけですよね。つまり,同じことを別の角度から見たらデメリットにもなります。

「授業を考えることを放棄するなんて知らん!メニューくらい自分で考えろ!」と思う気持ちは一定程度理解する一方で,何校も非常勤掛け持ちしている先生だったり週に10-12コマとか教えている先生に支えられて成り立っている自分の勤務先の英語教育のことを考えたらそこまで突き放す気にもなれません(おそらく色んな所でも似たような状況なのではないでしょうか)。

引き算のメリット・デメリット

いろんな大学用教科書見てきていますけど,その多く,というかほぼすべてはどちらかというとこちらのスタンスなのではないかと思うことが多いです。こんな盛り盛りでいろんな活動が載っててこのユニット数あったら,どう頑張っても時間足りなくないですか?みたいな。私はどちらかというと自由度が高めであるほうが嬉しいタイプです。ところが,「どの教科書を選んでもとにかくてんこ盛り,なおかつ活動自体は別に面白くもなくてドリル的なものが多めでつまらなそう。」って思うことが多いです。そうなると,いわゆる素材というかテーマというか,扱っている内容が面白いものを選択することが多いです。それが面白ければ,あとはこっちでそれをもっと面白くするようなタスクに落とし込んで授業を考えればいいからです。そういう視点でみたら,わざわざ引き算するのめんどくさいからもう素材だけくださいってなります(教科書を使う縛りがなかったら使わないと思います)。

ただし,上述したように足りなくて足すよりは何も考えなくても教科書に載っている活動をやれば授業として成立するほうが嬉しいと思う方もたくさんいらっしゃるのでしょう。だからこそそういう教科書が売られていて,そういうのが売られているということはそれが売れるから,ということだと思いますし。あれもこれもついてきますみたいなのどんどん増えてきている気もしますもんね。オンラインで学習させられるとか,テストがついているとか。

おわりに

確かにありがたいのはありがたいと思うし,自分が作る教材だったりタスクだったりテストだったりがそんなに優れているのかと問われたらそこまで自信を持ってはいと答えられるわけではないのですが,一応英語教師としても飯食ってるわけですから,自分で授業を考えることだけはやめたくないなと個人的には思います。それを自分以外の人にどれだけ求めていいのか,というのが悩ましいと思っているところです。自由度が高すぎることを不親切だと思う人も絶対いると思うので。

でも,本当のところ,(一般的な意味での)ミニマリスト的教科書と活動が豊富に掲載されている教科書どちらがいいんでしょうね。というわけでアンケート置いてみました(初の試み)。Twitterでやったほうが回答集まりそうですけどねw

なにをゆう たむらゆう。

おしまい。


注:いや飛ばしてほしいと思ってないです。全部やってもらいたいと思っていますということで教科書作られているかもしれないですけどね。

【R】JSON形式で刺激リスト作成

はじめに

この記事では,よくある刺激のリストをJSON形式で保持するということをRを使ってやってみます。ただのデータフレームをJSON形式に変換するのはそれほど難しいことではありません。むしろ,Rを使わなくてもウェブ上で変換してくれるサービスがあります。
https://tableconvert.com/

こういうのを使うと,下記のようなテーブル形式のデータをcsvで持っていたとしたら,それをJSON形式に変換するのは一瞬です。

id name age gender
1 Roberta 39 M
2 Oliver 25 M
3 Shayna 18 F
4 Fechin 18 M
#JSON形式
[
    {"id":1,"name":"Roberta","age":39,"gender":"M"},
    {"id":2,"name":"Oliver","age":25,"gender":"M"},
    {"id":3,"name":"Shayna","age":18,"gender":"F"},
    {"id":4,"name":"Fechin","age":18,"gender":"M"}
]

問題の所在

じゃあ別にそのウェブサービスでいいじゃんということになるんですが,問題は少しこれより複雑です。というのも,私は今 jsPsychを使って実験ができるようにと勉強しています。jsPsychではJSON形式で刺激を読み込むのですが,その際に,データに階層性が必要になってくるようです。別に,反応の取得だけを目的とするなら必要ないのですが,のちのデータ分析を楽にすることを考えると,これは実験の前の段階でやっておきたいです1jsPsychのページでは以下のように例が示されています。

var test_stimuli = [
  { stimulus: "img/blue.png", data: {test_part: 'test', correct_response: 'f'}},
  { stimulus: "img/orange.png", data: {test_part: 'test', correct_response: 'j'}}
];

この例では,刺激として画像を提示するので,“stimulus”として画像ファイルが指定されています。そして,その後ろにdataという変数があって,要するに,実際に表示される刺激と,その刺激に付随する情報(正誤,刺激の種類等)が分かれていて,付随する情報は一つ階層が下のレベルに入っているということです。リストの中にリストがあるということですね。こうなると,ただのデータフレームからの変換というわけにはいかないので,先ほど紹介したようなウェブブラウザで変換というわけにもいきません。というわけで,Rを使って,できるだけ簡単にデータフレームから階層性のあるリストをゲットしましょう。というのが今回の目標です。実は,リスト->データフレームという話は,rlistパッケージ周りでやってる方が結構いらっしゃるようです(Googleで「rlist データフレーム 」と検索してみてください)。ところが,今回のようにデータフレーム->リストはあまり例が見つかりませんでした。ということでやってみましょう。結論から先にいうと,めちゃくちゃ単純でした。

1. データの準備

まずは,わかりやすい刺激リストの例として自分が最近実験で使った刺激リストを読み込みます。

dat<-read.csv("stimuli.csv")
head(dat)

一応,各列に何が入っているかを簡単にまとめると,以下のようになります。

  1. itemID: 刺激のID(かぶりがありますが,nonwordは分析から最初に外すのでとりあえずOK。ほんとは連番のがいいですけど)
  2. type: 刺激の種類
  3. word: ターゲットとなる英単語
  4. kana: 対応するカタカナ語
  5. pic: 提示する画像
  6. lang: 提示する言語
  7. prime: プライミング条件
  8. answer: 正答
  9. form: フォーム
  10. freq_J: カタカナ語の頻度
  11. freq_E: 英単語の頻度

この実験では,まずはじめに画像を提示して,参加者はその画像を見ます。画像を理解したら次に注視点が表示されます。その後に提示された文字列が実在語かどうかを判断する語彙性判断課題です。プライミングの条件がshare, spec, baseと3条件あります。さて,プログラム上では,

  1. 画像(pic)を提示
  2. 語(word)を提示

ということで,上で紹介した例と異なって,提示する刺激が2種類あります(ここでは,提示刺激は英単語のみとして進めます。カタカナ語の場合は英単語の部分をカタカナ語の列に置き換えれば良いと考えます)。つまり,

{ pic: "img/2_C_sh.jpg", word: "interview", data: {itemID: '2', kana: 'インタビュー', lang: 'eng', prime: 'share',answer: 'TRUE',form: 'A',freq_J: '29.5098', freq_E: '17.5744'}}

というのを読み込んだデータフレームのすべての行において作ることができれば成功となります。

2. パッケージの準備

とりあえず,これ入れとけばいいかなということでtidyverseパッケージと,最後にJSON形式に変換する際に使うjsonliteパッケージ。

install.packages("tidyverse")
install.packages("jsonlite")
library(tidyverse)
library(jsonlite)

3. データハンドリング

tibbleという比較的新しいデータ形式を使います。tidyrとかdplyrとか使うようになって,数年前からこのtibble形式がよく出てきてたんですが,私もいまいちよくわかってませんでした。というか,データフレームを扱うことがほとんどなので,データフレーム形式しか受け付けない関数にtibbleで出力された結果をうっかり渡してエラー吐くみたいなことが頻発したのでいちいちas.data.frame()でデータフレーム型に強制的に直すみたいなことをしてました。

ところが,今回みたいな階層性のある形については,tibble型が便利なようですね。tibbleでは,リスト型の列を持つことができるので,“data”の列に刺激の情報をまとめたリストを入れていけばいいということになります。そう考えて,次のようにやってみました。

tibble::tibble(
  pic=dat$pic,
  word=dat$word,
  data=list(dat[,c(1,2,4,6,7,8,9,10,11)])
)->dat2

ところが,これで中身を見てみると…

head(dat2)
## # A tibble: 6 x 3
##   pic         word        data             
##   <fct>       <fct>       <list>           
## 1 2_C_sh.jpg  interview   <df[,9] [48 × 9]>
## 2 3_C_sp.jpg  court       <df[,9] [48 × 9]>
## 3 6_C_sh.jpg  alien       <df[,9] [48 × 9]>
## 4 7_C_sp.jpg  appointment <df[,9] [48 × 9]>
## 5 10_C_sh.jpg stamp       <df[,9] [48 × 9]>
## 6 14_C_sh.jpg channel     <df[,9] [48 × 9]>
head(dat2$data,3)
## [[1]]
##    itemID    type               kana lang prime answer form   freq_J
## 1       2  target       インタビュー  eng share   TRUE    A  29.5098
## 2       3  target             コート  eng  spec   TRUE    A 100.7255
## 3       6  target         エイリアン  eng share   TRUE    A  17.4314
## 4       7  target   アポイントメント  eng  spec   TRUE    A  30.5686
## 5      10  target           スタンプ  eng share   TRUE    A   5.9216
## 6      14  target         チャンネル  eng share   TRUE    A  24.4118
## 7      15  target           クロール  eng  spec   TRUE    A  12.0392
## 8      18  target             センス  eng share   TRUE    A 131.8039
## 9      19  target             ベンチ  eng  spec   TRUE    A   9.6667
## 10     22  target     プロモーション  eng share   TRUE    A  10.9216
## 11     23  target               ツナ  eng  spec   TRUE    A   8.0000
## 12      1  target           アイロン  eng  base   TRUE    A  17.9412
## 13      4  target         グラウンド  eng  base   TRUE    A  72.4706
## 14      5  target           アドレス  eng  base   TRUE    A  52.2745
## 15      8  target       プレッシャー  eng  base   TRUE    A  53.1176
## 16      9  target         プロポーズ  eng  base   TRUE    A  13.0000
## 17     12  target         ボリューム  eng  base   TRUE    A   6.9412
## 18     13  target             ベース  eng  base   TRUE    A  35.3725
## 19     16  target       エクスプレス  eng  base   TRUE    A  17.9216
## 20     17  target           ストーブ  eng  base   TRUE    A   7.5882
## 21     20  target           リコール  eng  base   TRUE    A  19.6667
## 22     21  target             レター  eng  base   TRUE    A  82.6078
## 23     24  target             ガッツ  eng  base   TRUE    A  23.7451
## 24     25  target             バイク  eng  base   TRUE    A  25.8824
## 25     17 nonword     ドートレギング  eng  <NA>  FALSE <NA>       NA
## 26     18 nonword     フィスティレド  eng  <NA>  FALSE <NA>       NA
## 27     19 nonword       ストネヘンデ  eng  <NA>  FALSE <NA>       NA
## 28     20 nonword   ポリディフィエス  eng  <NA>  FALSE <NA>       NA
## 29     21 nonword   メストレイヤーズ  eng  <NA>  FALSE <NA>       NA
## 30     22 nonword         ドンスーン  eng  <NA>  FALSE <NA>       NA
## 31     23 nonword           スプラム  eng  <NA>  FALSE <NA>       NA
## 32     24 nonword ティソベディエント  eng  <NA>  FALSE <NA>       NA
## 33     25 nonword             ムイン  eng  <NA>  FALSE <NA>       NA
## 34     26 nonword           ドソーム  eng  <NA>  FALSE <NA>       NA
## 35     27 nonword             ヘイド  eng  <NA>  FALSE <NA>       NA
## 36     28 nonword         オンテナー  eng  <NA>  FALSE <NA>       NA
## 37     29 nonword         タンサック  eng  <NA>  FALSE <NA>       NA
## 38     30 nonword           フロール  eng  <NA>  FALSE <NA>       NA
## 39     31 nonword アンチヒスタモーネ  eng  <NA>  FALSE <NA>       NA
## 40     32 nonword         パラックス  eng  <NA>  FALSE <NA>       NA
## 41     33 nonword     ハイプノジスト  eng  <NA>  FALSE <NA>       NA
## 42     34 nonword       クロリエイジ  eng  <NA>  FALSE <NA>       NA
## 43     35 nonword         コラプソス  eng  <NA>  FALSE <NA>       NA
## 44     36 nonword             ビキナ  eng  <NA>  FALSE <NA>       NA
## 45     37 nonword スティメレーション  eng  <NA>  FALSE <NA>       NA
## 46     38 nonword         スキマッド  eng  <NA>  FALSE <NA>       NA
## 47     39 nonword     ディロクトネス  eng  <NA>  FALSE <NA>       NA
## 48     40 nonword         ケグファグ  eng  <NA>  FALSE <NA>       NA
##     freq_E
## 1  17.5744
## 2  21.4056
## 3   0.5272
## 4   0.5272
## 5   3.3743
## 6  20.8784
## 7   0.3163
## 8  11.7045
## 9  13.9541
## 10  2.4253
## 11  5.2020
## 12  3.6555
## 13  9.2793
## 14 31.5284
## 15  5.7292
## 16  2.2847
## 17 14.9382
## 18 40.7726
## 19  2.5307
## 20  3.5852
## 21  0.7030
## 22  3.5500
## 23  3.6906
## 24 13.8135
## 25      NA
## 26      NA
## 27      NA
## 28      NA
## 29      NA
## 30      NA
## 31      NA
## 32      NA
## 33      NA
## 34      NA
## 35      NA
## 36      NA
## 37      NA
## 38      NA
## 39      NA
## 40      NA
## 41      NA
## 42      NA
## 43      NA
## 44      NA
## 45      NA
## 46      NA
## 47      NA
## 48      NA
## 
## [[2]]
##    itemID    type               kana lang prime answer form   freq_J
## 1       2  target       インタビュー  eng share   TRUE    A  29.5098
## 2       3  target             コート  eng  spec   TRUE    A 100.7255
## 3       6  target         エイリアン  eng share   TRUE    A  17.4314
## 4       7  target   アポイントメント  eng  spec   TRUE    A  30.5686
## 5      10  target           スタンプ  eng share   TRUE    A   5.9216
## 6      14  target         チャンネル  eng share   TRUE    A  24.4118
## 7      15  target           クロール  eng  spec   TRUE    A  12.0392
## 8      18  target             センス  eng share   TRUE    A 131.8039
## 9      19  target             ベンチ  eng  spec   TRUE    A   9.6667
## 10     22  target     プロモーション  eng share   TRUE    A  10.9216
## 11     23  target               ツナ  eng  spec   TRUE    A   8.0000
## 12      1  target           アイロン  eng  base   TRUE    A  17.9412
## 13      4  target         グラウンド  eng  base   TRUE    A  72.4706
## 14      5  target           アドレス  eng  base   TRUE    A  52.2745
## 15      8  target       プレッシャー  eng  base   TRUE    A  53.1176
## 16      9  target         プロポーズ  eng  base   TRUE    A  13.0000
## 17     12  target         ボリューム  eng  base   TRUE    A   6.9412
## 18     13  target             ベース  eng  base   TRUE    A  35.3725
## 19     16  target       エクスプレス  eng  base   TRUE    A  17.9216
## 20     17  target           ストーブ  eng  base   TRUE    A   7.5882
## 21     20  target           リコール  eng  base   TRUE    A  19.6667
## 22     21  target             レター  eng  base   TRUE    A  82.6078
## 23     24  target             ガッツ  eng  base   TRUE    A  23.7451
## 24     25  target             バイク  eng  base   TRUE    A  25.8824
## 25     17 nonword     ドートレギング  eng  <NA>  FALSE <NA>       NA
## 26     18 nonword     フィスティレド  eng  <NA>  FALSE <NA>       NA
## 27     19 nonword       ストネヘンデ  eng  <NA>  FALSE <NA>       NA
## 28     20 nonword   ポリディフィエス  eng  <NA>  FALSE <NA>       NA
## 29     21 nonword   メストレイヤーズ  eng  <NA>  FALSE <NA>       NA
## 30     22 nonword         ドンスーン  eng  <NA>  FALSE <NA>       NA
## 31     23 nonword           スプラム  eng  <NA>  FALSE <NA>       NA
## 32     24 nonword ティソベディエント  eng  <NA>  FALSE <NA>       NA
## 33     25 nonword             ムイン  eng  <NA>  FALSE <NA>       NA
## 34     26 nonword           ドソーム  eng  <NA>  FALSE <NA>       NA
## 35     27 nonword             ヘイド  eng  <NA>  FALSE <NA>       NA
## 36     28 nonword         オンテナー  eng  <NA>  FALSE <NA>       NA
## 37     29 nonword         タンサック  eng  <NA>  FALSE <NA>       NA
## 38     30 nonword           フロール  eng  <NA>  FALSE <NA>       NA
## 39     31 nonword アンチヒスタモーネ  eng  <NA>  FALSE <NA>       NA
## 40     32 nonword         パラックス  eng  <NA>  FALSE <NA>       NA
## 41     33 nonword     ハイプノジスト  eng  <NA>  FALSE <NA>       NA
## 42     34 nonword       クロリエイジ  eng  <NA>  FALSE <NA>       NA
## 43     35 nonword         コラプソス  eng  <NA>  FALSE <NA>       NA
## 44     36 nonword             ビキナ  eng  <NA>  FALSE <NA>       NA
## 45     37 nonword スティメレーション  eng  <NA>  FALSE <NA>       NA
## 46     38 nonword         スキマッド  eng  <NA>  FALSE <NA>       NA
## 47     39 nonword     ディロクトネス  eng  <NA>  FALSE <NA>       NA
## 48     40 nonword         ケグファグ  eng  <NA>  FALSE <NA>       NA
##     freq_E
## 1  17.5744
## 2  21.4056
## 3   0.5272
## 4   0.5272
## 5   3.3743
## 6  20.8784
## 7   0.3163
## 8  11.7045
## 9  13.9541
## 10  2.4253
## 11  5.2020
## 12  3.6555
## 13  9.2793
## 14 31.5284
## 15  5.7292
## 16  2.2847
## 17 14.9382
## 18 40.7726
## 19  2.5307
## 20  3.5852
## 21  0.7030
## 22  3.5500
## 23  3.6906
## 24 13.8135
## 25      NA
## 26      NA
## 27      NA
## 28      NA
## 29      NA
## 30      NA
## 31      NA
## 32      NA
## 33      NA
## 34      NA
## 35      NA
## 36      NA
## 37      NA
## 38      NA
## 39      NA
## 40      NA
## 41      NA
## 42      NA
## 43      NA
## 44      NA
## 45      NA
## 46      NA
## 47      NA
## 48      NA
## 
## [[3]]
##    itemID    type               kana lang prime answer form   freq_J
## 1       2  target       インタビュー  eng share   TRUE    A  29.5098
## 2       3  target             コート  eng  spec   TRUE    A 100.7255
## 3       6  target         エイリアン  eng share   TRUE    A  17.4314
## 4       7  target   アポイントメント  eng  spec   TRUE    A  30.5686
## 5      10  target           スタンプ  eng share   TRUE    A   5.9216
## 6      14  target         チャンネル  eng share   TRUE    A  24.4118
## 7      15  target           クロール  eng  spec   TRUE    A  12.0392
## 8      18  target             センス  eng share   TRUE    A 131.8039
## 9      19  target             ベンチ  eng  spec   TRUE    A   9.6667
## 10     22  target     プロモーション  eng share   TRUE    A  10.9216
## 11     23  target               ツナ  eng  spec   TRUE    A   8.0000
## 12      1  target           アイロン  eng  base   TRUE    A  17.9412
## 13      4  target         グラウンド  eng  base   TRUE    A  72.4706
## 14      5  target           アドレス  eng  base   TRUE    A  52.2745
## 15      8  target       プレッシャー  eng  base   TRUE    A  53.1176
## 16      9  target         プロポーズ  eng  base   TRUE    A  13.0000
## 17     12  target         ボリューム  eng  base   TRUE    A   6.9412
## 18     13  target             ベース  eng  base   TRUE    A  35.3725
## 19     16  target       エクスプレス  eng  base   TRUE    A  17.9216
## 20     17  target           ストーブ  eng  base   TRUE    A   7.5882
## 21     20  target           リコール  eng  base   TRUE    A  19.6667
## 22     21  target             レター  eng  base   TRUE    A  82.6078
## 23     24  target             ガッツ  eng  base   TRUE    A  23.7451
## 24     25  target             バイク  eng  base   TRUE    A  25.8824
## 25     17 nonword     ドートレギング  eng  <NA>  FALSE <NA>       NA
## 26     18 nonword     フィスティレド  eng  <NA>  FALSE <NA>       NA
## 27     19 nonword       ストネヘンデ  eng  <NA>  FALSE <NA>       NA
## 28     20 nonword   ポリディフィエス  eng  <NA>  FALSE <NA>       NA
## 29     21 nonword   メストレイヤーズ  eng  <NA>  FALSE <NA>       NA
## 30     22 nonword         ドンスーン  eng  <NA>  FALSE <NA>       NA
## 31     23 nonword           スプラム  eng  <NA>  FALSE <NA>       NA
## 32     24 nonword ティソベディエント  eng  <NA>  FALSE <NA>       NA
## 33     25 nonword             ムイン  eng  <NA>  FALSE <NA>       NA
## 34     26 nonword           ドソーム  eng  <NA>  FALSE <NA>       NA
## 35     27 nonword             ヘイド  eng  <NA>  FALSE <NA>       NA
## 36     28 nonword         オンテナー  eng  <NA>  FALSE <NA>       NA
## 37     29 nonword         タンサック  eng  <NA>  FALSE <NA>       NA
## 38     30 nonword           フロール  eng  <NA>  FALSE <NA>       NA
## 39     31 nonword アンチヒスタモーネ  eng  <NA>  FALSE <NA>       NA
## 40     32 nonword         パラックス  eng  <NA>  FALSE <NA>       NA
## 41     33 nonword     ハイプノジスト  eng  <NA>  FALSE <NA>       NA
## 42     34 nonword       クロリエイジ  eng  <NA>  FALSE <NA>       NA
## 43     35 nonword         コラプソス  eng  <NA>  FALSE <NA>       NA
## 44     36 nonword             ビキナ  eng  <NA>  FALSE <NA>       NA
## 45     37 nonword スティメレーション  eng  <NA>  FALSE <NA>       NA
## 46     38 nonword         スキマッド  eng  <NA>  FALSE <NA>       NA
## 47     39 nonword     ディロクトネス  eng  <NA>  FALSE <NA>       NA
## 48     40 nonword         ケグファグ  eng  <NA>  FALSE <NA>       NA
##     freq_E
## 1  17.5744
## 2  21.4056
## 3   0.5272
## 4   0.5272
## 5   3.3743
## 6  20.8784
## 7   0.3163
## 8  11.7045
## 9  13.9541
## 10  2.4253
## 11  5.2020
## 12  3.6555
## 13  9.2793
## 14 31.5284
## 15  5.7292
## 16  2.2847
## 17 14.9382
## 18 40.7726
## 19  2.5307
## 20  3.5852
## 21  0.7030
## 22  3.5500
## 23  3.6906
## 24 13.8135
## 25      NA
## 26      NA
## 27      NA
## 28      NA
## 29      NA
## 30      NA
## 31      NA
## 32      NA
## 33      NA
## 34      NA
## 35      NA
## 36      NA
## 37      NA
## 38      NA
## 39      NA
## 40      NA
## 41      NA
## 42      NA
## 43      NA
## 44      NA
## 45      NA
## 46      NA
## 47      NA
## 48      NA

このように,各行にすべての情報が入ってしまいます。よって,行ごとに入れることを考えないといけません。これを一発できれいにできたらかっこいいんですが,思いつかなかったので,とりあえずfor関数でi行目を取り出してtibbleに入れる,を繰り返すことにしました。まずは,dataのところがリスト型になるようにtibbleを作ります。

tibble::tibble(
  pic=dat$pic,
  word=dat$word,
  data=list()
)->dat3
head(dat3)

しかしここでもまた失敗。dataの列の長さがあってないと怒られてしまいます。これを解決するためにlistの中に空のリストを入れます(正直ここで入れる要素はなんでもOK)。

tibble::tibble(
  pic=dat$pic,
  word=dat$word,
  data=list(list())
)->dat3
dat3
## # A tibble: 48 x 3
##    pic         word        data      
##    <fct>       <fct>       <list>    
##  1 2_C_sh.jpg  interview   <list [0]>
##  2 3_C_sp.jpg  court       <list [0]>
##  3 6_C_sh.jpg  alien       <list [0]>
##  4 7_C_sp.jpg  appointment <list [0]>
##  5 10_C_sh.jpg stamp       <list [0]>
##  6 14_C_sh.jpg channel     <list [0]>
##  7 15_C_sp.jpg crawl       <list [0]>
##  8 18_C_sh.jpg sense       <list [0]>
##  9 19_C_sp.jpg bench       <list [0]>
## 10 22_C_sh.jpg promotion   <list [0]>
## # … with 38 more rows

できあがった dat3 という変数の“data”列に,pic( dat の5列目)とword( dat の3列目)を除いたものを1行目から順にとってきてlistにして,それを dat3 の“data”列に順番にいれていきます。

for (i in 1:length(dat3$pic)){
  dat3[i,3][[1]]<-list(dat[i,c(1,2,4,6,7,8,9,10,11)])
}
head(dat3)
## # A tibble: 6 x 3
##   pic         word        data            
##   <fct>       <fct>       <list>          
## 1 2_C_sh.jpg  interview   <df[,9] [1 × 9]>
## 2 3_C_sp.jpg  court       <df[,9] [1 × 9]>
## 3 6_C_sh.jpg  alien       <df[,9] [1 × 9]>
## 4 7_C_sp.jpg  appointment <df[,9] [1 × 9]>
## 5 10_C_sh.jpg stamp       <df[,9] [1 × 9]>
## 6 14_C_sh.jpg channel     <df[,9] [1 × 9]>

こうすると,できあがったtibbleのdata列には1行目から順に,interview, court,…の刺激の情報が入ることになります。確認のために見てみましょう。

dat3$data[[1]];dat3$data[[2]]
##   itemID   type         kana lang prime answer form  freq_J  freq_E
## 1      2 target インタビュー  eng share   TRUE    A 29.5098 17.5744
##   itemID   type   kana lang prime answer form   freq_J  freq_E
## 2      3 target コート  eng  spec   TRUE    A 100.7255 21.4056

ちゃんと入ってますね。最後に,このtibbleをJSON形式に変換すれば完成です。

toJSON(dat3)
## [{"pic":"2_C_sh.jpg","word":"interview","data":[{"itemID":2,"type":"target","kana":"インタビュー","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":29.5098,"freq_E":17.5744}]},{"pic":"3_C_sp.jpg","word":"court","data":[{"itemID":3,"type":"target","kana":"コート","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":100.7255,"freq_E":21.4056}]},{"pic":"6_C_sh.jpg","word":"alien","data":[{"itemID":6,"type":"target","kana":"エイリアン","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":17.4314,"freq_E":0.5272}]},{"pic":"7_C_sp.jpg","word":"appointment","data":[{"itemID":7,"type":"target","kana":"アポイントメント","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":30.5686,"freq_E":0.5272}]},{"pic":"10_C_sh.jpg","word":"stamp","data":[{"itemID":10,"type":"target","kana":"スタンプ","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":5.9216,"freq_E":3.3743}]},{"pic":"14_C_sh.jpg","word":"channel","data":[{"itemID":14,"type":"target","kana":"チャンネル","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":24.4118,"freq_E":20.8784}]},{"pic":"15_C_sp.jpg","word":"crawl","data":[{"itemID":15,"type":"target","kana":"クロール","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":12.0392,"freq_E":0.3163}]},{"pic":"18_C_sh.jpg","word":"sense","data":[{"itemID":18,"type":"target","kana":"センス","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":131.8039,"freq_E":11.7045}]},{"pic":"19_C_sp.jpg","word":"bench","data":[{"itemID":19,"type":"target","kana":"ベンチ","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":9.6667,"freq_E":13.9541}]},{"pic":"22_C_sh.jpg","word":"promotion","data":[{"itemID":22,"type":"target","kana":"プロモーション","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":10.9216,"freq_E":2.4253}]},{"pic":"23_C_sp.jpg","word":"tuna","data":[{"itemID":23,"type":"target","kana":"ツナ","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":8,"freq_E":5.202}]},{"pic":"1_C_b.jpg","word":"iron","data":[{"itemID":1,"type":"target","kana":"アイロン","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":17.9412,"freq_E":3.6555}]},{"pic":"4_C_b.jpg","word":"ground","data":[{"itemID":4,"type":"target","kana":"グラウンド","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":72.4706,"freq_E":9.2793}]},{"pic":"5_C_b.jpg","word":"address","data":[{"itemID":5,"type":"target","kana":"アドレス","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":52.2745,"freq_E":31.5284}]},{"pic":"8_C_b.jpg","word":"pressure","data":[{"itemID":8,"type":"target","kana":"プレッシャー","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":53.1176,"freq_E":5.7292}]},{"pic":"9_C_b.jpg","word":"propose","data":[{"itemID":9,"type":"target","kana":"プロポーズ","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":13,"freq_E":2.2847}]},{"pic":"12_C_b.jpg","word":"volume","data":[{"itemID":12,"type":"target","kana":"ボリューム","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":6.9412,"freq_E":14.9382}]},{"pic":"13_C_b.jpg","word":"base","data":[{"itemID":13,"type":"target","kana":"ベース","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":35.3725,"freq_E":40.7726}]},{"pic":"16_C_b.jpg","word":"express","data":[{"itemID":16,"type":"target","kana":"エクスプレス","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":17.9216,"freq_E":2.5307}]},{"pic":"17_C_b.jpg","word":"stove","data":[{"itemID":17,"type":"target","kana":"ストーブ","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":7.5882,"freq_E":3.5852}]},{"pic":"20_C_b.jpg","word":"recall","data":[{"itemID":20,"type":"target","kana":"リコール","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":19.6667,"freq_E":0.703}]},{"pic":"21_C_b.jpg","word":"letter","data":[{"itemID":21,"type":"target","kana":"レター","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":82.6078,"freq_E":3.55}]},{"pic":"24_C_b.jpg","word":"guts","data":[{"itemID":24,"type":"target","kana":"ガッツ","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":23.7451,"freq_E":3.6906}]},{"pic":"25_C_b.jpg","word":"bike","data":[{"itemID":25,"type":"target","kana":"バイク","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":25.8824,"freq_E":13.8135}]},{"pic":"17_n.jpg","word":"dootlegging","data":[{"itemID":17,"type":"nonword","kana":"ドートレギング","lang":"eng","answer":false}]},{"pic":"18_n.jpg","word":"fistilled","data":[{"itemID":18,"type":"nonword","kana":"フィスティレド","lang":"eng","answer":false}]},{"pic":"19_n.jpg","word":"stonehende","data":[{"itemID":19,"type":"nonword","kana":"ストネヘンデ","lang":"eng","answer":false}]},{"pic":"20_n.jpg","word":"polidifies","data":[{"itemID":20,"type":"nonword","kana":"ポリディフィエス","lang":"eng","answer":false}]},{"pic":"21_n.jpg","word":"mestroyers","data":[{"itemID":21,"type":"nonword","kana":"メストレイヤーズ","lang":"eng","answer":false}]},{"pic":"22_n.jpg","word":"donsoon","data":[{"itemID":22,"type":"nonword","kana":"ドンスーン","lang":"eng","answer":false}]},{"pic":"23_n.jpg","word":"splum","data":[{"itemID":23,"type":"nonword","kana":"スプラム","lang":"eng","answer":false}]},{"pic":"24_n.jpg","word":"tisobedient","data":[{"itemID":24,"type":"nonword","kana":"ティソベディエント","lang":"eng","answer":false}]},{"pic":"25_n.jpg","word":"muin","data":[{"itemID":25,"type":"nonword","kana":"ムイン","lang":"eng","answer":false}]},{"pic":"26_n.jpg","word":"dothorme","data":[{"itemID":26,"type":"nonword","kana":"ドソーム","lang":"eng","answer":false}]},{"pic":"27_n.jpg","word":"hade","data":[{"itemID":27,"type":"nonword","kana":"ヘイド","lang":"eng","answer":false}]},{"pic":"28_n.jpg","word":"ontener","data":[{"itemID":28,"type":"nonword","kana":"オンテナー","lang":"eng","answer":false}]},{"pic":"29_n.jpg","word":"tansack","data":[{"itemID":29,"type":"nonword","kana":"タンサック","lang":"eng","answer":false}]},{"pic":"30_n.jpg","word":"frool","data":[{"itemID":30,"type":"nonword","kana":"フロール","lang":"eng","answer":false}]},{"pic":"31_n.jpg","word":"antihistamone","data":[{"itemID":31,"type":"nonword","kana":"アンチヒスタモーネ","lang":"eng","answer":false}]},{"pic":"32_n.jpg","word":"parracks","data":[{"itemID":32,"type":"nonword","kana":"パラックス","lang":"eng","answer":false}]},{"pic":"33_n.jpg","word":"hypnojist","data":[{"itemID":33,"type":"nonword","kana":"ハイプノジスト","lang":"eng","answer":false}]},{"pic":"34_n.jpg","word":"croilage","data":[{"itemID":34,"type":"nonword","kana":"クロリエイジ","lang":"eng","answer":false}]},{"pic":"35_n.jpg","word":"collapsos","data":[{"itemID":35,"type":"nonword","kana":"コラプソス","lang":"eng","answer":false}]},{"pic":"36_n.jpg","word":"bikina","data":[{"itemID":36,"type":"nonword","kana":"ビキナ","lang":"eng","answer":false}]},{"pic":"37_n.jpg","word":"stimelation","data":[{"itemID":37,"type":"nonword","kana":"スティメレーション","lang":"eng","answer":false}]},{"pic":"38_n.jpg","word":"skimmud","data":[{"itemID":38,"type":"nonword","kana":"スキマッド","lang":"eng","answer":false}]},{"pic":"39_n.jpg","word":"diroctness","data":[{"itemID":39,"type":"nonword","kana":"ディロクトネス","lang":"eng","answer":false}]},{"pic":"40_n.jpg","word":"kegfug","data":[{"itemID":40,"type":"nonword","kana":"ケグファグ","lang":"eng","answer":false}]}]

テキストファイルとして保存する場合は,以下のようにします。

toJSON(dat3) %>%
write(.,file = "json.txt")

おわりに

この記事では,データフレーム形式のものを階層性をもった形でJSON形式に変換するということをやってみました。tibbleという形式ができたことで,データフレームの中にリスト型変数を持つということができます。これができれば,あとは toJSON関数 で一発で変換ができました。もしかしたらもっとエレガントな方法もあるかもしれませんが,とりあえず現状の課題は解決できました。

なにをゆう たむらゆう。

おしまい。


  1. 注: 私はこれまで,大学院で習ったHot Soup Processorというゲームを作る目的で使われることが多いプログラミング言語を使って実験プログラムを作っていました。その際にも,特にRでのデータハンドリングに習熟するようになってからは,刺激を読み込む際に,その刺激の情報も一緒に読み込んで,実験結果の出力時にロング型で表示されるようにしていました。

2020年の振り返り

毎年恒例の振り返り記事です。28日に仕事納めの予定が今日まで出勤して実験やったので,ブログも今日のうちに書いてしまおうということで30日に更新です。これまでの振り返り記事も興味がお有りの方はどうぞ。

過去の振り返り記事

ブログのこと

この記事を書いている2020年12月30日時点でのこのブログのpage viewは121,733です。ついに累計10万アクセス超えました(祝100,000PV)。2019年は年間20,000アクセス切っていましたが,今年は25,000アクセスを超えてこのブログを始めてからの最多アクセスを記録しました。ありがたいことです。

今年も昨年と同様に,平均すると月2本のペースでブログを更新しました。ただ,今年の前半あたりに投稿が集中していたので,毎月2本書いていたわけではありません。主に,新型コロナウィルスの影響で春学期がすべて遠隔授業となったことで,それに関する記事をたくさん書いたことでそうなりました。私はSlackを授業で使ったので,主にそれ関係の記事を多く書きました。

閲覧が多かった記事の上位も,R関連の記事だけではなく下記のような記事も入ってました。

42.5インチディスプレイの記事も今年に入って急にアクセスが増えたので,今年ディスプレイを新調した方が多かったのかもしれませんね。個人的には,もうあの大きさより小さい画面で仕事できないですね。

仕事のこと

3年目は2年目よりももっと仕事をうまく回せるようになるというか,学内の業務だったり授業準備の負担も減って研究に割ける時間が増えるだろうと思っていました。ところが,前述のように遠隔授業の実施に伴ってすべてが一変したので,昨年度の継続を活かすことはほとんどできなかったと言っていいかもしれません。自分のことだけでも手一杯でしたが他の先生達のヘルプもしなければいけない立場でしたので,毎日掲示板をチェックして,メールの問い合わせに返信して…みたいなことも春学期はやっていました。自分の授業に関しても,同じ教科書を使っていたとしても遠隔ではできることがまったく異なるので,すべて新しく準備することになってしまいました(多くの先生がそうだったでしょう)。

対面授業に戻った秋学期も,これまでの対面授業のようにはできない部分が多く,この状況下でできる対面授業というのを考えなくてはいけなくなりました。加えて,担当している授業がすべて異なるので(担当数=タイプ数),それもあって授業の負担感は2年目の昨年度よりもやや高かったなと思っています。

ただし,今年度は時間割のことにメインで関わっていないので,秋学期にその仕事で時間を奪われるということはなくなりましたし(たまに心苦しい気持ちになりつつ見守っています),学部のライティングの授業も持っていないので,3年目にして初めて研究室で徹夜した日数がゼロになりました(これまでも年間数日というレベルでしたけど)。

研究の面では,今年は学会がなくなったりオンラインになったりしたこともあって,停滞した感じがあります。昨年度,SLRFに行ってるときに申請書を書いていた科研費(若手研究)が採用されて,関大に着任してからようやく科研費を初めて獲得しました。それで意気込んでいたところでしたが,2020年度は研究をほとんど進められず。ウェブ実験をできるようになっておいたほうが今後データ収集がしやすくなるだろうと思って,jsPsychを勉強し始めました。

ガンバ大阪のこと

今年もガンバ大阪の年間チケットを購入していましたが,新型コロナウィルスの影響でJリーグも中断し,再開後は座席の間隔をあけたり入場人数が制限されていたので,年間チケットは払い戻しになりました。それでもホーム戦は最終節の清水エスパルス戦以外は行きました。この話題については別に記事を書いたのでそちらをお読みください。

2020シーズンに観戦したG大阪の試合

運動習慣

今年に起こった最大の変化といえば,Apple Watchを買って肉体改造に取り組んだことかなと思います。Apple Watchを買う前から,Nike Training ClubNike Run Clubで筋トレだったりランニングだったりはたまにしていましたが,Apple Watch Series3が安価で手に入るようになり,4月初旬にそれを購入してからはとにかくApple Watchのアクティビティリングを完成させることと,毎月の「チャレンジ」を達成することが生きる目的みたいになりました。特に,春学期はほとんど在宅ワークで体を動かす機会が激減したこともあって,意識的に体を動かす機会を作り出さないといけないと強く感じていました。やっぱり一日中家にこもっているのってメンタル的にもよろしくないんですよね。体を動かすことでリフレッシュするようになって,それが習慣になったので対面授業になって平日は毎日職場に来ないといけないようになっても自転車に乗る,走る,筋トレする,ヨガ,のうちのどれか2つ以上は必ずするようになりました。

だいぶ流行に乗り遅れてリングフィットアドベンチャーを買ってからは,家での運動も気軽にできるようになりました。雨の日に走りに行ったことも夏の時期は何回かありましたが,冬の雨の日のランニングはハードルが高くてなかなか行けません。そういうときに,ゲーム感覚で身体を動かして,しかもそれなりに負荷の高いことができるのはいいですね(最近リングフィットはあまりやれてませんけど)。

あとは,自転車も寒いから冬は無理だと以前は思っていましたが,意外と乗れています。漕ぎ出したらあったまるぞということと,家を出る前にウォームアップすればよいという2つを自分が学習したことが大きいと思っています。自転車だと電車通勤の半分くらいの時間で行けるので,いつもより遅い時間に家を出ても間に合います。そうしてできた時間でヨガをやるようになりました。まず10分弱のヨガ(私はいつもNTCのSimple Morning Energy Flowをやってます)をやって身体をあたためてからいくと,自転車を漕ぎ出してすぐに身体が温かくなるのでそこまで辛さを感じていません。もちろん,まだそこまで寒くないというのもあるでしょうけれど。あとは,筋肉がついて基礎代謝があがったので寒さに強くなったというのもあるかもしれません。

健康維持という目的に加えて,こういう社会情勢の中で,なにか1つでもいいから継続してやっていることで,自分の精神的な支えとしているということもあります。自己肯定感を保つために意識してやっているといいますか。続けていることが自信になってくるというのは大いにありました。運動ってなかなか継続してやるのが難しかったのですが,2020年はそれを継続してできるようになったのが自分の中で成長したと感じる部分です。

2021年度も対面授業が継続になるので,特に春学期中にどうやって運動を継続していけるのかは正直まだ全然わかりませんが,2021年度も継続していければと思います。

おわりに

最後になりましたが,みなさん,今年1年お世話になりました。来年もよろしくお願いいたします。

なにをゆう たむらゆう

おしまい。

2020シーズンに観戦したG大阪の試合

2020シーズンに観戦したG大阪の試合をまとめる完全自分用のメモ記事です。昨年度の記事↓

2019シーズンに観戦したG大阪の試合

リーグ戦

  1. 7/18 vs大分 (Home) ○2-1
  2. 7/22 vs広島 (Home) ○1-0
  3. 8/1 vs川崎F (Home) ●0-1
  4. 8/19 vs浦和 (Home) ●1-3
  5. 8/29 vsFC東京 (Home) ●1-3
  6. 9/13 vs湘南 (Home) ●0-1
  7. 9/23 vs名古屋 (Home) ○2-1
  8. 10/3 vs鹿島 (Home) ○2-0
  9. 10/14 vs横浜FM (Home) △1-1
  10. 10/24 vs柏 (Home) ○2-1
  11. 10/31 vs札幌 (Home) ○2-1
  12. 11/11 vs神戸 (Home) ○1-0
  13. 11/14 vs仙台 (Home) ●0-4
  14. 11/29 vs鳥栖 (Home) △1-1

今年はアウェイは一度も行きませんでした。Jリーグ再開後はそもそもアウェイ観戦不可能でしたが,アウェイ席が設けられるようになってからも行きませんでした。よって観に行った試合はすべてホーム戦でしたが,ホーム戦は最終節の清水戦以外有観客試合はすべて観に行ったことになります。来年度もガンバ大阪の年間チケットは販売されないことが決まっているので,2020シーズン同様に毎回チケットを買って観戦することになりそうです。

スタジアムは人が集まる場所ですが,観客が入れるようになってしばらくは2席ずつ間隔が空いていたのでかなりスペースに余裕があり,むしろ大学の授業の方がよほど密な空間だよなと思っていました。スタジアムは外ですしね。今は1席ずつ空いていますが,それでもこれまで前後左右に人がいたことを思えばそこまで密ではないですね。声を出しての応援もまだできませんし。

カップ戦

上記14試合以外にも,YBCルヴァンカップのグループステージ柏戦と,つい先日行われた天皇杯準決勝徳島戦も行きました。柏戦はリーグ戦開幕前で,2019シーズンのホーム開幕戦でした。この試合は妻と一緒に見に行きましたが,得点王になったオルンガ選手に決められて0-1の敗戦でした。結局今年のルヴァンカップはグループステージ敗退となってしまいました。

一方で,今年は優勝チームと2位チームに天皇杯の出場権が与えられるというレギュレーションとなりました。リーグ戦を2位で終えたガンバ大阪は準決勝から出場し,J2の1位で準々決勝を勝ち上がった徳島ヴォルティスと対戦しました。

徳島にボールを握られる展開でしたが,決定機をしっかり決めきって2-0の勝利でした。敵チームながら徳島はビルドアップがとてもうまかったですね。いいチームでした。

福田湧矢選手はホームで初ゴール。彼は今後ガンバの中心になってもらいたい選手です。

天皇杯決勝に勝ち進み,元日に川崎フロンターレと戦うことになりました。今年の川﨑は本当に強くて,ガンバも0-5で敗戦して目の前で優勝を見させられることになりました。簡単ではないですが,そのリベンジとしてなんとか天皇杯優勝をして今シーズンをしめくくってほしいなと思います。

印象に残っていること

2020シーズンは声を出しての応援ができなかったことや,スタジアムが満員でなかったこともあって,2019シーズンのように心に焼き付いたシーンというか劇的…!みたいな試合ってあまりなかったのですが,10/24の柏戦のアデミウソン選手の決勝ゴールは興奮しましたね。残念ながら,この試合の次の日に酒気帯び運転と事故を起こしてしまい,つい先日契約解除となってしまいましたが…。

また,今年も若手の成長が著しく,大卒ルーキーの山本悠樹選手は特にこの1年で飛躍的に伸びたなと感じます。開幕前から注目されていましたが,序盤戦は途中交代で出場してもなかなかいいパフォーマンスを見せていませんでした。ところが,先発に抜擢されたアウェイ仙台戦で初スタメン初ゴールを記録し,この試合以降ガンバ大阪に欠かせない選手になりました。

山本悠樹選手のゴールシーンは1分10秒あたりから

今シーズンスタメンに定着したのは山本選手くらいですが(高尾選手,福田選手は2019シーズンもスタメンで出てたので),シーズン後半からはレギュラークラスの選手(井手口選手,宇佐美選手,小野瀬選手)の故障もあって,奥野選手,唐山選手,川﨑選手,塚元選手なんかもベンチ入りしたりスタメンを飾る試合もありました。あとは,飛び級でU23チームで試合に出ていた中村仁朗選手も最終節で途中出場していいプレーしてましたね。彼は2003年生まれの17歳ですが,J1でも活躍できる逸材なんじゃないかと思いました。来シーズンが楽しみですね。

関西大学に勤務している私としては,関大卒のサイドバックである黒川選手の活躍を期待していましたが,残念ながら今シーズンはほとんどトップチームに絡めませんでした。特別指定選手として2019シーズンのルヴァンカップグループステージの試合に出場していたのを見たときにめちゃくちゃうまいなと思ったのですが…。2021シーズンの奮起を期待したいです。

というわけで,今日はガンバ大阪のお話でした。

なにをゆう たむらゆう。

おしまい。

内容の負荷が高いときのタスクの作り方

Photo by Christina Morillo on Pexels.com

はじめに

英語(語学)の授業において,タスクを作るときの基本的な考え方として,最近自分の中でしっくりきたことについて書きます。簡単に言うと,タスクの内容的な負荷が高いときは,タスク自体がもたらす負荷を軽減させることによって学習者が取り組みやすいようにするということです。

内容の負荷

内容の負荷とは,ここでは内容の難しさのような意味で使っています。私がもってる授業のうちの1つのクラスで使っている教科書では,数回に一回ほどの割合で,社会的な問題(環境問題等)をテーマとして扱うものが出てきます。こういうテーマは,学生が普段どれだけこういう問題について考えているかということによってかなり左右されるので,例えば旅行とか食事とか,そういう学生にとってより身近だと考えられるテーマよりは英語を使ってやりとりする負荷があがります。こういう内容的に難しい話題を扱おうとするとき,タスク自体がもたらす負荷も高いものだと失敗する確率があがります。

タスクの負荷

では,タスクの負荷とはなんでしょうか。これも本当にいろいろな要因があって,一概にタスクの負荷を決めることはできないのですが,それでもbeginnerレベルでも取り組みやすいタスクとそうでないタスクはあります。例えば,意見を交換して合意形成を求めるような意思決定タスクは決める内容が簡単であったとしても難しいです。自分で意見を考えないといけないうえに,相手を説得するような論理的思考が求められるからです。一方で,情報のギャップがあってその情報のギャップを埋めるようなタスクは,事前にその情報が与えられていて,相手に情報を伝え,そして相手から情報を得ることさえできればいいので負荷は低いということになります。

内容の負荷×タスクの負荷

内容の負荷が高く,なおかつタスクの負荷も高ければ非常に難しいタスクになり(e.g., 少子高齢化問題への解決策を4人グループの中でそれぞれが提案し,最も良い案を1つ選ぶ),内容の負荷が低く,なおかつタスクの負荷が低ければ易しいタスクになります(e.g., すでに与えられた予定を見て,自分のパートナーの相手と遊びに行ける日時を探し出す)。

このことを念頭においておけば,すでに内容が与えられている状態でタスクを構想する際に役に立ちます。つまり,今回の教科書の内容は社会的な問題(内容の負荷が高い)ということであれば,タスクの負荷が低くなるようなタスクを構成すればよいということです。

もちろん,内容の負荷が高いからこそインプットタスクを充実させて,内容的・言語的な負荷が下がるように工夫したり,タスクの条件面で準備時間を増やす等をすることでもきます。そういう方法もありますが,タスク自体の工夫もできますよねというのが今回の記事の趣旨です。

例えば,環境問題をテーマにしたタスクを作ろうとするのであれば,意思決定タスクにするのではなく情報交換型タスク(e.g., 2人または4人等のグループ内で情報を共有し,どの国でどの問題が深刻なのかの表を完成させるとか)を作ることを考えるということです。ちなみに,情報交換は分割数が多くなれば難しくなります。1つの情報を2人で分割してやるより4人がバラバラの情報を持っている方が難しいということです。

おわりに

これまでに私自身がタスクを考えるときは,基本的にまず教科書の内容と相性の良いタスクのタイプを選んでタスクを構想していました。ただ,内容と相性がいいからと言って内容が難しい意思決定タスクを作ると,やっぱり自分の中での手応えがあまり良くないことが多くありました。そういうことを考えていたときに,思い切ってタスクの負荷を下げてみればいいのでは?と思って,普段よりもかなりタスクのゴール達成が容易になるようにタスクを作ったら,意外とむしろそれが程よい難易度で,学生も達成感を味わっているように見えました。

この記事ではタスクのタイプの詳細についてあまり詳しく説明することはしませんでしたが,それも今度出る教材集にタスクタイプごとに豊富な例がありますのでそちらをぜひ御覧ください。

コミュニケーション・タスクのアイデアとマテリアル 教室と世界をつなぐ英語授業のために

なにをゆう たむらゆう。

おしまい。

【R】カタカナの非語を自動生成する

はじめに

実験に使うために作ったのですが,結局ボツになったので,どうやってカタカナの非語を作成しようとしたのかの方法をブログの記事に書くことで成仏させたいと思います。考え方は簡単で,カタカナ語の含まれる変数と,任意の数字が入った変数を作って,後者の変数から任意に1つの数字を選び出し,その数だけカタカナ語のリストから任意に取ってきてくっつける,という感じです。よって,生成される文字列は日本語らしさとかはまったく無視されたものになります(まれに日本語っぽいものや完全に日本語のものもできますランダムなので)。

カタカナのリストを用意

まずはカタカナのリストを作ります。アルファベットとかは簡単なんですが,カタカナのリストがRのデフォルトにはない(たぶん)ので,自分で用意します。ただ,50音の表だと扱いづらいので,カタカナを縦にガーッと並んだものをコピーできたら便利だなと思っていたら,そんなサイトがありました。

http://desilysis.seesaa.net/article/423176853.html

ここにあるものをコピーして,kanaという変数に入れます。ちなみに,この記事で使う「リスト」は一般的な意味で,Rにおける「リスト型」という意味のリストではありませんのでご注意ください。

kana <-read.table("clipboard") #Windows
kana <-read.table(pipe("pbpaste")) #Mac
print(kana)


すると,こんな感じでカタカナが入った変数が手に入ります。read.tableで読み込んでるのでデータフレームになります。濁音と半濁音が抜いてあります。入れてもいいのですが,入れるとそれっぽいカタカナ語が生成されづらくなるというのが理由です。

##    V1
## 1  ア
## 2  イ
## 3  ウ
## 4  エ
## 5  オ
## 6  カ
## 7  キ
## 8  ク
## 9  ケ
## 10 コ
## 11 サ
## 12 シ
## 13 ス
## 14 セ
## 15 ソ
## 16 タ
## 17 チ
## 18 ツ
## 19 テ
## 20 ト
## 21 ナ
## 22 ニ
## 23 ヌ
## 24 ネ
## 25 ノ
## 26 ハ
## 27 ヒ
## 28 フ
## 29 ヘ
## 30 ホ
## 31 マ
## 32 ミ
## 33 ム
## 34 メ
## 35 モ
## 36 ヤ
## 37 ユ
## 38 ヨ
## 39 ラ
## 40 リ
## 41 ル
## 42 レ
## 43 ロ
## 44 ワ
## 45 ヲ
## 46 ン

任意の数字のリストを作る

次に,任意の数字のリストを作ります。もしも,4文字の非語だけで良いというような場合はこの作業はスキップしてもらってOKです。ここでは,3文字から8文字の非語を作ることにします。

kazu <-c(3:8)
print(kazu)
## [1] 3 4 5 6 7 8

これで2つの道具が揃ったので,あとはこの2つを組み合わせるだけです。

カタカナをランダムに組み合わせる

非語をいれるハコを用意

まず,できあがった非語を入れるためのハコを用意します。ここでは,100個作ることにしましょう。 nonword という列に,0を100個いれてます。

dat<- data.frame(nonword=rep(0,100))
print(dat)
##     nonword
## 1         0
## 2         0
## 3         0
## 4         0
## 5         0
## 6         0
## 7         0
## 8         0
## 9         0
## 10        0
## 11        0
## 12        0
## 13        0
## 14        0
## 15        0
## 16        0
## 17        0
## 18        0
## 19        0
## 20        0
## 21        0
## 22        0
## 23        0
## 24        0
## 25        0
## 26        0
## 27        0
## 28        0
## 29        0
## 30        0
## 31        0
## 32        0
## 33        0
## 34        0
## 35        0
## 36        0
## 37        0
## 38        0
## 39        0
## 40        0
## 41        0
## 42        0
## 43        0
## 44        0
## 45        0
## 46        0
## 47        0
## 48        0
## 49        0
## 50        0
## 51        0
## 52        0
## 53        0
## 54        0
## 55        0
## 56        0
## 57        0
## 58        0
## 59        0
## 60        0
## 61        0
## 62        0
## 63        0
## 64        0
## 65        0
## 66        0
## 67        0
## 68        0
## 69        0
## 70        0
## 71        0
## 72        0
## 73        0
## 74        0
## 75        0
## 76        0
## 77        0
## 78        0
## 79        0
## 80        0
## 81        0
## 82        0
## 83        0
## 84        0
## 85        0
## 86        0
## 87        0
## 88        0
## 89        0
## 90        0
## 91        0
## 92        0
## 93        0
## 94        0
## 95        0
## 96        0
## 97        0
## 98        0
## 99        0
## 100       0

forで繰り返す

では,for文を使って,1行目から100行目まで順番に非語をぶちこんでいきます。sample関数は,次のような引数をとります。

sample(x,size,replace=FALSE,prob=NULL)

  • x ->無作為抽出元のベクトル
  • size ->無作為抽出で何個とってくるか
  • replace ->重複ありでとってくるか(同じものが2回でてもいいかどうか)
  • prob ->xの要素が抽出される確率

ここではprobは特にこだわらなくてOKですね。重複はなしでいってみましょう。xはkanaでsizeは3~8がランダムに出てほしいので,ここにもsample関数を使いましょう。つまり,kazuという変数から任意に1つ選んで,その数字の長さの非語を作ろうということです。3がでたなら3文字,7が出たなら7文字ということです。ここを固定した数字にすれば,その文字数の非語のみができます。ということで,以下のような感じで走らせます。

for (i in 1:100){
    dat[i,]<-   paste(as.character(sample(kana[,1],sample(kazu,1))),sep="",collapse="")
    }


kanaというデータフレームの1列目から,kazu(3~8)から選ばれた任意の数字の数だけ要素を無作為に選んできて,paste関数で合体させるということですね。一応,paste関数の中でas.character関数を使って文字列の扱いを指定してますが,なくてもたぶん動くかなと思います。

##              nonword
## 1           サカフヌ
## 2     トセヲクロヨサ
## 3   ケトカヲヤイアタ
## 4   ツヒオセコミルハ
## 5             キセア
## 6     クタロヲマヒモ
## 7       ワニレシヘン
## 8         イキニオレ
## 9           ヤイケマ
## 10    ヌラテホメムネ
## 11  ハヨスヌセリエム
## 12            カリク
## 13            フロヲ
## 14      ルテロヘサタ
## 15      テユヨマクト
## 16        ヲホロケニ
## 17          リミユソ
## 18  ホシヲリカテレミ
## 19          モメスル
## 20        ホキヤコカ
## 21    ネコオモトユレ
## 22          ワラソヲ
## 23            ニユナ
## 24        タフテモス
## 25          キノラケ
## 26            ルヨモ
## 27      トンルフヌロ
## 28        エロスヨフ
## 29  レテキアタホロハ
## 30      キリナコロヘ
## 31          アキタル
## 32        キニユミイ
## 33        トムテルネ
## 34      ホンタヨヌイ
## 35          セエシト
## 36        キテチハソ
## 37        ヌソハチエ
## 38            ヨヒマ
## 39          ハモクシ
## 40    カオトヌリフキ
## 41      ホヨオトカリ
## 42          ヤヌホト
## 43      メクユイソテ
## 44  カフトルムリレマ
## 45        ヤチツテシ
## 46            シヌメ
## 47  ムアコチワノウネ
## 48  ヲリノイヒフウミ
## 49      サムヤトシラ
## 50            ユミケ
## 51        レカフヤン
## 52      ミノリヤタホ
## 53            ツケイ
## 54  ニロネウモトソナ
## 55        レセシノラ
## 56          コヌメニ
## 57          ツユニン
## 58            クトス
## 59          スツヌリ
## 60    メユマヲウチロ
## 61            ネヨタ
## 62      ヤハケミソセ
## 63            リチキ
## 64            ハネマ
## 65          ツノウタ
## 66        ヌツセアラ
## 67          ヘサキウ
## 68      タセルユヲチ
## 69      カンシナテヨ
## 70      ラロモオヲノ
## 71  ホムニヨイリンク
## 72      トロイアネツ
## 73    ケモレクメトア
## 74            ミカセ
## 75          スホアセ
## 76  ラルマノヤキユテ
## 77      ニチノマヤイ
## 78            ワリサ
## 79      ヤラヲスソム
## 80      タトクンシア
## 81      ニフシユトヒ
## 82      トメマケヤオ
## 83        オリクツル
## 84  ラリオホメヘモシ
## 85            オヌエ
## 86        トサヌンス
## 87            ワオウ
## 88        ヒラキメノ
## 89    サエアカラハメ
## 90      ネフミナモワ
## 91            サヤフ
## 92        クヤヨイナ
## 93  コキソユクホマノ
## 94            メムヌ
## 95      オヲユカスン
## 96          ケヌニタ
## 97    ユキラチヨネテ
## 98          ヒレニエ
## 99    メワセモオネク
## 100     ヤタセンノウ


サカフヌとかテユヨマクトとかわけわからないのがたくさんできてますね。もしも,4文字の非語だけで良いということであれば,

for (i in 1:100){
    dat2[i,]<-  paste(as.character(sample(kana[,1],4)),sep="",collapse="")
}


のように, sample(kazu,1) の部分を任意の数字に入れ替えてあげることになります。そうすれば,4文字だけの非語リストが手に入ります。

dat2<- data.frame(nonword=rep(0,100))
for (i in 1:100){
    dat2[i,]<-  paste(as.character(sample(kana[,1],4)),sep="",collapse="")
}
print(dat2)
##      nonword
## 1   スメヘウ
## 2   セイオヒ
## 3   ホラリヤ
## 4   ニチメセ
## 5   ヌナメコ
## 6   ヌサトヤ
## 7   レチシイ
## 8   コフハチ
## 9   ヨヘユハ
## 10  マンツメ
## 11  ヒホソム
## 12  スヲテユ
## 13  スヒチレ
## 14  ルヒホヘ
## 15  テシフユ
## 16  ロテカウ
## 17  トノルニ
## 18  ヨホオハ
## 19  ヨキミチ
## 20  ワナヘノ
## 21  ヌヨナマ
## 22  クタンイ
## 23  ハムンシ
## 24  ネロレナ
## 25  アムネノ
## 26  ハフソト
## 27  ヨスクヌ
## 28  サスキホ
## 29  ヨワツノ
## 30  イトセム
## 31  オセンエ
## 32  ホミレル
## 33  リラハフ
## 34  ツラソカ
## 35  テチサシ
## 36  ツヲヌヒ
## 37  ヲタカム
## 38  ハアワレ
## 39  オクネケ
## 40  ミムルヤ
## 41  ヘテロホ
## 42  アサヤケ
## 43  チヤラウ
## 44  クハサケ
## 45  ンテリム
## 46  メネサム
## 47  マシトリ
## 48  クヌワマ
## 49  ナヤリロ
## 50  ナヤウン
## 51  タンナレ
## 52  メヘオテ
## 53  ソキヨニ
## 54  ソユヘタ
## 55  ルサスノ
## 56  ネウフセ
## 57  ムメシヒ
## 58  ネシムセ
## 59  ケヘシノ
## 60  ヒケルメ
## 61  メンタモ
## 62  エケチコ
## 63  ニチシヤ
## 64  テルメキ
## 65  モツロイ
## 66  エレサセ
## 67  ンスイハ
## 68  アモチセ
## 69  ノヤミネ
## 70  ヨストカ
## 71  ニヒラン
## 72  リノシナ
## 73  ハタヘス
## 74  メオヘセ
## 75  エヘミロ
## 76  トソテマ
## 77  ネイトフ
## 78  スイツヲ
## 79  カセレム
## 80  ツウコユ
## 81  ヤムニネ
## 82  サメネン
## 83  シテフケ
## 84  セロヲヌ
## 85  マシスエ
## 86  オンヤナ
## 87  トルキエ
## 88  ソヘトヌ
## 89  ヒカクニ
## 90  クケコツ
## 91  ヌリルホ
## 92  トサセリ
## 93  コロツム
## 94  ホリトク
## 95  モヲネヘ
## 96  ケシヨフ
## 97  テレメヘ
## 98  ナハヲモ
## 99  オレトル
## 100 レノケマ

おわりに

この記事では,Rを使ってカタカナの非語をランダムに生成するということをやってみました。いつか誰かの役に立ちますように。

なにをゆう たむらゆう。

おしまい。

余談

実は,以前RmarkdownからWordpressに直接流し込む方法という記事を書いていて,その方法を使ってRmarkdownで書いたものをブログ記事にしようとしました。ところが,knit2wp関数がうまくいってないのかエラーが出てしまって,結局うまく行きませんでした。これのために時間溶かすのもなんだかなと思ったので,HTMLで書き出して,それをテキストエディタで開いたものをコピペしてこの記事をつくりました(トホホ

【宣伝】タスク教材のお披露目!(2020/10/25)

来週10月25日(日)にオンラインで開催される「言語教育エキスポ2020補講」というイベントで,私が微力ながら作成に携わってきたタスク教材が初お披露目されます!当日は様々な発表がされる予定となっていますが,その中の,「言語教育エキスポが自信をもって紹介する言語教育出版企画」の中のセッションで,著者全員で教材の紹介をする予定です。

教材のタイトルは,『コミュニケーション・タスクのアイデアとマテリアル−教室と世界をつなぐ英語授業のために−』で,三修社さんから出版される予定です。出版社のページには,目次と簡単な紹介が出ています。まだAmazon等には出ていないようですが,その準備も進めているとのことで,間に合えば25日までにはAmazonのページもできると聞いています(注)。

当日の発表の要旨を以下に引用します。

英語教育の現状での課題、そして妥当な目標のあり方とは──その解をもたらす一つの有効な鍵が、授業への「コミュニケーション・タスク」の導入であると考えます。そうした課題の基本的な性格をはじめ、課題の難易度の捉え方、適切な課題の選択や文法の導入方法、評価法など、書籍内の例を取りあげつつ紹介します。学習者にとってより魅力ある授業作りに役立つ「現実世界へのアダプタビリティの高いタスク」を有効に用いるためのヒント満載のブック・トークへ、どうぞおいでください。

イベントの参加申込はこちらのGoogle Formからお願いします。

https://docs.google.com/forms/d/e/1FAIpQLSdQT3W7PLyqp0rKuCUtiZYYUB1qBm-GH_IanZL4Bogx37Ij_w/viewform

私達の教材のトークセッションは15:50〜16:50の予定となっています。参加申込していただくと,主催者からZoomのIDとパスワードが送られてくるということになっていると思います。ただ,出版社のセッションは出版社がZoomのホストになるようで,私のところにもIDとパスワードが知らされてそれで入れるようになるので,参加申込を忘れてしまった!という方は当日でも私にTwitter等で話しかけていただければIDとパスワードこっそりお送りできると思います(こんなこと書いていいのかな?)。

ちょっとした裏話

著者は中部大学の加藤由崇さん,名城大学の松村昌紀さん,Paul Wickingさん,立命館大学の横山友里さん,そして,中京大学の小林真実さんです。月に一度名古屋で開かれている研究会のメンバーが中心になって,毎月1度のミーティング(計25回),そして2度の泊まり込み合宿等を経て,ようやく完成までこぎつけました。最終的に教材として掲載されるタスクを絞り込むまでに,その何倍ものタスクをそれぞれの著者が考案し,それらを相互に検討し,ボツになったタスクも数え切れないほどあります。つまり,掲載されたタスクは厳選に厳選を重ねた上で選ばれたものです。また,著者の誰かが自身の教室で実践した上で提案されていますので,そうした意味でも実践に耐えうる素材が掲載されています。ただし,著者は全員が大学教員ですので,大学の場での実践を経たということですが,この本に掲載されているタスクは必ずしも大学生向けというわけではありません。しかしながら,少なくともタスクのいくつかは難易度を調整することで初学者向けのクラスでも十分に機能するはずで,どの校種の先生方にも手に取っていただきたいと思っています。

当初は教科書の形で出版することを考えていましたが,色々あって「教材集」という形となりました。正直に言って,このタスク教材というのは私達にとってもチャレンジングなタスクでした。というのも,これまでに多くの教材集・アクティビティ集は出版されてきていると思いますし,なかには「タスク」という名のついたものもあると思います。しかしながら,Task-based Language Teachingの理念に基づき,単なる文法や文型のなどの形式の練習とは異なる目的をもった課題を中心に編纂されたものはおそらくなかったと思うのです。そのようなものは日本では受け入れられにくいのではないかという意見もありました。一方で,タスクの話をするたびに,「すぐに使えるタスクがほしい」という声も多く聞いていました。まさにTASK TALK Vol. 29「フジタクさんと語る①」の会で藤田先生がおっしゃっていたことともリンクしていて,実際にやってみて,うまくいかなかったら自分でアレンジするし,そもそも人のアイデアが自分の教室でそっくりそのままうまくいくなんて思ってない,みたいな話もあるわけです。そういう方々にとっては,それこそ「明日すぐ使えるタスクがほしい」という思いもあるだろうと。そういう声に応えるということもこの教材を世に送り出す目的だと思っています。

私としては,以前にタスクは取り入れられないなんていうタイトルのブログ記事を書いたことがあります。「明日すぐ使える」っていうのは,普段はタスク・ベースでやっていないけどタスクを「投げ込み」的にやってみたいということだと思います。私としては,それを良い授業にしていこうとすると,必然的にすべての授業がタスク・ベースにならざるを得ないのではないかと考えてそういう記事を書きました。その考えは今でもあまり変わってはいません。

じゃあなんでタスク教材集なんか出してんだよって思われるかもしれませんが,この本がどうやって世の中に受容されるかは未知数だと思っています。よって,投げ込み的にうまくタスクを取り入れた授業を展開する方もいらっしゃるかもしれませんし,帯活動的に授業にタスクを取り入れて授業を展開される方いるかもしれません。そのあたりの実際にこの本がどう利用されるかというのは,本当にこの本を手にとってくださった方々次第だというふうに思っています。私個人としては,この教材集に掲載されたタスクを自分なりに選んで配列してタスク・ベースの授業を構想して使おうと思っています。教科書が指定されていない授業を担当されている方は,そういった使い方も十分に可能です。

おわりに

といった感じで,著者の一人である私も,この新しいタスク教材というものが,日本で売れるのだろうか…というのは本当に全く予想がつきません。そんな教材集の出版を引き受けてくださった三修社の方々には本当に感謝しています。もちろん著者の一人として自信を持っておすすめできるものになってますので,こうやってブログで宣伝して一人でも多くの方のところに届いてほしいと思っています。まずは,本の内容を知ってもらうために,ぜひ25日のブックトークセッションにご参加ください。Q&Aの時間も設ける予定になっています。

また販売が開始される時期に改めて教材の宣伝記事を書きたいと思います。

なにをゆう たむらゆう。

おしまい。

(2020/10/23追記)

注. Amazonでの予約販売も開始されています。書影も入りました。

slackの通話機能でスピーキング活動しよう(案)

はじめに

久しぶりのブログ更新になってしまいました。春学期中は色々slackを使って遠隔授業をどうやって進めていくかということを日々考えながら試行錯誤していたので,それをブログ記事に書くという動機も高かったわけですが,終わったら力尽きたというか,春学期のまとめを書く元気もなかったというのが正直なところです。

さて,私の勤務先では,来週月曜日(9/21)から秋学期授業が始まります。方針として原則対面授業ということになりましたので,久しぶりに教室で授業をすることになります。ところが,大教室で間隔をあけて授業できるというわけでもありません。授業は「試験定員で教室割当」となっていて,それだけを見ると普段より大きい教室が割り当てられそうな感じがします。ただ,実際には例えば机が1つずつ独立していれば収容人数=試験定員という考え方になっています。したがって,47人の教室でも47人以下ならセーフということになります。机が固定されていたり,長机の教室だと,3人がけのところを真ん中1つあけて着席ということになるでしょう。個人的には,屋外なのに客席を3つほどあけてJリーグの試合を観戦しているので,その半分くらいの距離しか空いていない上に屋内で,しかも発声がやむを得ない語学の授業を行うというのは換気を徹底するとはいえ心配です。

春学期のオンライン授業の際にはslackでテキストチャットさせるという手段でそれなりにうまくいっていたのですが,せっかく教室に集まったのにみな無言でテキストチャットさせるのかというと,ちょっとそこまで割り切るのは難しいなと感じています。かといって,「仕方ないよね!」といってコロナ禍前のようにペア・グループでのインタラクションを全面に押し出した授業をするという選択もしづらい。そんな悩みをここ一ヶ月くらい抱えていました。

解決策:春学期の蓄積を活かしてslackの通話機能を使ってみる

「教室で糸電話したらいいんじゃないの?」なんて言ってた同僚の先生もいたのですが,そういう使い回しのものは使用後の消毒が面倒になります。消毒するための費用を大学側が仮に負担してくれたとしても,そこに時間を割きたいとは正直思えません。よって,なにか学生が所有しているものを活かそうという考えになります。スマートフォンですね(注)。

授業内でZoomを使うか,という考えもあるかもしれませんが,zoomの利用は基本的に教員がホストで学生を招待という形がこれまで多かったはずで,学生同士が1対1ないしはグループでの通話を各自で行うというような使い方は導入のコスト(やり方の説明,ルールの統一,トラブル対応等)が大きいことが見込まれます。

そこで,slackの通話機能を使ってみようかなと考えています。要するにスマートフォンでペアの相手と電話するということですね。話すことには代わりないにせよ,向き合って話したり声のボリュームをあげなくても十分に会話できるのではないかと思うからです。

slackの通話機能は,同じワークスペース内のメンバー同士なら自由に通話が可能です。グループ通話は有料版でしかできませんが,教室内でのタスクをペアだけに限定することだけ割り切れば,意外と使えるのではないかと考えています。なぜなら,私の英語の授業では外国語学部の中国語専攻の学生対象の少人数(5人)のクラスを除けば,すべてのクラスでslackのワークスペースを作成してあり,学生がslackの利用に半期の間馴染んできているからです。もちろん,再履修で秋学期から授業に参加する学生も各クラス数名ずついますが,slackへの参加方法や利用法はすでに春学期に資料を作成済みであり,その数名に個別に対応する手間はそこまで大きくありません。

slackの通話機能は,MacやWindows上であればビデオ通話をすることができますが,iOS, Androidなどのスマートフォンでは音声通話しかできません。私はこれも逆にいいかなと思っています。教室で学生が一斉にWiFiに接続してビデオ通話したらキャパオーバーになる可能性は十分にありますし,そもそも教室にいるのだから隣同士で会話することにすれば一応相手を見ることもできます。

操作も簡単で,通話を掛ける側は,DMを送る画面で相手の名前を検索し,見つけたら右上にある電話のマークをタップすれば通話が開始されます(初めて利用する際はマイクへのアクセス許可がでてきます)。通話を受ける側はアプリを起動していなくてもLINEで電話がかかってくるのと同じような通知がくるので,ワンタップで着信を受けることができます。私も実際に利用したことはなかったので,ワークスペースのオーナーアカウントとは別のメールアドレスでワークスペースに入り2つのデバイスを使ってどんな感じになるのか試してみたというところです。

音声通話のみですので,スピーカーホンにしていなければスマホを耳に当てて通話することになります。これのいい点はハウリングを避けられるということです。イヤホンが必須かなと思いましたし,そうするとイヤホン忘れた学生がいた場合にどうしようかということも考えましたが,その心配はなさそうです。

問題点

ぱっと思いついた問題点は,奇数になったらどうするかです。

特にこの話だけに限らないですが,1対1の通話しかできない場合,3人グループが作りにくいという問題があります。普段なら2対1でもとくに問題があるわけではありませんが,できれば1つのスマホで複数人が会話するようなことは避けたいです。なぜなら,物の受け渡しが発生したり,学生同士の距離が近くなるということで感染防止対策の観点で問題があるからです。

では,ということで教師が学生の相手となってこの問題を解消しようということも考えられますが,通常以上にトラブルが発生する可能性が高いので,できればその際にすぐ対応できるように教師はできるだけ教室全体を観察できる状態でいたいと考えます。

スピーカーホンにするとハウリングの問題が出てきてしまいますし,それならもはやわざわざ電話じゃなくていもいいのでは?となりますよね。有料プランもそこまで安いものでもない(一番安いものでも1人につき850/yen per month)ので,このためだけに導入するというのは厳しいです。Microsoft Teamsも勤務先では使えるので,グループ通話が可能なそちらのツールを使うということも考えられます。ただ,私自身がそこまで使い方に習熟していないことと,新しいツールをさらに導入することで学生にかかる負担(アプリのDL等)を考えると,それも躊躇してしまいます。

発想を変えて,ペアの相手がいない学習者は教室を歩き回ってクラスメイトの言語使用を観察し,活動後に全体に対して報告してもらう役目を与えるという解決策もあります(こういうのがどこまで許されるのかはわかりませんが…)。その場にいるとはいえ,電話越しで行われるやりとりを観察するのは割と高度な技だと思うので,これもこの役割になったときにどのようなポイントで観察をするのか,どうやって報告するのかなどのガイドライン等を設けることも必要になってきます。

おわりに

奇数になったらどうするかということを考えるだけで色々なハードルも見えてきました。時間はないですが,とりあえず教室内で全員が通話することがそもそもできるのかということも含めて試してみてからその後の利用も考えようかなと思っています。

通常,電話というのは電話番号なりLINEのアカウントなり,プライベートで使っているものを相手と共有しないといけません。その点,slackはあくまで授業のためのツールで学生も使ってますので,プライバシーに気を使うことなく利用できる点が気に入っています。LINEのオープンチャットもそういう思想だと思いますが,LINEのオープンチャットは通話機能がないんですよね。ということで全員で連絡を共有するツールとしてはできますが,個々人がつながるという点では使えません。悩ましいですね。

最後に,対面でできる授業の工夫としてもっと汎用性の高い情報(それこそ公立学校でもできる工夫)としては,下記のようなものもあります(宣伝)。有料マガジンの一部ですが,興味のある方はぜひ。

なにをゆう たむらゆう。

おしまい。

注. ちなみに,そもそも私は大学しか想定してませんし,なんなら自分の授業のことしか考えていません。そのうえで,slack使ったらどうかなという記事を書いたら思いの外いろんな方に読んでいただいたのと同じように,どこかの誰かにヒットすればという思いでこの記事を書いてます。公立学校でそんなことできませんとかそういうのはどうかご遠慮ください。

Macの移行システムのあとDropbox沼にハマった

新しくMacbook Pro (13-inch, 2020, Four Thunderbolt 3 ports)を買いました。Macbook Air 2013 midからの乗り換えで,Macの移行システムを使ってデータ移行しました。MBA側でOSのアップデートがされていなくて何度も失敗したんですが,最新版にしたらWifiでもできました。Wifiでは無理っていう記事もたくさん見たんですが,5時間くらいで終わったと思います。私は基本的にファイルはOne DriveやDropboxに保存しているので,それらのファイルは移行対象から外して,あとで同期すればいいやと思っていました。

ところが,これがのちに問題になることに….

最終的に,下記の掲示板に掲載されているターミナルのコマンドを打ち込んだら解決しました。日本語では解決策を見つけられなかったので,英語ができてよかったと思いました。

https://apple.stackexchange.com/questions/128551/dropbox-asking-for-permissions-to-wrong-folder-after-changing-account-name

実は,このページに辿り着く前に,「まさにこの状況と同じ!」という相談内容が書き込まれていたページも見つけたんです。ただ,そこで示された方法を試しても解決されず。

https://www.dropboxforum.com/t5/Dropbox-files-folders/Can-t-start-dropbox-because-of-permission-error/td-p/22462

Dropboxの公式でも,上の掲示板で提案されているのと同じようにターミナルに打ち込む方法が書かれていたけど,それではうまくいきませんでした。

https://help.dropbox.com/ja-jp/installs-integrations/desktop/move-dropbox-folder

要するに,移行するときにアカウント名被りがあって,もともとは,Users/yu/~だったのに,Users/yu1/~というようになってしまっていたのです。そこで,アップルの公式サイトに書かれていた方法でyuに戻すという作業をしました。

macOS のユーザアカウントやホームフォルダの名前を変更する

変更はうまくいったものの,Dropboxを立ち上げるとUsers/yu1/Dropbox~というディレクトリを作ろうとして,「そんなものはないぞ」というエラーが出て詰んだということでした。

ターミナルから,Dropboxがディレクトリを作る場所を変更してあげることでうまくいったということですね(ターミナルのコマンドのそれぞれの意味はよくわかってない)。

なにはともあれ,解決してよかったです。また何年後かに同じ問題にぶち当たるかもしれないので,備忘録として。

なにをゆう たむらゆう。

おしまい。