タグ別アーカイブ: slack

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使ったらどうかなという記事を書いたら思いの外いろんな方に読んでいただいたのと同じように,どこかの誰かにヒットすればという思いでこの記事を書いてます。公立学校でそんなことできませんとかそういうのはどうかご遠慮ください。

slackでテキストチャット型テストをやってみた感想

はじめに

以前,下記のようなブログ記事を書きました。

ペアやグループでの「会話テスト」もテキストチャット (Slack) なら効率的に回せるかもという話

この記事の中で,通常のスピーキングテストなら複数人と同時にやりとりはできないけれど,テキストチャットならそれが可能かもしれないという話を書いています。実際にいくつかの形式でテキストチャットで同時に学習者とやりとりする形のテストをやったのでどんなふうにやったのかと,その感想をこの記事では書きます。

やり方

クラスによって,いくつかのパターンでやってみました。

教師は複数のグループのやりとりを同時に観察するだけ

このパターンは,普段私が授業で使っているslackの使い方とほとんど同じです。この形式だけが,教師相手に会話するのではなく,学習者同士(3〜4人)で会話する形式でした。時間は60分間に設定し,全グループが同時にスタートする形としました。

お題はテスト開始と同時にリスニングで与えて,いわゆる悩み相談的なタスクにしました。悩みに対する解決策を示すというのがタスクのゴールです。

この形式だと,教師は学習者のやりとりだけに集中できます。よって,事前にルーブリックをグループごとに用意しておけば,ある程度はテスト中に評価をしていくこともできます。スピーキングテスト中に机間巡視するのとは違い,学生たちのやりとりはすべて教師に見えますので,どのようなプロセスを経て現在地にいるのかを逃すことがない点は便利です。

ただし,やはり複数のグループの評価を目的にやりとりを見ていると,なかなか教師がやりとりに介入していくのは難しいように思いました。積極的な介入を重視して評価はテスト後にするか,介入は極力控えて評価を優先するかのどちらかだと思います。もしもこの2つを同時にしようと思ったら,一度に観察するグループは3~5くらいが限界でしょう。

グループ対教師のやりとり

この形式は,3~4人の学習者グループが教師とやりとりする形式です。お題は教師に何かを提案する形式としました。例えば,「オンライン授業において導入してほしいツールの提案」や「この授業において,学生・教師・学生と教師が守るべきルールの提案」などです。これらのお題とグルーピングは事前に学習者には伝えていて,どのように提案するのか,もし提案を断られた場合や懸念を示された場合にどう対応するのかというところまで考えておくように指示しました。

当日は,授業時間を35分×2セッションに分けて,6グループずつとやりとりするようにしました。教師はあえて極端に提案を突っぱねる(もちろんロジカルに)ようにして,そこでの学習者の出方を見るようにしていました。この程度を調整することで,学習者のレベルをある程度判定できたように思います。例えば,こちらの反論に対してすぐに再反論や問題の解決策の提示ができるようだとさらに反論をしてみたり,あるいはこちらの反論に「ぐぬぬ」となってしまい有効な反論が出てこなければ,その点は深追いせずに別の論点を提示するなどしていました。

教師対学習者の1対1のやりとり

この形式は,いわゆるインタビューテストで,教師と学習者が1対1で会話する形式です。内容は,教科書のユニットごとに決まったテーマについてのフリートークで,学習者側にホスト役になってもらうようにしました。ただし,こういう役回りにすると事前に用意した質問をただただ投げるだけになってしまうので,echo, reaction, follow-up questionを使ってやりとりができているかどうかを評価の観点の1つとして取り入れました。

時間は17分で,90分を4つのセッションに分け,セッション間に5分間のインターバルを入れました。学生には事前にスケジュールを提示しておき,時間になったら教員にDMを送って会話をスタートするという形です。

42.5インチモニタを6分割表示設定にして,ブラウザを複製してslackを6箇所で開いてやりとりしました

5分間のインターバルがあるといってもほとんど休憩なしで,17分間ひたすら学生からのポストに返事をし続ける感じでした。少しの遅れでも学生の不利益になるので,とにかく返事は1分以内にすべて返すということを徹底しました。よって,めちゃくちゃ疲れました。

流暢さがある学生だと,だいたい15〜18ターンくらいはやりとりができました。もし仮に90分を24人で割ると1人3分くらいしか会話の時間は取れないことになります(それでもたぶん交代にかかる時間とか考えるとカツカツ)。3分で15ターンだと1分で5ターンなので,だいたい単純計算で12秒で1ターンくらいのスピードでやりとりする必要があります。レベルから言って口頭でそのくらいのスピード感で進むかと言われると厳しいかなというのが私の見立てなので,テキストチャットの利点をうまく生かして学習者とのインタビューテストができたなと思っています。

ざっくり感想

一度に6グループ(6人)なら全然いける

まず,6グループ,あるいは6人なら同時のやりとりも可能だなと思いました。もちろん最初は戸惑うことはたくさんありましたが,やはり学生の入力スピードとこちらの入力スピードだとこちらに圧倒的に分があるので,そのアドバンテージを生かしてやれました。ただ,1人とやりとりするよりはグループとのやりとりのほうが難しかったです。なぜなら,グループだとこちらの1の返事に向こうから2, 3の返事が返ってくるからです。論点がまとまっていればまだしも,たまに複数の論点に対してこちらが返答しなければならない場合があり,結構しんどかったです。1対1だとそういうことはあまり起こらないので,比較的ラクでした。

コピペを多用できる

複数の学習者を相手に同時にやりとりするのを可能にしたのは,コピペ戦法です。私はランダムにお題を与えていたので,お題がある程度被っているときと,ほとんど被っていないときとありました。お題が被っている場合,同じような質問だったりコメントだったりが学生から出てくることも多いので,その場合別のグループですでに答えたことを,同じお題でやってる別のグループにコピペして投稿するようなことも頻繁にやっていました。学生側からすると「ずるい!」となるかもしれませんが,こちらとしては同じ内容なら何度も同じこと書くよりコピペしたほうが早いから許してくださいという感じです。もしもセッションごとにお題を固定して,6人・6グループがすべて同じお題で取り組むのであれば,コピペの頻度はもっと高くなることが見込まれるので,より一層教員側の負担は減るかなと思います。

