コードに頻出する語形変化が難しい英単語: register, success, fail, data, statusなど

コードによく使われる英単語だが、母語話者でないと語形変化がやや難しいかもしれず、注意して単語を選ばないと変な英語になるかもしれない単語について紹介する。

## 登録

* 登録する register 【動詞】 
    * 「商品を登録する」 `registerItem()`
* 登録した registered 【形容詞】 【動詞過去分詞】
    * 登録された商品 `registeredItems`
    * 「商品が登録された」 `new ItemRegstered()`
    * 「登録済みか？」 `if (item.isRegistered()) ...`
* 登録 registering 【名詞】
    * 「商品登録状況は承認済みか」 `item.registeringState.isApproved`
* 登録 registration 【名詞】
    * 商品登録サービス `class ItemRegisterationService`
* 登録係(記録する側) registrar 【名詞】
    * 商品登録サービス `itemRegistrar.registerItem(item)`
* 登録者(記録される側) registerer 【名詞】
* 登録媒体 registry 【名詞】
    * 設定レジストリ `configRegistry.get(...)`

registはよく見かけるけど和製英語です

## 成功と失敗

* 成功する / 失敗する succeed / fail 【動詞】
    * テストケースを失敗にする `testCase.fail()`
* 成功 / 失敗 success / failure 【名詞】
    * 結果は成功か？ `if (result.isSuccess()) ...`
    * 失敗理由 `class FailureReason`
    * 失敗回数 `failureTimes`
    * ちなみに、【名詞】failは【名詞】passの対義語で「試験不合格」の意味になる
* 成功した / 失敗した succeeded / failed 【形容詞】【動詞過去分詞】
    * リクエストは成功したか？ `request.isSucceeded()`
    * 失敗に終わった処理 `class FailedOperation`
* 成功の / 失敗の successful / unsuccessful, failed 【形容詞】
    * 成功したログイン回数 `successfulLoginCount`
    * 失敗した支払い `failedPayment`
* 成功的に / 失敗で successfully / unsuccessfully 【副詞】
    * 無事に送信できたか？ `message.isSuccessfullySent()`
    * [failureに対応する汎用的な副詞はなく、動詞によって異なる副詞を使うほうが自然らしい](https://hinative.com/ja/questions/4618080)

この非対称性がコーディングを厄介にすることがあります

```
動詞 → 名詞 → 形容詞 → 副詞
succeed → success → successful → successfully
fail → failure → failed → unsuccessfully
```

## データ

* データ(data)はすでに複数系なので、data<strong>s</strong>とできない。 ちなみに単数形はdatum。
    * :cry: `getDatas(): Array<Data> { ...`
    * :cry: `$datas = [$data, $data, $data]`
* 代わりに、dataListやdataSetを使うといい。
    * `$dataList = [$data, $data, $data]`

## 条件

* 条件(単数) criterion
* 条件(複数) criteria
* つまり `criteria = new Array(criterion, criterion, criterion)`
* dataの複数形がdata<strong>s</strong>でないように、criteria<strong>s</strong>という複数形はない。
* 単数形のほうが複数形よりも長いので間違えやすい
* condition/conditionsに逃げるのも手

## 状態

* 状態(status)は不可算名詞なのでstatus<strong>es</strong>と書くと変という意見と、許容できるという意見がある。
    * :thinking: `statuses = [status, status, status]`
    * [nouns - What is the plural form of "status"? - English Language & Usage Stack Exchange](https://english.stackexchange.com/questions/877/what-is-the-plural-form-of-status)
* 一方、stateは可算名詞なのでstatesがOK
    * `states = [state, state, state]`

## 送信者と受信者

* 送信する(send)は不規則変化動詞
    * send / sending / sent / sent
* 受信する(receive)は規則変化動詞だが、現在進行系は注意
    * receive / receiv<strong>i</strong>ng / received / received
* 送信者は_send_ + _er_ => sender(センダー)
* 受信者は recipient (レシピエント) と語彙化した名詞がある
    * _receive_ + _er_ の receiver もおかしくないが、メールの受信者はrecipientがよく使われる

```php
$emailSender = '...';
$emailRecipient = '...';
```

## 投げる

* 「例外を投げる」のthrowは不規則変化動詞
    * throw(基本形)
    * throwing(現在分詞)
    * threw(過去形)
    * thrown(過去分詞)
    * throws(三人称単数現在)

## キャンセル・中止

* キャンセルする(cancel)の過去分詞形はアメリカ英語とそれ以外の英語でスペルが異なる。
    * アメリカ英語: canceled
    * それ以外の英語: cancelled (エルを重ねる)
    * 参考:「 [「Canceled」と「cancelled」、どちらのスペルが正しいですか？ - eigopedia](https://eigopedia.com/%E5%8B%95%E8%A9%9E/%E7%8F%BE%E5%9C%A8%E9%80%B2%E8%A1%8C%E5%BD%A2/%E3%80%8Ccancelled%E3%80%8D%E3%81%A8%E3%80%8Ccanceled%E3%80%8D%E3%80%81%E3%81%A9%E3%81%A1%E3%82%89%E3%81%AE%E3%82%B9%E3%83%9A%E3%83%AB%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B)
    * GitHubで検索したところ、どちらの用例も同じくらいある。
    * せめてプロジェクトの中ではどちらを使うか統一したいところ。