
お客さまごとの Excel を、ブラウザで使える顧客・契約管理システムに。
保険代理店様の「お客さま 1 人につき Excel ファイルが 1 つ」という管理を、ブラウザだけで使える顧客・契約管理システム(CRM)に置き換えました。顧客・ご家族・生命保険/損害保険の契約・提案・意向把握の記録・対応履歴を一か所にまとめ、お客さまにお渡しする契約一覧などの帳票は、画面からそのまま A4 で印刷できます。
一般的なレンタルサーバーで動く素の PHP と MySQL で作り、フレームワークや外部サービスに依存しません。スマートフォン・タブレット・パソコンのどれでも同じ操作で使え、二段階認証と監査ログで個人情報を守ります。

解決した課題
- お客さま 1 人につき Excel ファイルが 1 つ。見直しのたびにシートを複製し、どれが最新か分からない → お客さまごとの画面に、契約・提案・履歴がすべて並ぶ。更新は履歴として残る
- 契約一覧のお渡し資料を手で整形 → 画面から 1 クリックで A4 の帳票を印刷。複数ページでも毎ページに見出しが付く
- 複数人で同じファイルを触れない → 複数のスタッフが同時に使える。誰がいつ何を変えたかが監査ログに残る
- ドル建て契約の円換算を電卓で → 為替レートを記録しておけば、帳票で円換算を表示
- 意向把握の記録を紙で保管 → テンプレートに沿って画面で記録。途中保存・自動保存つき。記録は改変できない形で保存
主な機能
顧客・ご家族
- 個人・法人のお客さまと、そのご家族(人物)の管理。かなは入力時に自動で付き、ひらがな・カタカナどちらで検索しても見つかります
- 郵便番号を 7 桁入れると住所が自動で入ります(日本郵便の郵便番号データを取り込んで、外部サービスに問い合わせずに動作)


契約
- 生命保険は、保険会社・商品・契約者・被保険者・受取人(最大 3 名。法人・遺族・被保険者・別のお客さまも指定可)・保険料・払込期間・解約返戻金・保障内容(死亡保険金・入院日額・手術給付金など)を 1 画面で入力
- 通貨は円・米ドル・豪ドルに対応し、お客さまごとに通貨別の合計を自動計算
- 損害保険は契約の一覧と満期管理。契約の並び替えはボタン操作で
- すべての変更は履歴に残り、元の値をいつでも確認できます

提案と帳票(4 種)
- 現在の契約と提案プランを並べて比較する画面と、お客さまにお渡しする比較帳票
- 帳票は契約一覧(生保)・損保契約一覧・提案比較・意向把握の 4 種。すべてブラウザの印刷で A4 に収まるよう設計し、専用ソフトは不要です
- 契約一覧は帳票に出す項目を管理画面で選べます。複数ページでも、ページごとにタイトル帯と列見出しが繰り返されます


意向把握
- 生保・損保それぞれのテンプレートで質問と選択肢を管理し、面談の記録を残します
- 途中保存と、入力が止まると自動で下書きを保存する自動保存に対応。長文はパソコン標準の音声入力が使えることを画面で案内します
- 確定した記録は変更できません。記録時点の質問文を一緒に保存するので、後からテンプレートを変えても記録は変わりません


取り込み・書き出し、管理
- 既存の Excel(お客さまごとの契約リスト)をそのまま取り込み、プレビューで確認してから確定。顧客一覧・意向把握一覧は CSV で書き出せます
- アカウント管理(管理者・スタッフの 2 役割)、保険会社や保障種別などのマスタ管理、監査ログ(ログイン・閲覧・更新の記録)

スマートフォンでも同じ操作
メニューはドロワーに、契約一覧は左の操作列を固定して表の中だけ横にスクロール。意向把握の記録もスマートフォンの 1 画面で行えます。

