英語を効率的に学習するための8つの習慣


私は今英語学習中。いつも効率的に習得したいと思っている。皆そうだろう。
しかし一方で同じ時間学習していても上手く話せるようになる人とそうでない人がいる。
何がそれを分けるのだろうか。その理由はまだわからないが自分のやり方を確認してみたくなった。なので少し整理してみることにした。

目的を意識し、良い習慣を持つこと。これはよく言われることだし大事なことなのだけど抽象的なのでもう少し踏み込んで書いてみる。

瞬発力が勝負

英語はライティングにしろスピーキングにしろ何かしらのコミュニケーションを取るための
手段と思っている。伝わるかどうかは多くの局面において、文法の正確さや上手い言い回しよりも瞬発力に依存する。
瞬発力がなければ相手は話すことにストレスを感じ、一方通行になりがち。

そのためにはビギナーのうちは簡単でよく使う表現を完璧にしてから他の表現を覚えていくのが大事。
完璧というのは、英語で話し掛けられたら何も考えずに瞬間的に返事出来るくらいマスターしているということ。
それくらい瞬発力が高ければコミュニケーションの往復回数が多くなり、試行回数が増えるので上達スピードが上がる。
そして段々と内容が深く、細やかな表現を使えるようになっていきたい。

英語はスポーツ

上記の瞬発力という点からもスポーツと同じだと思っている。
語彙と文法だけ勉強するのは理論であり、実践である会話には不十分。
スポーツではいくら理論を知っていても実践で上手くプレイすることは出来ない。
テニスであれば正しい打ち方やフットワークを知っていても上手く打ち返せないのと同じ。
スポーツでは体に慣れさせることが必要で、頭を使いつつ体で覚える感じだと思う。
ただ、実践ばかりで理論を知らずに続けているだけでは上手くならない。
また、理論が曖昧で間違ったやり方に慣れてしまうと後々直すのが大変なので理論と実践のバランスは意識したい。
日本の英語教育は何もしていないよりは遥かにプラスだと思うけど、実践が少なすぎる。*1

自分のメソッドを用意する

英語学習では、目的は人それぞれであり、スタート地点もゴール地点もデッドラインも一日で使える時間も違う。
なので自分の都合に合った学習方法を用意するのがいい。自分の都合に合った方法でなければ習慣化出来ない。
私は英語学習を始める前に沢山本を読んで参考になった点を取り入れている。
そして学習しながらトライ&エラーでメソッドを更新していく。
最近は大分形になってきたのでいい感じで回せている。後日別エントリーにてライティング、リスニングなど個別に詳細を書いてみたい。

強制的に使わざるを得ない環境に行く

最も効率的な方法は身も蓋も無いのだけど英語を強制的に使わざるを得ない環境に身を置くこと。
人間は元々怠惰生き物だし、追い込まれないと本気にはなれない。本気にならないと英語勉強に時間を使おうとしない。
結局のところ 学習効果 = 効率×時間 で決まる。
そして人間は何事も習慣に支配されている。考え方、行動パターンまで全て。悪い習慣を直していかに良い習慣を身につけるかがカギ。
英語学習も同様。最初は大変でも、良い習慣を回し続ければいいずれ話せるようになるはず。
だから良い習慣自体を考えたり仕組み化することは大事。人間の生まれつきの能力の差などたかが知れてる。
自分が上手くならなかったらそれは習慣化が間違っていたということ。

最初はボコボコにされながらも毎日苦しみながら格闘しているうちに気がついたら習得しているだろう。
大抵何かを習得する過程というのは大抵、一時的にでも苦しい期間がある。
例えば、ボディービルダーの間ではペインピリオドという言葉がある。筋肉を鍛える過程では必ず筋肉に負荷をかけるために苦痛を経験しないといけない。トレーニング中は苦しくなってからが勝負であり、ペインピリオドをどれだけ経験したかがチャンピオンとそうでない者を分ける。*2
もちろん英語学習の場合はボディビルダーのように苦しむことを前提にやる必要はないが、
多少でも苦しい期間を耐えられずに諦めてしまう人はスポーツでも仕事でも何でも突き抜けることはない。
だから仕事を選ぶ際も条件が同じなら英語が要求される方がいい。
英語圏に行く余裕があるなら英語圏で暮らしたほうがいい。

自分の世界を全て英語に置き換えること

