カテゴリー別アーカイブ: 英語教育

[R] 同じディレクトリ内でファイルを複製する

はじめに

ライティングの授業で(またそれかよ),次のようなことを考えました。

テンプレートのファイルを作って,学生の人数分だけコピーし,さらにそれぞれのファイルに学生の名前をつけたい!

まず思いつくのは,雛形ファイルを作り,Ctrl+CとCtrl+Vを駆使して学生の人数分のファイルを用意し,1つずつファイルをリネームするといういわゆる土方作業ですが,そんなことやってられませんよね。というわけで,Rで簡単にファイル複製とリネームをやってしまおうということです。別に特別なことはしておらず,自分用のメモです。もっと簡単な方法があれば教えてください。

ワーキングディレクトリを変更

まず,ワーキングディレクトリを,テンプレファイルが置いてある場所に変更しましょう。

setwd("C:/Users/Yu/Desktop/test")
getwd()

## [1] "C:/Users/Yu/Desktop/test"


必要な情報を取得

ファイルをコピーする際にフルパスを使うので,その情報をあらかじめ変数に入れておきます。そして,list.files()関数で,ワーキングディレクトリ内にあるファイルの情報を取得します(別に1つしかないので手入力でもOKです)。そして,originalという変数に,テンプレファイルのフルパスを入れておきます。

dirnow<-getwd()
file<-list.files()
original<-file.path(dirnow,file)


ファイル名の準備

ファイルにつける名前の準備です。ここでは例としてアルファベットを使っていますが,学生の名前を使う場合は学生の名前をコピペする等してname変数に入れてください。その後,テンプレファイルの前に名前をつけてfilenameという変数に入れています。sep=”_”は区切り文字をアンダーバーで指定しているということなので,ここは任意の文字に変えられます。

name<-LETTERS[1:26]
filename<-paste(name,"test.docx",sep="_")
print(filename)

##  [1] "A_test.docx" "B_test.docx" "C_test.docx" "D_test.docx" "E_test.docx"
##  [6] "F_test.docx" "G_test.docx" "H_test.docx" "I_test.docx" "J_test.docx"
## [11] "K_test.docx" "L_test.docx" "M_test.docx" "N_test.docx" "O_test.docx"
## [16] "P_test.docx" "Q_test.docx" "R_test.docx" "S_test.docx" "T_test.docx"
## [21] "U_test.docx" "V_test.docx" "W_test.docx" "X_test.docx" "Y_test.docx"
## [26] "Z_test.docx"


ファイルのコピーとリネーム

それでは,ここで,ファイルのコピーとファイルの名前変更をfor関数で一気に行います。file.copy()関数は,fromでコピー元,toでコピー先を指定します。この時,fromではもとファイルのフルパスであるoriginalを使います。そして,toのところで,「ワーキングディレクトリ+名前変更後のファイル名」を指定してあげると,コピーされたファイル名に名前がつくことになります。paste()関数は,文字列結合の関数です。ファイルの一覧の中にblog.htmlとblog.Rmdというファイルが入っていますが,この2つはこのブログのために作ったファイルですので関係ないです。

for (i in 1:length(filename)){
file.copy(from=original,to=paste(dirnow,filename[i],sep="/"))
}
list.files()

##  [1] "A_test.docx"     "B_test.docx"     "blog.html"      
##  [4] "blog.Rmd"        "C_test.docx"     "D_test.docx"    
##  [7] "E_test.docx"     "F_test.docx"     "G_test.docx"    
## [10] "H_test.docx"     "I_test.docx"     "J_test.docx"    
## [13] "K_test.docx"     "L_test.docx"     "M_test.docx"    
## [16] "N_test.docx"     "O_test.docx"     "P_test.docx"    
## [19] "Q_test.docx"     "R_test.docx"     "S_test.docx"    
## [22] "T_test.docx"     "test.docx"       "test.Rproj"     
## [25] "U_test.docx"     "V_test.docx"     "W_test.docx"    
## [28] "X_test.docx"     "Y_test.docx"     "Z_test.docx"    



こんな感じでファイル複製とリネームができます。Google Classroomを使っていると、教材ファイルをコピーして配布という機能があり、それを使うと自動的に学生の名前のついたファイルができるのですが,それなしでやろうとすると,こうなるかなという感じです。

これを使って何をするかという記事はまた改めてポストしようと思います。

なにをゆう たむらゆう。

おしまい。

広告

Slackを用いた授業外ライティング活動の便利ワザ[Google Spreadsheet編②]

はじめに

下記の前回の記事の続きです。

Slackを用いた授業外ライティング活動の便利ワザ [Google Spreadsheet編①]

前回の記事では,Google Apps Script (GAS)を利用して,Slackに書き込まれた内容をGoogle Spreadsheetに記録し,その記録をもとに語数を数えるという話でした。この記事では,それをもう少し便利にするために,「ある特定の期間で区切って語数をカウントする」というお話です。例えば,1日ごと,1週間ごとみたいな。月ごとの場合は,前回の記事で紹介した方法は月ごとに新しいspreadsheetのファイルができるので楽なんですが,「同じファイル内のシートの中で一定の期間の間ごとに区切りたい」となると,少しだけ工夫がいります。といっても,spreadsheet内で関数を書くだけなのでそんなに大変なことではありません。一度雛形ができればあとはコピペして少し書き換えるだけですみます。

前回のおさらい