技術スタック
層 | 採用技術 | 選んだ理由 |
|---|---|---|
サーバー | PHP 8(フレームワーク不使用)/ Apache | 一般的な共有レンタルサーバーでそのまま動く。将来の移設・保守で特定の技術者に依存しない |
データベース | MySQL 8 / MariaDB 互換 | 共有サーバーの標準構成。マイグレーションと検証 SQL で構造を管理 |
画面 | 素の HTML・CSS・JavaScript(ビルド工程なし・CDN 不使用) | 読み込みが軽く、外部サービス停止の影響を受けない。CSP で外部スクリプトを遮断 |
帳票 | ブラウザ印刷で A4 出力 | PDF ライブラリ不要。画面と印刷の見た目を一致させる |
Excel | PhpSpreadsheet | お客さまの既存ファイルをそのまま取り込む |
メール | PHPMailer(SMTP) | 二段階認証のワンタイムコード・仮パスワードの通知 |
暗号 | libsodium | SMTP パスワードの暗号化保存・ワンタイムコードの保護 |
外部通信 | 公開されている為替 CSV のみ。郵便番号は内蔵データ | お客さまの情報を外部へ送らない |
規模の目安(2026 年 10 月時点): 画面 37・機能 77・テーブル 39・コード約 4 万行。
セキュリティ
- 認証: パスワード + メールのワンタイムコード(二段階認証)。信頼した端末は一定期間スキップ可。連続失敗でロック
- 個人情報: 全出力のエスケープ、プリペアドステートメントのみ、オブジェクト単位の認可(他のお客さまのデータへの横アクセスを拒否)
- 通信とブラウザ: CSP、クリックジャッキング防止、Referrer 制御、Secure / HttpOnly クッキー
- 記録: ログイン・閲覧・更新を監査ログに保存。ログには氏名などの個人情報を書かず、ID と操作だけを残します
- 削除: データは論理削除。誤操作で消えません
- 第三者視点の点検: OWASP Top 10 に沿った脅威モデリング(55 項目)と、リリース前の全画面点検(2 回・計 1,770 判定)を実施
デザインの意図
- 業務で毎日使う画面として、派手さより読みやすさを優先。文字は Noto Sans JP、数字は桁区切りで右寄せ、余白と罫線で行を追いやすく
- 色はロゴから。基調色はロゴのティールグリーン、オレンジは「ここを見て」という強調だけに限定。文字と背景のコントラストはすべて WCAG AA(4.5:1 以上)を実測で確認
- 迷わない骨格。サイドバー + 上部バーの SaaS 型。今どこにいるかが常に分かり、主要な操作は右上の 1 つのボタンに集約
- スマホでも同じ操作。375px・768px・1440px の 3 幅で設計。スマホではメニューがドロワーになり、ボタンは指で押せる 44px 以上
- 大きな表を壊さない。契約一覧は左の列を固定して横にスクロール。合計行は常に見える位置に
- 画面と印刷を一致させる。帳票は画面で見たものがそのまま A4 に出る。複数ページでも毎ページに見出し
- キーボードと読み上げ。主要な操作はキーボードだけで完結し、フォーカスの位置が見える。スクリーンリーダー向けのラベルを全入力欄に
- 入力を助ける。かな・住所・ご本人の人物は自動で入り、対で読む欄(日付の範囲など)は横に並べ、エラーは欄のすぐそばに
- JavaScript は最小限。画面の描き替えはサーバーに任せ、JS は確認ダイアログや入力補助だけ。JS が無効でも使えます
品質管理と開発の進め方
- 設計書が唯一の正。要件・画面・DB・判断の記録をすべて文書化し、実装は文書に従う。矛盾があれば実装で勝手に決めず、記録して確認する
- 設計 → 実装 → UI 確認 → 独立監査の 4 段階。監査は実装と別の担当が、使い捨ての検証環境で「修正前に再現し、修正後に解消する」ことを確かめる
- リリースは承認制。デプロイ手順はスクリプト化し、DB の変更は全文を提示して承認を得てから適用。適用後は検証 SQL で結果を確かめ、失敗時は進まない
- 本番データは触らない。開発・検証はすべてテストデータ。本番の確認は件数と構造だけを読む専用ツールで行う
- 全画面点検を 2 回。公開前と機能追加後に、全機能・全画面を到達性・CSRF・XSS・SQL インジェクション・認可・表示崩れ・アクセシビリティの観点で点検
導入のかたち
- 共有レンタルサーバー 1 契約で稼働。専用サーバーやクラウドの契約は不要
- ユーザー数に上限なし(管理者・スタッフの 2 役割)
- お客さまの既存 Excel から移行。初期データの取り込みを支援
- 郵便番号データは年 1 回の更新。為替レートはボタン 1 つで取得、手入力も可
- 機能追加は設計書に沿って段階的に。運用を止めずに反映できる手順を標準化し、50 を超える開発フェーズを積み重ねてきました
保険代理店に限らず、「お客さまごとに Excel で管理している」「お渡しする資料を毎回手で整形している」業務に同じ構造で対応できます。システム開発のサービスもあわせてご覧ください。
※ 画面はすべてテストデータ(架空の氏名・連絡先・証券番号)と撮影用の仮ロゴで撮影したものです。