エンジニアのための英語 / 第1章: 基本文法
📖 Chapter 1

基本文法

英語の語順・時制・冠詞・前置詞・仮定法など、GitHubやSlackでのコミュニケーションの土台となる文法事項を実践例とともに整理する。

📝 10 セクション
⚡ 実践例文付き
📊 比較表・図解あり

英語は「S → V → O」の順で動詞が必ず2番目に来る。日本語の「S → O → V」との語順の違いを体に染み込ませることで、PRコメントやIssueを素早く正確に書けるようになる。

5つの基本文型
エンジニア現場の実例で覚える
文型1: SV — 最もシンプル
S
+
V
例文日本語訳
The server crashed.サーバーがクラッシュした。
The CI pipeline failed.CIパイプラインが失敗した。
The deployment succeeded.デプロイが成功した。
文型2: SVC — S = C の関係
S
+
V
+
C
例文日本語訳
This function is deprecated.この関数は非推奨だ。
The API response seems slow.APIレスポンスが遅そうだ。
The code looks clean.コードがきれいに見える。
文型3: SVO — 最頻出
S
+
V
+
O
例文日本語訳
I fixed the bug.バグを修正した。
We deployed the update.アップデートをデプロイした。
The team merged the branch.チームがブランチをマージした。
文型4: SV O1 O2
S
+
V
+
O1(人)
+
O2(物)
Please send me the logs.
I'll assign you this ticket.
文型5: SVOC — O = C の関係
S
+
V
+
O
+
C
Keep the codebase clean.
I find this approach inefficient.
語順の違いと注意点
❌ 日本語的語順(間違い)
I the bug fixed.
This function null returns.
We yesterday the PR merged.
✅ 正しい英語語順
I fixed the bug.
This function returns null.
We merged the PR yesterday.
格変化(代名詞)— よくある間違い
人称主格(〜は)目的格(〜を/に)所有格(〜の)
1人称単数Imemy
2人称youyouyour
3人称中性ititits ※ it'sと混同注意
1人称複数weusour
❌ Please review I's PR. ✅ Please review my PR. ❌ Between you and I ✅ Between you and me ← 前置詞の後は目的格 ❌ Check it's behavior. ✅ Check its behavior. ← it'sはit isの短縮形

コードレビューやSlackでストレートな否定は高圧的に聞こえることがある。付加疑問文や婉曲的な否定表現を使うと、同じ内容でもプロフェッショナルで協調的な印象を与えられる。

付加疑問文(Tag Questions)
「〜ですよね?」と確認・同意を求める。文が肯定 → タグは否定形
This should fix the issue, shouldn't it? (これで問題が修正されるはずですよね?) You've reviewed the PR, haven't you? (PRをレビューしましたよね?) We agreed to use TypeScript for this module, didn't we? (このモジュールはTypeScriptを使うことで合意しましたよね?)
not を使わない否定表現
表現強さエンジニア例文
no + 名詞There's no test coverage here.
few / little中弱Few tests cover this path.
hardly / rarely中弱This function is rarely called.
too ... to中強The PR is too large to review effectively.
far fromThis implementation is far from optimal.
fail to中強The test fails to cover the edge case.
anything butThis code is anything but readable.

注意: hardly / rarely はすでに否定の意味を含むので not と一緒に使わない。
We don't rarely deploy on Fridays. → ✅ We rarely deploy on Fridays.

few vs a few(意味が逆転!)
few — ほぼない(否定的)
Few tests cover this path.
(このパスをカバーするテストはほとんどない)
a few — 少しある(肯定的)
A few tests are failing.
(いくつかのテストが失敗している)

冠詞を間違えると「特定のバグ」を指しているのか「一般的なバグ」を指しているのかが曖昧になる。a/an = 初登場・不特定 / the = 既知・特定 / 無冠詞 = 一般論・固有名詞

