タスクにおける”sub-goal”という概念

はじめに

下記の本を月例の研究会で1章ずつ読んでいます。

Recent Perspectives on Task-Based Language Learning and Teaching

Ed. by Ahmadian, Mohammad / García Mayo, María del Pilar

この本全体については,Cognitive-Interactionist, Sociocultural Theory, Complexity Theory, Pedagogic and Educationalという4つのperspectivesからなる12章の本で,個人的には通読するよりも気になった章だけつまみ食いするという読み方がいいかなと思います。正直言ってあまりおもしろくない(質があまり高くない)チャプターも結構ありますので。

 

第7章がおすすめ

この本の第7章は,Martin Bygateが書いた”Dynamic Systems Theory and the Issue of Predictability in Task-Based Language: Some Implications for Research Practice in TBLT”という論文です。タイトルにDynamic Systemsと書いてありますが,そこまでDSTを推しているということではなく,「タスクってさ,何かやらせてみてもどんなことが起こるかわからないしリアクティブに教えるのがいいっていうけどやっぱそういうの不安だもん」みたいな言説について,predictabilityが一応ありますよっていうことを言うための理論的基盤としてDSTを持ってきているという印象です。それをベースにして,ケーススタディ的にデータを見てみるというようなのがこの論文の流れです。

この章を読むまでは,「この本は失敗だったかもしれない」と思うほどがっかりさせられるようなものが多かったのですが,この第7章は面白いなと久しぶりにワクワクしました。もちろん,ちょっとそれはどうなのと思うところもあるにはありました。ただ,それを差し引いても面白かったです。

 

何がそんなに面白かったか

一言で言えば,この記事のタイトルにもしている”sub-goal”という概念を導入している点が個人的にはこの論文で一番inspringだと思ったところです。示しているデータはおそらく過去の研究のものでしたし,特に分析をしっかりしているということではないのですが,それでもこの”sub-goal”というものはTBLTの研究でいろんなことができそうだなと思えた,そう思わせてくれるような内容でした。もちろん,実践においても示唆があることだと思いました。

sub-goalとはなにか

TBLTをご存知の方には馴染みのあることだと思いますが,タスクにはゴールがあります。spot-the-difference taskなら2つの絵の間にある違いをすべて見つけ出すことがゴールですし,picture description taskなら絵(または写真)を見ずに口頭で描写し,もとの絵(や写真)にできるだけ近いものを完成させるというのがゴールになります。この章で例として用いられているタスクは,6コマ漫画を6人で分割して1人が1コマずつ持ち,見せ合わずに正しい順番に並び替えるというものです。この場合,「正しい順番に並び替える」というのがゴールになります(注1)。

Bygateが言っているのは,このゴールに向かう前の段階にいくつかのphaseがあるということです。どんなphaseかというのを説明する際にBygateは,pragmaticとかdiscourseとかいう言葉を説明の際に使っています。少し長いですが,このphaseについて説明している箇所を本文から引用します。

A phase was defined in terms of the pragmatic coherence of a stretch of discourse which while not in itself achieving the overall task goal, likely contributed to achieving a useful enabling sub-goal. For instance, descriptions of the individual pictures in random order would contribute to the sub-goal of sharing information about the pictures, but would not themselves achieve the overall goal of sorting out the sequence and telling the story (even if by chance the students did actually provide the descriptions in the exact sequence of the narrative). Similarly, discourse during which students exchanged information about what they thought was going on in their respective pictures could not be interpreted as ‘telling the story’ either. Where students spent time suggesting potential sequencing of the pictures (still without seeing them), possibly accompanied by brief justifications, this kind of talk too contributes to a potentially useful subgoal, but still does not constitute the ‘telling of the story’. Hence the macro-purposes of the different discourse phases were inferred in relation to the pragmatic criterion: what are the speakers jointly trying to do at this point? Identification of phases enabled an assessment of the trajectories that the groups followed (p.155).

上の引用中では,”(sorting out the sequence and) telling a story”というのがタスクの最終的なゴールで,そこに到達するために有効なやりとりや言語行為をphaseとしています。複数コマ漫画の並び替えならば,まずは個々人の持っている写真を描写することからスタートすると予測されるので,それが一つのphaseになるというわけです。そして,自分の写真とグループメンバーの写真についての情報を全員が持った状態で,それぞれの写真に描かれている情報の違いを見つけることになります。そして,「いったいどんなストーリーなのだろうか」という話をしながら前後関係を特定していくことになると予想されます。これらの段階もすべてphaseであると。そして学習者はこういった複数のphaseを経て,最終的なゴールに辿り着くというわけです。

Bygateは,複数コマ漫画並び替えタスクでは次の5つのphaseがあるとしています。

  1. Description
  2. Comparison
  3. Interpreting gist
  4. Sequencing
  5. Narrative

ちょっとなんでだろうなと思ったことは,タスクの特性などから予測してこのphaseを導出したのではなく,実際の発話の書き起こしを分類してそれぞれのラベルを貼ったという点です。その後に,結果の解釈として,「複数のグループでタスクをやらせたけど,ほとんどのグループのタスク遂行中の発話に5つのphaseが見られた」みたいな議論に持っていっているのです。そして,このことから学習者たちのやりとりは予測可能なtrajectoryを通ってゴールに向かうという話につなげています。もともと発話データから導出した概念なのだから,導出に用いたものと同じ発話データにphaseが見られるのは,複数グループで見てみたとはいえある程度当たり前なのでは…という話です。さらに,もし仮にそこに違いがあり,違うグループでphaseの種類や用いられた数が異なっていたとすれば,最初に設定した5つのphase自体がそもそも分析に役に立たない枠組みだということになりますよね。この点については謎です。

