業務システム
2024.07.12
病院検索・予約システム向けSFA開発事例|Amazon CognitoとQuickSight連携で営業力強化
概要
弊社では、主に病院検索・予約システムを展開する事業会社様向けに、Amazon Cognitoを活用した認証の一元管理と、Amazon QuickSightを用いたデータ分析・可視化を自動で連携するSales Force Automation(SFA)システムを新たに開発いたしました。本システムは、ユーザー管理の効率化を図るとともに、営業活動に必要なデータをリアルタイムで可視化し、意思決定をスピードアップします。さらに、クロスアカウント構成を活用して複数のAWSアカウントを横断するシングルサインオン(SSO)を実現しており、セキュリティ面と運用面の両立を図っています。
このように、認証基盤と可視化基盤を密接に連携させることで、営業担当者の業務効率を大幅に向上させるだけでなく、病院検索・予約システムを運営される事業会社様が収集したデータの活用度を高めることが可能になります。本記事では、本システムの開発背景や特徴、システム全体の構成、開発フロー、そして具体的なメリットについて、順を追ってご紹介いたします。

- 概要
- システム開発の背景と目的
- セキュアで拡張性の高い認証基盤の構築
- ダウンタイムゼロでのユーザー移行
- QuickSightとの自動連携による運用効率化
- クロスアカウント構成による柔軟な運用
- システムの特徴
- 1. Amazon Cognitoによる認証管理
- ユーザー登録・認証フローの標準化
- 既存ユーザー情報の移行
- 柔軟な認可ロジックへの対応
- 2. Amazon QuickSightによるデータ視覚化
- リアルタイム分析と自動更新
- ユーザーグループ別の表示切り替え
- 3. クロスアカウントでのシングルサインオン(SSO)
- Cognitoが動作するAWSアカウントとQuickSightが動作するAWSアカウントが異なる場合
- 複数の外部システムとの連携
- システム構成
- シーケンス図
- シーケンスのポイント
- ユーザー認証(Cognito User Pool)
- クロスアカウントの認可(Identity Pool + STS)
- QuickSightダッシュボード表示
- データ更新と自動反映
- 開発の流れ
- 1. Amazon Cognitoの設定
- ユーザープールの作成
- アプリクライアントの設定
- カスタムアトリビュートの活用
- Cognito Identity Poolの設定
- 2. SFAシステムの構築
- LaravelでのCognito認証
- エンティティ設計とマイグレーション
- 通知機能の拡張
- 3. QuickSightとの連携
- データソースの作成
- ダッシュボードの構築
- ユーザーグループ設定
- 4. 自動連携の設定
- JWTトークンの利用
- QuickSightユーザー管理
- ダッシュボード表示
- 5. ユーザー移行
- 既存ユーザーデータのdump取得
- CSVファイルを作成して一括インポート
- パスワードリセットメールの送信
- 導入後の成果
- 1. セキュアなユーザー管理
- 2. リアルタイムなデータ分析
- 3. 運用効率の向上
- 4. ユーザビリティの向上
- まとめと今後の展望
- 認証の一元管理とシングルサインオンの実装
- 可視化によるデータドリブンな営業支援
- ダウンタイムなしのユーザー移行
システム開発の背景と目的
近年、医療関連サービスでもデジタルトランスフォーメーション(DX)の加速が求められており、オンラインでの予約や問い合わせ対応が急速に普及しています。その結果、営業活動においても多様なチャネルからのユーザー情報管理や複雑化するデータ分析のニーズが高まりました。しかし、複数のシステムを並行して利用していると、ユーザー認証の仕組みが分散し、同時にデータも分散してしまいがちです。
そこで弊社は、このような課題を抱えるクライアント様向けに、1つの認証基盤でユーザー管理を一元化し、取得した営業データをリアルタイムかつ包括的に可視化できるプラットフォームが必要であると判断しました。具体的には、以下のポイントを重視しています。
セキュアで拡張性の高い認証基盤の構築
多様化するユーザー属性やアクセス経路に対応するうえで、柔軟なユーザー管理・権限設定が求められます。また、セキュリティ要件として多要素認証(MFA)やパスワードポリシーにも容易に対応できることが必須です。
ダウンタイムゼロでのユーザー移行
既存のユーザー情報を切り替える際、業務停止を最小限に抑えつつ、既存システムからスムーズに移行できる仕組みが必要です。
QuickSightとの自動連携による運用効率化
従来、営業担当者がレポートツールとSFAシステムに別々にログインしていたため、データ分析の導線が複雑化していました。そこで、SFAにログインするだけでQuickSightのダッシュボードを利用できる仕組みを実現し、運用の利便性とデータ活用度を同時に高めることを目指しました。
クロスアカウント構成による柔軟な運用
CognitoとQuickSightを別々のAWSアカウントで運用する際に、クロスアカウントでシングルサインオンを行うためのロール設定やAWS STS(Security Token Service)の利用など、セキュリティと運用効率を両立するための仕組みを構築します。
システムの特徴

