20 Aug 2014, 11:28

MOOC を利用してプログラミングの勉強をすることで英語を学んだ

photo credit: betta design via photopin cc

はじめに: TOEIC の点数があがった

今日結果が届いた TOEIC の点数がよかった. それは, 学生時代から数えて 7 年ぶりのハイスコア更新だった.長いスランプだった.

なぜ, 記録が更新できたか? それは,

プログラミングの勉強をすることで英語を学ぶ

という, 一年前の発想の転換にあったと思う. そんな今までの英語学習方法 を振り返ってみる.

今までの TOEIC の点数はうなぎ下がり

1000 時間ヒアリングマラソンで 150 点ダウン…

社会人になってから, TOEIC の点数はうなぎ下がりだった.

危機感を覚えて 1000 時間ヒアリングマラソンに挑戦したが, まさかの 150 点ダウンという, 金返せ的な結果となった.

※注意:これは自分が運が悪かっただけで,ヒヤリングマラソン自体はおもし いですとオススメしとく.

英語の NHK ラジオニュースを毎日きいて世の中がわからなくなる

英語の NHK ラジオニュースを毎日きくように心がけた.

毎日ラジオニュースをきいていれば, きっといつかは聞き取れるようにな るはず・・・

と思って,日本語のニュースをきくのをやめて, 英語ニュースだけをきく ようにした. それは意地に近いものがあった.そして, いつになって も英語ニュースを理解できなかった.結果的に, 日本の情勢について 2 年く らいまったく分からなかった.

English Journal を購読

ヒアリングマラソンは止めたものの, English Journal という雑誌がおもし ろいので, これは継続して購読していた.当時, iPad で English Journal が きけるという神アプリが存在した.

このアプリも手伝って, 通勤時間中はずっと English Journal をきいてい た.

現在は, このアプリでの English Journal の配信が終わり, それとともに自 分も English Journal の購読を止めた. このアプリの復活を切に願います.

m (._.) m

そして・・・

TOEIC の点数はちっともあがらない.

プログラミングが目的, 英語は手段

なぜ英語の勉強をするのか, 考えてみた. それは,

プログラマとして成長したいから

という大事なことに気づいた.

  • おもしろそうな OSS は大抵英語.
  • 最新の技術情報は海外からくる.
  • おもしろい洋書が日本語に訳されるのは 2,3 年たってから.
  • そもそもプログラミング言語が英語に近い.

今まで, 英語のために英語を勉強していた. しかし, 英語力の向上のさらに 上位にある目標はプログラミング力の向上ということに気づいた.

じゃあ, 英語を勉強するなんて回りくどいことをせずに, 直接プログラミン グを学んで, その過程で英語を学べばいいのでは? すなわち, 以下だ.

プログラミングの勉強をすることで英語をみにつける

そして MOOC をはじめた

そこで, プログラミングの勉強を英語ですることにした.

具体的な手段として, MOOC を利用して学習した.はじめに, coursera を,次 に edX をはじめた.

はじめはわからない, だんだんわかってきた

MOOC では, 講義の内容が動画で配信されて, Assignment も毎週だされる.も ちろん, すべて英語.

はじめはほとんど聞き取ることができなかった. オンライン学習のうれしい ところは, なんどでも, 動画を見ることができることなので, 何度も見直し た.

半年経ったくらいから, ようやく不自由なく聞き取れるようになってきた気 がした.そして, 時間がないという理由で 1.5 倍速再生を多用するようになっ た.早口もだんだん聞き取れるようになった.

MOOC はコンテンツがおもしろい

MOOC は, コンテンツ自体か非常におもしろい.なので, 少しくらい英語が わからなくたって, その他の好奇心でなんとかなった.

コンテンツ大事.この効果は, NHK の英語ニュースでは不可能だろう.いく らだって, 英語をシャワーのように浴びられるし, もっと欲する.

まとめ: 結局はモチベーションが大事

社会人になって, 点数が下がってしまった一番の原因は, モチベーションが あがらなかったからだと思う. 仕事をはじめても, 英語と接する機会がほとん どなかったから, 英語を勉強する必要性を感じなかった.

なんのために?

この問いから勉強方法を変えて, 結果的に強力なモチベーションを維持して 英語力の向上ができた. モチベーションを維持することが大事だと思った.

14 Aug 2014, 13:51

英語力を向上させたいのでまずは Emacs からはじめた

英語の Writing/Speaking 力を鍛えるためには?

英語で自分の考えを自由に表現できない

<div class="outline-text-3" id="text-1-1">
  <p>
    最近英語で話す機会が多いのだが, 自分の考えをうまく表現できずにくやしく思うことが多い.
  </p>

  <p>
    MOOC のおかげで, Listening 力はバリバリに向上を感じるのだが, 次に鍛えるべきところは, 自分の考えを不自由なく表現する力だと感じる.
  </p>

  <p>
    すなわち, 以下だ.
  </p>

  <ul class="org-ul">
    <li>
      Writening
    </li>
    <li>
      Speaking
    </li>
  </ul>

  <p>
    英単語がわからなくても, 簡単な言葉に言い直せば表現できる. しかし, スラスラと表現することが難しい.
  </p>
