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

「知っている」事の影響を排除するための2つのアプローチ

思いついたことを書き留めておくだけのメモ記事です。粗いところもあるかもしれませんがご容赦ください。

「狭義の」(文法の)第二言語習得研究が目指していることは,母語話者が持っているのと同じ知識を第二言語学習者も身につけることができるのか,できるとすればそれはなぜか,できないとすればそれはなぜか,というのが分野の抽象的で大きな問いであるというのがざっくりとした私の理解です。

で,この問いに迫ろうとしたときに問題となるのが,いかにして「知っている」ことの影響を排除するのかなという点です。母語話者は基本的には言語の規則を意識的には知らない(説明はできない)という状態で,でもある法則に従って規則的な振る舞いをするわけですよね。その規則的な振る舞いを言語理論で説明しようというわけです。そういうことを見ようとすると,学習者が意識的に知っていること(言葉で規則を説明できること)を対象にしていては意味がないじゃん,ということになります。知っているだろうよ,というような現象を対象としている限り,「知っている」からできるという可能性を排除することができません。よって,習っているはずもないのに母語話者と同じような振る舞いを見せる現象があるよ,とか,あるいはそれが第一言語によって同じような振る舞いを見せたり見せなかったりするよ,というような方向性で研究をデザインしていくことになります。そして,それを生成文法の理論から予測していこうとすると。生成ベースの第二言語習得研究をやっている人たちの基本的な考え方はそういうことなのかなというのが私の個人的な印象です(もちろんそうじゃない人もいるとは思いますけれど)。

一方で,SLAの初期からずっとSLA研究者が関心を持ち続けてきたことは,「知っている(=規則は説明できる)のにも関わらず,産出などをさせると間違いが頻繁に起こってしまう」という第二言語学習者に典型的な現象についてどのような説明を与えるのか,ということです。この関心を説明するために生まれたのが,明示的・暗示的という2つの知識源を仮定する考え方でしょう。つまり,知っている=明示的知識はあるけれども,産出などの課題で主に使用されると考えられている暗示的知識が不十分であるために,誤りが生じてしまうというようなロジックです。この考え方でいくと,そもそもの出発点が「知っているのにできない文法項目」(典型的なのが三単現の-s)の振る舞いについての説明を与えることになります。よって,知っていることの影響を排除しようとしたときに,「習っていないであろう項目を対象とする」という理論ベースの考え方は採用されえません。そこでどうなるかというと,測定の方法としてできるだけ「知っている知識」が作動しないような課題を用いるというアプローチを取ることになります。文法性判断課題に時間制限をつけたり,elicited imitationを使ったり,その後の反応時間パラダイム(自己ペース読み課題やword monitoring課題)や視線計測,そして脳系の測定具を使うというように,測定具によって「知っている」ことの影響を排除しようとしてきた,というのがもう一つのアプローチとしてあるのかなと考えています。

私も最初の関心は後者のアプローチにあり,どうすれば明示的知識の干渉を抑えた知識の測定ができるのか,という点にありました。ところが,それでは拉致があかない部分もあります。明示的・暗示的知識系の研究の重大な欠陥だと思っている部分で,それは,「意識的かどうか」についてを直接的に測定してこなかった(できなかった)という点です。反応時間や視線計測というパラダイムを用いたとしても,何らかの反応の違いが観察されたときに,それが「おやっ?」という意識にのぼるレベルの知識を使ったから反応時間や注視時間が長くなったのか,はたまた自分では全く気づいてもいなかったけれどもそうなってしまったのか,については測定していませんでした。よって,暗黙の了解として「反応時間や注視時間の条件間差は無意識なものである」だとか,「因子分析したら文法性判断や誤り訂正課題とは違う因子にローディングするからと自己ペース読み課題や視線計測で測られているものは暗示的知識であるのだ,みたいな想定をしてきたんですよね。それってなんかちょっとそこを当然のことのように受け入れちゃってもいいのかしら。という疑問が生まれてくるわけです。そういうこともあって,私が博士後期課程時代に扱ってきた文法現象は(もちろんこれは草薙さんの影響を大いに受けているのですが),どちらかというと前者の「知っているはずもないような文法」を対象にしているものが多くなっていきました。今必死にディスカッションを書いているthere構文の数の一致 (当時はこれも明示・暗示に当てはめようとしてたんですが今は違う方向性で書こうとしてます)だったり,tough構文の研究  なんかはまさにそういうことだったと言えます。conceptual numberの研究(これは言語習得よりは文処理ですが)も,「そんなことは習っているはずもないけどなんかガーデンパス回避しちゃう」というような話でもあります。

別にどちらがいいとか悪いとかいうわけではないのですが,同じように第二言語の文法習得を対象にしている研究で,「知っていることの影響をできるだけ排除したい」という目的は共有していたとしても,そのときに知っているはずもない現象を対象とするのか,はたまた当然知っているだろうというような現象を扱って測定具の工夫によって知っているという知識の干渉を極力抑えるというアプローチに行くのか,そういう違いが出てくるのは結構興味深いことなんじゃないかなぁということを考えたのでした。

もちろん,これはただの思いつきなので,そもそもの前提が間違っているとか,2つのアプローチは別に同じ方向を向いているわけではないとか色々あるかもしれませんが,こういう整理の仕方ってどうですか?というような投げかけ的な記事でした。

なにをゆう たむらゆう。

おしまい。

広告

 

スピーキングの授業の話

はじめに

私は,1年生対象の共通教養科目のListening&Speakingの授業を昨年度から担当しています。昨年度色々と試行錯誤を重ねて,今年度からはその反省も踏まえて改善できていると感じています。一方で,自分の中で授業の型はそれなりにできてきてはいるのですが,課題もそれなりに感じています。この記事では,授業の進め方と今感じている課題の両方についてまとめておこうと思います。

