新刊ピックアップ

「英語のいろは」を習得すると昨日わからなかったことがどんどん分かる・つながる

この記事を読むのに必要な時間:およそ 2 分

意味が伝わりにくいコード

日本の開発現場では,なぞなぞの様な意味の伝わりにくいコードに遭遇することがしばしばあります。日本人どうしであれば理解できますが,近年増えつつある外国人スタッフのいる職場や,自分のOSS(オープンソース・ソフトウェア)を広めたい場合などは問題視すべきでしょう。伝わりにくいコードには主に以下の問題があります。

  1. 単語の選定の間違い
  2. 態の間違い
  3. 日本語の影響

1.単語の選定の間違い

クラス名に使う単語の選定をする時は,辞書の直訳を避けましょう。例えば,広告主が打つさまざまな広告形式を1つの案件として取り扱う「広告案件」を表すクラス名に「AdsIssue」というクラス名が使われていたことがありました。英和辞書で「案件」を検索すると真っ先に「Issue」が引っかかります。しかし,その名前は英訳すると「広告による問題提起」という意味にとられやすく,適当ではありません。他の単語候補をみると,さまざまな広告形式を論理的にまとめる束は「Campaign」と呼ぶのがよさそうです。

このように,日本語の単語と英語の単語はカバーする意味の範囲,使われる文脈が異なりますので,辞書に掲載された例文をよく読んで単語を選定するとよいでしょう。

issueと案件

issueと案件

2.態の間違い

メソッド名を命名する際は,メソッドはクラスを主語としたときに,主語・述語の関係になるようにします。

【問題】

ここに期間限定の広告キャンペーンがあったとします。それらに以下のような情報を持たせたい時,あなたはどのような変数名を付けますか?

  • クラス名:キャンペーン
    • ❶データベースにデータを初めて保存した日時
    • ❷キャンペーンの開始日時
    • ❸キャンペーンの終了日時
    • ❹表示用タイトル
【解答】
  • Campaign
    • ❶created_at
    • ❷starts_at
    • ❸ends_at
    • ❹displaying_place

よく,created_atが受動態なのだからstarts_at,ends_atも受動態にすべきという指摘をコードレビューで見かけますが,それは間違いです。start,endはこの場合自動詞ですので,Campaignを主語とすると受動態になるのは(終わらせられるのは)変です。キャンペーンは予定した日時に始まり,予定した日時に終わるので現在形で表します。英語ではタイムテーブルで表すような決められた時刻に始まる,終わるものは三単現で表します。

❹は「displayed_placeではないのか?」という指摘をコードレビューで見受けることがありますが,displayの隠れた主語はplaceではなく,誰ともさだまらないので完了形では表せません。これは動名詞の形容詞的活用法といって,目的をあらわす「表示をするための場所」という意味になります。

よく知られた例:
  • living room(リビングルーム)⁠生活をするための部屋
  • sleeping car(寝台車)⁠寝るための車両

3.日本語の影響

日本語の影響にはこのようなものがあります。

複数の単語を一語
  • supermarket ⇒ super
  • staple food(主食)⁠ staple
熟語の直訳による単語の連続

日本語と違い,英語の場合単語を羅列すると単語動詞の関係を補完しづらくなるので形容詞や前置詞で補いましょう。

  • キャンペーン.友達紹介コンバージョン数 =>
    Campaign.friend_invitation_conversion ⇒ Campaign.registered_users_by_invitation
カタカナ語

カタカナはいろいろな由来もとの国の単語が混在しているのでそのままアルファベットにするのはやめましょう。アンケートはフランス語です。

  • UserEnquete ⇒ UserSurvey

本書のそのほかの特徴

近年英語のOSSの普及や,外国人エンジニアの登用,海外進出を背景に英語を使用するニーズが増えてまいりました。しかしながら,現状としてはまだまだ多くのエンジニアが読み書きはできるけれど話せない,書けるけれど意味が伝わりにくい,または時間がかかってしまうというような状態にあります。

私が書いた問題解決力とコーディング力を鍛える英語のいろはは,以下のような,今までの英語専門の基礎本や技術者向けの英語本の,どこにも収まらなかった,特に応用に関する問題の解決を手助けをする内容をカバーしています。明日からの開発の時間がきっと楽しく変わるはずです。

  • 文法の勉強は意味があるの?
  • どうやって勉強するのが効率が良いの?
  • 子供の第一言語学習と大人の第二言語学習は何が違うの?
  • 開発中,ライブラリが吐くエラーメッセージが読めず,エラーにどう対応したら良いかわからないで試行錯誤しているうちに時間が経ってしまう
  • 端的で自己説明的なクラス・変数名やテーブル・カラム名の命名ができるようになりたい
  • 自分のOSSを広めたい,海外の人とも共同作業がしたい

著者プロフィール

鈴木達矢(すずきたつや)

英国のスタートアップ企業,クックパッド株式会社を経て,現在はNikkei FT Learningにて,Excedoという英語の語学研修アプリの作成に携わっている。サーバーサイドデベロッパー兼,モバイルアプリデベロッパー。