ネーミングについて
本記事は、2023年12月07日に公開済みの記事を移行して再掲載したものです。
はじめに
フェズアドベントカレンダー7日目の記事となります。
データ利活用グループの藤井といいます。11月に入社したばかりの新人です。
前職はWEB系のエンジニアとしてガリガリとコードを書いていましたが、フェズではデータエンジニアとしてビッグデータと向き合っています。
担当分野が変わっても意識していることといえば、ネーミング(名付け)です。
ネーミングといえばプログラミングでのファンクションやクラスの命名がよく出てきますが、データベースにおいてもテーブルやカラムにつける名前は重要です。
今日はそんなネーミングについての話です。
ネーミングの重要性
ネーミングはシステムの保守性に直結します。
適切な名前をつければコードの可読性が上がるだけでなく、バグの発見や回避にも役立ちます。
また、正しくネーミングされていると構造自体も自然と適した状態になります。
変なネーミングになるということは構成から見直したほうがいいかもしれません。
たとえば、ものすごく長い名前になってしまう場合、もっとスコープを切って細かい粒度で扱うべきかもしれません。
たとえば、妙に曖昧な名前になってしまう場合、そのクラスやテーブルの役割自体がはっきりしていないのかもしれません。
ネーミングは正しく行うことで自ずとシステムの最適なカタチを示してくれるのです。
では、正しいネーミングとはどのようなものなのでしょうか?
正しいネーミング
文章にしてみる
ネーミングと言われたら、日本語の単語を英語に翻訳するのを意識すると思いますが、単語より文章を作るイメージをした方がよりよくなります。
Userテーブルに管理者かどうかを格納するカラムを考えるとき、"admin_flg"とするより、"is_admin"とした方がより文章っぽくなります。
- User.admin_flg
- User.is_admin
これは一例ですし、かならず文章にしなければならないというわけではありませんが、これを意識することでよりネーミングの選択肢が広がります。
Pythonで考えるとよりわかりやすいかもしれません。
if login_user.is_admin:
# 管理者の場合の処理
else:
# そうでない場合の処理
といった具合に「もし、ログインユーザが管理者の場合〜〜、そうでないなら〜〜」のようにそのまま英文になります。
似た意味の単語を使い分ける
当然ですが正しく英語の単語をつけるのも大事です。
"変更"を意味する単語だけでも update, modify, change, edit, alter ... などたくさんあります。
(ちなみに僕はあまり英語が得意でないので、ネーミングする際には毎回単語を検索しています・・・)
個人的に面白いなと感じたのは"誕生日"と"生年月日"の違いです。
誕生日といえば birthday、生年月日は birthdate となるようです。
この day と date の違いはざっくりいうと
- 繰り返し訪れる日は day
- 一度だけの日は date
ということらしいです。
こんな感じで似た単語について調べていると結構楽しい発見があるものです。
チームで開発する場合において
ここまでネーミングについて書いてきましたが、前提として「既存の流儀に従う」というのも重要だと思っています。
たとえば論理削除を表す単語がdelete_flgで統一されているなら、そこで我を出して"is_deleted"という単語を使うと逆に複雑になり可読性が下がります。
システム開発はチームで行うものなので、自分が書くコードだけきちんとしても良いシステムはできません。むしろそれはシステムに不和を生みます。
プロジェクトにJOINした際に、既存のシステムに違和感を感じたならそれは人に相談して、原因を知り、それの対策まで提案できるのが優れたエンジニアだと思っていますし、僕もそんなエンジニアになりたいと思っています。
チームコミュニケーションとはそういった「問題の共有」→「原因の解明」→「対策の提案」といったやり取りを指すのだと感じています。
まとめ
正しいネーミングが必ずしも優れたシステムを作るわけではなく、正しいネーミングを提案してそれを議論できる環境が優れたシステムを作ると思います。
独りよがりのネーミングではなく、チームみんなで協力してより良いシステムを作っていく。
フェズはそんな風土が既にできています。
ネーミングに限らず、様々な疑問・問題をSlackなどのツールを使って共有・展開して多くの人がそれについて考えを巡らしています。
改善の対象はシステムだけでなく組織・体制についても日々Slack上で「こうしたらどうだろうか?」「あれはよかったね」など議論がされています。
自分も、システムも、組織も、日々成長していく…
あなたもフェズに来てより良いものを作っていきましょう!
ここまでお読みくださり、ありがとうございました。
おすすめの本
ネーミングのおすすめツール
フェズは、「情報と商品と売場を科学し、リテール産業の新たな常識をつくる。」をミッションに掲げ、リテールメディア事業・リテールDX事業を展開しています。 fez-inc.jp/recruit
Discussion