後から評価するにしても楽

学生と教師がやりとりするパターンの場合,やりとりしながら評価は無理でした。これやるのであれば,おそらく3人・3グループが限界でしょう。それ以上だと,いくらルーブリックを事前に練っていてもその場で評価だと絶対に返事のタイミングが遅くなってしまうと思います。

ただ,もしも評価をテスト後に行うとしても,音声を録音させたものを後から提出させ,それを聞いて評価するよりはよほど楽でした。なぜなら,すべてやりとりした記憶があるからです。

とくに,学習者同士のやりとりを録音させるようなケースだと,ほとんど内容はわからない状態で音声を聞いて評価をしますので,頭から最後まで聞かないと評価できないケースがほとんどです。

一方で,自分がやりとりの相手だった場合,「あーそうだこのグループはちょっとこの話題で詰まってたところあったよなー」とか「○○がほとんど話題に入ってこれてなかったなー」とかいうエピソード記憶的なものがやりとりの断片を見るだけですぐに思い出せます。また,音声を聞くより文字を眺めるほうが圧倒的に早く全体を処理できますから,評価にかかる負担感は間違いなくテキストチャットのほうが低いと思いました。

オンラインだからこそ待ち時間を有効に使えた

ちょっと話はそれますが,もし教室内で,グループ,個人ごとに教師のところに来させてテストしようと思うと,待ってる間をどうするかが問題になります。

同じ教室内でリスニングテスト受けてもらおうにも,会話がワイワイ盛り上がったらリスニングテスト受けている人たちに迷惑ですし,かといってコソコソ話すのもなんか違う。2教室用意して別室でLMSでリスニングテストさせているなんていう話も同僚の先生から聞いたことがありますが,ちょっとハードルが高いですよね。その点,LMS上での課題に慣れていて,なおかつ全員が同じ場所にいる必要がない今のような状況だからこそ,待っている時間はLMSで別のテストやっててねというのが何の違和感もなくできたなと思いました。

秋学期に対面授業になったら大教室で少人数で授業みたいな環境になる大学もあるかもしれません。そうすると,ある程度離れた場所で普通のボリュームで会話していたらリスニングテストの邪魔にはならないのかもしれませんが。

おわりに

この記事では,slackを使って,学習者同士,学習者グループ対教師, 学習者個人対教師の3つのパターンでテキストチャットテストをやってみたという報告のようなものを書きました。秋学期にどのような形態の授業になるのかうちの大学はまだわかりませんが,テキストチャットでインタラクティブな側面を評価するテストをやるというのはオプションの一つとして使えるなと思いました。今後,対面のスピーキングテストは難しいなぁという場合に活用していこうと思います。

なにをゆう たむらゆう。

おしまい。

slackを利用して,「全員の前で」スピーチさせるスピーキング活動

Photo by mentatdgt on Pexels.com

はじめに

先月,先々月で記事をいくつか投稿していますが,一般教養英語の遠隔授業(オンライン授業)で,slackを活用してます。

今まで書いてきた記事は,基本的にテキストチャットスペースとしてのslackの使い方の話でしたが,今回はスピーチをメインにした活動の話です。タイトルをおおげさにつけましたが,やってることは目新しくもなんでもありません。ただ音声ファイルを投稿してコメントし合うような活動です。

活動の概要

私は,現在受け持っている一般教養英語の授業の全4クラスでslackを利用しています(すべてが違う科目・レベル)。そのうち2クラスで,ペアやグループ活動ではなく,個人で1分程度のスピーチを録音したものを投稿してもらうという課題を出しました。そして,任意の人数にコメントをし,コメントをもらったら必ず返信をすることも求めました。時間はいつものペア・グループワークに費やしているのと同じ時間で,授業開始30分後から授業終了10分前までの50分です。

これまでの3, 4週は基本的に事前にペアやグループを作っておき,その中でなにかしらのタスクを与えるようにしていました。ただ,一応テキストに関連付けたタスクを毎回考えているので,教科書の内容によってはタスクを作りづらい場合もあります。たまたま2つのクラスがそういう状況で,どうしようか考えあぐねていたときに,別にペア・グループワークに拘る必要もないし,スピーキング&リスニングのクラスなんだからスピーキングさせる機会,そしてそれを聞く機会があってもいいよねというのがきっかけでした(もちろん,LMS上で音声ファイルを提出させたりリスニングの課題を出したりはしています)。

いつも,LMS課題の最後にslack上でやる課題の簡単な指示を日本語の資料として載せているのですが,そこにいつもとは違って今回はスピーチを録音したものを投稿する課題にするということを事前に連絡しておきました。また,私がサンプルとしてスピーチを録音したものを課題の公開と同時にslackにアップロードすることで,どういうスピーチをすればいいのかわからないという場合に,言語面や内容・構成面などで役立ててもらうリソースを提供しました。

この活動をやるにあたって,私の教師としての狙いはいくつかありましたが,ぱっと整理すると次のようにまとめられます。

  • 全員の前でスピーチをするわけではないにしろ,全員が聞ける場所に音声ファイルを投稿するのだから,普段教師だけにファイル提出するよりも緊張感がある(ので普段よりクオリティにこだわるはず)
  • クラスメートのスピーチから学ぶことが多くある
    • 内容的に(そういう意見あるのかとか,単純に面白いなとか)
    • 言語的に(発音が上手とか,真似したい表現とか)
    • delivery的に(聞きやすい喋り方はどんなものか)
  • 純粋に,クラスメートの「声」を聞けるだけでも今はプラスになるはず
  • グループワークにもそろそろ慣れとともに飽きがきてるかもしれないので,ここで少し違ったものを挟んでおきたい
  • リスニングすることに意味づけができる(内容を理解してコメントしないといけないので集中して聞くため)

このような活動をするのに,やっぱりslackは適しているなぁと思いました。

なぜslackが適しているか

ダウンロードしなくていい

まず,slackは音声ファイルをいちいちダウンロードしなくても再生ができます。パソコンであれば,タイムライン上で再生が可能なので,教師としても聞いてフィードバックをしたりするのが楽です。スマホアプリだと,再生するための画面に切り替わりますが,それでもいちいちファイルを保存しないといけない制約がないだけで聞くのはずいぶんと楽になります。