子供の頃から海外で暮らしていた帰国子女やネイティブとは違い、
私のように30歳近くになってから本格的に英語学習を始めた人間は今までずっと日本語で考える習慣がついている。
例え英語圏に暮らしていてもただ暮らしているだけではどうしても日本語で文章を書くし日本語で考えてしまう。
日本語の文章を見たら頭の中で日本語でリピートしてしまう。これらを断ち切るために全て英語に置き換えるのが効率的。
私はOSやアプリの言語は全て英語にし、身の回りのドキュメントは全て英語にした。
身の回りの日用品なども全て英語で認識するようにしている。
これだけで自然と語彙が増えるし下記に書く英語で思考する習慣の下地になる。

出来る限り英語で思考すること

特に私の中で大事にしている習慣はこれ。
英語で思考するようにしていると学習時間以外でも英語を勉強しているようなものなので効率がいい。
でも言うは易しで実はなかなか実践が大変。
特にビギナーのうちは知らない単語やフレーズについては思考しようがないから英語で考えることを辞めてしまう。慣れない言語で考え続けることはとても疲れるしね。そこを今の発達したIT技術で補うのがコツ。今は昔みたいにでかくて重い辞書を持ち歩かなくてもiphoneなどスマートフォンに辞書アプリを入れておけばいつでもどこでも知りたい単語を知ることが出来る。そうすれば「ああ、あれはこう言うのか」といつでも何処でも勉強することが出来る。それを繰り返すことで記憶の定着は格段に上がる。
ただ私の場合、日本にいる時は難しかった。仕事で日本語を使っている場合、一日のうち頑張っても活動時間の20%程度を英語で思考するのが精一杯。海外に拠点を移してからは7〜80%くらいは英語で考えることが出来ている。

表現を準備しておくこと

大変ではあるが、かなり効率が上がると思っている方法。
自分の会話のルーティンワークを事前に作っておき、暗記していつでも話せるようにしておく。いわば会話のテンプレート。
簡単な意思疎通が出来るレベルから深い表現を話せるようになるまでには深い溝があるように感じる。曖昧な表現ではあるが。英語圏にいればそれだけで簡単な意思疎通くらいは出来るようになるが、微妙な表現や気の利いた言い回しを普通に言えるようになるにははただ生活しているではなかなか出来るようにならない。でもこの方法を普段していればその溝は突破出来る。
そもそも、普通は話したことのない表現をいくら知っていたとしてもその場で思い出して流暢に話すことなど出来ない。なのでいかに話すその時までに準備をしていたかが勝負になる。また、完璧に準備出来ていると自然と新しい言い回しを習得しているので徐々に準備していない会話にも対応出来るようになる。

大抵、会話にはパターンがある。知り合った時に話す内容、自分の国を紹介する内容、酒を飲みながら話す内容、などなど。つまりは会話のトピック。これは普段自分が友達や知り合った人と何を話しているかを思い出せば自然と何を書けばいいかがわかる。また、英語で話した際に「この話題も使えるな」と思ったらメモしておいて後で用意するのもいい。もし思いつかないならネタ帳として「一分間自分のことを英語で話してみる」という本を見るのもいい。

そして英文を作る際、私はネイティブではないので表現を創り出すことは出来ない。だから自分で頑張って書くのではなく出来るだけネイティブの表現をどっかから引っ張ってくる。この時lang-8という無料の相互添削サービスを使うのはアリだと思う。それかgoogleの検索窓にダブルクオート付きで “Let me know” のような形で入れればその表現が一般的か確認する方法もある。このように出来るだけ真似から入るのがいい。日本人であればアルクのサイトにある英語辞書は用例が多くて参考になる。

効率的に暗記する

英語はなんだかんだで覚えなければいけない事が多いので効率も意識したい。
人間の記憶のメカニズムとしてポイントは反復と関連性、そして強調。

最も重要だと思うのが反復。
忘却曲線というものがあり、人間は短時間(数日程度)で多くを忘れるが、
それ以降の忘却はゆるやかになるという特性がある。



この特性から毎日単語をじっくり少しずつ覚えるよりも毎日軽く大量に覚えた方がいい。
要するに質よりも量重視。例えば1000個の単語を100日で覚えるとしたら毎日10個ずつ暗記して100日で1000個を達成しようとするのではなく、
毎日1000個を適当でもいいから覚えて100日繰り返した方が記憶に残りやすい。

そして、次に関連性。
単語や表現は出来るだけイメージ化が大事。左脳よりは右脳というか。
単語であれば単語自体のイメージ。flowerであれば花のイメージと関連つける。
会話であれば使われるシチュエーションをイメージするといい。
単語や表現が抽象的になればなるほど難しいのだけどもビギナーで具体的な単語のうちは特に重要。

