名前、電話番号、メールアドレス、郵便番号等の最適なmaxlengthはいくつか調べてみた

設計MySQL, PostgreSQL, SQLite3, SQLServer, 設計

はじめに

文字列を格納するカラムを作成するには、最大長を決めなければなりません。
例えば、 「姓名の最大長を何文字に設定したら良いか?」 という問題は、よくエンジニアを悩ませていると思います。

この記事が回答の目安となるよう、よくあるカラム(下記)を何文字に設定するのが適切か調べてみました。

今回紹介する、よくあるカラム
- 姓名
- 法人名
- 商品名
- 住所
- 電話番号
- メールアドレス

なお、バイト数は UTF-8 で計算しています。

【姓名】 姓30文字 + 名30文字 (60バイト)

世界最長の名前を調べた1ところ 771文字 だったので、 あらゆる名前をカバーすることは諦めましょう
世界中の姓名を保有するSNSである Facebook の登録フォームに名前を打ち込む続けたところ、

  • 漢字 姓4文字 + 名12文字
  • アルファベット 姓30文字 + 名30文字

までという結果が出た2ので、文字数・バイト数の多いアルファベットを採用とし、合計60文字までとします。

【法人名】137文字(411バイト)

最も長い会社名は

「株式会社あなたの幸せが私の幸せ。世の為人の為人類幸福繋がり創造即ち我らの使命なり今まさに変革の時ここに熱き魂と愛と情鉄の勇気と利他の精神を持つ者が結集せり日々感謝喜び笑顔繋がりを確かな一歩とし地球の永続を約束する公益の志溢れる我らの足跡に歴史の花が咲くいざゆかん浪漫輝く航海へ」

でした (2018年確認)3

ちなみに、ビジネスSNSの Wantedly では、50文字 を最大長としていた4ので、パフォーマンス重視の設計ならばこちらでもいいかもしれません。

【商品名】135文字(405バイト)

軽く調べただけで 720文字 の商品名に遭遇しました5ので、世界最大級のオークションサイト eBay の最大長を見ると、 主題80文字+副題55文字 でした6。キリが無いのでこちらの 合計135文字 にしておきましょう。

【住所】 161文字 (483バイト)

世界最長の住所を調べてましたが、下記理由により最長を調査するのは難しいと判断しました。

  • 国外の長い住所については、短縮名がついていた7ため、長い住所の中で短縮名のついていないものを探す必要があるため、調査が困難
  • 下記の例のように、住所+特定の所属名称 の組み合わせを考慮する必要があるため、調査が困難
東京都千代田区永田町2丁目13番10号プルデンシャルタワー東京青山・青木・狛法律事務所べーカー&マッケンジー外国法事務弁護士事務所(外国法共同事業)内 

よって、220の国と地域で貨物を取り扱う世界最大手の物流会社である FeDex の入力フォームから最適な最大長を導きました。

FeDexの住所入力フォームの合計値は、161文字 でした8のでこれを採用とします。 
住所1(35文字)+ 住所2(63文字) + 都市名 (63文字) = 161文字

【電話番号】 21文字 (21バイト)

国際電気通信連合(ITU)の電話番号計画で勧告されているようで、15文字と定められているようです。

国際電話を許容し、かつハイフンを記載する場合は 21文字 になります
国番号(3文字)+ 国番号以下(15文字)+ ハイフン(3文字)

【メールアドレス】 254文字(254バイト)

エンジニアなら知っている人も多いと思いますが、IETFの定めたRFC2821により、254文字 です9

最後に

今回は、以上で終わりとします。
本気で調べると、それぞれ平均20分くらいかかるため、良かったらこの記事を参考にして、時短してください。

追加修正ログ

  • コメントを受け、メールアドレスのlengthを修正しました
  • 編集リクエストを受け、レイアウトを修正しました
  • 法人名のカウントミスを修正しました (127文字 -> 137文字)
  • 住所の最大長を再調査しました(世界最長の調査を放棄)
  • 住所の最大長を再調査しました(FeDexの入力フォームの最大長を採用)

引用

  1. TOP 5 PEOPLE WITH THE LONGEST NAMES
  2. Facebook.com
  3. 日本一長い会社名は世界一長い会社名
  4. Wantedly.com
  5. 計約720文字。長すぎ商品名「ほんとそれ」度を調査
  6. ebay.com
  7. List of long place names
  8. FeDex
  9. RFC2821

設計MySQL, PostgreSQL, SQLite3, SQLServer, 設計

Posted by kyogom