海外製オープンソースCRM「VtigerCRM」を導入した際、日本のユーザーが真っ先に違和感を覚えるのが「氏名の並び順(名・姓)」です。
欧米仕様のまま運用すると、以下のような問題が発生します。
- 一覧画面(ListView)で「太郎 山田」と表示され、視認性が悪く探しにくい
- 関連リストやポップアップ選択画面でも「名 姓」の順で並んでしまう
- 帳票(PDF見積書・請求書)やメールテンプレートの宛名差し込みで順番が狂う
- 営業やサポートの現場から「使いにくい」と定着の妨げになる
本記事では、VtigerCRMにおける「姓名順序問題」が発生する構造的な原因と、システム全体で自然な「姓 名」順へ修正・対応するための具体的な手法を分かりやすく解説します。
1. なぜ「名・姓」になってしまうのか?(構造的な背景)
VtigerCRMのデータベースおよびプログラム内部では、氏名を以下の2つのフィールドで個別管理しています。
firstname(名)lastname(姓 / 必須項目)
英語圏では [firstname] [lastname] の順で結合して表示するのが標準仕様となっているため、コアの表示ロジックやテンプレート(Smarty等)でそのまま連結処理が走ると、画面上で「名 姓」になってしまいます。
これを「日本式(lastname + firstname)」に切り替えるには、画面表示(Smarty/UI)側 と データ取得(PHPモデル/エンティティ)側 の双方で対策を講じる必要があります。
2. 姓名の順序を修正する3つのアプローチ
環境や運用方針(コア改修の可否、予算、バージョンアップ方針)に応じて、以下の3通りの解決策があります。
アプローチ①:表示用テンプレート・Smartyレイアウトの調整(UI改善)
一覧画面や詳細画面の描画テンプレート(.tpl ファイル)を調整し、画面上の配置順を「姓 ➡ 名」へ入れ替えます。
- 対象ファイルの例:
layouts/v7/modules/Vtiger/uitypes/Name.tplや各モジュールの詳細・編集テンプレート - ポイント:
入力フォームの配置順(編集画面)をレイアウトエディタまたはテンプレート上で「姓(Last Name)」を左・上に、「名(First Name)」を右・下に再配置します。
アプローチ②:エンティティ表示名生成ロジックの調整(PHP側)
一覧画面のリンクテキスト、関連リスト、ルックアップ検索のポップアップなどで表示される複合名称(label / entityname)の生成処理をカスタマイズします。
- 該当箇所:
modules/Contacts/Contacts.phpやmodules/Leads/Leads.php内のgetEntityName関連ロジック - 変更イメージ:
標準でfirstname, lastnameの順に結合されているフィールド定義をlastname, firstnameへ反転させます。 - メリット:
一覧のリンク表示や他モジュールからの参照フィールド(取引先担当者名など)が一括で「山田 太郎」形式になります。
アプローチ③:拡張モジュール/Fix Packの導入(推奨・最も安全)
ソースコードを直接改修(コアハック)すると、将来のバージョンアップ時に上書きされて元に戻ったり、不具合の原因になったりします。
最も安全で工数がかからないのは、日本の商習慣向けに調整された専用の拡張モジュール(JP Fix Pack 等)や言語・UI拡張プラグインを導入することです。
- メリット:
- コアファイルを一切汚さずにモジュール管理から一括適用可能
- 一覧、詳細、ポップアップ、関連リスト、メールテンプレートまでシステム全体を一括で「姓 名」順に統一
- アップデート時の先祖返りリスクを極小化できる
3. 実務で注意すべき関連箇所のチェックリスト
姓名順を修正する際は、主要画面だけでなく以下の機能も正しく「姓 名」になっているか必ず検証を行ってください。
- 一覧画面(ListView)の表示・並び替え(ソート)
- 「姓」の昇順・降順で意図通りソートされるか
- ルックアップ(関連選択)ポップアップ
- 取引先や案件から担当者を選ぶ際のポップアップ一覧の表記
- グローバル検索・クイック検索
- 姓名をスペース区切りで検索した際にヒットするか
- メールテンプレート・ワークフロー自動送信
$contact-lastname$$contact-firstname$様 の差し込み順序
- PDF帳票(見積書・請求書など)の宛名・担当者欄
4. まとめ
- VtigerCRMが「名・姓」になってしまうのは、海外標準の
[firstname] [lastname]結合ロジックが組み込まれているため - 根本的に直すには、「入力・表示レイアウト(UI)」 と 「エンティティ名称生成(PHPロジック)」 の両面で順序を逆転させる必要がある
- 保守性や将来のアップデートを考慮すると、コア直接改修を避け、拡張モジュールやパッケージによる一括適用がベストプラクティス
姓名表記の違和感を解消することは、CRMの現場定着率を高めるための第一歩です。運用開始前にしっかり日本仕様へ最適化しておきましょう。