自分のペースで聞ける

これは,slackの良さというよりも,対面で人のスピーチを聞く課題ではないからこその良さと言えると思います。誰か1人のスピーチを聞き直したり,一時停止したりすることができるので,聞き漏らす心配をする必要がありません。もちろん,本当にスピーチを聞く際には聞き漏らさずに聞く必要があるわけなので,そこがゴールである以上はこの課題はあくまで”simplified version of the target task”と言えます。

もう一つ,自分で聞きたい人のものを,好きな順番で聞けるという意味での「自分のペース」というのもあります。これは例えばポスター発表的な形式をとると自由度が確保されていますが,全員またはグループの中で誰か1人が話すという形式では聞く側には順番を選ぶ権利はありません。これも前段の話と同様で,そもそもスピーチを聞くときに選ぶことができないのが普通なんです。そこは私も理解しています。その上で,ある程度学生側に選択が委ねられているというある種の「ゆるさ」は授業の中に持たせておきたいというのが個人的な信念です。とくに,今は状況が状況であるがゆえに,極端にガチガチのルールに縛られた授業か,そうでなければ無法地帯のように学生に丸投げされる授業に二極化しているような印象があります(あくまで印象です)。その中で,学生がsecured and comfortableな心理的状態で授業に臨むためには,学生の側に選択権がある状況というのも意味があると考えています。

スレッド機能とメンション機能

この記事の最初の方でリンクを貼っている記事でも書いていますが,音声ファイルの投稿に対してスレッド形式でコメントが書き込まれることで,チャンネルのタイムライン上では音声ファイルが並びます。そして,何件コメントが有るのかも一目瞭然なので,コメントがあまりついてないファイルを探してコメントすることも簡単にできます。

もらったコメントに返信をするときにはメンション機能を使えば,誰のコメントに返信したのかを明らかにすることができるので,会話の流れも追いやすくなります。

私が驚いたことは,スレッドへの書き込みをチャンネルのタイムラインにも流す機能を意図的に使っていた学生がいたことでした。チャンネルのタイムラインへの書き込みは,クラス全体への通知にもつながる(もちろん通知切ってれば来ないですけど)ので,「みんなこれ面白いよ!」的なコメントをメインのタイムラインに流していたようでした。

目印としてのreaction

slackには絵文字でリアクションすることができます。学生のコメントに対して,「いいね」の意味で絵文字をつけることもありますが,私が重宝している使い方は,チェックしたという目印です。いつものペアワークをやる際も,タスクが完了して,私がOKを出したスレッドには目の絵文字(👀)をつけて,終わっていないのがどこのグループかがわかるようにしています。今回のスピーチは聞いたら耳(👂)で,課題として私がこういうことを含めるように,という条件を満たしたスピーチをしていたら100点(💯),スピーチはしているけれど,その情報が含まれていない場合にはなにもつけないというようにしました。こうすることで,その場で簡易的に採点しておくことができますし100点(💯)がついていない学生に対してはその情報がないことをフィードバックすることも簡単にできました。

今回の課題の最初の部分。一番上が私のサンプルの音声で,音声ファイルを聞いたら耳(👂)のリアクションをつけ,課題の要件を満たしたスピーチの場合に100点(💯)のリアクションをつけています。

学生からの感想

学生からの感想を読んでいると,概ね上記の私の狙い通りに活動ができたのではないかと思っています。

例えば,質問しないといけないのでより注意して聞くし,他の人が質問していないことを考えるのに頭を使ったというようなコメントがありました。ただ質問するだけではなく,他の人の質問を読んだ上で質問を考えるのは,実は今回が初めてではありませんでした。授業の初回で実施した自己紹介タスクでも,音声ファイルではなく書き込む形でしたが,自分の自己紹介を投稿してコメントを○人につける,という課題をやったので,そこで必要だったスキルと同じです。もしも,他の人が聞いていないことをコメントすることに対するハードルが高いと感じられれば,自然と時間的にあとの方に音声が投稿されていて,まだコメントがついていない学生のファイルを聞いてコメントすればいいので,何も指示しなくても自然とある程度コメントがばらつくようにはなっていました。

基本的には早く投稿すればするほどコメントが集まりやすいので,早く投稿して自分が思った以上にコメントが集まって返信が大変だったという「嬉しい悲鳴」も聞こえました。でもやっぱり,自分が言葉を使ったことに対して,レスポンスがもらえるっていうのは,誰でも嬉しいことだと思うんですよね。そういう経験をしたことで,この活動に対してポジティブな印象を抱く学生が多かったのかなと思っています(注)。

私がサンプルとして音声を投稿していたのが参考になったという意見もありましたし,何をコメントすればいいかわからなかったけど,他の人のコメントを参考にすることができたというコメントもありました。この,他の人の取り組みを参考にできるのがslackを利用する際のメリットだというのが,私がまさにTASK TALK で話したことでした。

タイトルにつけたように,全員に聞かれるということを考えて録音するのはすごく緊張したというコメントや,(自分のパフォーマンスが未熟なので)恥ずかしかったというコメントもありました。この事自体はネガティブに捉えられるかもしれませんが,普通に30人の前で話すことよりはハードルが低いはずで,しかも録音なのでやりなおしもできます。前述の通り,全員の前で話すことをゴールだとしたら,その前の練習課題として,ここで紹介したような活動は効果的かも知れません。

おわりに

この記事では,slackにスピーチを録音したファイルをアップロードし,それに対してコメントし合うスピーキング活動を紹介しました。今回は全員が同じチャンネルで活動しましたが,いくつかの大きなグループに分けた上で別々のチャンネルでやらせることもできると思います。また,ファイルをアップロードする順番や時間を指定すれば,それこそ全員がほとんど同時に同じスピーチを同時に聞くような状況を作り出すこともできるかもしれません。

slackはテキストチャットメインで使っていましたが,残り半分の中であと何回かは今回のような形式の課題を取り入れてみようかなと思っています。

注. そもそも,授業後にコメントをわざわざ残すような学生はengagement高いだろうというツッコミはあるかと思いますし,それは差し引いた上で考える必要はあると思っています。ただ,一応苦情・改善要求なども受け入れるようにしていて,最初の数週間は改善要求コメントもかなり多くありました。それと比較してポジティブなコメントが多いので,控えめに見積もってもそれなりには機能したんだろうなと考えています。