a/an vs the の判断フロー
名詞が出てくる Is it countable? 読み手は知っている? Is it already known? Is it the only one? Yes the No (初登場) a / an 不可算・固有名詞・一般論 無冠詞
エンジニアがよく間違う冠詞
間違い正しい表現理由
in the GitHubon GitHub固有名詞に the は不要
a feedbackfeedbackfeedback は不可算名詞
in the productionin production環境名は無冠詞慣用句
in a main branchin the main branch / in mainmainブランチは唯一
the TypeScriptTypeScript言語名は固有名詞
an URLa URLUは「ユー」=子音始まり
a HTTP requestan HTTP requestHは「エイチ」=母音始まり
a bug → the bug パターン(初登場→2回目以降)
I found a bug. ← 初登場: a The bug is in the login function. ← 2回目: the ❌ I found the bug. ← 文脈なしに「その」バグ? ✅ I found a bug in the payment module.
空間の前置詞: in / on / at
前置詞空間イメージエンジニア例
in三次元の内側in the repository / in the PR / in production
on面・表面に接触on GitHub / on the branch / on Slack
at一点・ピンポイントat line 42 / at port 8080 / at runtime
時間の前置詞: for / during / in / by
前置詞質問
forHow long? どのくらいの間for 2 hours / for a sprint
duringWithin what period? どの期間の中でduring the deployment / during the sprint
inWhen in the future? いつin 3 days / in Q4
byDeadline? いつまでにby EOD / by Friday
目的・手段・関係: for / with / by / as
前置詞意味
for目的・用途optimize for performance / a fix for this issue
with付随・手段compatible with iOS / implemented with TypeScript
by行為者・期限caused by a race condition / fix this by EOD
as役割・見なし方deployed as a container / used as a fallback
よくある間違い
❌ push in main → ✅ push to main (方向はto) ❌ compatible to → ✅ compatible with ❌ caused from → ✅ caused by (受動態の行為者はby) ❌ at GitHub → ✅ on GitHub (プラットフォームはon) ❌ during 2 hours → ✅ for 2 hours (継続時間はfor)

時制を間違えると「作業が完了したのか、まだ進行中なのか」が伝わらない。特に現在完了形と過去形の使い分けはネイティブと日本人で最も差が出るポイント。

タスク管理と時制の対応
タスク状態時制例文
📋 To Do(計画)be going to / willI'm going to refactor this next sprint.
🔄 In Progress現在進行形I'm working on the PR.
✅ Done(完了報告)過去形I fixed the bug. / We deployed at 2pm.
✅ Done(今の状態)現在完了形I've pushed the changes.
現在完了形 vs 過去形(重要!)
現在完了形 — 今も状態が続いている
I've pushed the changes. ← 今もレビュー待ち状態が続いている I've addressed the review comments. ← 今「対応済み」の状態
過去形 — 特定の時点の事実
I pushed the changes yesterday. ← 昨日という特定の時点 This was introduced in v2.0. ← 特定バージョンという時点

注意: yesterday / last week などの時間副詞は現在完了形と使えない。
I've pushed it yesterday. → ✅ I pushed it yesterday.

受動態を使う3つのシーン
🎯
客観的トーン
誰がやったか問わない
🔍
行為者が不明
または重要でない
📌
情報の強調
対象を文頭に持ってくる
時制別パターン
時制構造例文
現在形is/are + 過去分詞The endpoint is protected by auth.
過去形was/were + 過去分詞The bug was introduced last week.
未来形will be + 過去分詞The feature will be released in v3.0.
現在完了has/have been + 過去分詞The issue has been resolved.
現在進行is being + 過去分詞The PR is being reviewed.
頻出パターン集
── バージョン・リリース ── This was introduced in v2.0. This feature was deprecated in v3.5. ── バグ報告・調査 ── The issue was caused by a race condition. The memory leak was traced back to the event listener. ── デプロイ・インフラ ── The service is deployed on AWS ECS. Secrets are managed by AWS Secrets Manager. ── コード説明 ── The response is cached for 5 minutes. Users are authenticated via OAuth2.
制限用法 vs 非制限用法(意味が大きく変わる!)
制限用法(カンマなし)— 先行詞を特定する
The tests that are failing are in the auth module. ↑ 失敗しているテスト【のみ】がauthモジュールにある (失敗していないテストは他にも存在する)
非制限用法(カンマあり)— 補足情報を追加
The tests, which are failing, are in the auth module. ↑ テストは(そのすべてが)失敗している (全テストが失敗していることを示唆)