また,個人的に気になったのは,最終的にタスクを達成できたかどうかと,用いられたphaseの数自体には関連が見られなかったという点です。例えば,分析している5つのグループのうちで3のgetting gistが見られなかったグループが1つ,5のnarratingが見られなかったグループが1つ,2のcomparisonと4のsequencingが見られなかったグループが1つという記述がありますが,この3つのグループはいずれも最終的なゴールである並び替えには成功しているというのです。この部分については,例えばcomparisonがなかったグループはもしかするとズルして絵を見せあっていたのかもしれないというような考察がなされています(このグループは終わるのも早かったらしいです)。しかし,もし仮にタスクの最終的な達成と何も関連がないのであるとすれば,このsub-goalという考え方自体がそんなに大事なものなのか?という疑問も湧いてきます。

さらに,言語使用面についてはphaseによって特徴的な部分が見られなかったと考察しています。つまり,同じphaseなら同じような言語表現が用いられるというようなことはなく,同じcomparisonというphaseでもグループごとに様々な表現を用いて行っていたと書かれています。ただし,”linguistic domains“については予測が可能かもしれないとしています。このdomainの例として,下記のようなものがあがっています。

the language for expressing impressions, inferences and approximations; the language of description and for identifying similarities and differences; the language for expressing motivations and consequences; the language for sequencing; and the language used for checking understandings (p. 160).

素人考えでちょっと微妙だなと思うのは,このdomainというのはほとんどphaseのラベルと同じようなものなのではということです。会話分析みたいなことに明るいわけではないのですが,ここまで抽象度があがってしまうと,それが予測できたことで何に活かされるだろうかということは疑問です。

 

sub-goalという考えのなにがそんなに大事?

さて,なんか,sub-goalってなんか別にそんな大事じゃないじゃんと思っておられる方もいるでしょう。私もここまでは批判的に書いてきています。ここからは,「そうはいっても結構色々なところに通じる概念じゃないかな」ということを書きたいと思います。

先ほど,「タスクの達成とは関係ない」という議論がされていると書きましたが,もし仮にそれがそうだったとしても,教室場面での教育介入を考えた際にはsub-goalという概念は大事だと思います。まずは,授業の準備段階でsub-goalは役に立ちます。

 

タスクの作成・計画段階で有益

これはタスクに限ったことではないのですが,どのような言語活動を仕組むにせよ,教師は活動を考え,その手順を構想し,最終的にどこに辿り着くことを目指すのかを思案しますよね。その際に,活動に取り組ませたときにどのようなことが想定されるかを全く考えない教師はいないと思うのです。「きっとこんなことが起こるだろうな」とか,「こういうことになったらどうしようか」などと考えながら,事前に準備しておいたほうがよいことについては仕込んでおき,指示の与え方や順序を工夫したほうがよさそうならそのように対策を打っておくはずです。このとき,例えば事前にタスクのsub-goalがわかっていれば,学習者が起こす行動の予測がつきやすくなるといえます。冒頭にも書きましたが,タスクは(特にやりなれていないものをやる場合は)出たとこ勝負の部分もあり,何が起こるかわからないから事前にあれこれ教えてこちらの想定内でやってほしいという教師の思いも理解はできます。しかし,今後sub-goalという枠組みで様々なタスク遂行中に発生するsub-goalsが明らかになってくれば,「このタスクをやる際にはおおよそA, B, C, Dのような4つのphaseを通過すると考えられます」みたいな提案ができますよね。これが事前にわかっていれば,自分の教えている学習者との兼ね合いで準備が必要な部分や,そのタスクに取り組む前にやらせたほうが良いことを前時にやっておくというようなことができるのではないでしょうか。もっと言えば,sub-goalが目標になるような”sub tasks” を用意して,それらのタスクに取り組ませた後のもっと大きなチャレンジとしてsub-tasksが複合的に必要となるような別のタスクを用意するというようなことも考えられます。このように,タスクを構想したり,授業の計画を立てたりする際に,sub goalsが明確になっているということは大事だと思っています。

 

タスク遂行中の介入指導で有益

次は,実際に教室場面での指導において,sub-goalがわかっているということが役に立つ場面を考えたいと思います。あるタスクを与えて,学習者がそれに取り組んでいるとき,なかなかうまく言っていないことに教師が気づいたとします。例えば,複数コマ漫画の並び替えタスクで沈黙してしまっているグループがあったとしましょう。このとき,どのように促せばタスクのゴールに向かえるでしょうか。このときも,sub-goalはヒントになり得ると思います。例えば,5つあるphaseの序盤でつまづいているようならば,「まずは全員の持っている絵について描写して,自分の持っているものと他のメンバーの持っている絵の違いがどこにあるかを特定してみよう」という指示ができると思います。つまり,descriptionとcomparisonというsub goalを明示するということです。その先の,みんなの持っている絵の違いはわかったけど,そこから先に進めないというグループがいたら,「全員の絵の情報を統合して,ストーリーを考えてみよう」という指示も可能でしょう。もちろん,phaseは順番にこなさなければいけないということではありませんが,指針としてその場で与える分には問題ないでしょう。

