読者です 読者をやめる 読者になる 読者になる

TOEIC900とれた英語学習法をソフトウェア開発に喩えて解説するから、みんなも勉強しよう!

通信とかファイルの読み書きをするプログラムを書いたことある人はたくさんいると思うので、それを例に解説する。

通信プロトコル(IPとかHTTPとか)やファイルフォーマット(GIFとかMPEGとか)にはバージョンが幾つかあるよな。

同じく、英語にもバージョンが幾つもある。時代的なものでいうと、聖書の時代の英語とか現代英語とか色んなバージョンがある。用途によっても、タメ口的な英語、丁寧な英会話、日常の書き言葉、法律文とかの固い文章など、様々なものがある。

ここで、ずばり言ってしまうと、日本の学校英語が役に立たないといわれたり、多くの人が挫折する理由は、「全バージョンの英語と日本語を相互変換するモノリシックなプログラムを作ろうとするから」で、これがうまくいかないのは、みなさんの予想の通り、というか体験した通りだと思う。

英語の勉強なのに日本語が出てくるのは、動作検証をするための仕組み(大学入試)に合わせているだけだ。本来の要件には入ってないんだが、そこもプログラム本体と一緒くたになって開発しているのが学校英語だ。実践のほとんどは英語と内部データ(脳内イメージ)を相互変換するだけなので、日本語は外部モジュールに追い出して本体の構造をすっきりさせよう。

コアライブラリ:文法について

プロトコルやファイルフォーマットでいうところの詳細データ仕様が文法だ。
ソフトウェア開発で対象データの仕様書を読まないなんてことは絶対にない
同じく、英語学習で文法を避けて通ることはできない

「文法の勉強なしで〜するだけ」とかいう勉強法とか教材は、全く理にかなってない。騙されかかってるやつは早く目を覚ませ!そいつを捨てろ!燃やせ!

ただし仕様を全部読む必要はなくて、仕様書の中の使わないデータバージョンの項目は全部切り捨てよう。
残った基本文法のうちバージョンによらない部分をコアライブラリ化して、アプリケーションを開発しながらブラッシュアップしよう。

基本文法は、ざっくりいうと中学英語の文法に相当する。
中学英語やりなおしの類の本がたくさんあるから気に入ったものを探して、ざっと読んでおこう。

中学校3年間の英語を10時間でやり直す本

中学校3年間の英語を10時間でやり直す本

  • 作者: 小池直己,佐藤誠司
  • 出版社/メーカー: PHP研究所
  • 発売日: 2010/11/20
  • メディア: 単行本(ソフトカバー)
  • 購入: 1人 クリック: 4回
  • この商品を含むブログを見る

後の勉強で文法用語が出てきときに、用語の意味ががなんとなくでいいのでぱっと思い出せるようになろう。

アプリケーション

データの仕様がプログラム自体でないのと同様に、英語も文法を覚えただけでは何も出来ない。
データフォーマットを読み書きするアルゴリズムをアプリケーションプログラムとして実装する必要が有る。
アプリケーションプログラムは、要件の異なる二つに分けよう。つまりはパーサーとジェネレーターだ。

パーサー:英文読解、聞き取り

入力をプロトコルやフォーマットに沿って内部データに変換するプログラムのことだ。
脳内に英語パーサーを実装しよう。間違っても英日変換プログラムを作ろうとしないこと。

  • 実運用ではパフォーマンスはあまり必要とされないが、TOEICハイスコアにはパフォーマンスが求められる
  • 精度は結構求められるが、完璧なパーサーを作ろうとすると開発が破綻するので注意。
  • まずはシンプルに、コアライブラリのみでパーサーを作る
  • パーサーの対応してない入力はひとまずinvalid inputエラーとしてデータを捨ててしまえばOK
  • エラー処理はエラーであることだけログ出力して、アプリがうまく動かなくなったら必要な仕様項目を実装しよう
  • 入力は外部依存だから、入力元を追加するたびに、古いバージョンや仕様書の隅を突いたようなものにも対応しなければいけないこともある
  • どんどん運用して、機能とパフォーマンスを必要十分なシステムに近づける

基本文法をもとにパーサーのアルゴリズムを実装する方法は、以下の本が参考になる。

英文読解入門基本はここだ!―代々木ゼミ方式 改訂版

英文読解入門基本はここだ!―代々木ゼミ方式 改訂版

ジェネレーター:英作文、英会話

内部データからフォーマットに沿って出力するプログラムのことだ。脳内に英語ジェネレーターを実装しよう。

  • ソフトウェアにはよくある話で、2層のアーキテクチャーにしたほうがいい
    • まずは、当然必要な、内部データをプロトコルやフォーマット通りに出力するモジュール
    • その前処理として、プロトコルやフォーマットに出力しやすくするための内部データ変換モジュールを入れる
  • 前処理モジュールはすでに実装済み(既に脳内で動いている)なので、後はどうやってうまくはめ込むかの問題だ
  • 出力する前に内部データを変換したり綺麗にすることができるので、対応すべき仕様項目はそれに合わせてどんどん減らせる
    • 文法書で「こういう文型は、こう言い換えても同じ」だったら、覚えやすい方、使いやすい方だけ採用すればOK
  • 一方で、こちらの出力を受け取るパーサー(ネイティブ・外人)は、
    • 最新バージョンの英語にチューニングされている
    • 堅牢に実装されているので、多少壊れたデータを流しても致命的エラーは起きない
      • 冠詞や単数複数が間違っていると、ネイティブは気持ち悪がるが、たいがい意味は十分に通じる
  • 最重要パフォーマンス要件は、低レイテンシーであること。とにかく1秒以内に何かを出力すること。
  • 次に大事なのは、スループット。エラーは避けられないが、たくさんしゃべることで、一つのエラーの重みが相対的に下がる

まとめると、最新口語バージョンの英語のみ対応した軽量なジェネレーターをつくるのが開発成功の秘訣だ。
この開発方法のとっかかりとして、ビジネス向けに特化しているけどこの本がとてもよい。感動した。

英会話ペラペラビジネス100 ? ビジネスコミュニケーションを成功させる知的な大人の会話術 [CD2枚付]

英会話ペラペラビジネス100 ? ビジネスコミュニケーションを成功させる知的な大人の会話術 [CD2枚付]

  • 作者: スティーブソレイシィ,Steve Soresi,ロビンソレイシィ,Robin Soresi
  • 出版社/メーカー: アルク
  • 発売日: 2002/03/16
  • メディア: 単行本
  • 購入: 26人 クリック: 200回
  • この商品を含むブログ (39件) を見る

あとがき

今回は概要の説明だけでしたが、英語勉強方法のポイントなど掴んでいただけると幸いです。
リーディングの勉強方法を掘り下げた記事を公開すべく、只今、鋭意執筆中です。
お楽しみに。