授業の概要

教科書はPearsonのImpact Issues2というものを使っています。版が新しくなったのですが,色々あって(学務的な意味で)新版ではなく旧版を使っています。細かいミスがちょくちょくあったりとかしておいおいと思うところもあるのですが,なんといっても掲載されているトピックというか「ネタ」がとても面白くてタスク向きなので,それが気に入って使っています。

教科書の構成はおもに,次のようなものです。

  1. 会話や語りのリスニングパート
  2. 内容確認
  3. 4人の視点からそのユニットの問題についてのopinionが提示される
  4. 主にペアやグループで行うディスカッション系のタスク
  5. スピーチ

私は授業では1しか扱っていません。2の内容確認はLMSで予習として行わせていて,授業中では教科書に載っている内容確認問題とは少し違う問題をいくつか提示してその答えに注目して聞くようなリスニング活動をやっています。そして,それ以降はスピーキングタスクのための時間です。スピーキングタスクが終わったら,どのような意見にまとまったか,どういった解決策にたどり着いたかなどを教室全体でシェアし,言語的なフィードバックを与えて授業は終了です。

スピーキングタスク

スピーキングタスクの題材は教科書で扱われているものを元にオリジナルで作っています。例えば,「クラスメイトから嫌がらせをされて困っているが,事を荒立てたくないので黙っていようとする女の子と,誰かに相談したほうがいいよと提案する友達」の話であれば,第三者の視点からこの問題を考えるタスクを作ります。2人の共通の友人という設定で,この問題を解決するためにはどうしたらよいかをペアで話し合い,お互いが納得する解決策を出せたらタスク達成というようなものです。

言いたかったけど言えなかったことリスト

授業で使うワークシートには,毎回「言いたかったけど言えなかったこと」を記入するスペースを設けています。授業中にここに書かれたものを見ながらフィードバックを決めたりしています。ただし,もちろん全部を取り上げることはできないので,あとで集めてリスト化して英訳と簡単な解説を付けたものを「言いたかったけど言えなかったことリスト」として翌週に配布するようにしました。最初はワークシートに直接書いていたのですが,同じようなことを書いている学生もいて同じことを何度も書くのは面倒だし,どうせなら全員で共有したほうが学生にとっても有益だろうと考えてこの形にしました。学生には,「自分が思ったこと」をそのまま書くのではなく,できるだけ日本語で「意味順」の形に落とし込むところまではやるように言っています(なかなか浸透していかないのですが…)。

授業の中で,同じタスクを繰り返してやることは時間の制約上なかなか難しいのですが,中には汎用的な表現も出てきたり(「絶対に嫌だ」みたいなのとか)するので,そういう表現は翌週や翌々週の違うタスクで使ってみている学生がいたりします。また,テストでは同じユニットのタスクにあたる可能性もあるので,こういったリストがあることでスピーキングテストのテスト勉強にも少しは役に立っているのかなと思っています。それ覚えさせて言わせているだけじゃんと思われる方もいるかもしれませんが,私は「覚えろ」という指導は一切していませんし,授業中に表現の口頭練習なども一切していません。ただリストを渡しているだけです(注1)。また,どの場面でどの表現を使うかは完全に学習者にゆだねていますし,会話の流れも流動的なので覚えたら必ず使う場面が訪れるとも限りません。

私が重視しているのは,なにか言えなかったことがあっても,それをワークシートに書けばフィードバックが与えられ,そこで新たなリソースを得て次に少しでも「言えた」と思える機会を増やすチャンスが与えられるということです。手間は確かにかかるのですが,学生からも結構好評なので継続してやろうと思っています。

テスト

このテキストは全20ユニットの構成なので,15回の授業やそれを通年で使うことを考えると微妙に回数が合わせずらいということがあったりします。私はむしろそれを逆手にとって,中間と期末をそれぞれ2週に渡って行うように設定しています。テストはペアでのスピーキングとリスニングテストです。

スピーキングテスト

前述のように,私の授業では,各ユニットごとにそのユニットでの話題に関連したなんらかのスピーキングタスクに取り組むことになります。テストの週では,それまでに授業でやった各ユニットのタスク(具体的にはロールプレイ型の意思決定や問題解決タスク)と同じ内容でやや性質の異なるようなタスクに取り組むことになっています。内容は似ているので表現などはそのまま流用できますが,到達すべきゴールやロールプレイの状況設定が異なっているというようなものです。

ペアは毎授業でランダムに組んでいて,テストのときもこちらがランダムに決めたペアでやってもらっています。ただ,当日になるまで誰とやるのかわからないというのは不安もあるだろうということで,テスト1週目の前の週にはテストの実施要領や評価方法の詳細(ルーブリックの観点は後述)とともに2回のテストで誰とペアになっているかのリストを渡しています。

テストを2週に渡って行うことの理由として15週の授業とテキストのユニット数の数合わせという問題に触れましたが,それよりも大事な理由があります。それは,一度ではどのタスクにあたるかでパフォーマンスが変わるという点と,ペアがランダムなのでペアの相手によってもパフォーマンスが変わってしまうという2つの点への配慮です。