そんなめんどくさいことしなくても,「じゃあ最初から,『まずは描写,そして比較,あらすじの解釈,並び替え,ストーリーの完成』というphaseをすべて提示してそのとおりにやらせればいいではないか」という意見もあるかと思います。学習者のレベルによってはそうした道筋を示すことも必要になってくるかと思いますが,Bygateは,phaseに完全な順序があることや,まったくoverlappingがないということを否定しています。

it is important to note that the phases do not imply total predictability. For one thing, the phases sometimes occur more than once in a single transcript, with students going backwards and forwards between, say, finding the gist and trying out a sequence (p.160).

また,「たとえsub goalsが明示されなくとも学習者たちは多かれ少なかれphaseを経てゴールに到達する(=予測可能性がある)」ということを言っています。つまり,phaseは与えられなくてもある意味でタスク達成に向かう試行錯誤の中で創発するということですね。それを手助けしてやることはあったとしても,最初からこの通りにやりなさいというのはtoo much interventionかなと個人的には思います。「正しい手順」や「理想的な手順」のようなものがあると学習者が思ってしまい,それに囚われすぎてしまう可能性があるからです。例えば,2. comparisonからいきなり4. sequencingに入ることも十分にありえることです。「まって,私の絵ではりんごは食べかけで,Aくんの絵ではりんごは丸々1つあるから,きっと私の絵はAくんの絵よりあとにくると思う」のような発話が起こることは歓迎されるべきで,「まって順番考えるより先にストーリーをつかもうよ」となってしまっては学習者の自由な発想が抑制されてしまうかもしれません。よって,sub goalを与えてそれに沿ってタスクを行わせることは有効な手立てとは言えません。

つまり,事前に教えてそのとおりにやらせることができるから役に立つというわけではありません。そうではなく,リアクティブな指導がやりやすくなるということです。教師自身がsub goalsを把握した上でタスクを用いれば,そのグループの状況に沿って,またはぶつかっている困難点に合わせてリアクティブに介入を行うことができると個人的には思っています。

事後のフィードバックで有益

sub goalという考えは,事後のフィードバックにとっても有効かもしれません。もしも,時間内にうまく課題を達成できなかったグループがあったとして,そのタスクにおいてsub goalsをいくつ達成できたかという点で見てみると彼らの課題が見つかるかもしれないからです。Bygateの示したデータでは,すべてのグループがタスクを達成したため,「phaseとタスク達成の関係」は完全には明らかになっていません。タスクを達成できなかったグループがいたとして,そのグループがもし仮にすべてのphaseを通過したのにできなかったとすれば,phaseはirrelevantということになります。しかしもしかすると,どこかでつまずいたことが原因でタスクを達成できなかったという学習者がいるかもしれません。絵の微細な点について,描写しなかった(またはできなかった)けれども実はその点が他の絵との違いで,その情報を全員で共有していればタスクが達成できたかもしれないということはありえます。別のケースで,sequencingでつまづいて終了してしまったとします。このときに,follow, precede, come before, come after, first, next, then, before, afterのような前後関係を表す表現がうまく使えなかったので並び替えができなったということがわかれば,その学習者たちに必要なのはこうした前後関係を表現する言語リソースが足りていないということになり,そこがteaching pointになるでしょう。言語面については,varietyが大きすぎて一貫性は見られなかったというのがBygateの結論でしたが,具体的な場面での話に限定すれば指導のヒントにはなるでしょう。

研究への示唆

研究という視点では,このBygateの論文からもう少し発展させた研究が必要だと思います。例えば,他のタスク(意思決定タスクなど)でも同じようにphaseの共通性は高いのかどうかや,同一タスクでタスクの諸条件(複数コマ漫画並び替えタスクにおけるコマの数やグループの人数の組み合わせ)が変わってもphaseに変化はないのか,などが気になっています。

また,Bygateは会話の書き起こしからphaseを導出していますが,そうではなく,教える側があるタスク中に発生すると考えられるphaseを予測し,それがどの程度実際の会話で起こるのかといったこともpracticalな意味で関心があります。

あとは,少し非現実的かもしれませんが,実験的な操作を加えて群間比較するというデザインも思いつきます。たとえば,複数のphaseの中で特定の1つを禁止するような指示を与えてみて,そのグループがどれだけタスク達成に困難を抱えるかを比較することで,タスク達成に寄与しやすい(または必須かもしれない)phaseを特定するというようなこともできるかもしれません。

おわりに

以上,Bygateが提案した,taskのsub-goalという点について,批判的に検討し,その後に,意義があると思われる点についていくつか述べました。やはり,タスクの中身,つまりタスク遂行中に何が起こっているのか,そうしたことを,sub-goalという概念で整理することを試みたことにこの論文の意義があると思います。DSTの枠組みにうまくfitしているかという点についてもやや疑問があったのですが,あまり詳しく批判できるほどの知識を持ち合わせていなかったのでそのあたりはまた別の機会にということにしようと思います。ということで,今回は久しぶりにTBLTに関するお話でした。