少しだけ前回の記事に書いた内容に触れておきます。GASを使ってspreadsheetに取り込まれた状態は,下記画像のようになっています。

Screen Shot 2018-09-24 at 22.50.58

A列が日付,B列が名前,C列が書き込まれたテキスト,D列がもとのJSON形式の情報です。このシートが,チャンネルの数だけ一つのファイルにある状態です。前回は,GASで更新されるこのシートの情報を以下のような手順に沿って使いました。

  1. importrange関数を使って別のファイルにエクスポート
  2. そのシートに語数をカウントするE列を挿入
  3. sumproduct関数で名前列を参照してE列の合計を求める

すると,下記画像のようなまとめシートができます。

sumproduct-example

今回は,そこに「日付の情報も参照する」という情報も付け加えていくことになります。

同じ月内で1週間ごとに語数を数える

では,実際に私がやっている実践に即して,1週間ごとに語数を数えるという作業をやる方法です。先程説明したように,前提は一ヶ月で一つのファイルができ,そのファイルの中にチャンネルの数だけシートがあるという状態です。同じ月内であれば一つのシートの情報で,以下のような作業をspreadsheetにやってもらいます(注1)。

  1. まとめシートのA列にあるセルの名前に当てはまるものだけをフィルタリング
  2. 参照元シートのB列にある日付の情報を参照し,指定した1週間のものだけをフィルタリング
  3. 1と2で絞り込まれたデータのE列の語数を合計して計算する

注意点は,参照するデータのシートでは名前がB列,日付がA列なのに,まとめシートでは名前はA列になっているという点です。どの列にどのデータがあり,どこの列を参照するのかを考えないと混乱するかもしれません。さて,前回はsumproduct関数使ったんですが,今回使うsumifs関数でも同じことが可能だと思うので,全部sumifs関数でやってもいいかもしれません。

先にあとで説明する作業が完了した状態のシートの画像を見てください。1つ前の画像の状態から,下記の画像の状態にすることが今回の目標です(注2)。

Screen Shot 2018-10-12 at 14.12.11

私がこのSlackライティング活動を採用しているのは金曜日の授業で,金曜日から次の週の木曜日までを1週間としています。日付で区切っていて時間で区切っているわけではないので,今回は日付で絞り込みにしています(午後5時までとかそういう切り方だと時間も指定する必要があります)。

では,上の画像のB2の列にはどのような式が入力されているのか見てみましょう。

Screen Shot 2018-10-12 at 14.12.38

画像中の式で最後に”-5″しているのは,最初は必ず”@XXX has joined the channel. “という5語の文が記録されているので,それを排除するためです。

sumifs関数の基本的な引数はsumifs(合計範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, …)のようになっています。合計範囲とは,合計を計算したい範囲のことですので,今回の場合はE列の語数の列を選択します。”Friday2_201809″というのが,金曜2限クラスの9月分のデータがエクスポートされたシートになります。このまとめシートはimportrangeで自動的にデータがエクスポートされるように設定しているspreadsheetファイルの中に作っているので,”Friday2_201809!$E$1:$E$1000″で,「9月分のデータのE列(語数列)」を合計範囲として指定していることになります。コピーしたときに範囲が変わることを防ぐために,絶対参照にしています。

2つ目の引数は,同じ”Friday2_201809″のA列を1つ目の条件範囲にしています。A列は日付の入っている列ですから,日付列を条件範囲としていることになります。そして,3つめの引数で日付の条件指定を行います。最初の1週間は,もともとデータ記録の一番最初(2018年9月21日)が1週間の1日目でしたので,7日目(終わりの日)だけを指定しています。これには等号・不等号の使い方でいろいろなやり方が考えられますので,この例は一例です。

“<“&”2018-09-28”

等号・不等号は必ずそれのみをクォーテーションマークでくくり,クォーテーションマークでくくった日付と&でつなぐようにします。上の式が意味しているのは,「2018年9月28日より前(つまり27日以前)」です。これで,9月28日0時00分以降の書き込みが排除されます。

4つ目の引数は条件範囲2です。”Friday2_201809″のB列を参照しています。B列は名前の入った列ですので,名前の絞り込みをしようというわけです。最後の引数は$A2です。「条件範囲2(元データの名前列)の中で,まとめシートのA2セルの名前に当てはまるものだけをフィルタリングしてね」ということです。指定する順番自体は前後していますが,上にも挙げた以下の3つの作業が1つの関数で実現されたことになります。

  1. まとめシートのA列にあるセルの名前に当てはまるものだけをフィルタリング
  2. 元ファイルのB列にある日付の情報を参照し,指定した1週間のものだけをフィルタリング
  3. 1と2で絞り込まれたデータのE列の語数を合計して計算する

これであとは,列を横に足して,別の日付指定をすれば,あとはその条件に当てはまるものだけが自動的に記録されていくことになります。合計範囲指定は固定ですが、条件範囲と条件の指定は名前が先で日付が後でも構いません。

1週間のはじめとおわりを指定する場合

さて,上のやり方は,1週間の終わりだけの指定でしたが,それが使えるのは最初の1度だけで,次からは1週間のはじめの日も指定する必要があります。「○月○日から○月○日まで」としたいわけです。これをやるには,sumifs関数の条件範囲と条件を1つずつ追加すればいいだけです。画像上では順番が前後しますが,下の画像のD列(10/5-10/11)の1週間を指定した場合を見てみましょう。

