Upgrade to Pro — share decks privately, control downloads, hide ads and more …

項目名と変数名のジレンマ

Avatar for 釘野雅史 釘野雅史
May 23, 2024
88

 項目名と変数名のジレンマ

Avatar for 釘野雅史

釘野雅史

May 23, 2024
Tweet

Transcript

  1. 2 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 自己紹介 • 名前

    ◦ 釘野 雅史 / Masafumi Kugino • 業務 ◦ 会員のサイト利用率向上 ▪ 記念日登録推進 ▪ くじ引き機能の実装 ▪ 新規メールバッチの実装 • おすすめ🍰 生チョコケーキ by L'AURA(ローラ) 生チョコをそのままケーキにしました! という圧倒的なチョコ感が良かったです。
  2. 12 © Cake.jp Co.Ltd. All Right Reserved.|Confidential つまり ケーキ屋さんの店舗番号 =

    orderテーブルのuserId = companyテーブルのid となっています。 そして、ここまでは「前提」です。 私が入社する前から、サイトは運用されており、 今お話した内容は、すでに実装されている状況でした。 前提
  3. 13 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 不満のポイント システムのコードでは、カラム名に合わせて $userIdという変数が利用されていました。

    しかし、仕様書や管理画面など実態に即した項目名は、 ケーキ屋さんの店舗番号です。 この項目名と変数名の不一致に、開発をしていく上での不満を感じました。 どうすれば、この不満が改善されるか、当時の私は3つほど案を考えました。 問題編
  4. 14 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 【案1】 データベースのテーブル名、カラム名を実態に即したものに変更する。 不採用の理由

    データベースの構成を変更すると影響範囲が広すぎるため、改修のための工数がかかりすぎて、実 施が現実的ではない。 解決編
  5. 15 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 【案2】 項目名をカラム名に即したものに変更する。 不採用の理由

    「ケーキ屋さんの店舗番号」を「使用者番号」と言い換えても、そもそも、実態はお店の番号であり、項 目名をカラム名に合わせても意味がない。 解決編
  6. 16 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 【案3】 コーディングする際に変数名を項目名に即した名前にして、そこに値を代入する。 例:$shopId

    = $orderData[‘userId’]; 採用した理由 これならば、大規模な改修の必要がなく、実態が分かりやすい変数名になります。 そして、それ以降のコードの読み解きが楽になることを期待しました。 解決編
  7. 18 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 結果として何が起こったかというと $userId に加えて

    $shopId $storeId $companyId など、コードの中に、同じ番号に似たような変数名が乱立してしまいました。 新しい混乱を招いた
  8. 19 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 問題点1 以下のようなカラム名と変数名のことなるコードがシステム全体に分散していた。 例1:$shopId

    = $orderData[‘userId’]; 例2:$companyId = $Order->getUserId(); 対策 コードの一箇所にデータベースのカラム名を変更するという知識を集積させた。 名前の変更用クラスを作った。 また、それ用のフォルダやネームスペースで区切った。 反省と改善
  9. 20 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 問題点2 開発フローの中で、動作レビューのみで、コードレビューの文化がなかった。 当時は、開発者の人数も少なく、入れ替わりも多かった。

    各々が任意で声を掛け合いながら、コーディングをしていた。 対策 Githubのプルリクエスト機能の利用し、コードレビューを必須にした。 他の開発者のチェックなしに、本番用コードへ修正を追加できなくした。 反省と改善
  10. 22 © Cake.jp Co.Ltd. All Right Reserved.|Confidential • 今回の課題 ◦

    『カラム名や変数名が、項目名や実態と一致していない』 • 影響 ◦ チームへの参入者への教育コストが増える。 ◦ コードを読む際に、言葉を変換する認知負荷が増える。 ▪ コードレビューが面倒なものになってくる。 • 教訓 ◦ コーディングにおいて命名は大事。 ◦ ただし既存の命名に不満があっても、良かれと勢いで変えない。 ▪ 事前に課題意識の共有や知識の集積をする。 - まとめ -