なにをゆう たむらゆう。

おしまい。

注1. もちろん,仮にオリジナルのストーリーとは違う順番であったとしても,こちらの想定を超えたイマジネーションで別の順序でも筋の通った物語になるということがあれば,そしてそれを説明できれば,「正しい」順番ではなかったとしてもタスクのゴールを達成したと評価することもできると思います。

 

広告

「しっかり」っていうの禁止

はじめに

前々から思っていたことなのですが,何度も言うのも嫌になってきたのでここにまとめて日本語で書いておきます。

私自身も「しっかり」という言葉を使っていることはあるかもしれません。よって,以下に書くことは,「自戒も込めて」ということになります。

言いたいことはとてもシンプルで,

「しっかり」,「ちゃんと」,「うまく」あたりの副詞って何か言っているようでほとんどなにも言っていないのと同じだから使用禁止

というだけです。「しっかり」・「ちゃんと」に比べると,「うまく」は事情が若干異なる場合もありますが,それでも別の言葉で言い換えたほうが良いことには変わりないと思います。幅広いコンテクストに当てはまることだと思いますが,特にこの記事で私が念頭に置いているのは,自分の思考を言語化したり,目標設定をしたりするときです。そうした場面では,「しっかり」系の言葉を使わないほうがよいでしょう。

なぜ「しっかり」はだめか

私は学生に,その授業で学んだことだったり,学んだことを次にどう生かしていくかという目標設定だったりを,いわゆる「振り返りシート」に書くことを毎週の授業で求めています。そういうときに,例えば,以下のような例が散見されます。

来週は課題をちゃんとやる

AとBの比較をしっかり書けるようにする

こうした記述を見ると,「ちゃんと」とは,課題で求められている事に対してのをあげていきたいということなのか,あるいは,極端に言えば質はともかくとして定められた期限までに提出するということなのかがわかりません。最悪のケースだと,「課題をちゃんとやる」の「ちゃんと」が何を意味しているのかについて無自覚であるということもあるかもしれません。そこが曖昧であれば,「ちゃんとやれたのか」の評価もできませんし,目標に対して自分がどう行動すべきであるのかも見えてきません。

「しっかり書けるようにする」のケースも同様で,「しっかり書く」とはいったいどういうことなのかがわかりません。つまり,どのようなプロダクトができあがれば,「しっかり書けた」のかがわからないということです。ただの,「AとBの比較を書けるようにする」と「AとBの比較をしっかり書けるようにする」の間にはどのような違いがあるのでしょうか。この部分がわからなければ,「しっかり書ける」ようになるためには何が必要で,そのために自分はどうすべきなのかがわかりません。これこそが,何か言っているようで何も言ってないのと同じであるということの意味です。目標を立てたところで,そのことを達成するためにどうすればよいかや,達成できたかどうかをどう評価できるのかがわからなければ,その目標は立てる意味がないと言ってもいいでしょう。

同じことは,学んだことについて書く場合も同様です。

○○さんのエッセイは,AとBの比較がよくできていたので,自分も真似したい

さて,「比較がよくできた」とはどういうことなのでしょう。それは,「何と何を,どういった観点から切り取って比較したものなのかがわかりやすい」というようなことなのか,それとも,「In contrast, On the other hand, whereasといった比較を導入する表現を使って書けていた」ということなのでしょうか。ここまで具体的に言語化できれば,「自分が真似する」ときに何を真似すればよいのかがより明確になってきていることがわかると思います。

なぜ「うまく」はだめか

「しっかり」や「ちゃんと」と根本的には同じで,「うまい」の示していることが抽象的すぎるというのが問題です。

言いたいことをうまく英語で言えなかった

くらいであれば,頭に浮かんだ内容を英語で表現できなかったということだとわかります。ただし,それは日本語では一語で言い表せることを英語では単語で表現しないので失敗してしまったのか,はたまた関係節を使えば言いたいことを言えたのに関係節が使えなかったのか,といったことについてはわかりません。もしかすると,英語に言い換えもできた,そして関係節も使えた,それでも自分にとっては納得のいくような流暢さで言えなかった,ということなのかもしれません。これがわからなければ,次に何を改善すれば「言いたいことをうまく英語で言える」状態になれるのかがわかりません。それがわからなければ,自分を向上させることは難しいですよね。

ではどうすべきか

もうおわかりかと思いますが,問題点は共通で,言っていることが「抽象的すぎる」ということです。よって,解決策はシンプルです。「しっかり」・「ちゃんと」・「うまく」といった単語を自分が使っているということに気づいたら,「しっかりってどういうことだろう?」というような疑問を自分に投げかけ,より具体的な言葉で言い換えるようにします。上述のだめな例は,例えば以下のように書き換えられます。

来週は課題をちゃんとやる->来週は,期限に遅れないように課題を出す

来週は課題をちゃんとやる->来週は,○語以上という指定を守る

AとBの比較をしっかり書けるようにする->AとBについて比較する理由を明確に書き,その上でどの観点で両者を比べているのかがわかるようなイントロダクションを書く

言いたいことをうまく英語で言えなかった->同棲を英語でなんと言えばよいのかわからなかった

