Try swift natasha nazari fb

より良い語学学習アプリをSwiftで作成するには

エレガントでパワフルな開発言語であるSwiftは、開発者により魅力的で豊かな語学学習体験を創出する機会をもたらしています。残念ながら、ほとんどの語学学習アプリは、限られた範囲の教授法とUIデザインへのアプローチに留まっています。スキル不足、文化への理解のなさ、ユーザーリテンションが低いことによるものです。もっと良くできるはずなのです。

このtry!Swiftの講演では、iOSでのより効果的で、より人間らしい言語学習体験を作り出す方法を学びます。語学学習アプリに欠けている本質的な教授法を調査するところからはじめ、その技術とUI要素のつなぎ方を議論したり、学習目標に基づいた機能を選び、文化により関連したUIを作成し、Swiftでの実例に移ります。


イントロダクション (0:00)

この発表では、語学学習アプリについてお話します。でもその前に、牛についてお話しましょう。このあとの話につながっているんですよ。数年前、インド北東部の州で、いくつかのNGOが農業生産性を向上させようとしていました。彼らはよく横たわっていたり、生産性の低いその土地の牛を、ふっくらとして生産性の高いアメリカの牛に変えることにしたのです。

その主張を支持する大量のデータと科学研究によって理論武装したNGOたちは、この政策が成功し、生産性が上がることを確信していたので、実際にその土地の牛を殺処分し、アメリカの輸入牛に変えることを決めたのでした。しかし残念ながら、彼らのデータはその土地の生態学的な条件や天候が考慮されておらず、飼料となる作物がアメリカの牛には合っていませんでした。実際にすべての牛が死んでしまい、そのコミュニティから牛はいなくなりました。

最終的には、NGOが来る前よりも、そのコミュニティの人々の暮らしは悪くなりました。この話の教訓は、不十分な情報をもとに良かれと思ってやったことが、逆に危険な目に合わせることがあるということです。

言語アプリへのアナロジー (1:38)

それで、これが語学やアプリにどう関係するのでしょう?この話には語学やアプリへのアプローチの仕方に多くの共通点があります。語学学習アプリのことになると、多くの開発者や企業は偉大な目標を持っています。学習を簡単に、楽しく、無料にさえしたがるでしょう。

そして、この領域において、彼らは成功を収めています。だからほんの数例ですが、DuelingやBabbel、MemriseのMango Languageは使うのがとても楽しいです。しかも、楽しさと中毒性があるのに、効果があります。お互いに排除する必要はありませんし、私がこの講演で主張しているようなことを彼らは言うべきではありませんが、彼らはこのケースに当てはまります。さあ、なぜでしょう?

問題はこれらのアプリのほとんどが、驚くほど融通が効かないことです。それで大抵は複製されていない一握りの研究に裏付けされたメソッドが選ばれるのです。擬似科学ですね。

記事の更新情報を受け取る

彼らは限られた領域で機能を設計しています。教えるすべての言語に対してです。自分たちが教えている言語なのにです。

そして、言語の文化的側面の深い所にはあえて触れません。時々現れる、今学んだ言語のおかしな特徴を指摘するポップアップを除いては。

では、その結果何が起こるでしょう。ええ、ユーザはハエのように、もしくは今回の牛のようにいなくなるでしょう。私はたくさんのこのような会社をコンサルし、カリキュラムの改善を試みましたが、そのうちのいくつかの企業は、3〜8%のユーザしか保持していませんでした。

その後は、ユーザはいなくなりませんでした。彼らは仕事を得られるほどではない上級者と中級者のみにリーチしており、ただアプリを使わせるだけになります。私はこの状況を変えたくて、どうやってやるのかをお話します。そんなに難しいことではありません。

ケーススタディ: 語順 (3:29)

簡単でわかりやすい例を使いましょう。ほとんどのアプリには語順整序があります。並び替えの練習は言語の構造をつかむのに役立っています。文法の練習として良く、ほとんどの場合正しいです。

Example 1: ロシア語

しかし、ロシア語のような言語を見てみましょう。語順は非常に柔軟です。日常会話では特にです。さらに何を強調したいかによって変わります。この場合、簡単な演習では効果はありません。アプリのいくつかはこの点を考慮しています。Duolingoは例えば、たまにポップアップで他の言い方を表示します。Babbelでも同じことをしています。