Slackを授業で使ってみてわかった課題

Photo by ready made on Pexels.com

はじめに

ちょうどオンライン授業だなんだということで,様々なツールの授業利用の情報がネット上に溢れ出した頃,私は下記のような記事を書きました。

オンラインで語学の授業をする際に取り入れたい「やりとり」のためのSlack活用

Slackを授業で使ってみて,色々課題が見つかったので,どんなふうに使っているのかということと,どんな課題があるのかということをここに書いておこうと思います。

基本的な利用方法

  1. 学生は授業開始時間になったらLMSにアクセスし,教科書に沿った課題を順番にこなす
  2. LMSでの課題が終わったら,slackに移動し,#discussionというチャンネルに投稿されたトークテーマでペアと会話する

おおまかな授業の構成はこの2点です。1の部分では基本的にリスニングやリーディングベースの課題をやります。その内容に基づいたペアまたはグループのインタラクションをslackでやるというのが2の部分です。slackでのやりとりについては,下記のような資料をLMS上にアップして見れるようにしています。slackでは英語でしかinstructionを出さないことにしているので,ポスト機能を使って英語版の資料を投稿しています。

1. 10時より前にここまでたどり着いた人は,一旦休憩してください。

2. 10時になったら,Slackを開いて,ShufflからのDMを確認しましょう。DMが一緒に来た人が今日会話するメンバーです。

3. まず,はじめましての挨拶だけして,誕生日を確認しましょう。誕生日が一番早い人が,最初に#discussionのチャンネルに投稿をして会話のスレッドをスタートさせます。例えば,”Let’s talk, @AAA and @BBB!”のように投稿してみましょう(AAAとBBBには同じグループの人の名前を入れます。こうすることで,どのスレッドに自分が参加すればいいのかグループメンバーがわかりやすくなります)。

4. グループの中で一番誕生日が遅い人は,司会役として会話をうまく回す役です。まず誰の話から聞くかなどを考え,全員が均等に発言できるように工夫しましょう。目安としては,1人が5回以上発言することが最低ラインです。

5. グループの中で誕生日が真ん中の人は,会話のまとめ役です。全員が5回以上発言し,話題も出尽くしたなと思ったら,会話を終わらせます。この合図は,”Shall we invite Mr. Tamura to this thread?”です。みんなが,同意したら,私にメンションをつけて会話が終わったことを教えて下さい。”@Yu Tamura We finished!”みたいに。この投稿があったら,私が確認しに行きますので,少し待っていてください。私からOKをもらったら,グループワークは終了。この日の授業は終わりとなります。グループメンバーにお礼を行って終わりましょう。出席登録だけ忘れないようにしてください。

25名以上のクラスはShufflというappを使ってペアリングまたはグルーピングをしています(注)。ただこのappは平日の指定した曜日の午前10時にDMを送るという仕様なので,1限の授業(私は全学教養英語の4つの担当のうち3つが1限)だと授業時間中に自分がだれとワークするのかを知ることになります。1限だと,9:00-10:00でLMSの課題,10:00-10:30はslackでコミュニケーションタスクという分け方にしています。

見えてきた課題

時間配分の問題

上記の方法でやって最初に困ったのは,グループの指定が10時で,そこから役割分担決めて話し始めるまでに10-15分くらいかかってしまうという点です。もちろんこれは慣れの問題で,回を重ねれば解決するのかもしれませんが,始まるまでの時間が長くかかると,やり取りの時間が実質短くなってしまい,授業時間中にタスクを完遂できなくなってしまいます。また,グルーピングの時間に余裕をもたせておかないと,グループが集まらなかったときに話をスタートできない人ができてしまいます。教室のときのように自分のペアの相手,グループのメンバーが欠けている(欠席orLMSの課題が遅れていて間に合ってない等)というときに,slack上での課題に入れないことになります。教室であれば,グループやペアができていないことは見れば一目瞭然ですが,なにせこちらも学生から報告されないとわからないので,問題の発見,報告,対応も対面授業に比べて遅れてしまいます。自分の相手と連絡がつかなかったときのガイドラインは作っておいたほうが良さそうです。例えば,

  • 3分経って相手から連絡が来なかったら教員に連絡
  • 連絡の際は,「ペアの人がいません」とかではなく,「私の今日の相手は○○さんですが,XX時XX分にこちらから連絡をしましたが反応がありません」のように情報を伝えること
  • 教員からの指示を待って,Shufflで指定されたペアとは違う人とタスクをやるように指示された場合,自分につけられたメンションを確認し,会話に参加すること

というような感じです。appを使ったペアリング・グルーピングは,こちらで誰と誰が組んでいるのかわからないため,「相手がいません」と言われても教員は対応ができません。そこで,「相手誰?」と聞くので1ターン分のロスが生まれてしまいます。最初に相手がわかれば,LMSのログイン状況や課題の進捗を見て,そもそもLMSの課題をやってなかったら欠席の可能性が高いし,課題をやっているのであればあとどのくらいでslackに来そうかもある程度予想がつきます。グループであれば,情報が分割して与えられているようなジグゾー系のタスクでない限りは人数が欠けていてもとりあえず,スタートはできます。ペアだと相手がいなければどうしようもないので,すぐに対応しないと待ちぼうけで時間を無駄にしてしまいますので,対応方法は明確にしておく必要があります。

おそらくですが,slackのやりとりだけで1時間くらいの余裕をもたせても良いのかなと思いました。実際にやりとりが始まってから終わるまでは,平均して30-40分くらい,投稿数としてはだいたい20-30 per threadくらいでした。ただ,始まる前の時間を確保し,その上である程度余裕を持って終了するためには(そうでないとやり取りを急ごうとしてしまうので機械的に終わらせようとしてやりとりが無味乾燥になる),1時間くらいの余裕を持ってやるのがいいかもいしれないなと思いました。むしろもっと長くてもいいかもしれません。これが慣れによって改善されるのかどうかはもう少し回数を重ねてみないとわかりませんが,少なくとも30分という時間設定では不十分であることは間違いありません。