Screen Shot 2018-10-12 at 14.13.34

1つ目の引数は同じですが,2番目と3番目の引数で始まりの日付の指定,4番目と5番目の引数で終わりの日付の範囲の指定を行っています。

“>=”&”2018-10-05”

という指定は,「2018年10月5日以降」という指定になります。1週間の始まりですね。

“>”&”2018-10-04”

としても同じです。続いて,終わりの日付は,同じように日付列を条件範囲とし,

“<“&”2018-10-12”

を条件にしています。つまり,「2018年10月12日より前」ですので,2018年10月11日の23時59分までのデータが条件に当てはまることになります。

“<=”&”2018-10-11”

でも同じです(むしろこっちのほうがわかりやすいかも)。これで,始まりの日付から終わりの日付までの間の合計語数が計算されます。ここを任意の幅に設定すれば,1週間ではなくとも3日でも4日でも10日でも同じようにできます。

月をまたいだ1週間の語数

同じ月内でのやり方は上の2つのやり方の組み合わせで対応できます。では,月をまたいでしまうときはどうすればよいでしょう。上述したように,月ごとにシートが異なるわけなので,別々のシートに記録された情報を統合する必要が出てきます。ただ,難しいことはなく単純に足し算すればよいだけです。

Screen Shot 2018-10-12 at 14.13.15

この例では,Friday2_201809というシートに9月分,Friday2_201810というシートに,importrange関数でデータを同期させています。9月分のデータで,9月の終わりの数日間(この例では9月28日~9月30日),10月のデータで10月1日からの数日間(この例では10月1日~10月4日)の語数を計算し,合算するという作業です。

つまり,それぞれの月でsumifs関数を使った式を作り,2つのsumifs関数式を+記号でつないであげれば,月をまたいだ場合の語数が計算できます。不等号のみと,不等号+等号の意味の違いは,上で説明したとおりです。

おわりに

ということで,前回の記事で紹介したGASでデータを引っ張る作業,importrange関数でデータを別ファイルにエクスポートする作業と,今回の記事で紹介したsumifs関数で日付指定する3つのパターンを使えば,一定期間の間の語数記録は簡単にできてしまいます。

エクセルが得意な方はすでにお気づきかもしれませんが,実は,1行目に指定する日付を終わりの日付にし,そのセルを日付の範囲指定に利用することもできます。つまり,上の画像で言えば,B1セルに”2018-09-27″,C1セルに”2018-10-04″,D1セルに”2018-10-11″のようにするということです。ただ,見たときに1週間の範囲がわかるほうがいいかなという理由で,そういうやり方はしていません。

ということで,下処理問題は解決されていませんが,だいたいの語数を記録して,学生がいつでも見れるようにするということについては,前回と今回の記事の内容でだいたいカバーできるのではないかなと思います。今の所第三段は予定していませんが,今後もしも「こういう事が必要だなぁ」という事が出てきたら更新するかもしれません。

なにをゆう たむらゆう。

おしまい。

注1. おそらくExcelのピボットテーブルなら,同じ列に当てはまる複数の条件でのフィルタリング可能だと思うので,Excelならピボットテーブルだけでいけると思います。

注2. 画像で一目瞭然ですが,毎週書き続けられている学生と,すでに脱落してしまっている学生が分かれてしまっているのは問題で,これについては何かしらの介入が必要だと思っています。

Slackを用いた授業外ライティング活動の便利ワザ [Google Spreadsheet編①]

はじめに

便利ワザと言えるのかわかりませんが,とりあえず自分はこんな感じでやっていますというお話です。以下の話の発展です。

授業外でライティングする機会を確保するためのSlack

前提として,どのようにSlackを利用しているのかというお話です。google spreadsheetに書き出したデータの扱いについてにご興味がおありの方はこのセクションは飛ばしていただいてかまいません。私がslackを使おうと思ったのは以下のような考えからです。

授業外で,英語ライティングする機会を与えたい。できるだけ自由に書き込みができ,教員もそれを監視・管理しやすい。

やろうやろうと思っていたのですが,なかなかSlackの使い方もよくわかっていませんでした。共同研究の話等でもSlackを使い始めるようになり(サイボウズのサービス終了のため),自分もSlackに慣れてきたのでこの秋学期から導入することにしました。ここでも何回か記事を書いている外国語学部1回生向けのライティングの授業でのことです。

授業外でのライティングは,前記はLMSにある掲示板機能を使い,そこに私が毎週話題をポストしてそれについて各自意見を書き,お互いにコメントし合うというものでした。以下のリンクでそのことにも触れています。

https://tam07pb915.wordpress.com/2018/04/26/writing-class/

後期は,slackをclosed SNSのようにして使い,自由に英語でやりとりをするということを掲示板でのフォーラムライティングの代わりにすることにしました。前期のフォーラムライティングでは,「1人必ず○人にコメント」などとしたりして交流が生まれるようにしてみましたが,コメントが「テンプレ」化してしまったりしていたので,より自由にライティングのコミュニケーションができていったらいいなと思っています。