</div>

もっとも効果的な手段は?

<div class="outline-text-3" id="text-1-2">
  <p>
    もっとも効果的な手段はなんだろうか?
  </p>

  <p>
    間違っていてもいいので, とにかく日常のなかで英語で表現する機会を増やすことだと思った.
  </p>

  <p>
    自分の日常のほとんどはパソコンをいじっている. パソコンでする作業のほとんどで, Emacs を利用している. つまりは,
  </p>

  <p>
    Emacs の英語学習環境を整える
  </p>

  <p>
    これが, もっとも英語上達に効果的な方法なのではとおもう.
  </p>

  <p>
    というわけで, ペテンな前置きが長くなったが, 英語学習に役立ちそうな EmacsLisp を集めてみる.
  </p>
</div>

前提条件

環境

<div class="outline-text-3" id="text-2-1">
  <ul class="org-ul">
    <li>
      Arch Linux
    </li>
    <li>
      Emacs 24.4
    </li>
  </ul>
</div>

強化するモード

<div class="outline-text-3" id="text-2-2">
  <p>
    今考えている英語強化法は,
  </p>

  <ul class="org-ul">
    <li>
      英語の日記を書く
    </li>
    <li>
      英語で twitter でつぶやく
    </li>
  </ul>

  <p>
    なので, org-mode と twitter-edit-mode を対象にしようと思う.
  </p>
</div>

英語力をあげる Emacs Lisp

WEB 検索

<div class="outline-text-3" id="text-3-1">
</div>