中間テストまでは5つのユニットをこなしますので,5種類の中から2つのタスクにテストとして取り組むことになります(中間テスト後から期末テストまでも同様に5ユニットです)。もちろん各ユニットで難易度に差が出ないように作っているつもりですが,学生によっては内容的な親密度や自分の関心などで自分の言いたいことをパッと思いつくようなタスクとそうではないようなものがどうしても(例え内容は授業である程度カバーされていたとしても)出てきてしまいます(この問題については後述)。そこで1度きりではなく,チャンスを2回与えるというわけです。ペアの問題も同様で,さまざまな要因で話がうまく進んだり進まなかったりということは容易に起こり得ます。ただし,自分が話しやすい人とばかり話すのも私としてはいいことだとあまり思っていません。また,友達は考え方も似ている場合が多いので,特に意思決定タスクのように自分の考えと相手の考えを共有してすり合わせていく必要があるようなタイプのタスクでは情報のギャップが生まれづらいという面もあります。

こうしてスピーキングテストを2週に渡って中間と期末で行う,つまり合計で学期中に4回のスピーキングテストがあることで,学生は授業中でも意欲的にスピーキングタスクに取り組んでくれています。授業で一度も経験したことのない話題についてをいきなりテストで話すのは難しいわけですから当然です。結局,授業中でスピーキングタスクをやらせるだけだとなかなかうまくいきませんが,評価のうちの少なくない割合を占めるテストがスピーキングだということを明示し,それが授業中のタスクに基づいているものだということを繰り返し伝えていくことで,授業中の取り組み具合も変わってくるなというのを今学期は実感しています(昨年度は秋学期からこのやり方を導入)。

ピア評価

スピーキングテストでは,学生同士の評価も取り入れています。よって,ペア2組で1つのグループとして,どちらか一方がタスクに取り組んでいる場合にはもう一方のペアはタスクに取り組むペアを観察し,教員が評価するのと同じルーブリックで評価をつけるようにさせています。評価の観点は,(a) 日本語の使用,(b) 沈黙,(c) 共同的なやりとり,(d) タスクの達成の4観点で,(a) ~ (c)は0-2の3段階,(d)のみは0-3の4段階評価にして重み付けしています。これは私がタスクの達成を重視しているからです。このことはもちろん学生にも伝えています。

リスニングテスト

リスニングテストは,1週目は内容理解を中心としたもの,2週目はディクテーションのテストにしています。詳しい内容は割愛。

スピーキングテスト後の書き起こし

順番が前後しますが,スピーキングテストが終わったらリスニングテストの前に書き起こしをさせています。書き起こしの目的は主に2つあります。1つは文法的または音声的誤りに注意を向けさせることです。テスト中はどうしてもタスク達成のためのやり取りに夢中なため,なかなか言語的な側面に注意を向けることが難しくなります。そこで,録音したものを書き起こす機会を作ることで,発話の内容以外の言語的側面に注意を向けさせようという狙いです。

書き起こしといっても全てを書き起こしさせるのは時間的にも無理ですし,10分となるとかなり長くなるので作業自体もしんどくて飽きもきますので,書き起こす部分を一部分に限定する必要があります。限定するには,どの部分を書き起こすようにするかを選択する必要が出てきます。「最初の数分」というような指定ももちろんできますが,せっかくなのでもう少しこの選択に意味を持たせようと考えました。そこで2つ目の目的として,やりとりの中でうまくできた部分に目を向けさせるようと考えました。こう考えたのにもいくつか理由があります。

1つ目は,やりとりのポジティブな部分に目を向けさせることです。なんとかタスク達成できても,どうしてもできなかった部分にばかり目がいってしまうことはよくあります。これ自体は,「もっとうまくできたのに!」とか「なんでこうできなかったんだろう」のように,次への向上心があるという部分もあるので,一概に悪いことだとは思っていません。そうはいっても,うまくできたポイントに目を向けさせることで,タスク後にネガティブな感情だけが残ってしまうことを防ごうという狙いがあります。

もう1つ,いい側面を書き起こさせる理由は,教員が評価する際に聞くポイントを絞るという点です。学生には,「会話の中で,ここの部分はよくできたので,ぜひこのやりとりに注目してほしい,というハイライト部分を書き起こす」ように指示を出しています。こうすることで,「自分の意見を伝えつつ,相手の意見も尊重しながら解決策を見つけることができた」のように,やりとりの内容的な側面に学生の注意を向けさせることもできます。そして,教員が評価をする際にもその部分は特に注意をして聞くようにすることで,ある程度の採点の負担を軽減する狙いがあります。

課題

採点つらい

これが一番の悩みです。正直,ここの部分以外はかなりうまく授業設計ができてきたなという実感があります。しかしながら,どうしても36人~38人のクラスでスピーキングのテストをやろうとすると個別に呼んでというような方法はなかなか時間的にも制約が厳しく,それ以外の時間を有効活用するのも現状では難しいです。そうなると,授業中に録音させたものをあとから聞いて評価するということをせざるをえません。まだペアにしているので18ペアの10分間で済んでいますが,それでも2週に渡ってやっているので,採点にはかなりの時間がかかります。コメントは聞きながら書いているのでそこまで負担には感じませんが,15回目にやるテスト以外は翌週に結果を返す必要があるので1週間という時間的制約の中で採点するのはどうしても自分の時間の他の部分を犠牲にする必要が出てきます(注2)。LMSを活用して効率化を図りたいなと思う部分もありますが,LMSではペアリングして同じ採点を同時に2人に与えるというところが不得意なのでうまい解決策が見つかっていません。

課題の難易度のばらつき

