序
英語でそれっぽいエラーメッセージを書けるようになりたいので、OSSのソースを読むとき、ついでにいろんなエラーメッセージやコメントを収集しています。自分が書くときの参考用に、今までに集めたものから記事を書いてみることにしました。
-
英語が得意じゃないにしても、それなりに伝わるようにメッセージを書けるようになりたいという意図です
-
引用してるものと、私がそれっぽく書いたものが混在しています
- 誤りを見つけたら、ぜひ編集リクエストをください。よろしくお願いします
-
主にJavaScript/TypeScript製のフレームワークやライブラリから拾っています
以下には「よく見る」、「あまり見ない」、「多い」など頻度についての言及がありますが、あくまでも私の主観に基づく記述であり、統計など具体的な根拠に基づくものではありません。
エラーが発生しました系
- エラーが発生したことを示したい時に
- 具体的な対応策を追加で提示することが望ましいでしょう
- 異常系が雑に作られてるとトラブル対応で死にます
- 具体的な対応策を追加で提示することが望ましいでしょう
An error has occurred ~
An error has occurred while resizing images.
画像のリサイズ中にエラーが発生しました。
-
while 〜やwhen 〜でエラーが起こったタイミングなどを示すことが多いです
失敗しました系
- 処理が失敗した時に
- これも「なぜ失敗したのか」を提示しないとユーザーが途方に暮れます
Failed to ~
Failed to deliver email. Expected at least 1 recipient.
メール配信に失敗しました。少なくとも一人の受信者が必要です。1
-
toもccもbccもない状態でメールを送ろうとしたときに出るエラーメッセージの例です - すごくよく見る形だとおもいますが、地味に主語が省略(省略せずに書くなら、
The program failed~とかThe application faild〜)されています- この辺の匙加減が、いざ書く段になると難しかったりします
○○することができません系
- ユーザーの指示や操作に対して、失敗したことを示す時に
- 「やれと言われたけどダメでした」のニュアンスがある(と思う)
unable to ~
Unable to find a valid app.
有効なアプリを見つけることができません。2
-
unable toは、(必ずしも物理的・論理的にではなく、それをするための能力が欠如していたり、状況が適していないために)できない、というニュアンス
cannot / can't
value cannot be made reactive
値をリアクティブにすることはできません。3
-
cannotやcan'tは、物理的・論理的にできない、というニュアンス -
You cannot make value reactiveのvalueを主語に持ってきて受動態(cannot be made)にした形- 主語を省略するパターンで、
Cannot make value reactiveと書いてもいいと思うのですが、英語話者は微妙な気持ち悪さなどを感じるのでしょうか…
- 主語を省略するパターンで、
Cannot read properties of undefined
undefinedのプロパティを読み取ることはできません。
- JavaScripterがその生涯で星の数4ほど見るエラー
○○がありません系
- 処理に必要なものが無いときに
~ does not exist
Component ${componentClassName} does not exist.
コンポーネント${componentClassName}は存在しません。5
Missing A in B
Missing parameter '${name}' in route ${id}
ルート${id}にパラメータ${name}がありません。7
-
Missing A in Bは単に無いというよりは、ある集合(B)の中にあるはずもの(A)が欠如している、というニュアンス
no ~ are/is passed
If no arguments are passed, the default password rule configuration will be returned.
もし引数が渡されない場合、デフォルトのパスワード設定ルールが返されます。8
-
no ~ are passedで~が渡されませんでしたとなるパターン- 必要な引数が一つの時は
no argument is passedと単数系になったりします
- 必要な引数が一つの時は
A has no B
Route for [{$uri}] has no action.
[{$uri}]のルートにはアクションがありません9
- これも
has no ~で~を持っていませんという表現- この
no ~の形の否定文は短くて済むからか、よく見ます -
does notを使って書き表すと、Route for uri does not have any actions.という感じでしょうか- 確かに、ちょっと冗長な気がします
- この
○○でなければいけません系
-
mustやshouldをよく見ます-
mustは日常会話だと意味が強すぎてあまり使われないようですが、エラーメッセージやドキュメントだとhave toよりよく見ます-
mustは主観的な義務、have toは客観的に見てそうしなければならない、という状況による必要性のニュアンス10があるので、ライブラリ視点でhave toはあまりそぐわないのかもしれません
-
- 日本語でも、特に口語で
~してあげないといけないと言うことがありますが、英語でも受動態でmust be ~やshould be 〜の形をよく見ます
-
must
Adjacent JSX elements must be wrapped in an enclosing tag.
隣接する複数のJSX要素は、単一の囲みタグで囲まれなければなりません。
- Reactやり始めたころよく見たやつ
should
Each child in a list should have a unique "key" prop.
リスト内の各子要素は、固有のkey propを持つべきです。
- Reactやり始めて結構経つけど、いまだにたまに見るやつ
-
should haveはshould have + 過去分詞というイディオムがあるのですが、これはshould + 動詞の原形で、単に持つ(have)べき(should) でよいです
-
○○してください系
- 命令形か、それに
pleaseを付けた形をよく見ます
please ~
Invalid URI: please reconfigure with a valid SMTP connection URI
無効なURI:有効なSMTP接続URIを再設定してください。 11
-
invalid、validもエラーメッセージでよく見る単語ですね
命令形
# exa is unmaintained, use the fork eza instead.
exaはメンテナンスされていません。代わりにフォークのezaを使ってください 12
- ezaを使いましょう
-
useのところをyou should useとすれば(選択の余地はあるものの)強い推奨、you must useとすればほとんど選択の余地のない義務、という表現になります
○○が必要です系
- 必要なものが無いときに
Expected ~
Failed to deliver email. Expected at least 1 recipient.
メール配信に失敗しました。少なくとも一人の受信者が必要です。1
- 再登場
- 「必要」としてしまうと、ちょっと意訳っぽいでしょうか
- 関連して、
Unexpected ~(予期しない〜)もよく見る表現です
~ is/are required
At least one recipient is required.
少なくとも一人の受信者が必要です
-
requiredはプログラマー的には必須のニュアンスが強い(気がする)
非文系
- メモリの制約などの要因により完全な文章ではないもの
- 受動態のbe動詞を省略した形が多い
- 歴史的遺物という気もしますが、端的に表せるので現代でも結構見ます
- エラーメッセージ書く上で参考になるかは微妙なところ
File not found
ファイルが見つかりません(でした)
-
The file could not be foundが省略された形13 -
The file was not foundでもよさそう- いずれにしても、ファイルが見つからなかったということはわかります
- 非文系に限りませんが、エラーメッセージは割と時制を無視して書かれることが多いと感じます
- 日本語に訳すと過去形っぽくしたくなるのが変なのかもしれませんが
Access denied.
アクセスが拒否されました
-
Access is denied.のbe動詞が省略された形-
403 forbiddenと一緒に帰ってくることがある
-
終わりに
元々は自分のリファレンス用にと思って書き始めましたが、読み物として楽しんでもらえたら幸いです。今後もちょくちょく書き足すかもしれません。
ちなみに、エラーメッセージを収集するときは、Webフレームワーク(Express.jsとかLaravelとか)のリポジトリを参照すると、いろんな種類のメッセージに出会えるのでおすすめです。throwで検索するといろいろ出てきます。
-
英文法上は不自然 ↩