となると,shufflの指定を前日10時にしておいて,前日にはメンバーがわかっていて,役割分担も確認できていて,10時になったらすぐに対話をスタートさせられるようにしておいたほうがいいのかもしれません。slackで行う対話の内容自体はLMSでのインプットベースの課題に基づいているので,LMSをやってからslackへという流れだけは変えたくありません。つまり,LMSはアクセスの時間を1日中,あるいは1週間可能にして,slackだけ授業時間中にやるというのはしたくないしできないと思っています。ただ,LMSの課題を1時間で終わらせるのが厳しい学生もいるようでした(こちらとしては授業開始と同時にスタートすれば30分程度で終わると見込んで作っています)。

時間配分問題の解決策

1. 授業開始即slack

大幅な仕様の変更になってしまいますが,授業開始と同時にslackを始める仕様にするという手があります。 そうすると,グルーピングについて2つの方法が考えられます。1つは,shufflでグルーピングするタイミングを前日に設定しておき,役割分担も授業開始時点では完了するように指示するというもの。2つ目は,こちらであらかじめ毎週のグループ(ペア)リストを作って公開し,それを見て各自がグループDMを作って役割分担をしておくというものです。リストの中でグループDM作る人を指定しておき,グループDMの始め方の資料も作っておけばなんとかなりそうですが,学生がどこまでできるのかは未知数なので不安があります。

上記いずれの方法を取ったとしても,授業開始時点からslackをするのであれば,授業開始前にインプットタスク部分であったりoutputのpreparation部分(自分の考えを決める等)が終わっている必要があります。それが可能となるためには,前週から授業週までの1週間で準備となる課題を終えて(これについては授業時間内に終わらせなくていいこととする)おくように授業計画を変更することが必要になってきます。

むしろ,前もってグループがわかっていれば,役割分担の確認も前もって終えた状態で授業に臨めるので,会話スタートまでの時間をタスクそのものに費やすことができるかもしれません。そうなれば,これまで通りの時間でも十分にタスクを完遂できる可能性もあります。

授業時間後にすぐslackスタートという案は大幅な授業計画の変更になりますが,その一部分であるグループ(・ペア)リストの公開は考えてしまってもいいかもしれません。

2. slackは授業時間内でなくても良いとする

2つ目の解決策は,slackのやりとりを授業時間内で終わらせることに限定せず,むしろLINEのグループチャット的な使い方(時間のあるときに返信する)とするものです。こうすれば,なにかトラブルが発生してもそれに余裕をもって取り組めますし,時間を空費してしまうリスクは抑えられます。一方で,ライブ感が損なわれてしまいます。また,学生がslackの通知設定をどうしているのかに依存してしまうので,「返事忘れてました」となる可能性もかなりあります。

逆に,24/7でslack課題から逃れられないというプレッシャーを与える可能性もあります。これは,亘理先生が先日ブログで書いていた授業内外の話にもつながりますが,授業の時間内という縛りをなくすことによって,slackの課題が他の日常生活の時間や学生が受講している他の授業との競合を迫られることになります。場合によっては昼夜問わずにslackの返信が迫られる(ように学生が感じてしまう)かもしれません。もちろん,学生が自分で様々なことに費やす時間の管理やタスク管理をできれば問題はありません。ところが,「社会人」とか「オトナ」であってもタスク管理の本がわんさか世に溢れ,そのためのアプリケーションやライフハック術を求める人がたくさんいるわけです。つまり,かなりレベルが高い,身につけるのが難しいスキルなわけです。自律的学習者の育成という意味では大学生のうちにそういったマネージメントスキル的なものを身につけてもらいたいという思いもある一方で,それをすべて学生側に投げることもあまり誠実とはいえないような気がします。

以上のような理由で,2つ目の解決策はメリットもありますが,個人的にはデメリットも大きいなと思っています。

教師の介入のタイミング

時間配分の問題は,どちらかというと授業の運営上の問題でした。2つ目の問題は,むしろ指導技術に関わるものです。それは,学習者同士の会話にどうやって介入するか,どのタイミングで介入するのかという問題です。

私は先週の授業である「失敗」をしました。その日のslack課題は,「教科書の登場人物の情報を読み取り,その人達が参加するパーティに自分も招待されたとしたとき,誰と一番仲良くなりたいと思うか?その人にどんな話題で話しかけるか?」を考えるというものを各自で考えて,意見交換するというものでした(合意形成は必要なし)。

この課題に対して,いきなり”What’s yoru hobby?”とペアの相手に話しかけているペアがいたのです。私はそれを見て,「しまった。課題が正しく理解されていないぞ」と判断して,”Why are you two talking about hobbies?”ってすぐ突っ込んでしまったのです。ところが私のその投稿の直後に,メインの話題に入ろうかという言う話になっていたのです。その時に「あ,そういうことか。趣味の話はconversation starterだったのか」となったんです。その意識が自分にはまったくなかったので,反射的に流れを乱してしまったことを反省しました。ランダムに話す相手決めてるので,いきなり話すんじゃなくなにか最初にアイスブレイクじゃないけどそういう会話を入れるというのを,誰にも何も言われていないのにできるというのは素晴らしいことですよね。もちろん,そこでいきなりWhat’s your hobby?が適切なのかっていうのはあります。ただ,コミュニケーションとして大事な要素を意識してやりとりしようとしたという行動に何か水差してしまったなぁと思いました。

教員側としては,勘違いして変な方向に行ってしまうのはなるべく早く止めて軌道修正してあげたいとは思うわけです。ただし,それを仮に教員が指摘しなくても自分たちで「あれ?この話でいいの?」などとやりとりしながら,「先生!この話であってますか?」とか「もう一回インストラクション読み直そう!」とかいうやりとりをして自分たちの力で軌道修正ができるのだとしたら,それ最高っていうかそれが英語でできるというのは素晴らしいことだと私は思います。むしろ,それこそが私が身につけてほしい「英語力」だと思っています。その学びを奪うことは絶対にしたくありませんが,かと言ってそれを黙って見てるのももどかしいというのがジレンマです。