また単語間の関連性を意識するのもいい。例えば、look forを最初に覚えたらsearchやseekのように似た単語が出た際に関連つけて覚えておく。
この時、簡単で良く使う単語や表現は反射的に出るくらいまで覚えて、徐々に難しく微細な表現を覚えていくのがコツ。
意味の違いも一緒に覚えておく。

強調に関しては音声で聞くとか声で読むとか集中力を高めるとか方法がある。
これは繰り返しの回数が減らない範囲で実行したい。

まとめ

自分のために書き出してみたが最近出来ていないポイントもあったりと良い確認になった。
トライアンドエラーで随時調整をしつつだとは思うが、これらの習慣で上達し、
自分の方法は効率的であったと自ら証明出来るように頑張っていきたい。
他の方にも適用可能な箇所はあるかもしれないので使えそうであれば一部でもどうぞ。

もっと具体的なスピーキング、リスニング、ライティングなどの方法もいずれ時間があったら自分のために書いてみたい。

*1 日本人は平均レベルが高いのだから多くの日本人が普通に英語が話せたら日本は最強だと思うのだけど。
*2 ペインピリオドについての議論はこちら http://forum.bodybuilding.com/showthread.php?t=121374391

Posted in English, Knowhow | 6 Comments

Windows(Macも可)のデータを救う、復旧用USB版 Knoppix(6.2)の作り方


最近、友達のWindows7のラップトップが突然立ち上がらなくなった。
Windowsのシステムファイルが壊れたようで、直すことが出来るかもしれないがその前にデータのバックアップをすることに。しかしそのラップトップはネットブックなのでドライブがない。そこでKnoppixならUSB bootが出来た気がしたのでやってみました。

Knoppixはversion6以上から標準でboot可能なflash-drive(USBメモリ)を作る機能があるらしい。
CD版とDVD版があるけど、データ復旧用であれば容量の少ないCD版(700MB強)の方がいい。DVDは2400MBもあるので不向き。macを使用。またknoppixはUSB版を作る前にCD版を用意する必要があるけど、 焼くのが面倒だったのでparallelsで起動。

以下、手順。

1. Knoppixをダウンロード

KnoppixはTorrentファイルで配布されているので本家の以下ページに行く。

http://torrent.unix-ag.uni-kl.de/

この時(2010年8月11日)versionは6.2.1が最新版。 以下をダウンロード。

KNOPPIX_V6.2.1CD-2010-01-31-EN

そしてTorrentソフトを使用してKnoppixをダウンロード。

macはTransmissionがおすすめ。

2. ダウンロードしたisoからparallelsで新規仮想マシンを作成

ファイル ->新規仮想マシン を選択し、指示に従って進む。

以下画面のようにファイルを選択のところでダウンロードしたisoファイルを指定。

3. USB版Knoppixの作成

Knoppixが立ち上がったらUSBを挿す。自動で認識。

preference -> flash bootを選択。

※この際、フォーマットするか聞かれるので既存ドライブをフォーマットしないよう注意。USBデバイスを選択

4. boot設定を変更してUSBから起動可能に

OSの起動が通常はHDDが優先になっているのでUSBを優先に変更。

起動時にF2を押して(マザーボードメーカによる)BIOS設定画面に移動して設定。

5. Knoppix上でファイルを他メディアにバックアップ

USBからbootしてKnoppixが立ち上がったら普通に操作して外付けHDDかUSBメモリにでもバックアップ。

これでおしまい。結構めんどくさい。普段から事前に準備しておくのがいいがなかなかその気にはなれないのであった。

 

おまけ

この他にも、ubuntuから作られたubuntu-rescue-remixというのもあり、 こちらもUSB起動版を作れるようです。興味ある方はどうぞ。

http://ubuntu-rescue-remix.org/

http://www.linuxliveusb.com/

Posted in Knowhow | 1 Comment

[CakePHP]自動でip addressやホスト名を保存する方法


昔からCakephpは結構使っているのでノウハウを休憩中にでもすこしずつ公開。
CGM型のWebサービスだとユーザーがなにかしらのアクションをしてDBに保存することが多いわけですが、
その際に、ユーザーを追跡出来るようにip addressを保存しておくのが普通。
Cakeでそれをやるとき、全てのmodelにipを保存するコードを書くのは面倒なので、以下のようにするとラクチン。

この場合、ip addressを保存したいテーブルにip_addressフィールド、ホスト名を保存したい場合はhost_nameフィールドを入れておく。
そしてapp_model.phpのbeforeSaveにいれておけばフィールドを追加しておいたテーブルは全て勝手に保存してくれるのであった。

app_model.php