もちろん,「しっかり」系の言葉を使うよりも,具体的に書くほうが何倍も頭を使うことになると思います。ただし,それこそが私が求めているものであり,その具体性があることでこちら(教員)も学生の課題を把握することができ,適切な方法で課題を克服する手助けをすることが可能になります。もちろん,自分の思考を言語化することで自分自身についての理解を深め,それを自律的に自分の行動につなげられるようになってほしいという思いもあります。そういう練習を大学生のうちに積んでおけば,卒業後にあらゆるところで役に立つはずです。

おわりに

上に書いたような現状については,私の責任もあると正直思っています。授業の最後の時間に振り返りということになると,やはり学生としては「さっさと終わらせて早く教室を出たい」と思うのが普通でしょう。あるいは,深い思考を促すに十分な時間を提供できていないという面もあるかもしれません。また,私の「意図」がしっかり (誤解のないように、間違いなく) 伝わっていなければ,そもそもなんのために振り返りをするのかもわからず,「具体的に言語化せよ」といってもそれがなぜ必要なのかがわかりません。この点も私の指導力不足だと思います。以上の点については,今後,私が改善すべきであると認識しています。

学生のみなさまにおかれましては,この記事に書いたようなことを意識して,「何か言っているようで何も言っていない」状態にならないよう努めてもらいたいと思います。これは,もちろん私の信念であることは間違いないですが,それ以上にそうでなければやっても意味がないからです。せっかくやる(やることを求められている)のだから,自分がやったことで得られるものが多いほうがよいですよね。というわけで,よろしくお願いします。

なにをゆう たむらゆう。

おしまい。

概念数の処理に関する論文が出ました

下記の論文が,First Viewで公開されました。論文がDLできない方は,著者用のリンクをお送りするのでご連絡ください。

TAMURA, Y., FUKUTA, J., NISHIMURA, Y., HARADA, Y., HARA, K., & KATO, D. (2018). Japanese EFL learners’ sentence processing of conceptual plurality: An analysis focusing on reciprocal verbs. Applied Psycholinguistics. Advance Online Publication. doi:10.1017/S0142716418000450

名古屋大学大学院のD2のときに院生仲間と一緒にやった研究です。初めて国際誌に投稿した論文なので,概要と投稿の経緯を書いて置こうと思います。

概要

ざっくりとした結論は以下のような感じです。

  • 日本語を第一言語とする英語学習者も,英語母語話者と同じようにA and Bという名詞句を概念的に複数として表象していて,その複数を構成する要素にもアクセス可能
  • ただし,the parentsのように複数の構成素が明示的でない場合にはその構成素にアクセスできない(母語話者もできないと先行研究で言われています)

具体的な実験では,次の4条件における下線部の単語単位での読解時間を比較して,aではガーデンパスに引っかかることなく読んでいるという結果になりました。

a. As the mother and the father battled the child played the guitar in the room.

b. As the parents battled the child played the guitar in the room.

c. As the mother and the father left the child played the guitar in the room.

d. As the parents left the child played the guitar in the room.

battleのような相互作用動詞が目的語を取らないという解釈にいたるためには,主語が複数である必要があります。その時には相互作用動詞の後ろの名詞句は主節の主語として解釈され,ガーデンパスを回避できるということです。4条件作っているのは,(a) A and B(conjoined NP)とthe parentsのようなplural definite descriptionを比較したこと,(b) 動詞のバイアスの影響ではないことを示すために自動詞と他動詞の両方が解釈として可能な動詞の条件も用意し,その場合にはガーデンパスを回避することができないことを示す必要がある,という2点が理由です。

出版までの経緯

冒頭にも書いたように,この論文はD2のときにデータ収集を行い,その年の全国英語教育学会熊本大会で発表を行いました。その後,論文の形にして最初に投稿したのがその年度の終わりの2016年3月でした。

最初の投稿

まず,Bilingualism: Language and Cognitionに出しました。そこでは,査読に回る前に,「母語話者と比較してないからだめ」という理由で突っぱねられましたが,「母語話者のデータがなくともこの実験の結果のみで十分に価値がある」という長めのメールを送り,いくつかの修正条件を提示されたのでその修正をし,最初の投稿から1ヶ月後くらいに再投稿しました。査読に周り,再投稿時点から2ヶ月たってreject通知をもらいました。とにかく,コメントの鋭さが今までに経験したことのないもので,すごくショックを感じるとともに,これをもとに修正したらもっと良くなるに違いないとも思えました。

二回目の投稿

大幅な書き直しが必要で,イントロ,バックグラウンド,ディスカッションとほぼすべて書き換えました。そして,2017年2月に今度はLinguistic Approaches to Bilingualismというところに出しました。外部査読に回るまでが1ヶ月,外部査読に回ってからは3ヶ月で結果が来たので,投稿から最初の結果がわかるまでは4ヶ月でした。そして,またrejectでした。

正直,査読者のコメントはそこまで批判的ではなく,3人いるすべての査読者が好意的なようでしたし,コメントも対応可能なものが多かったです。それでもrejectだったので,Editorに抗議するか迷いました。しかし,私の副査であったM先生に相談したところ,抗議しても結果が変わる可能性は限りなく低いので,もっと別の雑誌に投稿するほうが良いというアドバイスをいただきました。印象に残っているのは,「IFが低いジャーナルが必ずしも通りやすいジャーナルではない」という言葉でした。