<div id="outline-container-sec-3-1-1" class="outline-4">
  <h4 id="sec-3-1-1">
    google-translate.el
  </h4>

  <div class="outline-text-4" id="text-3-1-1">
    <p>
      ご存知, Google 翻訳.これはめっちゃいいや!!
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://github.com/manzyuk/google-translate">https://github.com/manzyuk/google-translate</a>
      </li>
    </ul>

    <p>
      設定はこのページを参考にしました. どうもありがとうございます.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://qiita.com/catatsuy/items/ae9875706769d4f02317">卒論を英語で書けと言われしまったあなたにおすすめの Emacs の設 定 &#8211; Qiita</a>
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require &#8216;google-translate)
    </p>

    <p>
      (global-set-key "\C-xt" &#8216;google-translate-at-point)<br /> (global-set-key "\C-xT" &#8216;google-translate-query-translate)
    </p>

    <p>
      ;; 翻訳のデフォルト値を設定 (ja -> en) (無効化は C-u する)<br /> (custom-set-variables<br /> &#8216;(google-translate-default-source-language "ja")<br /> &#8216;(google-translate-default-target-language "en"))
    </p>

    <p>
      ;; google-translate.el の翻訳バッファをポップアップで表示させる<br /> (push &#8216;("*Google Translate*") popwin:special-display-config)<br /> [/sourcecode]
    </p>
  </div>
</div>

<div id="outline-container-sec-3-1-2" class="outline-4">
  <h4 id="sec-3-1-2">
    google-this
  </h4>

  <div class="outline-text-4" id="text-3-1-2">
    <p>
      Google 検索.おまけで翻訳機能もついている.
    </p>

    <p>
      google-translate があればいらないか? とりあえずいれとく.
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://github.com/Bruce-Connor/emacs-google-this">Bruce-Connor/emacs-google-this</a>
      </li>
    </ul>

    <p>
      代表的な使用方法.
    </p>

    <ul class="org-ul">
      <li>
        C-c / g (RET) でその場のキーワード検索.
      </li>
      <li>
        C-c / w でその場のワードを検索
      </li>
      <li>
        C-c / l でその行を検索
      </li>
      <li>
        C-c / c Google 翻訳
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require &#8216;google-this)<br /> (google-this-mode 1)<br /> [/sourcecode]
    </p>
  </div>
</div>

<div id="outline-container-sec-3-1-3" class="outline-4">
  <h4 id="sec-3-1-3">
    search-web.el
  </h4>

  <div class="outline-text-4" id="text-3-1-3">
    <p>
      無料でオンラインの英辞郎 on the WEB をサクッと利用する.
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://github.com/tomoya/search-web.el/tree/master">tomoya/search-web.el</a>
      </li>
      <li>
        <a href="http://qiita.com/akisute3@github/items/8deb54b75b48e8b04cb0">Emacs 使用中に素早く検索する &#8211; Qiita</a>
      </li>
      <li>
        <a href="http://d.hatena.ne.jp/tomoya/20090703/1246610432">Emacs ですぐに単語の検索をしたい欲望を叶える Elisp. &#8211; 日々, とん は語る. </a>
      </li>
    </ul>

    <p>
      キーバインドはつけていない.
    </p>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require &#8216;search-web)<br /> [/sourcecode]
    </p>
  </div>
</div>

<div id="outline-container-sec-3-1-4" class="outline-4">
  <h4 id="sec-3-1-4">
    codic.el
  </h4>

  <div class="outline-text-4" id="text-3-1-4">
    <p>
      エンジニアのためのネーミング辞書.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://codic.jp/">codic &#8211; デベロッパーのためのネーミング辞書</a>
      </li>
      <li>
        <a href="https://github.com/syohex/emacs-codic">syohex/emacs-codic</a>
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require &#8216;codic)<br /> [/sourcecode]
    </p>
  </div>
</div>

文法チェック系

<div class="outline-text-3" id="text-3-2">
</div>

<div id="outline-container-sec-3-2-1" class="outline-4">
  <h4 id="sec-3-2-1">
    fly-spell.el
  </h4>

  <div class="outline-text-4" id="text-3-2-1">
    <p>
      リアルタイム, スペルチェック..これは, 大変重宝している.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.gfd-dennou.org/member/uwabami/cc-env/emacs/flyspell_config.html">Youhei SASAKI&#8217;s official site: flyspell-mode の設定</a>
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require &#8216;flyspell)<br /> [/sourcecode]
    </p>

    <ul class="org-ul">
      <li>
        <p>
          <a href="http://d.hatena.ne.jp/mooz/20100423/p1">flyspell-mode の修正候補表示を popup.el で &#8211; mooz deceives you</a>
        </p>

        <p>
          キーバインドを設定.
        </p>
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (global-set-key (kbd "C-c <f8>") &#8216;flyspell-mode)<br /> (global-set-key (kbd "C-c <f9>") &#8216;ispell-word)<br /> (global-set-key (kbd "C-c <f10>") &#8216;flyspell-buffer)<br /> [/sourcecode]
    </p>

    <p>
      どうも flyspell と ac-complete は相性が悪い?
    </p>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (ac-flyspell-workaround)<br /> [/sourcecode]
    </p>

    <p>
      あるモードのみ flysell を起動させる.
    </p>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> ;; コメント領域のところだけ有効.<br /> (mapc<br /> (lambda (hook)<br /> (add-hook hook &#8216;flyspell-prog-mode))<br /> &#8216;(<br /> c-mode-common-hook<br /> ruby-mode-hook<br /> emacs-lisp-mode-hook<br /> ))<br /> [/sourcecode]
    </p>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (mapc<br /> (lambda (hook)<br /> (add-hook hook<br /> &#8216;(lambda () (flyspell-mode 1))))<br /> &#8216;(<br /> text-mode-hook<br /> org-mode-hook<br /> wl-draft-mode-hook<br /> twittering-edit-mode<br /> ))<br /> [/sourcecode]
    </p>
  </div>
</div>

<div id="outline-container-sec-3-2-2" class="outline-4">
  <h4 id="sec-3-2-2">
    helm-flyspell
  </h4>

  <div class="outline-text-4" id="text-3-2-2">
    <p>
      helm-flyspell は flyspell をさらに便利にしてくれる.
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://gist.github.com/cofi/3013327">https://gist.github.com/cofi/3013327</a>
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (global-set-key (kbd "C-x g i") &#8216;helm-flyspell-correct)<br /> [/sourcecode]
    </p>
  </div>
</div>

<div id="outline-container-sec-3-2-3" class="outline-4">
  <h4 id="sec-3-2-3">
    ispell-buffer.el
  </h4>

  <div class="outline-text-4" id="text-3-2-3">
    <p>
      これも文法チェックだけど, 自分は fly-spell で満足したので,試していない.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://qiita.com/catatsuy/items/ae9875706769d4f02317">卒論を英語で書けと言われしまったあなたにおすすめの Emacs の設定 &#8211; Qiita</a>
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-2-4" class="outline-4">
  <h4 id="sec-3-2-4">
    grammer.el
  </h4>

  <div class="outline-text-4" id="text-3-2-4">
    <p>
      英語の文法をチェックしてくれる.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.emacswiki.org/emacs/BaoqiuCui">EmacsWiki: Baoqiu Cui</a>
      </li>
      <li>
        <a href="http://sleepboy-zzz.blogspot.jp/2013/10/emacsgrammarel_639.html">memo: Emacs で英語の文章書くのに便利な grammar.el を導入した</a>
      </li>
    </ul>

    <p>
      常に動かすとウザいので, 必要に応じて C-M-g で文法チェック発動.
    </p>

    <p>
      インストールは以下.
    </p>

    <ul class="org-ul">
      <li>
        link-grammar をインストール.
      </li>
      <li>
        <i>usr/include/link-grammar</i> にファイルが配置される.
      </li>
      <li>
        svn co <a href="http://bcui-emacs.googlecode.com/svn/trunk/grammar">http://bcui-emacs.googlecode.com/svn/trunk/grammar</a>
      </li>
      <li>
        INCDIRS = -I. -I/usr/include/link-grammar に Makefile を修正.
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require &#8216;grammar)<br /> (setq grammar-program-name "~/.emacs.d/elisp/grammar/grammar")<br /> ;; 黒背景用の色変更<br /> (set-face-attribute &#8216;grammar-error-face nil<br /> :background "#Ff6347"<br /> :foreground "#000000")<br /> (add-hook &#8216;twittering-edit-mode-hook &#8216;grammar-mode)<br /> [/sourcecode]
    </p>
  </div>
</div>

入力系

<div class="outline-text-3" id="text-3-3">
</div>

<div id="outline-container-sec-3-3-1" class="outline-4">
  <h4 id="sec-3-3-1">
    auto-capitalize.el
  </h4>

  <div class="outline-text-4" id="text-3-3-1">
    <p>
      文字を大文字に直す.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://sleepboy-zzz.blogspot.jp/2013/09/auto-capitalizeel-aspell.html">memo: 英語環境で文字を大文字にキャピタライズする拡張 auto-capitalize.el を導入し た & aspell の個人辞書からもキャピタ ライズするようにした</a>
      </li>
    </ul>

    <p>
      自動で大文字に変換する.
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://github.com/yuutayamada/auto-capitalize-el">https://github.com/yuutayamada/auto-capitalize-el</a>
      </li>
      <li>
        <a href="http://sleepboy-zzz.blogspot.jp/2013/09/auto-capitalizeel-aspell.html">memo: 英語環境で文字を大文字にキャピタライズする拡張 auto-capitalize.el を導入した</a>
      </li>
    </ul>

    <p>
      You can use by M-x
    </p>

    <ul class="org-ul">
      <li>
        turn-on-auto-capitalize-mode
      </li>
      <li>
        auto-capitalize-mode.
      </li>
    </ul>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> ;; This code is from README<br /> (require &#8216;auto-capitalize)
    </p>

    <p>
      ;; Enable auto-capitalize-mode<br /> (add-hook &#8216;twittering-edit-mode-hook<br /> &#8216;(lambda ()<br /> (turn-on-auto-capitalize-mode)))<br /> [/sourcecode]
    </p>
  </div>
</div>

辞書系

<div class="outline-text-3" id="text-3-4">
  <p>
    辞書系は, どれもうまく動かすことができませんでした. . . とりあえすメモとして手順を書いておく.
  </p>
</div>

<div id="outline-container-sec-3-4-1" class="outline-4">
  <h4 id="sec-3-4-1">
    sdic.el
  </h4>

  <div class="outline-text-4" id="text-3-4-1">
    <p>
      Emacs から辞書が引けるインタフェース.フリー辞書を試す.
    </p>

    <ul class="org-ul">
      <li>
        <p>
          GENE95 英和辞書
        </p>

        <ul class="org-ul">
          <li>
            <a href="http://www.namazu.org/~tsuchiya/sdic/data/gene.html">http://www.namazu.org/~tsuchiya/sdic/data/gene.html</a>
          </li>
          <li>
            gene95.tar.gz
          </li>
        </ul>
      </li>

      <li>
        <p>
          EDICT 和英辞書
        </p>

        <ul class="org-ul">
          <li>
            <a href="ftp://ftp.u-aizu.ac.jp/pub/SciEng/nihongo/ftp.cc.monash.edu.au/">ftp://ftp.u-aizu.ac.jp/pub/SciEng/nihongo/ftp.cc.monash.edu.au/</a>
          </li>
        </ul>
      </li>
    </ul>

    <p>
      <a href="http://www.edrdg.org/jmdict/edict.html"> &#8211; The EDICT Dictionary File</a>
    </p>

    <ul class="org-ul">
      <li>
        edict2.gz
      </li>
    </ul>

    <p>
      github repository.
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://github.com/emacsattic/sdic">emacsattic/sdic</a>
      </li>
    </ul>

    <p>
      その他, 参考リンク.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://emacs.tsutomuonoda.com/emacs-sdic-install-setting/">Emacs 上で英和和英辞書を引くためのソフト SDIC をインストール・設定する | Emacs の elisp インストール・設定・使い方</a>
      </li>
      <li>
        <a href="http://ubulog.blogspot.jp/2007/08/emacs.html">ubulog: Emacs で快適な翻訳環境を</a>
      </li>
    </ul>

    <p>
      自分の環境では, うまく動作させることができなかった. いつか試す.
    </p>
  </div>
</div>

<div id="outline-container-sec-3-4-2" class="outline-4">
  <h4 id="sec-3-4-2">
    sdic-inline.el
  </h4>

  <div class="outline-text-4" id="text-3-4-2">
    <p>
      sdic-inline-mode がオンであると, ポイント下にある単語を辞書で自動 でひき, 結果をミニバッファに表示.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://d.hatena.ne.jp/khiker/20100303/sdic_inline">sdic-inline / ポイント下の単語の意味をミニバッファに表示する &#8211; とりあえず暇だったし何となく始めたブログ</a>
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-4-3" class="outline-4">
  <h4 id="sec-3-4-3">
    lookup.el
  </h4>

  <div class="outline-text-4" id="text-3-4-3">
    <p>
      オフラインの辞書 (EPWING 形式) を検索できるツール.辞書は有料なので, 試していない. かなり便利そうだ. いつか試す言う意味でブックマーク.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://openlab.jp/edict/lookup/index.html.ja">Lookup</a>
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-4-4" class="outline-4">
  <h4 id="sec-3-4-4">
    look.el
  </h4>

  <div class="outline-text-4" id="text-3-4-4">
    <p>
      うろおぼえな英単語の綴りを検索することができる. 詳しくは以下のリンクを参照.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/english.html">english & japanese</a>
      </li>
    </ul>

    <p>
      Unix の look というコマンドを Emacs から利用する.
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://linuxjm.sourceforge.jp/html/util-linux/man1/look.1.html">Man page of LOOK</a>
      </li>
    </ul>

    <p>
      ArchLinux だと, 辞書が入ってなかったので入れた.
    </p>

    <p>
      [sourcecode language=&#8221;sh&#8221; title=&#8221;&#8221;]<br /> $ sudo pacman -S words<br /> $ wget http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/look.el<br /> [/sourcecode]
    </p>

    <p>
      wget で取得した, elisp に (provide &#8216;look) を末尾に追加して, 以下を追記.
    </p>

    <p>
      [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require look)<br /> (global-set-key "\M-L" &#8216;look-here)<br /> [/sourcecode]
    </p>

    <p>
      これは, helm-flyspell と比べると, 利便性では劣る気がする.
    </p>
  </div>
</div>

まとめ

さてこれで, TOEIC の点数が 150 点アップだ.

あっ, しまった, TOEIC では Emacs が使えない!!

17 Mar 2014, 12:20

How to write a code like English(英文のようにプログラミングをする方法)

英語の文章のようにプログラミングをする方法についてのまとめです。

はじめに書いておくと、今回の記事の元ネタは以下の2つです。

[toc]

メソッド名と引数は文法にこだわるべし

まずは、オブジェクト指向と英語の5文型との関係性について。

S(Subject主語)はオブジェクト、V(Verb動詞)はメソッドに対応する。

第1文型 S + V

<div class="outline-text-3" id="text-1-1">
  <p>
    第一文型は、S+V。 誰・何は、どうする、SはVする。
  </p>

  <p>
    Vには、自動詞が使われる。主語と動詞で文が完結する。
  </p>

  <p>
    go、wait、start、listen、work, begin, come
  </p>

  <div class="org-src-container">
    <pre class="src src-ruby"><span style="color: #f92672; font-weight: bold;">class</span> <span style="color: #66d9ef; font-weight: bold;">S</span> 

def V # 自動詞 end end

  <p>
    第一文型の動詞には、前置詞+名詞の形をした副詞句が続くことが多い。
  </p>

  <p>
    よって、より英語っぽくコーディングするには、
  </p>

  <p>
    前置詞をメソッド名に、名詞を第一引数にするべし。
  </p>

  <div class="org-src-container">
    <pre class="src src-ruby"><span style="color: #f92672; font-weight: bold;">class</span> <span style="color: #66d9ef; font-weight: bold;">Bob</span>

def go_to(place) end

def wait_for(girlfriend) end

def live_in(town) end end

第2文型 S + V + C

<div class="outline-text-3" id="text-1-2">
  <p>
    第2文型は、S+V+C。 誰・何は、なんだ。S=Cの関係がなりたつもの。
  </p>

  <p>
    形容詞と名詞がCになる。Vには、大抵be動詞がくる。
  </p>

  <div class="org-src-container">
    <pre class="src src-ruby"><span style="color: #f92672; font-weight: bold;">class</span> <span style="color: #66d9ef; font-weight: bold;">S</span> 

def V(C) # be動詞 + 形容詞 end end

  <p>
    しかし、be動詞をメソッドにするには具体性がない。
  </p>

  <p>
    be動詞以外で動詞にくる名詞を以下に列挙。
  </p>

  <ul class="org-ul">
    <li>
      状態系 be, look, seem, keep, remain
    </li>
    <li>
      変化系 become、get, turn, go
    </li>
    <li>
      感覚系 feel、sound、
    </li>
    <li>
      <a href="http://www.elm-lab.com/CCP040.html">第2文型をとる動詞</a>
    </li>
  </ul>

  <p>
    よって、より英語っぽくコーディングするには、
  </p>

  <p>
    第一引数に状態を入れるべし。
  </p></p>
</div></p>

第3文型 S + V + O

<div class="outline-text-3" id="text-1-3">
  <p>
    第3文型は、S+V+O。SはOをVする。Vは他動詞。Oは目的語。
  </p>

  <p>
    Objective、Objectiveですよ!Objective!大事なことは3回書きます。
  </p>

  <p>
    つまり、Oはオブジェクトがくる。オブジェクト指向万歳。
  </p>

  <div class="org-src-container">
    <pre class="src src-ruby"><span style="color: #f92672; font-weight: bold;">class</span> <span style="color: #66d9ef; font-weight: bold;">S</span> 

def V(O) # 他動詞 + オブジェクト end end

  <p>
    よって、より英語っぽくコーディングするには、
  </p>

  <p>
    オブジェクトか名詞を引数にするべし。
  </p>

  <div class="org-src-container">
    <pre class="src src-ruby"><span style="color: #f92672; font-weight: bold;">class</span> <span style="color: #66d9ef; font-weight: bold;">Bob</span>

def study(@ruby) end

def read(aBook) end end

  <p>
    しかし、Oにくるものはなにも名詞ばかりでない。
  </p>

  <p>
    不定詞(to xxx)、動名詞(xxxing)、名詞句、名詞節もOとなり得る。 このケースはメソッドの引数とするにはすこし難しいな。
  </p></p>
</div></p>

第4文型 S + V + O + O

<div class="outline-text-3" id="text-1-4">
  <p>
    第4文型は、S+V+O(人)+O(物)。Sは
  </p>

  <p>
    ボイントは1つめのOは人、2つめは物。
  </p>

  <p>
    give, show, send, buy
  </p>

  <p>
    人というのは、モジュールに置き換えるのがよい。
  </p>

  <p>
    xxxManager, xxxListener, xxxController, xxxObserver&#x2026;.etc.
  </p>

  <p>
    オブジェクト間のやりとりでつかえる。
  </p>

  <div class="org-src-container">
    <pre class="src src-ruby"><span style="color: #f92672; font-weight: bold;">class</span> <span style="color: #66d9ef; font-weight: bold;">Bob</span>

def send(@Manager, @message) end

def give(@girlfriend, @present) end end

  <p>
    よって、より英語っぽくコーディングするには、
  </p>

  <p>
    第一引数をやりとり先のオブジェクト、第二引数をデータにするべし。 英語を意識するならば、順番にこだわるべし。
  </p>

  <p>
    ちなみに、第三文型と第四文型は、変換可能。
  </p>

  <p>
    Tom shows hoge to him. / Tom shows him hoge.
  </p>

  <p>
    前置詞がともなうと引数の形にしずらいので、 第4文型として引数を2つとるほうが英語っぽい。
  </p></p>
</div></p>

第5文型 S + V + O + C

<div class="outline-text-3" id="text-1-5">
  <p>
    第5文型は、「S+V+O+C」(主語+動詞+目的語+補語)。O = Cの関係がなりたつ。
  </p>

  <p>
    第ニ文型との対比に注意。第二文型はS=Cだが、5はO=Cの関係。
  </p>

  <p>
    Oには、オブジェクトがくる。Cには状態がくる。 Sオブジェクトの指示でOの状態を変化させる。
  </p>

  <p>
    make, call, appoint, drive, find, keep, turn, notice,
  </p>

  <p>
    こうやって、動詞をならべてみると、実際に利用できそうなものはあまりないな。
  </p></p>
</div></p>

メンタルマッピングを避けるべし

メンタルマッピングとは、あたまの中での対応付け。 コードの中で、変数名はなにかを略されることがおおい。

cntl -> controller, mgr -> manager, sn -> serial number

しかし、略すと英語として読み取れなくなる。よって、メンタルマッピングには反対だ。

コメントを書く代わりにメソッドの抽出をするべし

コメントはコードを雑然させる。そして、度々間違っている。

こんなときはコメントを書く代わりに、その部分を戻り値なしのメソッドに抽出する。

たとえば、

// ソートする。
for(int i=0; i < 9; i++) {
  for( int j=i+1 i < 10 ; j++)
     if( a[i] > a[j] ) {
        swap(i, j);
     }
  }
}

<p>
  これはこうリファクタリングする。
</p>

<div class="org-src-container">
  <pre class="src src-C++"><span style="color: #66d9ef; font-weight: bold;">void</span> <span style="color: #a6e22e;">sort</span>(<span style="color: #66d9ef; font-weight: bold;">Data</span> *<span style="color: #fd971f;">a</span>) {

// ソートする。 for(int i=0; i < 9; i++) { for( int j=i+1 i < 10 ; j++) if( a[i] > a[j] ) { swap(i, j); } } }

<p>
  メソッド名を文章にすることで、コードが文章に近づくのだ。素晴らしいテクニック。
</p></p>

if, else, while文は一行で書くべし

if, else, whileを一文で書くことで、より英語の文章に近づく。

if (isdangerous())
  stopApplication();
else
  restartAplication();

<p>
  この際、条件式もメソッドに抽出する。
</p>

<p>
  javaでは is(条件)、rubyでは(条件)?というスタイルが好まれる。
</p></p>

説明的変数を導入すべし

説明的変数を導入すると、可読性が上がる。

ぐちゃぐちゃした論理は説明的変数またはメソッド抽出でわかりやすい文章に変える。

bool isSuccess = (条件1) && (条件2) && (条件3) || (条件4)

<p>
  ここでも、if文を一行にまとめるという規則と合わせると、より文章らしくなる。
</p>

<div class="org-src-container">
  <pre class="src src-C++"><span style="color: #f92672; font-weight: bold;">if</span> (isSuccess())

startMusicAndSingingASong();

まとめ

英語のようにコーディングするにあたって、最大の関心事が、「実行速度」だ。

メソッドを細かくすると、それだけ遅くなるのではないか?

大丈夫、コンパイラは進化しているので、細かいメソッド分割はコンパイラによって最適化される。詳しくは以下参照。

本当にコンパイラを信じていいの?迷信ではないか?

いや、実のところ、自分でも不安だ。どこかに書いてあったことをそのまま信じてだけだ。自信がない。

じゃあ、ということで、コンパイラについて勉強してみよう。今日から始まる courseraの コンパイラの講義に挑戦だ!

23 Feb 2014, 11:32

英語でのビジネスメールの書き方まとめ

英語でメール書くのが難しすぎるので、英語でメールを書くポイントをまとめてみた。気がついたらその度に追記予定。

[toc]

テンプレート


Dear xxx

[自己紹介 or 軽い挨拶]

[要件]

The following are the details.

[要件の詳細]

Regards,
hogehoge

件名

とりあえず全部暗記。

  • お礼 Thank you for…
  • 質問 Question about…
  • 要求 Request about/for
  • 問い合わせ Inquiry about/for
  • 催促 Reminder
  • 重要 Urgent

メールの冒頭

アメリカ式とイギリス式がある。アメリカは: イギリスは,

改まった間柄や初めてメールを送る相手の場合

<div class="outline-text-3" id="text-3-1">
  <ul class="org-ul">
    <li>
      アメリカ: Dear Mr. hogehoge:
    </li>
    <li>
      イギリス: Dear Mr. hogehoge,
    </li>
  </ul>
</div></p>

ちょっと親しい場合

<div class="outline-text-3" id="text-3-2">
  <p>
    Dear hogehoge: または、Dear hogehoge,
  </p>

  <p>
    もっと親しい場合は、Hello,Hiなども。
  </p></p>
</div></p>

不特定多数

<div class="outline-text-3" id="text-3-3">
  <p>
    こんな表現も覚えときたい。
  </p>

  <ul class="org-ul">
    <li>
      関係各位 :To whom it may concern,
    </li>
    <li>
      みなさま :Dear all, Hi everyone,
    </li>
  </ul>

  <p>
    (参考)<a href="http://www.zkai.co.jp/ca/g/english/mail_lesson.html">「英文メールの書き方」10分間レッスン|ビジネス英語|キャリアアップコース</a>
  </p></p>
</div></p>

自己紹介

とりあえず自己紹介を覚える。

My name is hogehoge(名前) of hugahuga(所属).

Thank you for your e-mail of March 14. (3月14 日付のメールをありがとうございました)

書き出し

結論から述べるのが、ビジネスメール。

要件を伝える

<div class="outline-text-3" id="text-5-1">
  <ul class="org-ul">
    <li>
      I am writing this email because I&#8217;d like to
    </li>
    <li>
      This e-mail is about ~
    </li>
  </ul>
</div></p>

質問する

<div class="outline-text-3" id="text-5-2">
  <ul class="org-ul">
    <li>
      I have questions about ~
    </li>
    <li>
      Let me ask(know) about
    </li>
    <li>
      I&#8217;d like to know more about ~
    </li>
  </ul>
</div></p>

要求する

<div class="outline-text-3" id="text-5-3">
  <ul class="org-ul">
    <li>
      It would be great if you could ~
    </li>
    <li>
      I&#8217;d appreciate it if you could ~
    </li>
    <li>
      I was wondering if you could ~.
    </li>
    <li>
      <a href="http://www.alse-net.com/column/email-reibun.htm">英文Eメール &#8211; 定型文・例文</a>
    </li>
  </ul>
</div></p>

詳細は以下

結論のあとに詳細を述べる。

  • details are as below , as follows , the following
  • here is a details/The following are the details.
  • xxx is written below.
  • this is a xxx

メールの末尾

初めてメールをやりとりする場合

<div class="outline-text-3" id="text-7-1">
  <p>
    Regardsが鉄板。取り合えず、Regards。
  </p>

  <pre><code>Regards,

hogehoge

ちょっと親しい場合

<div class="outline-text-3" id="text-7-2">
  <p>
    面識がある人のみに使う。
  </p>

  <pre><code>Kind regards,

hogehoge

Best regards, hogehoge

  <p>
    Thank you, thanksなどは気軽。
  </p>

  <p>
    以下のルールがあるようだ。
  </p>

  <p>
    1.先頭の一文字を大文字する 2.最後にコンマをつける 3.名前を伴って使う
  </p>

  <p>
    (参考)<a href="http://english-columns.weblio.jp/archives/=1034">ビジネスメールを送る場合の基本的なルール:文末や語尾に使われる結語</a>
  </p></p>
</div></p>

その他、覚えておきたい表現

了解しました

<div class="outline-text-3" id="text-8-1">
  <ul class="org-ul">
    <li>
      「了解」「了解しました」 内容を確認したことだけを伝える簡単な表現
    </li>
  </ul>

  <pre><code>Noted.

  <ul class="org-ul">
    <li>
      相手の依頼を受けて「当然そうしますとも」「もちろんです」と言う場合の返事(丁寧な表現でもある。)
    </li>
  </ul>

  <pre><code>    Absolutely.
Certainly.

  <ul class="org-ul">
    <li>
      了解しました、大丈夫ですの意
    </li>
  </ul>

  <pre><code>    That would be fine.

  <ul class="org-ul">
    <li>
      理解しました」
    </li>
  </ul>

  <p>
    あなたの言う意味がわかりますよ、と状況に理解を示す場合
  </p>

  <pre><code>    I get the point.
I understand.

  <ul class="org-ul">
    <li>
      「わかりました」「わかった」と内容を確認、理解したと伝えたい場合の簡単な返事
    </li>
  </ul>

  <pre><code>    Okay.
All right.
Understood.

  <ul class="org-ul">
    <li>
      <a href="http://english-columns.weblio.jp/archives/=974">英語のビジネスメールで「了解」「了解しました」「理解しました」「わかった」「分かりました」(わかりました)と言いたい時の表現:「noted」など | 英語の勉強コラム</a>
    </li>
  </ul>
</div></p>

婉曲表現

<div class="outline-text-3" id="text-8-2">
  <p>
    柔らかい表現で、要求事項を伝える。重要!
  </p>

  <ul class="org-ul">
    <li>
      if I may(可能であれば)
    </li>
    <li>
      if you like(よろしければ)
    </li>
    <li>
      Unfortunately(残念ながら)
    </li>
    <li>
      It’s really too bad, but(誠に残念ですが)
    </li>
  </ul>

  <p>
    (参考)<a href="http://waiwaienglish.com/mailwriting-3677.html">英語でメールを書く時に使い回しができる超便利な英語の8つの定型文 | わいわい英会話</a>
  </p></p>
</div>

<div id="outline-container-sec-8-2-1" class="outline-4">
  <h4 id="sec-8-2-1">
    Would/Could
  </h4>

  <div class="outline-text-4" id="text-8-2-1">
    <p>
      Wouldを極める。Couldでもいい。
    </p>

    <ul class="org-ul">
      <li>
        I was hoping you would be able to shed some light on ~
      </li>
      <li>
        Would it be possible for you to ~ ?
      </li>
      <li>
        wouldn&#8217;t it be better if ~ ?
      </li>
      <li>
        I would like to have your permission to ~
      </li>
      <li>
        Please allow me to ~
      </li>
      <li>
        I am wondering if you could ~
      </li>
      <li>
        would rather ~
      </li>
      <li>
        would like to ~
      </li>
    </ul>

    <p>
      (参考) <a href="http://blog.iknow.jp/posts/529">英文ビジネスメールで即使える!英語の丁寧な表現をマスターしよう! | iKnow! BLOG</a>
    </p>

    <p>
      appreciateはthank you よりも丁寧。
    </p>

    <ul class="org-ul">
      <li>
        I would appreciate it if
      </li>
    </ul>

    <p>
      - Any information would be appreciated.
    </p>

    <p>
      apologizeはSorryよりも丁寧。
    </p>

    <ul class="org-ul">
      <li>
        I apologize for/that
      </li>
    </ul>

    <p>
      (参考) <a href="http://blog.iknow.jp/posts/529">英文ビジネスメールで即使える!英語の丁寧な表現をマスターしよう! | iKnow! BLOG</a>
    </p></p>
  </div></p>
</div></p>

21 Feb 2014, 15:36

海外にメールを出した

今週は、仕事ではじめて海外にメールを出した。しかも4通。

メール一通書くのにものすごく時間がかかる。そして、送信し終わったあとは、手の冷や汗がものすごい。

了解しました、ということを書くために10分悩んだり。結局、Sureと書いた。

華々しきデビューのメールの内容が、

「このAPIつくれません。諦めていいですか?」

という、いきなり敵対心むき出しな内容だったけれども、

「いらないよ~」

という、やさしい返答をもらってうれしかった。

思い出にのこる出来事なので、ブログに書いとく。