今日の英語表現 8/30 · ステップ: PRの説明。 例文はすべてこの記事のために作成したものです。実際の リポジトリのPRをそのまま持ってきたものではなく、ファイルや関数名は例です。
目次
一目でわかる一覧
| 表現 | No functional change (intended). / NFC |
| 意味 | 動作は変わりません(そのように意図しています)。 |
| 使う場面 | リファクタリングや整理のPR説明、コミットメッセージの1行目 |
| 丁寧さ | 該当なし。事実を伝えるためのタグです |
1. 意味とニュアンス
ここでの functional は「機能の、動作の」という意味です。「No functional change」は「コードの見た目は変わったが、プログラムの動作はそのまま」という意味になります。関数名の変更、ファイルの分割、重複コードの統合、コメントやフォーマットの整理を行うPRがこれに該当します。
LLVMの用語集(Lexicon)では、NFCを「No functional change」の略として説明し、コミットメッセージが純粋なリファクタリングや整理であることを示すために1行目に付けると記載されています。LLVMの開発者ポリシーでも、フォーマットや空白のみを変更するコミットでは動作が変わらないことを明確にするよう求めており、通常は NFC と書くことが多いと説明されています。他のプロジェクトでもこの略語を理解する人は多いですが、初めて目にするリポジトリでは省略せずに書く方が安全です。
この表現がレビューアに与えるシグナルは明確です。「動作の違いを探す必要はありません。見た目だけを確認してください。」 そのため、何百行にも及ぶリファクタリングであってもレビューの負担が軽減されます。逆に、NFCと書いておきながら実際に動作が変わってしまった場合は、信頼を大きく損ねることになります。そのため、確信がないときは intended(意図した)を付け加えて「No functional change intended」と書きます。「そのように意図したが、万が一違っていれば教えてほしい」という意味になります。
2. 例文
状況 1: リファクタリングPRの説明
Move the snapshot helpers from
controller.gointosnapshot.go. No functional change.
状況 2: 動作の変更と整理を分ける場合
This PR has two commits. The first one is a pure refactor (no functional change). The second one changes the default timeout from 30s to 60s.
レビューアは最初のコミットをさっと確認し、2つ目のコミットに集中することができます。動作の変更と整理を1つのコミットに混ぜないのが良い習慣です。
状況 3: レビューへの返信
Good question. The only difference is the variable name, so this should be a no-op. No functional change intended.
no-op は no operation の略で、「何の効果もない変更」を意味する開発者向けの表現です。
3. 似た表現との違い
- No behavior change. ほぼ同じ意味です。ユーザー視点での動作を強調したいときに使います。
- Pure refactor / Cleanup only. 何を行ったかを表します。No functional change はその結果を表します。両方を併用すると最も明確になります。
- No user-facing change. 内部の動作は変わっている可能性がありますが、ユーザーに見える変化はないという意味です。対象の範囲が異なるため、混同して使わないようにします。KubernetesのPRテンプレートには、Does this PR introduce a user-facing change? という項目が別途用意されています。
4. 韓国人がよく犯すミス
- There is no function change. function が名詞の「関数」として読まれ、「関数は変わっていない」と誤解される可能性があります。
- 修正した文: No functional change.
- This PR doesn't change anything. 何も変更しないPRは存在しません。何がそのままなのかを正確に伝える必要があります。
- 修正した文: This PR doesn't change any behavior; it only renames the helpers.
- NFC のみを単独で、初めて見るリポジトリで使用する。略語を知らないレビューアも存在します。
- 修正した文: Refactor only, no functional change.
5. 一行練習
次の韓国語の文をPRの説明文に書き換えてください。
テストヘルパーを別のパッケージに移動しました。動作が変わらないようにしました。
模範解答
Move the test helpers into a separate package. No functional change intended.
PRの説明の冒頭は命令形(Move、Add、Fix)で書かれることが多いです。「変わらないようにした」という意図を表すため intended を付けます。
一言アドバイス。 レビューアがどこを見なくてよいかを伝えることも、親切心のひとつです。
参考
- LLVM Lexicon, 「NFC」: https://llvm.org/docs/Lexicon.html
- LLVM Developer Policy(コミットメッセージ): https://llvm.org/docs/DeveloperPolicy.html
- Kubernetes PR テンプレート: https://github.com/kubernetes/kubernetes/blob/master/.github/PULL_REQUEST_TEMPLATE.md