非制限用法(カンマあり)には that は使えない。which を使う。
This module, that was added last sprint, has a bug.
This module, which was added last sprint, has a bug.

関係詞の使い分け
関係詞先行詞
whoThe developer who wrote this left the company.
whichモノ・概念(非制限用法推奨)The function returns null, which is unexpected.
that人・モノ(制限用法)The PR that was merged yesterday introduced a regression.
where場所・状況This is the part where the bottleneck occurs.
when時間・条件There are cases when the function returns early.
等位接続詞(FANBOYS)
接続詞意味エンジニア例
and付加・並列I fixed the bug and updated the tests.
but逆接・対比The code works, but it's not efficient.
or選択・代替We can use Redis or Memcached for caching.
so結果・だからThe tests are failing, so we need to investigate.
nor否定の並列This function neither reads nor writes to the DB.
従属接続詞(論理構造を作る)
接続詞意味
if条件If the test passes, we can merge.
because理由(強調)We chose PostgreSQL because it supports JSONB.
since理由(既知・自明)Since this is a breaking change, bump the major version.
while同時進行・対比While React handles the UI, Node.js manages the server.
although逆接Although the code is verbose, it's easy to understand.
even though強調の逆接Even though the PR is large, the changes are straightforward.
主語・be動詞の省略テクニック
── when/if + S + be → 省略形 ── While running, avoid writing to the database. (= While it is running) When deployed, the service will restart automatically. (= When it is deployed) If not configured, the default value is used. (= If it is not configured) Once merged, this will be included in the next release.

シニアエンジニアはコードレビューで仮定法を多用する。「This is wrong」と言える立場でも 「I would suggest...」を使う文化がある。直接表現を柔らかく丁寧にする技術。

丁寧さのグラデーション
直接的(命令的)仮定法を使った丁寧な表現
Change this to a constant.It would be better if we used a constant here.
Add tests.I would suggest adding tests for this.
Split this PR.Could we consider splitting this PR?
Check this edge case.Would you mind checking this edge case?
This is wrong.This might not work as expected.
建設的な提案フレーズ
── 丁寧な提案 ── It would be better if we used a constant here instead of a magic number. I would suggest splitting this PR into two smaller ones. Could we consider using dependency injection here? What if we cached the results here? ── 建設的なコードレビューコメント(問題点+理由+代替案) ── Without null checks here, this could throw an error in production if the API returns an unexpected response. Would you mind adding a guard clause?
控えめな依頼
表現ニュアンス
Would you mind...?最も丁寧な依頼Would you mind rebasing on the latest main?
Could you...?標準的な依頼Could you take a look at this?
It would be great if...感謝と依頼を組み合わせIt would be great if you could add unit tests.
記号の正式名称と読み方
記号正式名称口頭での読み方エンジニア例
@at sign"at"contact@example.com → "contact at example dot com"
#hash / pound"hash" / "number"#42 → "issue number 42"
*asterisk / star"asterisk" / "star"rm -rf * → "asterisk" / "wildcard"
|pipe / vertical bar"pipe"cat file | grep → "pipe grep"
~tilde"tilde"~/Documents → "tilde slash Documents"
`backtick / grave"backtick"コードブロックの区切り
=>fat arrow"fat arrow"アロー関数
::double colon"double colon"std::vector
コロン vs セミコロン
コロン(:)— 「つまり」「以下の通り」
There are three steps: install, configure, and run. feat: add user authentication Error: Connection refused
セミコロン(;)— 密接に関連する2文を繋ぐ
The build failed; we need to investigate. This works; however, it's not scalable.

it's と its を混同しない!
it's = it is(縮約形)/ its = itの所有格
Check it's behavior. → ✅ Check its behavior.