英語は「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人称単数
I
me
my
2人称
you
you
your
3人称中性
it
it
its ※ it'sと混同注意
1人称複数
we
us
our
❌ 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の短縮形
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 from
強
This implementation is far from optimal.
fail to
中強
The test fails to cover the edge case.
anything but
強
This code is anything but readable.
注意:hardly / rarely はすでに否定の意味を含むので not と一緒に使わない。
❌ We don't rarely deploy on Fridays. → ✅ We rarely deploy on Fridays.
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
前置詞
質問
例
for
How long? どのくらいの間
for 2 hours / for a sprint
during
Within what period? どの期間の中で
during the deployment / during the sprint
in
When in the future? いつ
in 3 days / in Q4
by
Deadline? いつまでに
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)
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.
関係詞の使い分け
関係詞
先行詞
例
who
人
The 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 productionif 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 authenticationError: 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.