/**
 * fieldにip_addressがある場合は自動でipを保存
 */
    function beforeSave() {        
        if ($this->hasField('ip_address') && empty($this->id) && empty($this->data[$this->alias][$this->primaryKey])) {
            $this->data[$this->name]['ip_address'] = env('REMOTE_ADDR');
        }
        if ($this->hasField('host_name') && empty($this->id) && empty($this->data[$this->alias][$this->primaryKey])) {
            $this->data[$this->name]['host_name'] = gethostbyaddr(env('REMOTE_ADDR'));
        }        
        return true;
    }
Posted in CakePHP | 3 Comments

今後の予定


独立して半年、色々な方面で今まで身につけたスキルを活かし、お手伝いをしていた。
そこでは素敵な出会いがあり、良い経験もあった。お世話になった方々、ありがとうございました。

しかし自分のビジネスに関して言えば、後回しになってしまっていたのも事実。
今後は独立した時の気持ちを思い出し、自分の目標に向かって全力で行く予定。
自分のやりたいことは自分が一番良くわかっているしね。後は突き進むのみ。

今後どうするかというと、海外で起業するための準備期間に入ります。恐らく2年弱。
それまではWebサービス、ソーシャルアプリを短期でどんどんリリースしていこうかと。
その辺の結果次第で起業タイミングが変わりそう。

私は元々Webが大好き。さらにビジネスモデルとしてもWebサービス、ソーシャルアプリは優れている(もちろん中身次第だけどね。今度別のエントリーを予定)。Webは金鉱掘りのような楽しみがある。自分の思い描くアイデアがまだ誰も取り組んでおらず、そして様々な角度から検証した際にいけると確信した時ほどワクワクする時はない。だからとても今後の生活が楽しみ。好きな仕事だけをして数年を過ごす。これは本当にワクワクです。

そして、海外で起業するには現実問題として英語が必要。実は私の英語はまだ幼児程度なので困りものです。
日本で開発しながら英語学習を続けていくのもいいけど、経験上あまり上手くいく気がしなかったし、単純にツマラナイと思った。なので生活は海外を拠点にすることに。何処にいてもラップトップさえあれば仕事が出来るしね。というわけで、まずは今月末から英語の基礎固めのために2ヶ月程フィリピンに籠り、英語詰め&開発詰めの生活を送ることにした。その後は1年程オーストラリアに移住。さらにその後はビザ次第だがシンガポール、カナダを検討中。

なぜフィリピンと聞かれるのだけど、実はフィリピンは英語圏。しかも世界第3位の英語公用語国。そして物価はすごく安いので語学学校も恐ろしく安い。1ヶ月10万以下で毎日マンツーマンレッスンと住居費、食費等ついてきてこれだけで生活可能。なので英語の基礎を最初に身につけるのに第一ステップとして行くのはアリかなと。

そしてなぜアメリカでないのかというのもよく聞かれる。これは単純にビザの取りにくさが理由。アメリカは本当にビザが取りにくい。もちろん旅行なら簡単に取れるし、現地の会社に就職するなら労働ビザを出してくれます。でも私の場合はどっかの企業に就職するわけではなくしばらく自営業者なのでビザの取得が難しいのであった。取れるようになったら行く予定。

とにかく、今後は好きな仕事と海外生活になり、苦しい時もあるだろうと思うけどとてもワクワクしているのでした。

Posted in Private | 4 Comments

[CakePHP]current pageの挙動を考慮した、ナビゲーションの作り方


cakephpでのビューはレイアウトテンプレートを使うのが一般的だと思いますが、
レイアウトテンプレート内にグローバルメニューがあるため、各ページ内でメニューを選択済に見せるのはちょっとだけ手間ですが、google groupで見つけたやり方のように、以下のようにするとスマートっぽく見えます。

<?php
$navLinks = array(
    'home' => array(
        'title' => 'home',
        'path' => '/',
    ),
    'services' => array(
        'title' => 'our services',
        'path' => '/pages/services',
    ),
    'contact' => array(
        'title' => 'contact us',
        'path' => '/contacts',
    ),
    'about' => array(
        'title' => 'about us',
        'path' => '/pages/about',
    ),
);
?>

<ul id="global_nav">
	<?php foreach ($navLinks as $key => $link) : 
		  
		  $class = null;
		  if (strpos($this->params['url']['url'], substr($link['path'], 1)) !== false) {
		      $class = array('class' => 'current');
		  }
	?>
	
	<li id="nav_<?=$key?>"><?=$html->link($link['title'], $link['path'], $class)?></li>
	<?php endforeach; ?>
</ul>
Posted in CakePHP | Leave a comment