前述したように,テストに用いるタスクは教科書の内容に基づくので内容的な難しさにどうしても差が出てきます。しかしながら,「難易度」を調整することは非常に困難です。なぜなら,どのような内容を難しいと思うかに個人差があるからです。ある学生はUnit5が一番簡単だと思っていても,別の学生はそのUnit5は話しにくいと思うということは起こりえますし,実際にそういうことが起こっていると思います。教科書で扱われる内容に差があるため,それに基づいた課題を作成するとどうしても内容面やトピックに対しての親密度(どれくらい馴染みのある話か)である課題が別の課題よりも難しいと思ったり簡単だと思ったり,ということが発生してしまいます。テスト作成時にも,なるべく難易度の差がでないように工夫してはいますし,これからその精度をより高めていく努力はするつもりですが,どうしても難易度が同一のタスクを作ることはできません。

この問題の解決のためには全員が1つのタスクに取り組むということが考えられます。しかしながら,そういう形を取ることで,「1度うまくいかなくても次はもっと頑張ろう」,という2度取り組むことのメリットを失ってしまいます。私としては,難易度の問題を解消するためにテストタスクを1つにすることで生じるデメリットよりも,2回取り組むことができるということのメリットを重視しており,2回取り組むことで生じるデメリット(課題の難易度の差)についてはやむを得ないと考えています。

テスト用に教科書の内容とは関係のないものをやろうとすると,語彙や表現のレベルで授業でやったことを活かしづらくなり,授業とテストを関連付けることが難しいという別の問題も発生するため,その方向での改善も難しいかなと思っています。

ペアリングとタスクの組み合わせが複雑

ペアリングとタスクの割り当てをランダムにすると言っても,完全なランダムにはできません。なぜなら次のようなことを考える必要があるからです。

  1. 同じタスクを2週続けてやらない
  2. 同じグループの別のペアがやったタスクはやらない
  3. 同じ相手と2週続けてやらない

1をしてしまうと,相手は違うとはいえ同じタスクを繰り返す方が設定や流れがわかっている分難易度が下がってしまうのであり得ません。また,2についても誰かがやっているのを見ていればやりやすいでしょう。もちろん,原理的には1週目が終わった時点で自分が当たらなかったタスクをやったクラスメイトに内容を聞くことは可能です。そうではあっても,やりとりをすべて聞いた状態と内容だけ聞いた状態ではやはり違うと思いますので,前者は現実的に対応可能なので対応するが後者は目をつむるというようにしています。3は内容的な側面以外でのやりやすさへの考慮です。現実的には,学期の中で1度でもペアになったことがあるのとないのとでも違うと思いますが,さすがにそこまでコントロールすることは不可能なのでその部分にも目をつむっています。また,上の1~3を考慮すると,2週目にスピーキングテストに取り組む際には自分がやったものと相手がやったものは絶対にあたらないことになるので,2週目にどのタスクに当たるのかは3つに絞られます。そうした意味でも2週目のほうが対策を立てやすくなりますが,この点についても全員が同じ条件なので学生間の不公平は生まれないと考えています。

3はそこまで確認が難しいわけではないのですが,誰がどのタスクをやったのか,あるいはやっているのを見たのかを確認して,1と2の条件を満たしてタスクを割り当てるのは多少めんどくさいなと思っています。RやExcelの関数を駆使してある程度自動化できないかなと考えたこともあるのですが,ぱっと思いつかないので手作業でやっています。この部分ももっと楽にできたらいいのになというところで,課題だなと思っています。

おわりに

この記事では,私が2018年度,2019年度と取り組んできた1年生向け共通教養科目のListening&Speakingの授業について書いてみました。タスク中心にするという点と,指導・テスト・評価に一貫性をもたせるという点を意識して作ってきて,ある程度形になってきたかなと思っていますが,まだまだ課題も多いです。余談ですが,テキストが来年度は新版になるので,ベースは維持しつつタスクやテストは1から作り直す必要があるので来年度はまた少し大変になるかもしれません。授業での気づきを反映させながら,自分自身にとっても学生にとっても良い授業になるように,これからも考えていきたいなと思います。

こうして書いていて,Twitterで実践(研究)に興味なくなってきたとかつぶやいたのに「自分だいぶ実践に興味あるな」と思い始めています笑

なにをゆう たむらゆう。

おしまい。

 

注1. 本当なら少しくらい口頭練習してもいいかなとも思いますし,LMSとかで音声モデルを提示するだけでもやったほうがいいかなという思いは多少あります

注2. やはり採点してフィードバックして2回目はそこを改善してほしいというところもありますし,学生からしてもそうでないと何をどうすれば良い評価になるのかがわからないので2回目に臨むモチベーションも上がりにくいだろうと考えています。

文法知識の手続き化の謎(Sato and Kimのレビュー)

下記論文を読んでちょっとしたレビューというか考えたことを書き留めておこうと思います。

Sato, M., & McDonough, K. (2019). Practice is important but how about its quality? Contextualized practice in the classroom. Studies in Second Language Acquisition. Advance Online Publication. doi:10.1017/S0272263119000159

ざっくりとした内容は,WH疑問文の習得について,教室内で教師とのやりとりという形での”practice”を5週に渡って繰り返していくと,当該項目の手続き化が起こるかどうかという話です。従属変数は正確さと流暢さという2つの側面。それから,練習セッション前の段階での宣言的知識が,練習での伸びとか練習後の正確さを予測するかというのも研究課題です。

宣言的記憶,手続き的記憶,手続き化

本当は,この辺の用語の説明省こうと思っていましたが,やはり自分の理解と論文でどういう捉え方しているかを照らし合わせたほうがいいと思ったのでこの節では用語の理解の確認をします(そもそもそんなものが必要な概念ってなんなのってなりますけど)。論文に書かれている内容自体に興味があるという方は読み飛ばしてください。