また別の視点で見れば,合いの手を入れるタイミングもテキストチャットは独特です。誰かがタイピングしている最中であればそのことがSlack上で表示されるとはいえ,何十人も同時にやっているので自分がコメントしようとしてる学生が何か書いてるのかまでは把握できません。そうすると,スレッドが止まっているのは沈黙なのか,はたまた書いてる最中だから止まってるのか,ということはわかりません。沈黙しているから何か会話を促すような投稿をしてみよう,と思って何か質問を書き込みんだらその直後に次の話題に移行するような投稿がされてしまって逆に対話の流れをそいでしまったりということもありました。意外にというか,教師の介入は結構難しいなというのがリアルタイムのインタラクションをテキストチャットでやらせてみての正直な感想です。

このように邪魔をせずに何かしらのメッセージを伝える方法としては,reactionの活用も可能かもしれません。つまり,絵文字でレスポンスすることですね。slackには豊富な絵文字があるので,いくつかに絞ってフィードバックを関連付けておけば,会話を邪魔せずに何らかのフィードバックを与えることもできそうです。

また,このリアクションをうまく利用して成績に反映させる事も考えられます。今のところ,「いいね!」と思った投稿には100点のマーク(:100:)をつけておくようにしています。それをあとからslackのAPIを利用してログを取得して,どの学生が何回そのマークをもらったかを集計するというものです。このことはまた別の記事で紹介できればと思います。

おわりに

とりあえず,slackを利用して何回か授業をやってみてわかった課題と,それをどうしたら解決できそうかについて書いてみました。前回の記事を書いたときは,まだ実際に実践をしてみる前の段階でしたので,この記事に書いたようなことは見えていませんでした。これからまた授業を重ねるごとに,新しい問題が出てきたり,あるいはここに書いた課題を克服できたりといったこともあるかもしれないので,また時間をみつけて記事を書こうと思います。

なにをゆう たむらゆう。

おしまい。

注. ちなみに,Shufflは無料でも2人,3人,4人と人数が選べます。一方で,donutだと時間の設定やhostをペアリングから外す等の設定は便利ですが,無料版では2人しか選択できないので,Shufflとdonutは一長一短という印象です。

ペアやグループでの「会話テスト」もテキストチャット (Slack) なら効率的に回せるかもという話

Photo by Andrea Piacquadio on Pexels.com

はじめに

今まさに思いついたことをブログ記事に書いてしまうシリーズ(そんなシリーズがあったのかどうかはわかりません)。顔出し問題の続きがまだ公開できてませんが,それよりこっちを先に出してしまいます。表題のとおりで,今定期テストのことを考えていたら振ってきたアイデアです。

スピーキングテスト実施の大変さ

対面授業のときにスピーキングテストしようと考えると,その選択肢の1つに授業時間内でテスト実施&評価を終わらせるというパターンが出てきます。クラスを半分に割って,1ペアずつ教員のところに来て….とかやるような形式です。40人のクラスをペアにしても20ペアもできてしまうわけで,90分をフルに使ったとしても入れ替えとかも考えて3分できればいいほう。だけど3分の対話って結構短いんですよね。特に,用意してきたものを話すのではなく,その場で即興で話させようと思うと特にそうなります。もっとこうstruggleしながらその中でことばを道具として使って意思疎通するというその醍醐味を味わってほしいと考えると,3分じゃ間違い探しみたいな簡単なのすらできないかもしれません。

じゃあもう評価は授業外でやろうということになると,授業内では録音させるという選択肢になります。私は昨年度はこのパターンをやっていて(過去記事参照),しかも学期中に4回もテストしてました。だいたい1クラスが18ペアくらいで,1ペア10分なので1回で合計180分(3時間)の会話を聞いて評価することになります。これを中間で2回,期末で2回なので,合計12時間を費やして評価していたことになります。

いや厳しいですよね。今考えるとよくやってたなと思います。

テキストチャットならテストできそう?

オンライン授業になったので,基本的にインタラクションはslackでやっていこうと思っています(過去記事参照)。それで,このテキストチャットを使ったら,授業時間内でもテスト実施できるのではないかと思いました。なぜなら,ある程度「複数ペアの同時評価」も可能だからです。

口頭産出のやり取りを評価しようと思ったら,2ペア同時に呼んで,同時に聞きながら評価するって相当訓練積んでもかなり厳しそうですよね。口頭発話は聞き逃したら終わりだからです。また,同じタイミングで話してたら両方聞いて意味理解するのはかなり難しいと思います。ところが,テキストチャットは少し遅れてもやりとりは残っていますので,会話に追いつくことがそれほど難しくありません。どんなにタイピングが早い人のやりとりであっても,一方が投稿して,それを読んで,そして返答を考えるというのは口頭発話よりも確実にタイムラグが生じるので,会話の流れ自体も緩やかになることが予想されます。学生はそこまで英語のタイピングに慣れていないでしょうから,ペースはさらに遅いでしょう。同時性の点でも,もし仮に同じタイミングで投稿があってもどちらかを先に読んでどちらかをあとに読むこともできます。これはスピーキングなら絶対に不可能なことです。

そうなれば,デバイスが3つ(PC,タブレット,スマホ)あればリアルタイムで3ペア(あるいはグループ)の会話を同時に追いながら評価することも意外にできるかもしれないと思いました。デバイスを複数使わなくてもthreadを行き来すればいいわけなんですが,見やすさは1デバイスにつき1スレッドだと思うので,それがいいかなと。

なんなら私の今の在宅ワーク環境は,Mac mini, HP Spectre x360, iPad pro 10.5インチ,iPhone8 Plus,の4つのデバイスでSlackを使えるので,4組いける可能性もあります。試したことないのでわかりませんが,ブラウザで同じワークスペースに複数タブでログインして表示すれば,別に複数デバイスでやる必要もないのかもしれませんが。

普通の口頭のやり取りとは違うので,テキストチャットのやりとりに合わせて評価の観点だったりルーブリックだったりは改変しないといけませんが,テキストチャットでインタラクティブなスピーキング(?)テストをやることにしたら,授業内で時間を分割すれば全員がテストを受験することもできるかもしれません。

ここまでの話は学生同士のテキストチャットを第三者として教師が評価する想定でしたが,教師対学習者の1対1のやりとりをするような面接型のテストも,複数人と同時にやりとりすることが可能かもしれません)。評価するのはかなり工夫しないと難しいかもしれませんが,テキストは残るので,あとで見直しての評価もできそうです。録音してもらったのを提出するときのように,自分が初めて全部のやりとりを聞いて評価する方式に比べれば,自分がしたやりとりを振り返りながら評価するのであれば評価にかかる時間と労力も格段に減るでしょう。

