質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.10%

英語ドキュメントを読むためのベストな学習法

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,801

study

score 59

教えて頂きたいこと

プログラムの学習をしていると英語情報しかない場合があり読解に苦労しています。
少し英語に慣れた方が今後の学習上プラスになると考え、プログラミングに特化した英語学習方法を模索しています。
皆さんお勧めの学習方法はどういったものでしょうか?

具体的な利用シーン

  •  英語マニュアルを読む
  •  英語のgithubやQ&Aサイト等を読む。
  •  英語のコーディング練習サイトで問題を解く 等

現在利用している教材

現在自分が使っている教材は、英文マニュアルと翻訳された日本語マニュアルです。
簡単な説明だと、文章の量がフレーズレベルなので、見比べてフレーズの勉強をしています)

例)
英文)Test your extraction code in an interactive environment.
翻訳)インタラクティブな環境で抽出コードをテストする.

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2017/03/11 10:07

    複数のユーザーから「プログラミングに関係のない質問」という意見がありました
    teratailでは、プログラミングに関して困っていることがないと思われる質問を推奨していません。
    「質問を編集する」ボタンから編集を行い、具体的に困っている理由や解決したいことを明確に記入していただくと、回答が得られやすくなります。

回答 3

checkベストアンサー

+5

私はkatoyさんの言っていることに概ね賛成です。

対訳は役立たず

まず、対訳を見比べる手法ですが、技術文章の翻訳で優れているものは希です(もちろん、良訳といわれるものもありますが、少数です)。中にはGoogle翻訳の方がマシというレベルもあります。なぜなら、技術がわかる、かつ、翻訳ができるという能力の人は少ないからです。

例えば、有名なStricture and Interpretation of Computer Programs(通称SICP ハル・エイブルソン、ジェリー・サスマン、ジュリー・サスマン共著)の翻訳を見てみましょう。ネットですぐに入手できる翻訳は三つあります。

  1. 計算機プログラムの構造と解釈 第二版 和田英一訳
  2. PDF版SICP日本語翻訳 minghai訳
  3. SICP - Long Gamma 有志による訳

SICPの1.1.2  Naming and the Environmentの冒頭で変数と名前の関係を述べています。

A critical aspect of a programming language is the means it provides for using names to refer to computational objects. We say that the name identifies a _variable_ whose _value_ is the object.

それぞれの訳とGoogle先生の訳(Google翻訳)を見てみましょう。

和田訳

プログラム言語の重要な点は, 名前を使って計算オブジェクトを指す手段を用意することである. オブジェクトを (value)とする 変数(variable)を識別するものが 名前である.

minghai訳(PDFですので、リンクはありません)

プログラミング言語の重要な特徴は演算対象を参照するための名前を利用 するためにそれが提供する手段です。名前は_value_() としてオブジェクトを持 つvariable(変数) を識別します。

有志訳

プログラミング言語の重要な特徴は、演算オブジェクトを参照するための名前が使えるということである。名前こそが、オブジェクトを値として持つ変数を特定するのである。

Google翻訳

プログラミング言語の重要な側面は、計算オブジェクトを参照するために名前を使用するための手段です。この名前は、値がオブジェクトである変数を示していると言います。

和田訳は、古いこともあり、少々お堅いです。技術的には理解しているが故に、やや直訳風になってしまっています。逆にminghai訳は、技術的に理解しているのか疑わしいほど、何を言っているのかわからないという感じです。有志訳は内容の意味だけではなく、日本語として意訳しています。Google先生は少々言い回しが変ですが、意味は通じる感じです。

このように一つのものに対する翻訳でも訳者によってかなり異なります。この違いは、訳者が知っている事の差です。

  • 訳者が翻訳の仕方をわかっていないと、直訳になり、日本語として違和感が出る。
  • 訳者が技術の仕組みをわかっていないと、日本語は正しいのに、とらえ方の間違いで部分的な訳が間違ってしまい、言っていることがおかしくなる。

SICPは有名なだけあって翻訳は複数ありますが、ものによっては翻訳は一つだけも珍しくありません。本当に酷いものは酷く、英語の原書を読んだ方がマシと言われるものがたくさんあります。

なお、機械翻訳はかなり酷かったのですが、ここ最近は技術の向上で大分マシになってきました。ただ、すごい誤訳をしている場合もたまにありますので、鵜呑みにするのは危険です。

技術英語はフレーズよりターム

技術英語ではそれほど難しい言い回しは余りされません。それこそ仕様書のような文章では、かなり簡素な英語で書かれていますので、SHOULDとMUSTとNOTの違いさえ気をつければ、それなりに読めるはずです。それよりも重要なのはターム、つまり用語です。たとえば"object"とあった場合、普通は「物体」とか「対象」とか「目標」とかに訳されます。しかし、プログラミング言語の言い回しで"object"と言った場合は「オブジェクト」と訳されます。なぜなら、このときの"object"はテクニカルターム(技術用語)であり、もともと日本語に存在しない意味で使われているからです。

先ほどのSICPでは"computational objects"という表現が出てきました。直訳すると「計算的な対象」でしょうが、これでは全く意味がわかりません。「プログラムの計算で用いられる(技術用語としての)『オブジェクト』」と理解すると、なんとなくわかると思います。また、ここでのオブジェクトは次の文の"object"と同じであり、その関連性がさらにわかることでしょう。

※ では、オブジェクトとは何かと言われると、一言で説明するのは難しいです。それは確かに、コンピュータの中の「物体」であり、計算の「対象」であり、プログラミングする「目標」でもあります。ニュアンス的にそういった英語の元々の意味から技術用語になったと言うこともあり、英語圏の人には違和感がないのかも知れません。