宣言的記憶(declarative memory)は,規則に対する(または規則そのものの)知識であると言われています。キーボードのタイピングの例(嫌いな人は嫌いな例ですけど)でいえば,キーの位置の規則といえばいいでしょうか。または,どのキーをどの指で押下するかという知識と言ってもいいかもしれません。タイピングに慣れないうちは,意識しながらキーの位置を確認して押下しますし,スピードもゆっくりですよね。それが,タイピングの練習を重ねるに連れて,だんだんキーの位置がわかってきて,指の使い方も慣れてくるので押し間違いが減ってスピードがあがると思います。これをスキル習得理論から捉えれば,宣言的記憶から手続き的記憶(procedural memory)に頼った行動に徐々に変化しているということになります。これが手続き化と呼ばれるものです。そして,その状態でさらに練習を続けていけば,キーの位置を確認しなくても「体が覚えている」状態になると思います。いわゆる「ブラインドタッチ」みたいなものができるようになるわけですよね。これが自動化(automatization)です。

手続き化というのはこの論文では,なんらかの行動の正確さとスピードが向上することとであると解釈していいと思います。冒頭のイントロでそのような説明がされているので。同じ行動を何度も繰り返す(練習を重ねる)ことによって,ある行動の正確さとスピードが向上するということです。スキル習得理論(Skill Acquisition Theory)はここでいう正確さとスピードの向上というのが,頭の中のシステム自体の変容だと捉えます。つまり,宣言的記憶(declarative memory)に頼った状態から徐々に手続き的記憶(procedural memory)に移行する,これを手続き化(proceduralization)と呼びます。

宣言的知識はあったのか

さて,論文の内容に入っていきます。私がこの論文で一番もやっとしたところは,宣言的知識・手続き的知識というスキル習得理論を理論的枠組として援用ているにもかかわらず,宣言的知識とは何を指すか,そして手続き化とはどのようなプロセスかといったようなことを無視して無理やり結果を解釈しようとしている点です。

まず,知識の手続き化には宣言的知識を持っていることが不可欠です。宣言的知識を持った状態で練習を重ねることにより手続き的知識を獲得し,それが自動化していくというのがこの理論のベースにあるからです。だとすれば,宣言的知識のテストで宣言的知識を学習者が持っていることを事前に確かめる必要があるでしょう(もちろん,実際にテストはやっています)。ここにばらつきがなければそもそも回帰分析もうまくいかないはずなので,ある程度ばらつきがある学習者を対象にするというのはわかります。そうは言っても,事前の宣言的知識テストのスコアの平均値は59%SD25.12です。正規性の逸脱はしていないという報告があるので正規分布だと仮定すると,半分以下しか正答できなかった学習者もいると考えられます(注1)。そして,平均値で59%も決して高いとは言えませんよね。そのようなテストスコアしかなかった学習者は,果たしてどうやって手続き化したのでしょうか。というか,そもそも手続き化できたと言っていいのでしょうか。Wh疑問文の生成にはwhの移動やsubject-auxiliary inversion, 一般動詞の場合はdo挿入もあります。これらが複雑に組み合わさる文法だからこそ,その中のどの部分の知識はあってどの部分の知識はないのかがわからないと,何の宣言的知識があったのかやその手続き化もブラックボックス化してしまうのではないかと思いました。

行われたcontextualized practiceについて

疑問文の産出をある程度コントロールしながら教室内で意味のあるやり取りを,というのはわかります。その中で最大限できることをやったのだということも。ただ,画像とともに疑問詞が一緒に提示されて,それをもとに疑問文の産出が行われたというのはちょっと引っかかります。あくまで”practice”だからと言われたら何も言い返せませんが,コンテクストを大事にするということをauthenticityを大事にするということだと理解して読み進めた私からすると,それが”contextualized”かあという感想になります。結局,疑問文の生成にかなり意識を集中させることが可能であるという状況での口頭産出練習活動ということですね。結果的には,そういった状況で練習を重ね,ある程度その効果があったとしても,最終的に正確性は65%程度にしかならなかったのだというのは結果を解釈する上で重要なポイントでしょう。

それから,宣言的知識の影響を調べる分析では5回のセッションのうちの2, 3, 4が合計されて1と5は省くという処置をしたということが書いてあったのですが,”so as to avoid the independence of observation for the inferencial statistics”(p.13)というロジックがよくわかりませんでした。隔週でタスクの内容が異なるので,これやるとそのバランスが崩れてしまうのではと思いました。まあそこに突っ込むとそもそも複数クラスでタスクの順番のカウンターバランスとか取っているわけでもないので,ここで言われている流暢さや正確さの発達が単純に時系列の変動だけによるものとは言えないでしょう。タスクのタイプやそこで扱われたテーマによる変動も含まれているはずです。

また,対照群の設定もありませんので,研究自体はケーススタディとして扱われるべきものかと思います。「教室環境だから仕方ない」だけでこのあたりの実験デザインの粗さにすべて目をつむっていいわけではないと個人的には思いますので,今後別のデータでも同様の研究が重ねられていくといいのかなと思います。

事前の宣言的知識の手続き化への影響

結果で,練習前に行った宣言的知識のテストスコアは正確さや流暢さの発達を予測しなかったということが言われています。つまり、事前の宣言的知識を測る文法テストのスコアが高ければ高いほど正確さや流暢さが伸びやすい、あるいはスコアが低ければ低いほど伸びないという現象やその逆で高ければ伸びにくい、低ければ伸びやすいというような関係性がみられなかったということになります。このことを、著者らは次のように解釈しています。少し長いですが引用します。

