IT系の技術文書なら英語でも簡単に読めることを知らないと損をすると思う

# こんな人いませんか？

* 開いたページが英語だとすぐに閉じてしまう
* 自動翻訳で意味がわからない日本語になってしまった
* 検索結果が英語のページばかりなので日本語に絞り込んだらほとんど残らなかった
* 新しい技術の日本語情報がないので、古い技術で妥協した

実は英語の文学作品やビジネス文書と比べると、IT系の技術文書を読むのは本当に簡単なんです！

![english.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169872/5f49fab3-0e24-603b-d94f-8e7ffc5a7bd7.png)

ただし個人の経験にもとづく話である点はご了承ください。

# 英語を嫌いになった原因
学校の授業で、こんなことで英語を嫌いになった人はいませんか？

* 単語の多さ（丸暗記がつらい）
* 複雑な時制（『過去から見た未来で進行中』とかいつ使うの？）
* 複雑な仮定法（仮定法過去、仮定法過去完了、仮定法未来...）
* 助動詞の種類の多さ、ニュアンスの違い
* 複雑な文法、長文読解
* テストで少し間違えただけで不正解にされた

なんとIT技術文書を読むだけなら、これらは必要ないんです！
これで英語を嫌う理由のほとんどがなくなります。

# IT技術系の英文を読むのが簡単な理由
以下、その理由

## 1. 単語は少ししか知らなくていい
* 固有名詞が多い  
「Linux」や「Docker Compose」のように、和訳する必要がない名称の比率が多くないですか？
* そもそも普段使っている技術用語が英語  
「シャットダウンて何？『遮断』のこと？」と言う人はいないですよね。
* 出てくる単語がだいたい同じ  
少数の頻出単語が多くの文書で使われている感じです。
* 感情表現がない  
感情を表す単語が出てこないだけでも、知るべき単語の数が激減します。

## 2. 複雑な時制を知らなくていい
* ほとんど現在形で書かれています。

## 3. 複雑な仮定法を知らなくていい
* 教科書に出てくるような複雑な仮定法で書かれた技術文書を見たことがありません。
* なぜか皆 if、then、else ならよく知っていたりします。

## 4. 助動詞の種類やニュアンスの違いを知らなくていい
* 「RFCの記述に忠実に」「現地の法規制に抵触しないように」などの特殊なケースを除けば、あまり重要でないことが多いです。
* 「must」は「may」よりキツいとか、中学校で習ったことを何となく思い出してください。

## 5. 複雑な文法、長文読解は不要
* 教科書に出てくるような複雑な英文法で書かれた技術文書を見たことがありません。
* 要点が箇条書きで短くまとめられていることが多いです。
* 技術文書には「相手に有利な条件と思わせるための言い回し」や「責任回避のための巧妙な表現」なんかもありません。
* 遠回しに好意を伝えるような文学的な表現もないので安心してください。

## 6. 完全な正解は必要ない
* 内容を理解するだけなら、学校のテストのように完全な正解である必要はありません。
* （実は日本人が英語を避ける理由のほとんどがこれかも）

## 7. サンプルソースで理解できることもある
* 運がよければ、短くて的確なサンプルソースが全てを語ってくれることもあります。

# 実際の例で確かめる
日本語ドキュメントの中で、SDKドキュメントだけ英語というのはこの世界のあるあるですね。以下は [AWS ドキュメント](https://docs.aws.amazon.com/)の中の、[AWS SDK for Python のユーザーガイド](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html)の冒頭部分です。

> Resources represent an object-oriented interface to Amazon Web Services (AWS). They provide a higher-level abstraction than the raw, low-level calls made by service clients. To use resources, you invoke the resource() method of a Session and pass in a service name:

英文は改行が少ないために、パッと見ると1つの長文に見えちゃいませんか？
そこで、まず「ピリオド ＋ スペース ＋ 大文字」の部分を探して、「／」を入れて文を分けると見やすくなります。

> Resources represent an object-oriented interface to Amazon Web Services (AWS). **／** They provide a higher-level abstraction than the raw, low-level calls made by service clients. **／** To use resources, you invoke the resource() method of a Session and pass in a service name:

これで例文を3つの短い文に分けて考えることができるようになりました。

次に固有名詞、既知の技術用語、簡単な単語を探します。これらは日本語の意味を調べる必要がありません。

* 固有名詞
*「Amazon Web Services (AWS)」*、*「resource()」*（メソッド名）

* 既知の技術用語
Resources（リソース）、object-oriented（オブジェクト指向）、interface（インタフェース）、higher-level（（より）高レベル）、abstraction（抽象化）、low-level（低レベル）、calls（（関数などの）呼び出し）、service（サービス）、clients（クライアント）、method（メソッド）、Session（セッション）

* 簡単な単語
to（～へ）、They（それら）、To（〜するために）、use（使う）、of（～の）、name（名前）

これらの単語を置き換えると、残った単語は以下の**太字**部分だけになります。
**まだ何も調べていないのに、すでにこの時点でおおよその内容が読めてしまいます！**

> リソースは　**represent**　*Amazon Web Services (AWS)*　へのオブジェクト指向インタフェース. **／** それらは **provide**　より高レベルな抽象化　**than the raw**,　低レベル 呼び出し　**made by**　サービスクライアント. **／** リソースを使うために,　**you invoke**　セッションの　*resource()*　メソッド　**and pass in**　サービス名:

あとは残った単語の意味を調べて太字部分を置き換えるだけです。
represent（表す、代表する、意味する）、provide（提供する）、than（〜よりも）、raw（生の）、made by（〜に作られる、行われる）、invoke（呼び出す）、pass（渡す）

ここで助詞などの訳の正確さを求めないで、**大体の意味が分かればいいと割り切りましょう。**

> リソースはAmazon Web Services (AWS)へのオブジェクト指向インタフェースを表します。それらはサービスクライアントによる生の低レベル呼び出しよりも高レベルな抽象化を提供します。リソースを使うには、セッションのresource() メソッドを呼び出してサービス名を渡します：

また represent、provide、invoke は頻出単語ですが、すぐに暗記する必要はありません。何度も見ているうちに自然に頭に入ってくるので、知っている単語の比率がだんだん高くなっていきます。

簡単な例ですが、IT系の技術文書なら英語でも簡単に読めることに気付いていただければと思います。

# あとがき
最近インフラの仕事を始めて、AWS、Ansible、OpenVPN、Zabbix などを使ったシステムを Infrastructure as Code で構築しています。

この記事を書こうと思った理由は、IaC の日本語情報が少ないことと、反面それぞれの公式サイトで公開されている英文ドキュメントの質が非常に高いことに気づいたからです。