三回目の投稿

この時点で,私自身は割と自信を失いかけていましたが,第二著者の福田さんが,「この研究は絶対に面白いから,Applied Psycholinguisticsに出してみよう」と提案してくれました。私は,「それは無理じゃないか…」と思っていたのですが,あきらめずにやることにしました。二回目の投稿でもらったコメントも,論文の質を上げることにとても役に立ちました。三回目に投稿するときには,ほとんど穴という穴は塞いだ状態で投稿することができましたし,論の流れもだいぶすっきりしたものになったと自分でも思えました(それでも今読み返せばまだまだだなと思います)。

Applied Psycholinguisticsに投稿したのが2018年の1月初旬で,約2ヶ月後の3月上旬に結果が来ました。Major Revisionでした。3人のレビュワーのコメントはマイナーなものがほとんどで,1回目,2回目の投稿のときの半分くらいのコメントしかなかったと思います(1度目,2度目は計50近くコメントあったと思います)。結果のわかったタイミングが年度末で私も何かと忙しかったのもあり,修正にまったく手をつけられませんでした。期限ギリギリのGWにようやく修正原稿を提出し,その1ヶ月後の6月上旬にMinor revisionという結果がきました。3人のうち1人のレビュワーが細かい修正を指摘してきたので,その点を直し,2週間後に提出しました。最初は注が11くらいあって,さらには語数が制限ギリギリだったので,注を削って語数の範囲内に収めるのに苦労しました。このジャーナルでの3回目の投稿から2週間後の7月上旬に採択通知が来て,それからは書類を出したり校正を受けたりしました。

感想

本当は,大学院生のうちに私も国際誌に出したいと思っていたのですが,それは結局叶えられませんでした。国際誌にこだわったというのは,心理言語学系では国際誌のほうが選択肢が多かったからというのがあります。また,どんどんチャレンジしていこうという雰囲気が私の周りだけでなく色々なところにあったことも理由でした。そういう意味では,この時代だったから出版された論文でもあると思っています。環境が少しでも違えば,出版を諦めていたか,全く別の形で出版されることになったと思います。

結果的に,自分の専門を語るときに使う,「心理言語学」という言葉の入ったジャーナルに論文が出たことはよかったのかなと思います。心理言語的なアプローチをする先輩は名大にもたくさんいらっしゃるので,その先輩たちに追いついてそして追い越したいという思いもありました。

時間はかなりかかってしまいましたが,時間をかけて査読のプロセスを経たことで最初の原稿よりはいいものになったなと思っています。もちろん,これからたくさん批判を受けることでしょうが,それもまた自分の研究をより良くするために大事なプロセスだと自分に言い聞かせています。

最後に

私は,実は名古屋大に在籍した4年間で,私が第一著者,福田さんが第二著者という論文を出したことがありませんでした(逆は1つあります)。彼とはずっと一緒に長く研究をやってきていたので,今回の論文でようやく私が第一著者で二人の名前が載った論文が出せてよかったなと思います。これからもがんばります。

なにをゆう たむらゆう。

おしまい。