Interestingly, the scores of the declarative knowledge test, administered prior to engaging in contextualized practice, did not predict the extent of the practice effect on accuracy or fluency changes. This result indicates that having declarative knowledge of a grammatical structure may not be related to the development of the procedural system of that structure when practice is considered as the cause of the changes. Accordingly, it could be said that contextualized practice alone facilitates a positive change in accuracy, on the one hand. On the other hand, the result seems to challenge skill acquisition theory in that learners may not need an explicit understanding of a grammatical structure to benefit from contextualized practice. However, in the current study, all learners possessed some declarative knowledge of the target structure. Hence, it is premature to argue that practice alone is sufficient to develop procedural memory of a grammatical structure. What the results suggest is, instead, that the amount of declarative knowledge was not related to the extent to which each learner benefited from practice (p.21).

事前の文法テストスコアとの相関がなかったことは、知識がなくても練習すれば良いということは意味しないという主張です。その根拠として、参加者の知識がゼロではなかったからと言っています。つまり、なんらかの知識は持った状態で練習をすることの意味はあるということです。ただし、どのくらい知識を持っているかは関係ないとも言っています。しかしながら,これは矛盾していると思います。これをサポートするには、知識の閾値みたいなものを想定する必要があるでしょう。つまり,知識がないとダメであり、かつ知識の量が関係ないとすれば、ある一定程度の知識が必要で、その先のレベルの知識は関係ないという想定になるはずです。そうるすと,その閾値とはどこなのか,その閾値が意味することはなにか,が重要になってきます。これを突き詰めると,前述した宣言的知識のテストスコアの解釈や,それが何を測っているのかという問題に再びぶつかるわけです。

まとめ

まとめると,Sato and Kim (2019)はタイトルがちょっと煽りすぎでは?と思います。確かに,practiceといっても機械的な口頭産出練習じゃだめだ,もっと文脈依存でコミュニカティブなインタラクションの中での練習でなくては,という主張自体はわかりますし,そのことを文法知識の手続き化という理論的な枠組みを当てはめて研究に落とし込んだのは面白いと思いました。ただ,宣言的な文法知識とはいったい何なのか,そして文法的知識が手続き化するとはどういうことなのか,という部分が分野として確立されたものが提示しづらいところが原因で疑問が色々浮かぶ研究かなというのが個人的な感想です。こういうところに失望して教室SLA研究を「研究」としてやることに対しての意欲を自分は失ったんだなぁと再確認することとなりました。論文を読んでからずっと放置していて公開までに3ヶ月かかってしまいましたが,とりあえず,私がこの論文を読んだ感想はそんなところです。

なにをゆう たむらゆう

おしまい。

 

注1: Rのrnorm関数を使い,n = 34, m = 59, sd = 25.1として乱数を発生させ,その中で50を下回る人数を数えるというのを10,000回繰り返すと,中央値は12人,最小値は3人,最大値は20人でした。

MS Word Online vs. Google Docs

はじめに

昨日学部教授会前のFDで,LMS利用やOffice365などを授業に利用することについてのお話がありました。その中で,WordやPowerPointを共有することによって協働的ライティングやグループプレゼンをやらせるというような例もありました。質疑応答で,Google Docs(以下,Docs)とWordはどちらがいいのかという話も出たので,個人的な意見を書きます。はじめに結論を言ってしまうと,所属機関が契約していてGoogle Classroomを使える人はDocs一択かなと思います。また,個人利用の場合でも,学生にGoogleアカウントを取得させてGoogle Classroomを利用することに抵抗がなく,それ自体を面倒だと思わないという方もDocsだと思います。以下,いくつかの観点でWordとDocsを比べてみます。一つお断りしておくと,この記事を読み終わっても結局は自分が使い慣れている方を使うという選択を取る人が多数だと思います(それだけ自分が慣れていないものを使い始めるのはハードルが高い)。私はWord Onlineを利用していますが,そのことについては過去に詳しく書いたのでそちらをお読み下さい。

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

比較の観点になりそうな部分

次の観点がどちらを選ぶかを決める際のファクターになるかなと思います。

  • アカウント作成
  • ファイルコピー
  • 外部連携(英語ライティングのときのみ)
  • 変更履歴

以下,順番にそれぞれの観点を詳しく説明していきます。

アカウント作成

これは自分の所属機関の状況次第でしょう。所属機関がOffice365の包括契約を行っているのであれば,学生は自分の大学メールアドレスでアカウント登録がすでにされている状態ですので,新しくMicrosoftアカウントを取得することなくOffice製品がオンラインで利用できます(オンライン版はデスクトップ版より機能は制限されます)。一方で,所属機関がGoogleと契約しているのであれば,大学メールアドレス=GoogleアカウントになるはずなのでGoogle DriveとDocsやスプレッドシート等が使えるようになっていると思います。この状態になっているということは,教員側は自分の授業に参加している学生のアカウントを知っている状態と等しいわけですから,大きなメリットになると思います。もしもMicrosoftアカウントやGoogleアカウントを個人で取得させた場合,教員は誰がどのアカウントなのかを把握して管理する必要が出てきます。人によってはメールアドレスやアカウント名から本名を判断できない場合もありますし,アカウント取得時に指示しても守らず好きな名前で登録してしまいアカウント名の変え方がわからなくなるなどのトラブル発生地帯でもあります。私の所属機関である関西大学はOffice365の契約ですので,私はWord Onlineを使用しています(過去記事)。そういう状況の人がDocsを使う場合というのは,その他の3つの観点で得られるメリットがこのアカウント作成のデメリットを上回る場合でしょう。

ファイルコピー

これは,Google Classroomの機能ですので,Docsだけ利用しているという方が得られるメリットではないと思います(Docsだけでもファイルコピーする方法をご存知の方がおられましたらコメント欄でお知らせください)。また,そもそもファイルコピーが必要ないという方もここは特に重視されない点かなと思います。