でもスライド5のように、こんな単純な文を訳するのに6つの言い方があるのです。こんなことやっても意味ないですよね。こんな小さな枠に当てはまる言い方がこんなにたくさんあるのです。

では、もし他の言い方がひとつだけだったら?まだましだと思うでしょう?違うのです。ユーザは他の言い方なんて覚えようとしないのです。最初の訳を覚えるだけでもすでに精一杯。他の言い方を教えても、「わかった、次にいこう」となるのです。本当にそれを覚えてないだろうし、信頼を失いかねないのです。

これはとても基本的な文で、ロシア語を始めた人は誰もが見ることになります。聞くだけで何かわかった気になるほど良くないことはありません。「え?まだあるの?」

さらに考慮しなきゃいけないのが、学習レベルです。これまで述べたことは初学者に合っています。言おうとしていることを言うために一般的で自然な言い方を教えたいと思っています。しかし、次のレベルに進ませたいとも思っています。どうしたらいいでしょう。

慣れているものより少し上のレベルのリスニングを選びます。そうです、文法、会話、ライティングをリスニングのように切り離さなくてはならないのです。この問題を解決するにはどうしたらよいでしょう。投げ出すのでしょうか。いいえ、会話によってフォローできます。

ユーザはある語順を知っている必要がありますが、聞く事になるのは違う語順です。より多くの単語のつなぎ方や表現の言い換えをゆっくりと自分のものとするのを助けます。さらにユーザが早く頻繁に聞くことを強いるという利点があります。これは言語学習者として重要なスキルです。

スキル領域(スピーキング、リスニング、リーディング、ライティング)を行き来することがなぜいいことなのか、もっと他の例をみてみたいですね。

Example 2: 中国語

これを他の言語で……中国語ではできるでしょうか?ダメです。中国語の語順はロシア語より厳密です。Duolingoのモデルが使えるとお思いでしょう。

これには問題があります。中国語はとても難しいのです。発音やリーディング、ライティング、リスニング何から始めても難しいです。どうやって中国語で物を考え始めるのでしょうか。ソフトボールを始めるように、このような懸念を持たずに中国語を始めてみましょう。

中国語で物を考えようとするなら、パッと思いついて良いのが、英語のネイティブを前提として、英語の文を中国語の語順に並べ替えることです。

中国語の語順、つまりWho、When、Where、What、Whichの順番は、英語のネイティブにとってはとても不自然です。なので、英語ではとても基本的な文である“I eat breakfast at 8:30”を“I at 8:30 eat breakfast”に並び変えます。私はこの作業を一か月間、いろんな英語の文で行い、最終的には2か月かけて中国語でこれを行いました。

私の翻訳プロセスはとても早くなりました。このような小さな演習を行うことで、英語から中国語の語順に直して発音が完璧であることを確認して、これらのステップすべてを経ることを気にしなくて良くなったからです。

3か月目が終わるころには、中国語の中級者の試験を受けました。このプロセスをさらに加速するのに役立ちました。

内容: より良い解決 (7:58)

このような小さな微調整はすばらしいですが、氷山の一角に過ぎません。もっと深くもぐりましょう。”アプリではコンテンツがすべてを駆動する”というのを覚えて帰ってください。ここでいうコンテンツとは、言語を教えるのに使うものすべてを意味します。

よく作用しているすぐれたコンテンツがあるなら、効果的な教授法を用いているということになるし、すべてそれに従います。私は多くの開発者がコンテンツは与えられるものだと思っていることに気づきました。これは雲の中から抜け出すようなもので、また別の問題です。

彼らはこうも思っています。「自然言語処理を使って、コンテンツはWebから引っ張ってきます。それを耕してUpworkに貧しい魂を捧げます」と。しかし、そのコンテンツやコードがアプリを作ったり、破壊したりするのです。

なのでRussian AcceleratorというボイスオーバーのついたキーノートのようなWebリソースが学習者をロシア語中級者レベルに引き上げることができるのです。とても難しい言語であるロシア語で、3〜6か月でです。しかしDuolingoやBabbelなどのより技術的な印象のあり、美的センスのあるアプリになるほど、あんまり使うのが楽しくなくなります。

私がインタビューした、これらの語学アプリを使うのをやめた人の大多数は、パフォーマンスの問題ではなく、技術的な問題でもなく、簡単な文が自然じゃなくて、演習がつまんなくて、十分なフィードバックを得られないことを理由にしています。** コンテンツがすべてを駆動するのです。**