[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を使っていると、教材ファイルをコピーして配布という機能があり、それを使うと自動的に学生の名前のついたファイルができるのですが,それなしでやろうとすると,こうなるかなという感じです。

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

なにをゆう たむらゆう。

おしまい。

Word Onlineを活用したライティング活動

はじめに

最近ライティングの事ばっかり記事にしていていますが,他の授業もちゃんとやっています。ただ考えた事はとりあえずまとめておこうと思うので,今回はコンピュータ上でライティングさせながら”即時”フィードバックを出してみるというお話です。

前期は普通の教室で,紙ベースでライティングをさせていたのですが,後期は情報処理演習室で授業をやっています。学生の数は20人弱で,多分25を超えるようになってくると,一人一人にできるコメントは限定的になってしまうかなと思います。ただ,これも書く時間をどれくらい設けるか次第ですね。書く時間を学生数で割ったのが単純に一人の学生に費やすことができる時間なので,書く時間が長ければそれだけたくさんの時間を学生の書いたものを読んでコメントを出す時間に使えます。パソコンでやろうが紙でやろうが,人数が多いと厳しいですが,同じ人数で比較した場合には私が以下で説明する方法の方がはるかに効率がいいと思います。つまり,授業外で添削にかける時間をできるだけ減らしながら,授業内で学生にフィードバックを出す時間を最大化できるということです。しかも,授業運営ソフトウエアのようなものが整備されていないパソコン室(学生の画面を監視できない部屋)や,学生が個人のパソコンを持ち込んで行うような形態でもできるというのも重要な点だと思います。

背景

パソコンでライティングさせることにしたのは,パソコンで書かせる方が課題の提出,管理,フィードバックがやりやすいなとなんとなく思っていたということが大きいです。そういう思いで,授業にもだいぶ慣れてきた後期から教室を変えてもらうことにしました。

いわゆるパソコン室での授業で,授業運営ソフトウエアが入っているので,学生一人一人の画面を巡回して回ったり,こちら側から操作をしたりということもある程度は可能です。つまり,学生一人一人がMS Wordを使ってオフラインで書いて,それを提出ということもできます。

ただし,それを提出させたり,というところで色々めんどくさいことが起こりそうだなと感じました。また,授業管理ソフトウエアはライティング活動を念頭に置いてデザインされていないため,ライティングのフィードバックにはあまり向いていない(痒いところに手が届かない)というのも,オンライン上で全部一括管理してしまおうという発想に至った理由の一つです。

環境としては大学がOffice 365の契約を結んでいるので,各学生は自分のアカウントでOne DriveやOffice製品を使うことができるという感じです。そうでない場合には,下に挙げた論文でも使用されているGoogle Docsでも同じような事は可能だと思います。

どちらもやっている事は同じで、オンライン上でドキュメントファイルを教員と学生が共有して,授業の時にコメント欄を使ってフィードバックを出すということです。こうしたオンライン上でのライティング活動でフィードバックを出すという話は,以下の論文からヒントを得ました。

Shintani, N., & Aubrey, S. (2016). The effectiveness of synchronous and asynchronous written corrective feedback on grammatical accuracy in a computer‐mediated environment. The Modern Language Journal100, 296-319.

この論文では文法のフィードバックを出す際に,Google Docsを使って即時フィードバックを出す場合と,書き終わってから提出されたものにフィードバックを出す場合で比較を行っています。私の場合,どちらかというとフィードバックはorganizationに関わるものがメインです。「はじめに」でも書きましたが,オンラインでやる方が,私個人としてはライティングの授業における教員の負担がはるかに減ると思っていますので,むしろそちらのメリットを重視してこのやり方を採用としています。

授業前の準備

授業が始まる前にやるのは,学生と共有するファイルの準備です。これをせずに,学生にファイルを作らせて教員と共有するようにすることも可能です。その方が準備の手間が省けますが,ファイル共有の手順でつまづくケースがあって貴重な授業時間を浪費してしまいがちです(実際そうなりました)。そういったことを未然に防ぐ意味で、こちらで準備したものを共有する方がいいでしょう。

また,その他にもファイルを準備するメリットは2つあります。一つ目は,学生から共有されたものはフォルダ等にまとめて管理したりしづらいからです。私が使いこなせていないだけかもしれませんが,共有された側は複数のファイルをフォルダにまとめることができません。できることなら,クラスごと,そして課題ごとにフォルダ分けして管理しておきたいので,こちら側でフォルダ分けを行い,そこにファイルを用意するようにしています。二つ目のメリットは,フォルダ分けして学生のファイルがまとめて入ったフォルダごと共有することで,ピアフィードバック活動に簡単につなげることもできるからです。これについては記事の後半でもう少し詳しく紹介します。

というわけで,One Drive上でフォルダを作ったら,そこにファイルを人数分だけ用意します。何も書き込まれていないドキュメントファイルを人数分作って名前つけるみたいな作業は,ルーティン操作なのでシェルスクリプトとかでやると簡単かもしれません(参考:ファイルの連続コピーについて)。Rでもできますので私はRでやっています(過去記事)。

これでフォルダの中に学生の名前のついたファイルを人数分用意できたので,このフォルダごとOne Driveの共有機能で共有します。共有の方法はメールで送ってもいいですし,LMSなどに貼り付けてもいいでしょうし,いろいろなやり方が考えられるかなと思います。

授業でどう利用するか

学生にフィードバックを出す

授業では,One Driveフォルダの共有リンクを使ってフォルダにアクセスし,自分の名前のついたファイルを開くように指示します。フォルダ内のファイルが全員に共有された状態だと,「誰が誰のファイルを開いているかや編集しているのかがわからないのでは?」と思われるかもしれませんが,その心配はいりません。ファイルを開いた人の記録も,誰が編集したかの記録も残るので,そのことを学生に伝えれば問題ありません(少なくとも私の環境では)。他の人のファイルを開くこと自体は禁じられるべきことでもなく,色々な人の書いた作文から学ぶこともあると思いますし。ただ,「誰が開いたか,誰が編集したかはわかるので,くれぐれも他人のファイルでいたずらをしたり,書かれたものを勝手に消したりしないように」と忠告しておけばいいと思います。場合によっては,ファイルにアクセスした人の一覧を見せれば説得力も増すかもしれません。

学生は自分のファイルを開いたら,指示された課題をファイルに書き込んでいくことになります。具体的に何を書くかやどう書くかは,ライティングの授業で扱う課題の種類や授業の目標によって変わってくるでしょう。

教員は,学生全員分のファイルをブラウザ上でタブ表示にします。つまり,20人の学生がいれば,20個のタブを同じウインドウで開いておくということです。もちろん全部違うウィンドウで開いててAlt+Shift等でウィンドウ切り替えの方が楽だという方はそれでいいと思います。私は,Shift+Tabでタブ切り替えしています。学生が書いている間は,教師は教師用のパソコンで,Shift+Tabキーを使いながら書く学生の書いているファイルを”巡回指導”します。

何かコメントしたいことのある学生がいれば,コメント機能でコメントを書いていきます。文法の間違いなど,場所が特定される場合にはその場所を選択して「正しい形だけ」コメントしています。あとは構成や文と文のつながりなどについて,日本語で書き込んだり,いいなと思う箇所があれば,「この部分はみんなにも真似してもらいたいからあとで全体に紹介するね」みたいなことも書いています。

このやり方が、いわゆる「机間巡視」をしながら出すフィードバックより良いなと思うのは,「学生のライティングを邪魔することなくコメントができる」ということです。つまり、オーラルでのやりとりでは学生が今まさに書いている部分以外にコメントを出す場合、学生は当然教師の指摘を「聞く」ことが求められます。一方でオンライン上では,学生は自分のタイミングでコメントを確認することになります。この、「注意を同時に向ける」ことこそがフィードバックの意義なのかもしれませんが,逆にコメントしづらいなと思うこともしばしばあるので,オンラインで即時フィードバックの方がいいなと思っています。

書いて残るという点でも、口頭でフィードバックするよりも良いなと思います。学生からも、そして教師から見ても、「どんなやりとりがあったか」が記録されるわけなので。学生からしても、先生を呼びやすい人と、あまり自分から呼びづらい人がいると思うので,そういう場合はコメント欄でやりとりすれば良いかなと思います。もちろん,上述したように誰でもファイルを開ける状態ですから,コミュニケーションの記録が残るということはそのやりとりを誰かに見られる可能性があるということではあるのですが(誰かどんなコメントされているかをいちいち見て回るほど暇な人はいないでしょうけど)。

また,1人の学生から次の学生に移動するのも,タブの切り替えは1秒以下で済み,文字の視認性も手書きよりはるかに高いので,瞬時に読んでコメントが出せます。これが紙ベースだと,机と机の移動も時間がかかりますし,さらには書いている学生の紙を覗き込むように見る必要があり,場合によっては視認性の低い手書き文字の場合もあって読んでコメントを出すまでに若干の時間がかかります。このロスを20人分積み重ねれば、20分のライティング中に5分くらいは多く学生にコメントを出せる時間が確保できると思います。

ピアフィードバック活動に使う

教師-学生のやりとりだけではなく,学生-学生のやりとりもオンラインでやることができます。例えば,紙ベースでやっていたときには,過去記事で書いたようなピアフィードバックをやっていましたが,同じようなことはオンラインでもできるわけです。ただ,2人1組で第3者の書いたプロダクトにコメントするようなことはPC教室の性質上若干やりづらいというのはあるかもしれません(実際,私は後期はこの形はやらなくなりました)。

上述したように,個々のファイルではなくフォルダごと共有しているので,学生はクラスメイトのファイルを自由に閲覧することができます。この環境を生かして,「隣の人+◯人のエッセイを読んでコメントをつけましょう」というようなピアフィードバック活動をしています。隣の人を指定しているのは,SlackのDonutというボットでペアで席に座るように指定していて,その他にもペアの活動とかを多く取り入れているからその延長線上くらいの意味合いしかありません。

コメントは,「ここは冠詞のaが入るのでは?」とか「andでつないでいるものの形が揃っていないよ」のような文法的なものもありますし,「これはキーワードだと思うので,1文付け足して少し説明したほうがわかりやすくなると思う」のような内容(あるいは構造)に関するコメントもあります。前期はパラグラフ,後期はエッセイをやっているので,後期はとくにイントロの構成であったり,各パラグラフ同士のつながりであったり,ということに注意して読むように指示することが多いです。

ピアフィードバックのあとには,特に出来が良いものを全体で共有して,「この部分がうまく書けているよね。」というようにモデルの提示をするようにしています。もちろん書く前にサンプルのエッセイはいつも提示していますが,やはり「自分のクラスメイトがよくできている」ということのほうが「参考になった」と感じることが多いのかなというのが私が見ていて思うことです。

現時点での課題

もう秋学期も終わりに近づいていますが,半期をOneDriveとMS Word Onlineを使ったライティング活動でやってきて思うことは,ドラフト作りに対するエフォートが減ったかなということです。もちろん,大学1年生の春学期と秋学期を比べれば,出席率や課題の提出率など,割と一般的にどちらも下がると言っていいくらい普遍的な現象のような気もするので,私の授業スタイル変更が影響を与えただけとは言い切れません。ただ,紙の場合は「授業中になんとか終わらせて出す」という感じで一生懸命やっていた学生も,オンラインだと「今終わらなくても宿題でいいや」,「スマホでいつでもできるし」のようになっているのかなと思うことがよくあります。そして,結局後回しになっても,授業期間以外にファイルを開いて書き込むということをやっている学生の割合が低く,「いつでもできる」と思うからこそ逆に取り組みづらくなってしまっているかもしれないなと思っています。一応こちらからも声掛けをするようにはしているのですが,この点についてはなかなか解決策が見つかっていないので,来年度春学期以降の課題かなと思っています。

おわりに

紙には紙の良さもあって,オンラインにはオンラインの良さもあるとはいえ,今回は紙,今回はオンラインのように分けて使うのも混乱の原因になるので,オンラインの良さを活かした上で,欠点を補いながら授業を作っていければいいなと私自身は思っています。やはり,授業外で添削にかかる時間は膨大なので,それを少しでも減らして授業の中でフィードバックを多く出すというのがオンラインでライティングをすることの一番大きな利点でしょう。この利点はライティングを教える側としてのsustainabilityとかquality of lifeにも関わるので,より良い形でオンラインフィードバックを活用した授業を模索していきたいと思っています。

なにをゆう たむらゆう。

おしまい。

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”の列だけソートして名前の一覧をゲットするなどの方法が必要です。