ファイルコピーがそもそもなぜ必要なのか

私は英語ライティングの授業でWord Onlineを使いますが,必ず教員が作ったテンプレートをシェアするようにしています。これにはいくつか理由があって(過去記事の「授業前の準備」のセクション参照),1つ目はフォーマットを統一したいということがあります。口頭や書面でフォーマットに関する指示を出しても,統一できなかったり設定の仕方がわからずにそこで授業の時間を空費してしまいます。それならば,こちらで予めフォントはTimes New Romanで12pt,行間は2行,タイトルは中央寄せ,インデントは1字字下げ,のように設定してしまったものを使わせたほうがあとあと添削入れる際に楽なわけです(テンプレ使わせても勝手に変えてしまう学生もいますけど)。もう1つは,ファイル管理の便利さです。例えば,学生側が新規ファイルを作成し,指定したファイル名をつけて教員とシェアするようにさせるとします。すると,教員側からは,「共有ファイル」という形でシェアされるため,各学生からシェアされた共有ファイルをフォルダでまとめて管理したりすることができません(Google DriveでもOneDriveでもできないと思いますがこの方法をご存知の方がいたらコメント欄でお知らせください)。これができないと,課題ごと,クラスごとにまとまった状態でファイルの閲覧ができないため,非常に不便です。使うのが学期に1度でグループごとのファイルが二桁いくかいかないかというような場合は特に問題ないかもしれませんが。さて,以上の理由から,教員がファイルを作って共有するという前提があるということをご理解いただけたかと思います。しかし,教員がファイルをシェアしようとしたとき,1つのテンプレだけを作って共有してしまうと,それにクラス全員が書き込もうとする状態が発生します。これを回避するには,テンプレファイルをコピーして保存させるか,あるいはあらかじめ学生全員分のテンプレファイルを作っておくかということになります。前者の方法を使うと,コピーしたものを再度教員と共有することになるため避けたいところです(前述の学生から教員にファイルシェアすることによる問題が発生するため)。よって,教員側で学生全員分のテンプレファイルを用意する必要が出てきます。ファイルのコピーを作る方法自体は何も難しくありません。シェルスクリプトやコマンドプロンプトでできる人には朝飯前でしょうし,それができなくてもMacならAutomatorがあります。また,受講生が100人でもCtrl (or command) + Cをたった100回連打するだけで100個のコピーファイルが作れます。しかしながら,単純にファイルをコピーするだけでは,”XXXのコピー1.docx”とか,”XXX(1).docx”のような連番ファイルしか作ることができません。できれば,ファイルに名前をつけてあげたいところですが,すべて手作業でファイル名変更するのは絶対にやりたくありませんよね。じゃあ,といって,学生それぞれに個別にファイルを共有することにしたとします。Aさんには”XXXのコピー1.docx”を共有して,”XXX_A.docx”とするように指示し,Bさんには”XXXのコピー2.docx”を共有して”XXX_B.docx”とするように指示したとします。2人ならいいですが,これを100人にやるなんて考えられませんよね(ライティングで100人なんてありえないと思いますが15人でもやりたくないです)。

Google Classroomの便利さ

Google Classroomを使えば,上記の煩わしさは一切ありません。なぜなら,テンプレファイルを作ってシェアする際に「クラス全員にコピーを作成」というオプションが使えるからです。この設定でDocsのテンプレファイルを課題としてストリームに投稿すれば,個別にコピーを作成してシェアする必要はありませんし,ファイル名も学生の名前のついたものができます。便利ですばらしい。よって,Google Classroomを使っているならDocsを使うべきだと思うわけです。

Office365利用者でもファイルコピーはある程度簡略化可能

では,Office365利用者はどうすれば,ということになりますが,ファイルコピーと名前の変更はプログラミング言語を使ってある程度自動化させることができます。我田引水になりますが,下記の記事を参照していただければ,Rでファイルコピーとリネームができます。

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

一度スクリプトを保存すれば,あとはファイル名やディレクトリ名などの一部分だけ書き換えるだけで作業はできますので,テンプレ作成->ファイルコピー&リネーム->共有の作業は数分で可能です。

ただし,この方法がGoogle Classroom利用と決定的に違う点が1つだけあります。それは,共有する際にはフォルダごと共有するという方法を取らなければいけないという点です。Google Classroomでは,コピー&リネーム&個別共有を一括でできましたが,OneDriveの場合はLMS的機能はありません。よって,ファイル共有に関してはもしも個別に共有するのであれば1つずつ共有する必要があります。これを,クラス全員のファイルが入ったフォルダをまるごと全員に共有し,作業の際は自分の名前のついたファイルを開いて書くというようにすれば,共有の手間はほとんどありません。ただし,この状態では全員が全員のファイルにアクセス可能になっています。ここから生じうる問題に懸念がある場合には,地道に個別共有するか,Google Classroomの利用を検討すべきでしょう。

過去記事にも書きましたが,私は全員が全員のファイルにアクセス可能の状態をむしろ好ましいと思っています。なぜなら,私は授業で学生同士のフィードバックを頻繁に取り入れているからです。誰のファイルでも見れる状態でなければ,紙でやるときと同じようなピアフィードバックはできません。また,それ以外でも,自分のライティングが行き詰まったときに他の人のライティングを見て良いところを真似したりということで活用している学生もいます。私はこれをさせずに自分の力だけでやらせることのほうが良いとは思っていませんし,良いと思われるものはどんどん真似して取り入れていくというのが良いと思っています。ただし,すべて真似して良いということにはしていません。ファイルの閲覧が許されるのはライティングを書いて修正するプロセス(1つのタイプにつき数週間の期間)のみで,最終的に評価の対象となるものを提出させる際は過去のドラフトには一切アクセスできなくしています(注1)。ただし,何も見ずに書くのではそれまでの修正点が反映されなくなってしまうので,ドラフトにフィードバックが与えられたものをみてWritten Languagingをさせて,それをもとに最終稿を書かせています。