あともう一つ言っておきたいことがあります。それは開発者に苦労させられたもうひとつのことです。コードを書く前にアプリをテストしたいということです。

あなたは何をテストしていますか。これは効果的な学習ツールですか?私のプロジェクトの一つである漢字サークルでは、これを完全に変更する必要がありました。ほとんどのものをゴミ箱に入れなければならなかったので、コード化する前にこれをやっていたのは素晴らしいことでした。ユーザーが情報の20〜30%を保持していることに気づきましたが、これはひどいですね。

「本当に語学教えてるの?」って確かめたいでしょうね。

Experiment #1: 重慶市

じゃあちょっとだけ私の経歴を。私は過去4年間、世界中で語学を教えてきました。

最初の仕事は中国の重慶市で高校生を教えていました。22クラス受け持って、1クラス60人いました。悪夢のようでしたが、とても楽しかったです。学生の多くは、アメリカやシンガポールに留学し、ほとんどの授業を英語で受けるようになります。私は彼らの英語力を超初心者レベルから、大学生レベルまで6か月で上げなくてはなりませんでした。

Experiment #2: プラハ

プラハでも同じような状況でした。社会人に英語とスペイン語を教えていただけなのに。たくさんの人々が仕事で必要としていました。彼らの夢、昇進、昇給の間に立ちはだかっていたのは語学の壁でした。

Experiment #3 台北

台北でも同じです。社会人を教えていて、短期間で急成長させなくてはなりませんでした。台北では英語、スペイン語、ロシア語を教えていました。

Experiment #4: オンライン

今は社会人にオンラインで教えています。こんなことを話したのは多くの言語アプリ開発者には作ったアプリを使うユーザへの責任が薄いからです。

人の前に座っているときに、もしユーザの表情を見ることができ、彼らがあなたの教え方に満足していないと言っているなら、とても好戦的になって、教え方に効果があることを確認し始めます。人にプレゼントするかように開発したいと思っています。

開発者の多くは日本語や中国語のアプリを開発して、それを履歴書に書くのがかっこいいと思っていると思います。製品の開発者に対して義務感を持たなければなりません。この言語一つが、昇進や就職、家族の生活改善の違いになる可能性があるためです。

こんな状況すべてにおいて、文化、媒体を越えてですが、学生は教え方についていつも同じ苦情を言っています。言語がニーズを満たしていないように感じるようです。ビジネスの語彙がもっと必要です。活動について言えば、彼らは発音の練習を求めています。スキルを向上させるためのガイドがないように感じています。経験することが人間的ではないと感じるかもしれません。教える側の問題は、教師は人間であり、これと矛盾しているということです。

活動について言えば、ほとんどの人が単語を求めていません。発音や聞き取り方を求めています。練習がループしていると感じているようです。繰り返しになりますが、教室学習とアプリ学習を併用する際の、言語スキルを向上させるためのガイドラインがないのではと思っています。

彼らは文化のことを何も学んでいないか、何か質問することが良いことだと思っておらず、その経験が人間的ではないと感じるかもしれません。

良い先生は、スライド15のようなテクニックを使います。私は例を見ているので、全部は読みません。

教える側の問題は、教師が人間であることです。それゆえ、教え方に一貫性がないということです。アプリによってこの側面すべてをカバーできれば、ユーザーのニーズを満たし、ユーザーリテンションやおそらく利益にも変えることができると思っていま���。なぜなら、どんなにいい先生でさえ、これらのことすべてをいつもやっていないからです。

教え方への関数的アプローチ (15:30)

さあ、最初にやってみたいのは、教えることに関数的アプローチをもちこむことです。どういうことでしょう?つまり個別の単語や文でなく、状況に応じて考えているということです。

さて、これはかなり明白ですが、多くの言語アプリは、単語リストから始まり、単語をすべて辿ります。私はリストの単語から文章を作ることになります。その後、私はそれをトピックに分割します。それから、私はそれをレッスンに分けるつもりです。これは物事を進めるのにベストな方法ではありません。

そんなときに役立つのが、 CEFR です。これは、進行中の方法でコンテンツを構造化する方法を理解できるように、実行可能なステップを提供する必要があるため、優れています。

両極端に基づくコンテンツデザイン (17:05)

もう一つの目的は、両極端に基づくコンテンツデザインです。これは、最も進みが遅い学生と最も優れた学生を無視するのではなく、一緒に作業することを意味します。興味深いことに、多くの人が同じ問題を抱えています。