使い方のルールとしては以下のようにしています。

  • 一般的なルール
    • 自分のスマートフォンに必ずslackアプリをインストールすること
    • 書き込む情報については,既存のSNSに関するルールと同様,誹謗中傷や公序良俗に反する書き込み以外であれば,何について書き込んでも構わない(写真の投稿も可能)
    • 日本語での書き込みは一切禁止
    • 使い方等についての質問がある場合は,#generalに英語で書き込むこと
    • 他のクラスの人にも話題を共有したい場合には#randomに書き込むこと
    • 誰かの書き込みに返信(いわゆるリプ)をしたい場合は,”Start a thread”を使うこと
    • “Start a thread”機能を使うときは,”Also send to #channel-name”にチェックを入れること(こうすることで,メインのタイムラインでも返信が見れます)
    • 誰かに直接話しかけたいときは,@をつけること
    • 成績に算入するのは,自分のクラスのチャンネルに書き込んだもののみ(#generalや#randomや他のクラスのチャンネルに書き込んだものは語数に数えない)

評価方法は,毎週300語を学期の最終授業日まで続け,平均達成度(%)×5点を最終的な評定に加えるというものです。共通シラバスのため,授業外の課題に割ける評価の割合がもともと15点くらいしかないのでこのようにしています。そのために300語って結構えげつないなと思われる方もいるかもしれませんが,私もそう思っています。今学期の様子をとりあえず見てみて,ハードルが高すぎるために「コスパが悪い」と思われて取り組みが悪くなるということがあれば今後語数の基準を下げるかもしれません。

Slackデータのエクスポート

さて,上述のような形でslackを運用しているわけですが,私の扱い方だと「毎週300語」という設定にしているので,学生の立場からすれば「自分が今何語書き込んでいるのか」がいつでもわかるようになっていてほしいというのは当然でしょう。そのために教員がわざわざデータをチェックしてそれぞれの学生の書き込んだ語数を分析してまとめて報告するというのは無理でしょう。というかやってられません。そこで,エクスポート->語数の記録->まとめ,という一連の作業を自動化して,いつでも学生が見れるようにする必要があります。そこで,上に上げたスライドで浦野先生が紹介しているGoogle Apps Scriptを使うというわけです。浦野先生も紹介していますが,SlackのログをGoogle Spreadsheetに保存するという作業自体は以下の記事を参考にすればすぐにできます。

Slack のログを自動で Google Spreadsheet に保存する

問題は,その先で,語数の記録とそのまとめという部分になります。私自身がGoogle Apps Scriptをいじれないので,とりあえずは上記のリンクを参考にGoogle Spreadsheetにログを保存し,そのあとにGoogle Spreadsheetで頑張るということになります。Rでもログを取ってきてまとめて可視化みたいなことはできますが,自動化の部分が少し難ありです。Rのコードもそのうちここに投稿しようと思います。

Google SpreadsheetでSlackのログをいじる

Google Apps Script(GAS)は,自分で決めたトリガーで定期的に更新できるので,その頻度を好みに設定しておくだけで,定期的にデータを最新のものにするという作業はできます。最初は,ログのspreadsheetファイルにある各チャンネルのシートに列を追加して各行の書き込みの語数を記録し,それを別ファイルにピポットテーブルで吐き出すということを考えました。ちなみに,ログのデータは下の画像のような感じでチャンネルごとにシート1枚で記録されます。

A列が日付,B列が名前,C列が書き込まれた内容,D列はもとのJSON形式のデータです(注1)。最初は,このシートのE列に語数カウントの関数を入れていたわけです(excelで語数のカウント方法についてはググればすぐに見つかります)。ただ,それだとシートが更新されるとうまくいきませんでした。このチャンネルのシートをそのまま別シートで参照し,その参照したコピーのデータを使って…ということもやりましたがこれもうまくいかず。ということで,GASが作るスプレッドシートとは別のスプレッドシートファイルを作り,そこからもともとのスプレッドシートの中の特定のシートの情報を参照するという方法を取ることにしました。で,これexcelにもある関数のなのかは知らないんですが,Googleスプレッドシートには,importrangeという関数があり,これを使うことで別ファイルから参照ができます。以下のサイトなどが参考になりました。

【超便利】スプレッドシートで別シートから参照したり集計したりする方法まとめ

引数の基本は,importrange(“参照元ファイルURL”, “参照元シート名!特定セルor範囲)で,このimportrange関数は特定のセルのみを参照する場合と,範囲を指定する場合があるのですが,私は上の画像でいうA〜D列まですべてもってきたいので,範囲を指定することになります。とりあえず,1000行までを1シートに出すという設定だったような気がするので,A1:D1000を指定します。friday2というのは,金曜2限のチャンネルで,後ろのぼかしはslack上のチャンネルIDです。

このimportrange関数をA1セルに入力すると,シートにAからD列までのデータが取得され,参照元のシートがGASによって更新されれば,こちらのシートも更新されます。E列は手動で以下の画像のような関数を入れると,C列のセルの語数がE列のセルに記録されます。あとは,このE列の語数をB列の名前ごとに合計してくれれば,目的達成です。私は金曜の1限と2限に同じライティング科目の別クラスを持っているので,このログシートが2枚あり,そのまとめのシートも2枚あります。

まとめのシートで合計語数の表示

上画像のシート上でやってもいいんですが,見栄えもあるので別シートにまとめだけを作ります。これは,sumproduct関数をつかいます。sumproduct関数は,sumproduct(参照列=名前, 合計を数える列)のような形で使います。下記画像は,”Friday1_import”というシートに,importrange関数で参照元ファイルのデータをインポートしている場合の例です。A列に名前の一覧(注2),B2にこのsumproduct関数をいれます。あとはB2を下にコピーすれば,人数分の合計語数が表示されるというわけです。”Friday1_import”のシートには自動的にデータが追加されていくので,とりあえず1000行を超えないデータであればこれでなんとかなります。

棒グラフでも出したいということなら,範囲選択して棒グラフ挿入でOKです。あとは,このスプレッドシートのファイルを「閲覧可」の権限で共有してSlackに貼り付ければ,学生は自分の好きなタイミングで語数を確認できることになります。私の場合は「毎週300語」という課題なので,週ごとにデータを扱える必要があります。これはもう少し別の手続きが必要になるので,また次回ということに。今日はここまで。

なにをゆう たむらゆう。

おしまい。

注1: そもそも,ちゃんとした「下処理」をしないと,「@XXXXX has joined the channel」とかも記録されますし,絵文字1つが1語みたいになるので,ここでの語数は「アバウトな」語数ということになります。

注2: 私は試行錯誤しているときにピポットテーブルを使ったので名前の一覧はコピペでしたが,そうでない方はログデータの”@XXXX has joined the channel”の列だけソートして名前の一覧をゲットするなどの方法が必要です。

ピアフィードバックの話(ライティング)

今年度ライティングの授業を持っているという話を以前書きました(https://tam07pb915.wordpress.com/2018/04/26/writing-class/)。その授業では,基本的に4週を一単元として,異なるタイプのライティングをしていくという構成になっています。最初はnarrative,次はdescriptive,今はopinion writingをやっています。授業の基本的な構成は以下のようにしています。

 

1限目

  • 書き方についての枠組みの提示
  • ブレスト・プランニング
  • rough draftの執筆

2限目

  • 構成や言語面についての全体へのフィードバック
  • first draftの執筆
  • ピアフィードバック

3限目

  • first draftを見ての全体へのフィードバック
  • first draft(教員の赤入りのもの)へのピアフィードバック
  • second draftの執筆

4限目

  • second draftを見ての全体へのフィードバック
  • second draft(教員の赤入りのもの)へのピアフィードバック
  • フィードバックを受けたものを見てWritten Languaging

Final draftはLMSで電子的に提出させていますが,それ以前の授業内のライティングについてはすべてハンドライティングです。理由はパソコン室でやっていないというだけで,パソコン室使えるなら全部タイプさせてたと思います(よくわかってなかったので依頼書とか出しそびれた)。

上記の授業内容をご覧いただくとおわかりのように,ほとんどの授業のときにピアフィードバックを入れています。これが意味あるか無いかという話はとりあえず置いておきます。私がピアフィードバックを入れている目的は大きく分けて2つあって,1つ目は,他の人のを読むという行為を通じて自分が書くことへの刺激を得てほしいということです。クラス分けされているとはいえすらすらと分量を書けたり,語彙が豊かであったり,あるいは構造の複雑さも高かったりする学生がいる一方で,そうではない学生もいます。他の人のを読むことでライティングに苦手意識があるような学生には「良い部分は真似してほしい」という思いがあります。もちろん,単なる言語面に限らず「ロジック」とか,「文と文のつながり」という点にも意識は向けさせているので,そういうところにも注意しながら読んでもらえるようにしようとしています。

2つ目の目的は,いろんなケースについて,私の赤やコメントを見ることで,どこをどうすればよくなるのかのヒントを得てほしいというねらいです。私のフィードバックは基本indirectあるいはimplicitなので,誤りが含まれていたりおかしいと思うところに赤線や^をいれるだけで,特に正しいものを提示することはないです(たまにdirect feedbackしますが,説明はしません)。また,コメントは9割くらい日本語で(たまにめんどくさいときに英語で書きます),

こういうトピックセンテンスになっているのにボディがそれをサポートしてない

こっちのアイデアについては情報がたくさんあるのにもう一方については具体例も殆ど出てこない

こことここは本当に原因と結果の関係になっている?

なんかこの結論て最初に言ってたことと違う話になってない?

みたいな,構成に関わるものがほとんどです。そういう赤やコメントを見ながら読むことで,良いものとあまり良くないものの例を積み上げていってもらい,それを自分自身が書くときに生かしてほしいということです(注1)。もちろん,かなりできる学生は私が見逃していたような綴りの間違いや形態素の脱落なんかに気づいたりすることもあるので,ピアフィードバックをすることで形式に注意を向ける機会は得られているのかなと思います(ただしこれが自分が書くときの正確さの向上につながっているかは不明)。

ピアフィードバックをするときには,基本的にはドラフト用紙にコメント欄を設けて記名式でコメントとアドバイス(後者は書き手がreviseするときに必ず参考になるようもの)を出すようにということでやっています。

さて,ここまでが前置きなのですが,そのピアフィードバックをどうやるかという話です。最初の頃は,基本的には個人個人でもくもくとコメントを書くような時間を作っていました。20人弱×2クラスあるので,それを全部まぜこぜにしてランダムに配り,20分~30分という時間の中で最低○人のドラフトを読んでコメントをするという指示を出します。自分のペースでコメントをし終わったら前に戻して別の人のドラフトを持っていき,それにコメントして戻してはまた次の人のを取っていくというスタイルです。こういうふうにすると,自分のコメントに責任を持つことが必要になってくる一方で,なかなか「具体的なアドバイスができない」というケースが発生してしまうということが問題でした。また,個人個人の活動なのであまり盛り上がらないということもあります。実はみんなが静かに読んでコメントしている最中にもそこには「沈黙のインタラクション」があるわけなのですが,それは表面化しませんし,クラス全体の雰囲気もだらっとしてしまったり眠くなってしまったりするということもなくはなかったです。もちろん,1年生にしてはかなりレベルの高い学生なので,個人個人でやらせてもそれなりに読めてコメントも的確に出せるのですが。そんなときに,ある友人から,「ペアでピアフィードバックやらせるとめちゃくちゃLRE(Language Related Episode)出てくるよ」というアドバイスをもらいました。そこで,最近は少し形を変えてペアでやらせるようにしました。ただ,ペアでやらせると言ってもやり方はいろいろあると思います。私が今の所引き出しとして持っているのは次の2つのやり方です。

  1.  教室内でペアを作り,お互いのドラフトを交換して読み,口頭でコメントをし合う
  2.  教室内でペアを作り,2人で1枚のドラフトを読んで一緒にコメントを書く

1の方法をもう少し詳しく説明します。この方法は,他のペア活動をするときと同様にペアリングをし,5分間などの時間を設定した上でその制限時間内にパートナーのドラフトを読んで,口頭でアドバイスを送るというものです。この方法のメリットは,著者に直接コメントができるので,著者にしかわからない微妙なニュアンスや,ワードチョイスなどについて直接質問できたり,意味がわからなかった部分について「これってどういうこと?」などと聞ける点です。質問される側は,わからなかったと言われたところは書き直しが必要かもしれないと考えるでしょうし(この前提は甘い?),難しい単語はパラフレーズしたり説明を加えたりという工夫をしようとするケースもあります。また,自分に自信がなくても,「これってさ,ofじゃなくてinじゃないっけ?」という形で聞くことで,「あれ,どっちやったかな。ちょっと調べてみよか」みたいな感じで共同学習がスタートしたりもしているようでした。

2の方法は,前述のように,1枚持っていって読んでコメントするというのを繰り返すパターンを2人でやるものです。これのメリットは,1クラスしかなくても実施が可能な点がpracticalな点としてはあると思います。20人のクラスでもペアにすれば10ペアなので,1ペアにつき1枚ドラフトが渡っても常に10枚はストックが前にある状態なので,読み終わって手持ち無沙汰になるということがなくなります。フィードバックを出すという点については,ペアの相手と一緒にコメントを考えることで,「自分には見えていなかったところに相手が気づいている」というケースが割と出てくるようで,「他の人の書いた原稿」と「他の人のコメント」の両方から発見があるようです。ひとりで黙々とコメント書くパターンでも,自分の前にコメントした人のコメントは読めるようにはなっていますが,二人でコメントを考えるという作業のほうが自分の視点と他人の視点が対照されやすいのかなという印象です。ただし,この方法の問題点の1つは,ペアリングを工夫しないとふたりともなかなか意見が出てこずに沈黙になってしまうということです。私が観察している限りの印象では,熟達度が低い同士で問題が起こるというよりはパートナーとの相性というか,性格の問題が大きいように思います。クラスサイズが小さいですし,他の授業でも一緒というケースも多いので,割とクラスみんなそれなりに仲良しで誰とでも話せるような雰囲気はありますが,そうはいっても全員がそうというわけではないので,たまにこちらがうまく介入してあげないとなかなかアドバイスを出せないということになってしまうようです。1の方法ではあまりこの問題点は顕著ではないように感じるので,reciprocalな関係性がペアの中にあるということがカギなのかもしれません。

ということで,今回はピアフィードバックの3つの方法について記事を書きました。どれがより良いというよりは,クラスの雰囲気,授業の形態や授業のねらい,学生の様子など,いろいろな要因を考慮しながら使い分けていくのがよいのかなと思いますが,ペアでやる2つの方式は割とうまく機能しているかなという手応えがあるので,これからはそちらを中心にやっていこうかなと思います。むしろ最初はペアでやって,ある程度なれてきたらindividual workに移行するのがいいかもしれません。

久しぶりの更新でした。

注1. 授業内で書いたものを直後にフィードバックさせる場合にはこの部分はないです

なにをゆう たむらゆう。

おしまい。

ライティングの授業

外国語学部向けのライティングの授業で,授業内の学習とは別に毎週2編のライティング課題を出すことになっています。そのうちの1つではナラティブ・ライティングを書くことにして,掲示板に学生がそれぞれ書き込んでコメントし合うようにしています。最初の1つとか2つはこれまでに扱ったことのあるトピックでよかったのですが,毎週となるとなかなか考えるのもめんどくさい。ということで,ナラティブ・ライティング向けのトピック集がないかなとググったらちょうど良さそうなものがあったのでこちらから選んで毎週書いてもらっています。

500 Prompts for Narrative and Personal Writing – The New York Times

色々なカテゴリはありますし,トピックの選び方によってはある程度頻出しそうな文法項目を狙うこともできそうですが,あまりそういう考え方では選んでいません。文法の話は授業で書いているもののフィードバックとしてしていますし,(a) 英語を書くことに慣れることと,(b) クラスメイトと英語でコミュニケーションすること,(c) 色んな意見に触れる機会を作るということ,の三点をこの課題の主眼にしようと決めたからです。

フォーラムでは匿名にしていて,私だけが全員の名前を見れるようにしています。個人的な話などは名前を明かしてしづらいかもしれませんし,逆に誰が書いたかわからないほうが色々な人とコミュニケーションする環境になるかなと思ったからです。今のところ,匿名性があることによるネガティブな影響は見られていません(教員には見られているので下手なことはできないということもあるかもしれません)。

1つ困っていることは,やっぱり書きっぱなし状態というのはなんだかなあということです。フィードバックしたらその効果があるとは限りませんが,やっぱり読んでいると「ここはちょっとなあ」というのも出てきます。それを見ないふりするのもはばかられますが,かといって授業以外で毎週2編書かせてフィードバックなんてやってたらえらいことになってしまいます(一応簡単なコメントはしますけど)。ちなみに,2編のうちのもう1編はTED TALKの紹介文を書くということにしています。こちらは特にコメントし合うことは義務付けていませんが,そうした方が良かったかなとも思っています。

フォーラム上で書かせると,LMSの特性上個人として書いたものを蓄積し,それを振り返ることが難しくなってしまいます。そこで,フォーラム上で書いたものをcsv形式でダウンロードし,そこからコメントだけ除外してもとのエッセイのみを抽出してWordに差し込み印刷して返すということにしています。そうすれば,10数編の自分の書いたプロダクトが手元に残ることになるので,あとから振り返ることもできます。

というわけで,今まで特定のスキルに特化した授業を持ったことがなかったのと,今まで自分が教えたレベルよりもかなり高いレベルの学生を教えているので,試行錯誤の毎日です。学生に助けられながらなんとかやっています。

なにをゆう たむらゆう。

おしまい。

 

KELESセミナーでいただいたコメント・質問に答えます(後半)

この記事の続きです。途中まで書いていたのに,前半の記事をアップしてから2週間以上が経ってしまいました。この記事で私がいただいた質問・コメントにはすべてお答えしています。


コメント①

大学の授業で中学の教科書のような乗り換え案内の内容をやる一方で,入試や高校の教科書の内容は整合性がないように思えます。

お返事①

コメントありがとうございます。私がセミナーの中でお話した,私の担当する授業に関することの中に,乗換案内の話が出ていましたね(スライドでいうと8ページ目から)。補足しますと,私の非常勤先には英語の入試はありません。それでも「大学生」ですし,「英語」の授業を受けています。「大学生」に「中学の授業のような」課題をやらせるなんて,とお思いかもしれませんが,現実に,それが目標となる「大学生」を私は教えているという現状もあります。もちろん,大学が違えば学生が違いますので,大学が変われば私も「中学教科書のような」課題はやらないと思います。それができないので,まずはそのレベルの課題を,ただの会話パターンを暗記して話すような活動としてではなく,自分の言葉でなんとかやりきる力を身に着けさせたい,というのが,私の教師としての思いです。

質問者の方に満足していただけるかはわかりませんが,私からのコメントは以上です。

コメント②(①と同じ方からです)

生徒の言語リソースが蓄積されずとも現実に進級できる中,どうやって高次の活動を行わせれば良いでしょう?

お返事②

コメントありがとうございます。なぜ蓄積されないのに進級が可能なのか,私には不思議に思えて仕方がないのですが,本当に「ゼロ」(何も学んでいない)ということなら,進級させるのはおかしいと思いますし,「進級できないのでは」という時点で何かしらのサポートが必要になるのではないかと思います。別の可能性として,「本当はゼロではない」のに,ある側面からしか見ていないと「ゼロのように見える」ということもあるかもしれません。この場合は,彼らがどんな英語の力を持っているのか,多角的に評価してあげる必要がありますし,それらを活かしてより高度な課題が遂行できるように手助けしてあげられると良いのではと思います。

コメント③(①と同じ方からです)

やり方次第なのは承知していますが,タスク・ベースの授業を積み重ねれば,授業だけで東大・京大にはいることができるようになりますか。なると思いますか。

お返事③

コメントありがとうございます。どうでしょう。まず,「授業だけで」,つまり学校の授業時間のみの学習と,学校の教員が課す授業外学習のみで,本人の意志による自習や塾・予備校などでの学習を一切行わないで,東大・京大などに入学する人がどれくらいいるのかが気になりますね(そういう学習者ももちろん数としてはいることは間違いないでしょうが)。質問の意図が,そういうことではなく,「入試対策的または入試を意識した授業をそっくりそのままタスク・ベースの授業に変えても,生徒は東大・京大に入れるのか」であるとしたら,私には「できるようになる」とは言えません。わかりませんとしか言えません。

「なると思うか」については,「なるんじゃないか」と思いますが,そのときに,それが「タスク・ベースの指導の効果があったからか」と問われると,それもわかりません。上で述べましたように,今,入試に受かる英語力をつけた学生のその力のどの程度が「授業だけ」や「教師の指導方法だけ」の効果(他の要因を統制したときの影響)によるものなのかわからないからです。もちろん授業の効果は大きいのではないかと思いますが(調べたらそういう研究があるかもしれません),授業のやり方が変わることによって入試の合否が変わるほどの影響があるのかはわかりません。入試が変わらなかったとしたら,「入試対策」的なものが授業の外で何かしらの形で行われるようになるかもしれませんので。歯切れの悪いコメントで申し訳ありません。

コメント④(①と同じ方からです)

正直,現役の高校教員としては時間がなく,工夫工夫と言われても自分は良くても同リョウ[原文ママ]にはまだ求める事ができません。ぜひ教科書,シラバスとしてシステムで提供してください。

お返事④

コメントありがとうございます。「教科書やシステムで」というのはごもっともであると思います。しかしながら,なぜ現時点でそうしたものがないのかについては,いくつか考えられる理由があります。1つ目は,中学校あるいは高校を卒業する時点で身につけておくべき能力についての合意形成ができていないことではないでしょうか。CAN-DOリストは学校ごとに作るようになってい(ると思い)ますし,その中で教科書としてタスク・ベースのものを作るのは困難です。2つ目は,例えなんらかの基準に基づいてタスクを選定し,その配列を決めた教科書やシラバスを作っても,商業ベースで売れない(利益が出ない)ということがあるかと思います。

そこで可能性として考えられるのは,様々なレベルの,様々な種類のタスクが豊富に掲載された教材集を作ることです。その教材集を参考に,先生方自身にタスクを選んで配列してもらうことで,目の前の学習者に合ったタスク・ベースのシラバスを作るということはできるかもしれません。私自身の数少ない経験では,「教科書」があることで逆に教科書に縛られてしまい,タスク・ベースの授業を展開しづらいということになってしまうと感じています。

もう1つの可能性は,単一の授業実践ではなく,シラバスレベルでタスク・ベースの実践を共有していくことです。大学レベルでは,タスク・ベースの実践をされている方は国内でもいらっしゃいますので,そうした方々が,シラバスとして半期または年間でどのように授業を計画しているのかということは,他の先生方がタスク・ベースのシラバスを構築するヒントになるかもしれません。ただ,他の方の実践はそのまま自分の環境に当てはまるわけではありませんので,やはり何かしらの改変は必要になります。結局のところ,タスク・ベースのシラバスとはtailor-madeのシラバスになりますので,どの環境でも同じようにできるタスク・ベースのシラバスというのは難しいのかもしれません。だからこそ,どうしても,今現在先生方がされている実践をベースに「工夫を」ということになってしまいます。この点については,今後の課題とさせていただけませんでしょうか。私からのお返事は以上です。コメントありがとうございました。

コメント⑤

ご自身の普段のエピソードも交えてお話いただき,とてもわかりやすかったです。

2020年以降の入試改革で,中・高の授業はどのように変わっていくと思われますか?または,どう期待されますか?

お返事⑤

これは難しいですね。私としては,スピーキングやライティングも含めた4技能の入試になることでいい意味で波及効果としてスピーキングやライティングも授業の中で扱わないわけにはいかなくなってくるという点では期待しています。しかしながら一方で,そのスピーキングやライティングの扱いが「試験対策」的なものになってしまうことは危惧しています。そうなると,結局ライティングやスピーキングの「型」や「パターン」を覚えてその型どおりにうまく書いたり話したりできることが入試で高得点を取ることにつながってしまうかもしれないからです。これは全部悪いというわけではなく,何もできないよりは型どおりにでも書いたり話したりできる方が良いに決まっています。ただし,行き過ぎると「型通りにしかできない」という学習者を大量に生み出してしまうという可能性もはらんでいます。入試というか,客観的な測定を突き詰めるとどうしても得点の高い学習者のパフォーマンスと得点の低い学習者のパフォーマンスを弁別できるようにせざるを得ず,そうなるとそこに一定の傾向なり,「型」が生まれることになってしまいます。外部試験を運営している方々にはそうしたことに出来る限り配慮したパフォーマンス評価が求められると思いますし,教員側としても「型」の練習になってしまわないような試験対策が求められるのではないでしょうか。

コメント⑥(私に対しての質問かわかりませんが…)

もっとinputを増やしたい!!と思った生徒に対して,特別な宿題を出すなどはされているのでしょうか。

お返事⑥

今期は多読をやろうということで毎週1冊多読用の本を読んで感想を書くという活動をやっていましたが,そういうことではなしに「宿題」を出すことは今のところはありません。もし仮に個別に相談があったら,学習者のレベルに合わせてどんな方法でインプットを増やしたらよいかはアドバイスすると思います。

コメント⑦

I’m sorry your talk wasn’t so interesting to me. Your messages weren’t so inspiring either. Sorry

お返事⑧

率直なご感想をお聞かせいただきありがとうございました。interestingかつinspiringなtalkができるように精進したいと思います。また,このテーマにつきまして,どのような内容であれば,またどのようなメッセージであればinterestingでinspiringだと思っていただけたのか,今後のためにご教示いただければ幸いに存じます。

 


ここまで読んでいただいた方,また,この記事を御覧頂いているかわかりませんが,コメントを書いてくださった方,ありがとうございました。未熟者の私を講演者としてお呼びくださった関西英語教育学会の先生方にも改めて感謝申し上げます。この経験を無駄にしないようこれからも授業・勉強・研究に邁進したいと思います。今後共よろしくお願い申し上げます。

なにをゆう たむらゆう。

おしまい。

How many bags are there?

ちょっとした英語の小ネタです。リスニングの問題で,空港のチェックインカウンターでのこんな会話が流れたとします。

A: How many bags would you like to check in?

B: Two. Can I bring this bag with me?

A: No. problem. This is your boarding pass. Boarding begins at 11:20 a.m.

(三修社 Make It Simple, p.76)

問題です。男性が旅行に持ってきた荷物は全部でいくでしょう? 続きを読む