問題点

もちろん,すべてがハッピーというわけではありません。やりとりに時間がかかるということは,テスト時間も口頭でのテストよりは長く確保する必要があります。口頭なら10分もうけていればよかったのが15分や20分になるかもしれません。このへんは,タスクの難易度を少し下げてあげるのも手かもしれません。そうすればタスク達成にかかる時間が短くなるはずなので,そこまで長い時間かけなくてもテストとして成立しそうです。

また,そもそもそれスピーキングじゃねぇよっていう話もあります。もちろんそうで,やってることは「ライティングのコミュニケーション」です。スピーキングという技能の代替手段であって,「やりとり」を重視しているのでテキストチャットにしていますが,音声言語のやりとりとは違うものだという自覚はあります。ただ,こういう特殊な状況で,手近に使えるボイスチャットツールもないですし,zoomのようなものも導入できないスピーキングのクラスはどうしてもあります。その限られた状況の中で,「ましな」そして「実現できそうな」テストの形を考えたらテキストチャットのテストもありなんじゃないかなと思いました。

おわりに

時間の設定や課題の難易度については,授業の中でテキストチャットのやりとりをさせながら感覚をつかんでいくことになりそうです。テキストチャットをオンラインでやらせるという試みをまだ始めたばかりなので,アイデアとして面白いかもしれないという程度で実際にやろうとしたらいくつも超えなければいけない壁もあるような気がしています。

とりあえず授業をやりながらテキストチャットテストで複数ペア同時評価をして授業時間内に終わらせる,ということができるのかどうか模索していこうと思います。

なにをゆう たむらゆう。

おしまい。

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

はじめに

下記の2つの記事の続きで,おまけ的なものですが自分の備忘録のためにも残しておきます(R編がなかなかスタートしないw)。

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

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

簡単に何をやっているのかをまとめます。Slack上で授業外ライティング活動をさせ,そこで書かれたものをGoogle Apps Scriptを使ってGoogle Spreadsheetに記録し,そこで個人の1週間あたりの産出語数を学生と共有するということをやっています。大まかな枠組みについては,上記の記事でカバーされていますが,今回は,「ちょっとかゆいところに手が届くといいな」くらいのお話です。

問題の所在

https://twitter.com/tam07pb915/status/1118157873219948545

学生の書いたものを読んでいると,カンマやピリオドの後に半角スペースを入れないで書いているものが頻繁にありました。

Yesterday,I went to the zoo with my family.After that,we went to an Italian restaurant.It was delicious.

みたいな感じのものを想像していただければいいかなと思います。見る人が見たら気持ち悪くてたまらないと思うのですが,おそらくデジタル環境で英語を書くという経験の少なさからこのような英文になってしまうのだと思います。もちろん,タイポのようなことはありうるのですが,それでも一つの投稿で頻発していたり,ある特定の学習者が連続して誤りを犯しているとどうもこれは半角スペースを入れることを知らないのではないか?と考えるようになりました。

手書きでスペースをあける行為と,キーボードやスマートフォン上でスペースバーを押したり,フリック入力時に「空白」と書かれた部分をタップしたりという行為が関連付けられていないのかもしれません。また,日本語では句読点の後にスペースを入れるというルールはありません。

だからといって,彼らの今後の英語使用場面として手書き以外で英語を書くことがないと想定することはできませんし、スペース入れるということも身につけて欲しい(そうじゃない文見たときの気持ち悪さもわかって欲しい)ことではあるのでしつこく言っていかないといけない気がしています。もちろん,気づいたときにはメインのチャンネルにも共有する形でスペースを入れるようにコメントを出してもいます。ただ,そういうことよりもむしろ「リアルなコミュニケーション」の道具として英語を使って教員ともやりとりしてほしいというところもありますので,あまり半角スペース警察にはなりたくありません。

また,授業運営上でも問題はあります。それは,語数のカウントです。語数のカウントは,1語ずつを単語だと認識して数え上げているわけではなく,単語と単語の間に生まれるスペースを基準にして数えています(詳細は上記の過去記事か,「エクセル 単語数える」とかでググって見てください)。つまり,”Yesterday, I”は2語と認識されても,”Yesterday,I”は1語になってしまうというわけです。ピリオドのあとに半角スペースがなく次の文が始まる場合も同様です。私は,「1週間で○○語を書き込むこと」を課題としていますので,あまりにもこのミスが多いと語数のカウントが通常より少なく計算されてしまいます。

解決方法

私が考えつく解決方法は以下のとおりです。一番土方っぽいものから順に,

  1. Googlespreadsheetの書き込みを1セルずつ確認して,ピリオドやカンマのあとにスペースがなければ手作業で足す
  2. Googlespreadsheetの「検索と置換」でピリオドやカンマを探し,ヒットしたものを目視で確認して半角スペースがなければ足す
  3. Googlespreadsheetの「検索と置換」で正規表現を使ってピリオドやカンマのあとにスペースがないものを一括で修正する
  4. Googlespreadsheetでsubstitute関数を使って置換する

1や2はありえないとして,3も問題があります。それは定期的に作業をしないといけないという点です。Googlespreadsheetを使う利点は,一度作業をしたらしばらくの間は放置しておいても勝手に語数が記録されて学生が確認できるという点です。したがって,できれば4で考えたいところです。しかしながら問題は,substitute関数では置換したい対象をうまく持ってこれないという点です。もしも,「すべてのカンマまたはピリオドについて,ピリオドまたはカンマと半角スペースに入れ替える」とすると,正しく使われているところに余計にスペースを入れてしまうことになります。そうなると,スペースの数を基準とする語数カウントがうまくいきません。そこで,正規表現を使う必要が出てきます。なんと,Googlespraedsheetには正規表現が使える次のような関数があります。

  • REGEXEXTRACT(正規表現で一致する文字列を抽出)
  • REGEXMATCH(正規表現で一致する文字列があるか検索して真偽値を返す)
  • REGEXREPLACE(正規表現で一致する文字列を別の文字列に置き換える)