この問題を解決するには、細部から始めて徐々に複雑さを増すことです。さて、抽象的に聞こえるので、例を見てみましょう。非常に短い対話です。理解している生徒と、理解していない生徒がいるとします。

  • A: Did you finish the project?
  • B: No. I still got to work on it.

すべてのボキャブラリーが教えられているので、ボキャブラリーの問題ではないことがわかります。何が問題ですか?経験から言えば、話すことと書くことには大きな違いがあるので、彼らはDID-juhは聞き取っていません。”Did ya’ finish the project?”

アメリカ英語では、TをDに変えます。逆もまた同様です。これは聞き取りの問題です。このテクニックを読んで、発音のポイントを取得し、スライド25のようにリスニングの練習を構築することができます。

正確で多様なフィードバックを与えること (18:26)

正確で多様なフィードバックを提供したいと考えています。だから、単に間違っていると伝えるのではなく、それはあまり役に立たないので、間違いがどこで発生しているのかを特定し、それを何らかの演習に拡張することをお勧めします。

スライド27には、私が取り組んでいる小さな中国語のアプリケーションがあります。実際に発音に問題がある場合は、その文字を実際にクリックできます。違うコンテキストでそれを練習して、本当に特定の音を獲得しているようにしてください。そうでない場合は、間違っていると言っても助けにならないだけです。

正確で多様なフィードバックを与えること (19:05)

違う演習をしましょう。ここでは、1つの単語を聞き取るような、細部を聞くことと、会話の全体的な文脈を聞くような、要旨を聞くことの間の例を示します。

さまざまな演習が非常に重要です。これからスライド29で読んだものを見ていきます。漢字のようなものを読むことの難しさの一つは、異なる書体が実際に違う漢字に見えてしまうということです。したがって、一番左と一番右のように同じ文字を並べて見ると、同じにみえるでしょう。しかし、一番左のものを150回ぐらい見た後に、2番目の字を見ると、え?何が起こったの?という風になるでしょう。小さな変化でさえ本当に重要です。

より多様化して、帰納的と演繹的な教えを交互にしたいのですが、これはどういうことでしょうか?

帰納的 & 演繹的教授法 (20:36)

帰納的指導は、あなたが生徒にスポットを当てるときのことです。生徒はパターンそのものを特定しなければなりません。演繹的指導とは、あなたが生徒にルールを与え、それを適用するように言うときの方法です。

どちらか一つではなく、これら2つのものを織り交ぜることが、言語のルールを本当に内在化させるベストな方法です。

また、言語と文化をリンクしたいと思っています。スライド38には、私があなたと共有したプロジェクトの一つであるロシアのQ&Aがあります。ユーザーは実際に読むことによってゆっくりと新しい語彙を学び、同時にモスクワのような実際の場所について学ぶことができます。

これは、あなたが提示している文化について、人々が異なることを理解するのを助けるためにあなたのアプリに入れたいコンテンツを考えようとしているときに考えることができる質問です。

基本的なユーザー情報を使用してコンテンツを個人に合わせることもできます。私がロシア語のキリル文字を教えようとしているのであれば、相手が英語のネイティブスピーカーであることを考慮して、アルファベットの文字に最も近い文字を教えるつもりです。スライド43の最初の行にあるように、大文字のBのような文字がありますが、実際はVuhで、Vのように発音されます。これは英語のネイティブスピーカーにとって非常に混乱します。それから、順番に進むのではなく、まったく違うものを選択します。

まとめ (22:14)

ご紹介した多くの教授法は私が長い時間をかけて学んだものです。ですが、あなたのアプリに活かされるような、様々なテクニックによる異なる視点をご提供できたらいいなと思っています。もし何か聞きたいことがあれば遠慮なくどうぞ。もっと詳しいリソースやテクニックをお教えしますよ。ありがとうございました。

参考資料

About the content

2016年9月のtry! Swift NYCの講演です。映像はRealmによって撮影・録音され、主催者の許可を得て公開しています。

Natasha Nazari

Natasha is new to the world of software development. For the past three years, she has been teaching and learning languages around the world. When she couldn’t find a suitable app to learn Russian in early 2015, she decided to try out iOS development. She’s been in love with coding ever since. At the moment, she’s building two language apps in Swift, growing her meetup “Language Tech Taipei”, diving into full-stack web development at Free Code Camp, and pushing for full fluency in Spanish and Russian.

4 design patterns for a RESTless mobile integration »

close