外部連携

次の観点は外部連携です。これは主に英語ライティングを念頭においていますので,日本語でのレポート作成やプレゼンファイル共有の場合は関係がないと思います。英語ライティングに便利なツールとして,GrammarlyやGingerといった自動文法・スペリングチェッカーがChromeやSafariなどのブラウザの拡張機能として提供されています。また,Writing Mentor(過去記事参照)もDocsのアドオンとして利用可能です。これらの外部連携サービスは,現状ではWord Onlineでは利用できません(デスクトップ版WordではGrammarlyとGingerは使えます)。つまり,こうした外部連携サービスを利用したいと考えていて,それが授業設計で重要な部分を占めているという場合には,残念ながらDocsのほうが良いということになります。もちろん,GrammarlyやGingerはウェブアプリとしてそれぞれのウェブサイト上でライティングをすれば(あるいはテキストをコピペすれば)チェック機能を使うことができます。よって,Wordを使うのであれば,書き終わったものをGrammarlyやGingerにコピペしてチェックし,修正したものをもう一度Wordにコピペするということで利用はできます。ただ,GrammarlyやGingerは書きながらフィードバックを与えてくれるところも利点の1つではあるので,その利点を活かせるDocsに軍配が上がります。

一つ注意しなければならないのは,Docs上でGrammarlyが利用できるようにするには拡張機能がブラウザに追加されていなければいけないという点です。もしも大学のPC教室で授業をしているとすれば,ブラウザに拡張機能を追加することが禁止されていたりするかもしれませんし,一度追加してもシャットダウンすれば削除されてしまい授業のたびに追加する必要があるかもしれません。ウェブブラウザとしてGoogle Chromeを使っていれば,Googleアカウントにログインしてどのマシンでも同じ環境設定のChromeを利用できるよう同期設定をすることでこの問題は回避できます。つまり,個人のPCで使っているChromeでGingerやGrammarlyが拡張機能として追加されていれば,大学のPCでChromeを開いたときにGoogleアカウントに同期することでいちいち追加する手間は省かれます(もちろん毎回Googleアカウントとの同期は必要になりますが)。

変更履歴

私が使っている環境では特にこれが必要になることはないのですが,複数人で1つのプロダクトを完成させるようなcollaborative writingやグループプレゼンの資料作りをやる際には重要な部分なのかなと思います。変更履歴の記録や表示については,Docsのほうが整理されているかなという印象です。また,Wordはオンラインでは変更履歴は見れません。Wordのデスクトップ版で変更履歴の記録をオンにした状態で学生と共有し,そのファイルをデスクトップ版で見れば変更履歴が見れるようです。オンラインでは,「変更履歴:オン」というのがページ下部に表示されるだけで,どこがどのように変更されたのかはわかりません。OneDrive上で,誰がいつファイルを編集したか,誰がいつコメントしたかのような情報は記録されていますし,変更が行われるたびにversionの情報は残るので,変更が行われる前のファイルをDLすることで前後の比較はできるようにはなっています。Docsの場合は変更の記録と変更箇所の表示などがすべてブラウザ上で完結するので,変更履歴を見たり,何がどう変化したかを観察したいという目的があるのであれば,Docsのほうが適していると思います。

まとめ

DocsとWordの2つの似たようなサービスについて,(a) アカウント作成,(b) ファイルコピー,(c) 外部連携,(d) 変更履歴,の4つの観点で比較しました。私がとりあえず思いついた点で比較したので,この他にも使う人によっては重視したいポイントや気になるポイントはあるのかもしれません。ご指摘いただければ∧私がやる気になったら,コメントいただければ追記するかもしれません(し,しないかもしれません)。結論としては,まず自分の所属している機関が契約しているサービスがどちらかというのが一つの大きな分かれ道です。授業に利用するのであればなおさら所属している機関が契約しているサービスを使うほうが良いかと思います。ただ,Docsのほうがファイルコピー,外部連携,変更履歴の点では便利です。したがって,最初にアカウント作成させる必要があるというデメリットよりもそれらのメリットのほうが大きいと考えるのであれば,Docsを利用するほうがよいでしょう。注意しなければならないのは,ファイルコピーはGoogle Classroomを使うことによって得られる恩恵であるという点です。外部連携や変更履歴についても,授業で利用するつもりであり,そのことが授業設計に極めて大きな影響を与えるならば,という条件付きで,Docsのほうが良いということです。ちゃぶ台返しみたいなことを言ってしまえば,オンラインで使えるドキュメント作成サービスをなぜ,どのような目的で導入するのか,ということがぼやけている状態の人にとっては,どちらを選ぶかを決めることも難しいということです。そして,これは授業の目標と密接に関連することです。結局はDocsもWordもツールですので,そのツールを何のために使うのかをまず明確にし,その上でどちらを使うほうが良いのかという判断をするということです。その際に,私がここで挙げたような観点が参考になればと思います。

なにをゆう たむらゆう。

おしまい。

注1. ずる賢い学生はアクセスできなくなる前にファイルをDLしたり写メを撮ったりするという可能性もゼロではありませんしそれを完全に防ぐことはできませんししていません。もちろん口頭では注意しています。

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のように時間をコロン区切りで書き込むような例があると,これも引っかかってしまうのですが,まあほとんどないと言っていいと思うので木にしていません。