1. Amazon Cognitoによる認証管理
本システムでは、Amazon Cognito User Poolを中心としたユーザー管理基盤を構築し、以下の要件を満たすように設計しました。
ユーザー登録・認証フローの標準化
Eメールアドレスや電話番号を用いた認証だけでなく、多要素認証(MFA)やパスワードポリシーなどの高度なセキュリティ要件にも対応しています。
既存ユーザー情報の移行
既存システムで管理していたユーザー情報をダウンタイムなしでCognito User Poolに移行できるよう、CSVファイル経由の一括インポートやパスワードリセットメールの自動送信といった運用支援機能を実装しました。
柔軟な認可ロジックへの対応
Cognitoのユーザープール属性(Attribute)を用いることで、ユーザーの属性に応じた権限付与が可能です。また、カスタムアトリビュートを活用すれば、医療機関や担当領域といった追加情報の付与も容易になります。
2. Amazon QuickSightによるデータ視覚化
Amazon QuickSightと連携することで、営業活動に必要な各種KPIをダッシュボード化し、常に最新のデータに基づいた分析が可能です。
リアルタイム分析と自動更新
Amazon RDS上のデータをQuickSightデータセットとして設定し、自動更新スケジュールを構成することで、ダッシュボードを常に最新の状態に保ちます。営業担当者は、SFAシステムにログインするだけで、最新の販売状況や成約率、各種メトリクスを一目で確認できます。
ユーザーグループ別の表示切り替え
QuickSightのユーザーグループ機能や、Cognito User Poolとの連携を行うことで、担当者ごとに異なるダッシュボードを表示させたり、閲覧権限を制御することが可能です。
3. クロスアカウントでのシングルサインオン(SSO)
本システムでは、Cognito Identity PoolとAWS STS(Security Token Service)を組み合わせて、クロスアカウント環境におけるシングルサインオンを実現しています。たとえば、次のようなケースに対応可能です。
Cognitoが動作するAWSアカウントとQuickSightが動作するAWSアカウントが異なる場合
Identity Pool側でフェデレーティッドアイデンティティを設定し、QuickSightのアカウント側で*役割の信頼ポリシー(AssumeRole)*を構成することで、一時的に権限を委譲します。
複数の外部システムとの連携
SFAシステムで取得したアクセス権限情報をSTSに渡すことで、アカウントをまたぐ操作にもシームレスに対応。将来的に別のBIツールを組み合わせたい場合や、サードパーティ製のSaaSと連動したい場合でもスケーラブルに拡張できます。

システム構成
AWSアカウントAにCognito(User Pool / Identity Pool)とSFAシステム(Laravel)およびRDSが存在し、AWSアカウントBにQuickSightが配置されています。実際のシステムではVPCやサブネット構成、Security Group等も考慮しますが、ここではノード間の関連性に焦点を当てています。

ユーザーがSFAシステムにアクセスしようとすると、Cognito User Poolによる認証が実行されます。
認証成功後、JWTトークンがユーザー側に返され、それをSFAシステムへ送付します。
SFAシステムはCognito Identity Poolを利用し、AWS STSを介してQuickSightのあるアカウントに対して一時的な権限を取得します。
その結果、ユーザーは追加の認証操作なしに、QuickSightのダッシュボードにアクセスできるようになります。
シーケンス図
認証からQuickSightのダッシュボードを表示するまでの処理フローを、シーケンス図で示します。

シーケンスのポイント
ユーザー認証(Cognito User Pool)
ユーザーが入力したID/パスワードをCognitoUPが検証します。認証に成功すると、*JWTトークン(IDトークン、アクセストークントークンなど)*がSFAに返却されます。
クロスアカウントの認可(Identity Pool + STS)
Cognito Identity PoolのGetIdやGetOpenIdTokenAPIを呼び出し、フェデレーティッドアイデンティティを取得します。 その後、STSのAssumeRoleWithWebIdentityを実行し、クロスアカウントロールを引き受ける形で一時的な認証情報を取得します。これにより、別AWSアカウントに存在するQuickSightに対してアクセス可能となります。
QuickSightダッシュボード表示
SFAシステムがQuickSight APIをコールし、ダッシュボードを埋め込むためのURL等を取得。 QuickSight上にユーザーが存在しない場合は、Cognitoユーザー情報に基づいて自動的にユーザー作成されるケースもあります。
最終的にユーザーがQuickSightの埋め込みダッシュボードを閲覧可能になり、リアルタイムデータを参照できます。
データ更新と自動反映
営業活動で発生した顧客情報や案件データは、随時RDSに書き込まれます。QuickSightのデータセットもスケジュール設定による自動更新を行うため、最新の営業状況がダッシュボードへ反映されます。
開発の流れ

1. Amazon Cognitoの設定
まずはCognito User Poolを新規作成し、ユーザー管理の基本機能を構築しました。具体的には以下のステップを踏んでいます。
ユーザープールの作成
ユーザープール名や属性(Email、Phone Numberなど)を設定し、ユーザー登録時に必要となる認証フローを定義しました。
パスワードポリシー(長さや複雑度など)やMFAの有効化・無効化もここで設定できます。
アプリクライアントの設定
SFAシステムからのクライアントID・シークレットを発行し、JWTトークンを受け取るためのリダイレクトURLを登録しました。
OAuthフローを利用する場合には、暗黙的フローやコードフローなど、用途に合わせた方式を選択できます。
カスタムアトリビュートの活用
医療機関専用の属性や組織階層、担当エリアなどをカスタム属性として追加し、Cognitoを単なる認証基盤としてではなく、最小限の顧客管理データベースとしても利用できるようにしました。
Cognito Identity Poolの設定
クロスアカウントでQuickSightを利用する際、Cognito Identity Poolを設定し、連携したユーザーがAWS STS経由で別アカウントのリソースにアクセスできるようにロールを設定しました。
2. SFAシステムの構築
SFAシステムはLaravel 10を用いてバックエンドを実装し、データベースにはMySQL(Amazon RDSで運用)を採用しています。フロントエンドには、Laravelの初期設定パッケージであるBreezeとTailwindCSSを活用し、開発効率を高めました。
LaravelでのCognito認証
Laravelの認証ガードをカスタム実装し、Cognito User Pool発行のJWTトークンを検証するプロバイダを作成しました。
ユーザーごとのロールや権限管理も、JWTトークン内のクレーム(claims)と、Laravel側のポリシーを連動させる形で制御しています。
エンティティ設計とマイグレーション
医療機関を中心とした顧客情報や商談(リード、案件)テーブルなど、SFAに必要なデータ構造を設計し、Laravelのマイグレーションを使用してRDSにデプロイしました。
通知機能の拡張
簡易的な通知機能やメール送信機能を持たせることで、アカウント発行やパスワードリセットなど、ユーザーが受け取るメールテンプレートを管理しやすい仕組みを用意しています。
3. QuickSightとの連携
営業データを可視化するため、以下のような手順でQuickSightをセットアップしました。
データソースの作成
QuickSight上でAmazon RDS(MySQL)を接続先として登録し、必要なテーブルやビューをデータセットとして定義しました。
同時に、SFAシステムに合わせて頻度の高いクエリをビュー化するなど、パフォーマンスチューニングを行っています。
ダッシュボードの構築
営業パフォーマンスを把握するために、案件ステータス別の棒グラフや地域別の売上推移を示す折れ線グラフ、医療機関の属性ごとの案件数円グラフなど、複数のウィジェットを配置し、分析機能を強化しました。
ドリルダウン機能やフィルターの設定を行い、担当者が必要な情報を迅速に得られるよう配慮しています。
ユーザーグループ設定
SFAシステムと同じ階層構造(マネージャー、営業担当者など)をQuickSightのグループに反映し、表示できるダッシュボードやデータを制限しました。
Cognito側のグループ情報と同期させることで、SFAへの登録と同時にQuickSightの権限設定も自動化されるようにしています。
4. 自動連携の設定
SFAシステムとQuickSightの連携をシームレスに行うため、以下の仕組みを導入しました。
JWTトークンの利用
SFAシステムへログインした際に受け取ったJWTトークンをSFAが検証し、Cognito Identity Poolを通じてAWS STSを呼び出し、一時的なアクセス権限を得ます。
QuickSightユーザー管理
QuickSight APIを用いて、Cognitoのユーザー名とQuickSightユーザーを紐付ける仕組みを構築。これにより、SFAシステムにログインしたユーザーが、そのまま同一ユーザーとしてQuickSightに認可されます。
ダッシュボード表示
SFAシステムのメイン画面やメニューにQuickSightダッシュボードを埋め込み表示し、ユーザーは追加のログイン操作なくデータ分析を行えます。営業担当者にとっては単一のUIで業務が完結するため、学習コストも低減されます。
5. ユーザー移行
既存のユーザーをスムーズに本システムへ移行するため、以下の手順を踏みました。
既存ユーザーデータのdump取得
従来のシステムからユーザー情報をエクスポートし、重複や欠損値の確認などを実施。
CSVファイルを作成して一括インポート
Cognito User Poolに対応したCSV形式にデータを整形し、一括インポートツールにより移行を行いました。
パスワードリセットメールの送信
セキュリティ上、既存パスワードを移行できないため、ユーザーがCognitoを利用できるようにパスワードリセットメールを一斉送信しました。
ユーザーは受信メールから初回ログイン手続きを行い、Cognitoの認証フローに切り替わります。
導入後の成果
1. セキュアなユーザー管理
Amazon Cognitoを導入したことで、ユーザー認証が一元管理されるとともに、多要素認証やパスワードポリシーなどのセキュリティ対策が標準で利用可能になりました。これにより、不正アクセス防止や情報漏えいリスクの低減につながっています。
2. リアルタイムなデータ分析
QuickSightとの連携により、営業活動のパフォーマンスをリアルタイムで可視化できます。従来はエクセルでのレポート作成に時間を要していた業務が、ダッシュボードを見れば即座に状況を把握できる環境へと変わりました。その結果、営業戦略の立案や顧客対応の迅速化が可能となり、売上増加や顧客満足度向上に寄与しています。
3. 運用効率の向上
SFAシステムにログインしたユーザーをそのままQuickSightに認可する仕組みによって、別々のツールにログインする必要がなくなりました。加えて、クロスアカウントであってもSTSによるロールの切り替えが自動化されているため、運用管理者にとっても管理対象が減少し、システム管理コストの削減に繋がっています。
4. ユーザビリティの向上
認証情報やダッシュボードへのアクセスがひとつのフローに統合されたことで、ユーザーは煩雑な操作を意識せずに利用可能となりました。特に、医療機関のスタッフなどITリテラシーに差があるユーザー層を考慮する際、この使いやすさが非常に大きな価値をもたらしています。
まとめと今後の展望
本システムは、病院検索・予約システムを運営する事業会社様が抱える認証管理やデータ分析における課題を解決するため、Amazon Cognitoを中心としたセキュアな認証基盤と、Amazon QuickSightによる自動連携を融合させることで、営業活動全般の最適化を実現しました。
認証の一元管理とシングルサインオンの実装
ユーザープールとアイデンティティプールを組み合わせることで、クロスアカウント環境においてもシームレスなSSOが可能となり、セキュリティと利便性を両立しています。
可視化によるデータドリブンな営業支援
リアルタイムで更新されるダッシュボードと、ユーザー属性に応じた権限管理により、担当者が必要な指標を素早く把握できる仕組みが整いました。これによって、戦略策定のスピードアップや顧客対応の品質向上を実現しています。
ダウンタイムなしのユーザー移行
既存システムからのユーザー移行がスムーズに行われ、従来の業務を停止することなく新システムへの移行を完了できました。
今後は、さらなる拡張として、機械学習による需要予測や営業成約率の分析など、Cognitoによって集約されたユーザー情報とQuickSightの分析基盤を活用した高度なデータ活用にも取り組んでまいります。また、AWSが提供する新機能やサードパーティーのBIツールとも柔軟に連携し、クライアント様の多彩なニーズに応えるソリューションを拡充していく予定です。
弊社はこれからも、最新の技術動向を取り入れつつ、クライアント様のビジネス成長に寄与するシステムを開発・提供してまいります。病院検索・予約システムのさらなる進化や、医療現場のDX推進に取り組む皆様のお力になれるよう、引き続き技術力とサポート体制の強化を進めていく所存です。
以上が、本システムの概要と特徴、導入後の成果および今後の展望となります。今回の導入事例が、同様の課題を抱えている事業会社様や医療機関にとって、今後のシステム導入の一助となれば幸いです。もしご興味をお持ちいただけましたら、ぜひ弊社までお問い合わせください。きめ細やかなヒアリングを通じて、最適なソリューションをご提案いたします。