今回の場合は,置き換えが必要なので3番目のREGEXREPLACE関数を使います。正規表現についての詳しい説明はウェブ上にごろごろ転がっているので,以下では詳しい説明はしませんのでご了承ください(注1)。REGEXREPLACE関数は,REGEXREPLACE(検索対象テキスト, 正規表現, 置換)という引数を取ります。最初の検索対象は学生が書き込んだテキストの入っているセルをしていすることになります。では,正規表現の部分はどうすればよいでしょうか。置換したい対象の文字列は,「ピリオドまたはカンマのあとに単語列が続くもの」でした。これを正規表現で表すと次のようにできます。

“(\.|\,)(\w+)”

ここで,カッコでくくってグループ化しているのは,置換するときに元の文字列を使いたいからです。置換は,ピリオドとカンマ,その後に続く単語列はそのままで間にスペースを挟むので,

“$1 $2”

$1は最初にグループ化したものなので,ピリオドまたはカンマ,$2は次にグループ化したものなので,任意の単語列になります。その間に半角スペースが入っています。つまり,次のような関数が完成形になります。

=regexreplace(テキストのあるセル, “(\.|\,)(\w+)”, “$1 $2”)

これで,ピリオドまたはカンマのあとに単語列が続くときは半角スペースを挟む」という作業ができるようになりました。あとは,この関数のセルに対して語数カウントをする数式を適用すればよいわけです。

新たな問題

さて,うまくいったかのようにみえたのですが,実は先程の例を使うと別の問題が発生することに気づきました。それは,半角スペースはあるけれど,それがピリオドやカンマの前にあるという場合でした。例えば,下記のようなものです。

Yesterday ,I went to the zoo with my family .After that ,we went to an Italian restaurant .It was delicious.

このような用例に対して先程のREGEXREPLACE関数を適用してしまうと,新しく得られるものは次のようになります。

Yesterday , I went to the zoo with my family . After that, we went to an Italian restaurant . It was delicious.

これでは,カンマやピリオドが1つの単語として認識されてしまい,語数のカウントが逆に多くなってしまいます。これを避けるには,「文字列の直後にあるカンマやピリオドの場合には」という条件を加えれば良さそうです(注2)。ということで,改良版は次のようなものです。

=regrexreplace(テキストのあるセル, “(\w+)(\.|\,)(\w+)”, “$1$2 $3”

Googlespreadsheet上で見ると下記画像のようになります。

置換前と置換後のテキストと,それぞれの語数カウントの比較

 

おまけ(絵文字タグの削除)

slackといえば,絵文字も使えます。絵文字も文字コミュニケーションにおいては重要だという部分もありますし,一切絵文字は使うなというのもおかしな話です。slackから書き出される絵文字は,半角のコロン(:)に挟まれたタグになってテキスト化されます。”:heart:”や”rolling_on_the_floor_laughing”と言った感じです。これが文字列にくっついている場合は特に問題ありません(注3)。しかし,文字列から独立した状態で使われると,絵文字1つが1単語と認識されてしまいます。このことに気づくと,すべての文に絵文字をつけたり,あるいは半角スペースを挟んで絵文字を連続させたりという学生が現れます。昨年度は口頭注意でそれなりにケアしていましたが,どうせREGEXREPLACE関数を使うのだから,絵文字タグも取ってしまえばいいということに気づきました。下記のようにしてあげると,絵文字タグが取れます(注4)。

=regexreplace(テキストのあるセル,“\:.*?\:”,“”)

実際にGooglespreadsheet上で使うときには,スペースが入っていないことで生じる問題を解決する関数を使った上で,その結果の出力に対してさらに別の列で絵文字タグを取る関数を使うのもありです。むしろ,プログラミング的には良いのだと思います。なぜなら,なにか問題があったときにその問題の原因を探りやすいからです。ただ,入れ子にすれば1列で済みます。

=regexreplace(regexreplace(テキストのあるセル,“\:.*?\:”,“”),“(\w+)(\.|\,)(\w+)”,“$1$2 $3”)

さらに,語数をカウントする数式にこのREGEXREPLACE関数も入れ込むと…

=(LEN(regexreplace(regexreplace(テキストのあるセル,“\:.*?\:”,“”),“(\w+)(\.|\,)(\w+)”,“$1$2 $3”))LEN(SUBSTITUTE(regexreplace(regexreplace(テキストのあるセル,“\:.*?\:”,“”),“(\w+)(\.|\,)(\w+)”,“$1$2 $3”),” “,“”)))+1

もうなんだかわけがわからなくなってきましたが,この最後の数式を使えば,新しく列を増やしたりすることなしに語数カウントができるようになっています。

おわりに

この記事では,Googlespreadsheetで正規表現を使って学習者が犯すパンクチュエーションの誤りを直すということの例を示しました。他の媒体(R,Python,サクラエディタ)等で正規表現を使った経験があるのでなんとかなりました。一応ざっと確認して特に問題ないとは思っていますが,正規表現にはあまり自信がないので間違いを見つけた方はどうかコメント欄等でご指摘ください。

なにをゆう たむらゆう。

おしまい。

注1: 記号類をそのまま使うときになんでもかんでもエスケープ記号つけるのは私の癖です(そして一貫性もないですたまに忘れるので)

注2: この方法の一つの問題は,”I ate lunch ,and took a nap.”のようなものが残ってしまうという点です。「半角スペースの直後にピリオドやカンマがあり,その直後に文字列が続く場合には,半角スペースを消して文字列とピリオドやカンマの後に挿入する」のようにすれば解決されます。ただし,関数の入れ子が複雑になる上に単語数カウントには関係ないので今回は無視しています。REGEXREPLACE関数でやるとすれば,次のようなものになるかなと思います。

=regexreplace(対象文字列のセル,“\s(\.|\,)(\w+)”,“$1 $2”)

注3: もしも,単語リストを作ったり,コロケーションを見たりのようにテキスト分析にいこうとすると,この絵文字タグは外してあげないと絵文字タグと隣接する文字列が認識されなくなってしまいます。

注4: 17:10:29のように時間をコロン区切りで書き込むような例があると,これも引っかかってしまうのですが,まあほとんどないと言っていいと思うので木にしていません。

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