このように、技術用語を知っているか知っていないかで全く別の解釈をしてしまうことがあります。しかし、技術用語を知るにはその技術自体を知らないと難しいです。オブジェクトという技術用語も、プログラミングを理解して初めて理解できる物になるからです。

近道はない

じゃあどうすればとなると、まずは最低限の基礎知識を身につけることでしょう。最低でも、まともなプログラミング言語を一通りやっている、または、大学の情報系学部レベルの知識がある、とか、そういった物がないと意味不明で終わると思います。逆にそういった知識があれば、より知識を深めるためにも、知っている事の関連書籍を読むことはかなり助けになるでしょう。

対訳を見ることは、最初に言ったとおり、翻訳の善し悪しがかなり出るので良訳に巡り会わないときついです。ましてや、良訳の本が初心者向けとは限らないため、そもそも訳された本を読めるレベルにならないといけません。結局は、基礎知識に立ち戻ってしまいます。

普通に勉強してからは嫌だ、同時に進めたいと言うのであれば、「英語の本しか読まない」しかないと思います。英語が得意なら、さらさらいけると思います。私もHaskellを初めて学ぶのにLearn You a Haskell for Great Goodというのを英語だけで読み進めていった事があります。ただ、ジョークのような言い回しの部分がわからなかったので、あとで日本語訳(これ自体は良訳だと思っていますが、残念ながら、この本はCやPythonなどの普通のプログラミング言語を知っている人でないとちょっと厳しいです)を買って読み直しましたが…。

更なる先

技術英語にはもう一つレベルがあります。上の話は仕様書とか入門書とか書物レベルです。次に必要なのは会話レベルです。メーリングリストやGithubのissuesなどを読み解かないといけません。ネイティブの人は砕けた英語を使いますし、ネイティブじゃない人(私を含む)は壊れた英語を使います。そこに、なんとか英語で投稿して、会話する必要があります。

ただ、この世界は「通じれば良い」という感じなので、なんちゃってでもそれなりに大丈夫と言えば大丈夫のような気がします。(私は正しい英語になることを諦めました)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/11 17:58

    とても詳細に解説頂きありがとうございました。
    実際の対訳例を複数ご紹介頂き、それぞれに大きなバラつきがある事が理解できました。
    「技術英語はフレーズよりターム」、「近道はない」というご説明もとても参考になりました。
    「まずは最低限の基礎知識を身につけること」とのご指摘の通り、現段階では日本語でプログラミングの学習を進める事を重視し、テクニカルタームを少しづつ覚えていきたいと思います。
    (対訳の比較がとても参考になりました。ありがとうございました。)

    キャンセル

+4

プログラミング文章を、自分で理解できる英語力を身に着けたい。

自分が使えるプログラム言語入門の書籍・Web ページを辞書を引かずに、大量に読む。
(少しぐらいわからない単語や構文があっても無視して、それなりの速度で読み進める)

どうしてもキーになる単語、文書でわからないものがあった場合は、辞書や翻訳機能をつかって意味を調べる。

このようにすると、よくでてくる単語や言い回しがわかってくるとおもいます。
自分が使えるプログラム言語のことなので、英語も意味はだいたい想像できるはず。
それらを英語でどんな風に表現するかを頭に大量に入れていくのが、この方法の目的です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/11 12:00

    コメント頂き有難うございます。
    「入門用の英語の書籍」を大量に読むというのは確かに効果がありそうですね。
    私はまだプログラムレベルが低いのですが、技術的な土台がしっかりした方なら、
    こちらの方法で高速でインプットできそうですね。

    キャンセル

-4

英語マニュアルを読む
英語のgithubやQ&Aサイト等を読む。
英語のコーディング練習サイトで問題を解く 等

辞書を引きながらやってみたらいいと思います。そのうち辞書を引く回数も減るでしょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/11 02:17 編集

    あれ? 何か間違ったこと言いましたか? RFC 読めば RFC 読めるようになりますよ。他に読みたい技術文書があればそれをどうぞ。実際ジャンルもたくさんありますし、人工知能のフレーズ覚えてもスマホアプリ作れるようにはならないんですよね。

    キャンセル

  • 2017/03/11 06:06

    コメント頂き有難うございます。
    初心者なので専門用語を知らないのですが、RFCとはRequest for Commentsの事でしょうか?
    こちらのキーワードで調べたところ、日英を対訳したサイトを見つけまして、大変参考になりましたのでお礼申し上げます。

    また、MSDNについては、こちらの質問をした後に気付いたのですが、
    teratail内に 「ITにおける英語の必要性について https://teratail.com/questions/43510
    という質問を見つけました。

    そちらによると、MSDNには英日の翻訳が機械翻訳で正確ではない場合があるとのことでしたが、
    良質な英日翻訳を簡単に抽出するような方法はありますでしょうか?

    キャンセル

  • 2017/03/11 09:02 編集

    自分で翻訳すればいいじゃないですか。
    文学作品ではないので分かりにくい持って回った表現や慣用句はほとんどありません。辞書があれば事足ります。

    意味がわからないと翻訳できないので、その技術に対する自分の理解の足りていないところがわかります。

    「インタラクティブな環境で抽出コードをテストする」の意味が分かりますか?
    日本語として、訳として間違ってはいません。しかし良質な翻訳かと言われると首をひねります。これを意味も分からず文脈も無視して丸暗記することには無意味さを感じます。
    私なら「データを抽出するコードをシェルで対話しながら試して下さい」と訳します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる