契約書や計画書の電子署名 Part.2 ~ バックエンドの環境構築

昨日の電子契約の記事に引き続き、今回はバックエンドの構築について考えてみたいと思います。今回もAIに聞いてみることにしました。


AIに投げかけるプロンプト

バックエンドの環境構築のイメージも教えてください。


電子契約アプリの核となるのは、「契約データの確実な管理」「サインの真正性の確保」「法的有効性の担保」です。これを実現するためのシンプルかつセキュアなバックエンド構成イメージを、処理フローと合わせて作成しました。

今回は、フロントエンドでPlaceholderとして使用したFirebase/Google Cloud Platform (GCP)をベースにしたサーバーレス構成を想定して説明します。この構成は、初期開発コストと運用負荷を抑えやすいというメリットがあります。

ファイルとして、バックエンド構成の概要と主要な処理フローをまとめたドキュメントを作成します。


電子契約システム バックエンド構成イメージ

この文書は、フロントエンド(利用者向けアプリ)で取得した電子サインや契約情報を安全かつ法的に有効な形で処理・保管するためのバックエンドの構成イメージと処理フローを示します。

電子契約の処理を実現するために、主に以下の4つの主要なコンポーネントでシステムを構成します。

コンポーネント役割想定技術 (例)
フロントエンド利用者/事業所職員が操作する画面。契約書表示、サイン入力。HTML/JavaScript/React/Angular (タブレット・スマホ対応)
認証・データ管理層ユーザー認証と契約データ(メタ情報)の管理。Firestore (NoSQL DB) / Firebase Authentication
API/ビジネスロジック層契約締結処理の実行、PDF生成、セキュリティ処理。Cloud Functions (サーバーレス) / Cloud Run
ファイル保管層締結済みPDF、手書きサイン画像、監査証跡の保管。Cloud Storage (オブジェクトストレージ)
セキュリティ・法務層契約書の真正性(改ざんされていないこと)を保証。タイムスタンプサービスAPI、電子署名ライブラリ

利用者/事業所職員がフロントエンドで「契約を締結する」ボタンを押した際に、バックエンドで実行される主要な手順は以下の通りです。

Step 1: データの収集と検証(フロントエンド → API)

  1. データ送信: フロントエンドアプリから、以下の情報がAPIに送信されます。
    • 利用者情報(氏名、住所、生年月日など)
    • 契約情報(契約開始日、サービス内容など)
    • 手書きサイン画像データ(Canvasから取得したBase64形式など)
    • 利用者による契約内容への同意ログ(チェックボックスの状態)
    • 監査証跡データ(署名を行った端末のIPアドレス、日時など)
  2. 入力検証: API(Cloud Functions)がデータを受け取り、必須項目が全て揃っているか、データ形式が正しいかを検証します。

Step 2: PDF契約書の生成

  1. 契約書テンプレートのロード: サーバー側で、アップロードされたWord契約書を基に作成したPDFテンプレートをロードします。
  2. データ埋め込み: 検証済みの利用者情報、契約情報、手書きサイン画像をPDFの適切な位置(氏名欄、住所欄、署名欄など)に埋め込みます。
  3. PDFファイル生成: 契約書データとサインが統合された最終的な契約書PDFファイルを生成します。

Step 3: セキュリティ処理(法的有効性の担保)

  1. 電子署名: 事業者としての電子署名をPDFに付与します(例: 組織の電子証明書を使用)。
  2. タイムスタンプ付与: 契約書PDFファイルに対して、信頼できる第三者機関(TSA)によるタイムスタンプを付与します。これにより、その時刻にその契約書が存在し、それ以降改ざんされていないことを証明できます。

Step 4: データの保管と記録

  1. ファイル保管: タイムスタンプと電子署名が付与された最終的な契約書PDFを、アクセス制限のされたCloud Storageに安全に保管します。
  2. メタデータ記録: 契約ID、締結日時、契約ステータス、保管場所(Storageのパス)などのメタ情報Firestoreに記録します。
  3. 監査証跡記録: 契約締結に至るまでの詳細な操作ログ(誰が、いつ、どこからアクセスしたか)をデータベースまたは専用のログサービスに記録します。

Step 5: 完了通知(API → フロントエンド)

  1. 処理完了: APIが処理の成功をフロントエンドに通知します。
  2. 利用者への交付: 契約締結完了のメッセージと共に、利用者に電子契約書PDFをダウンロードまたはメールで送信できるリンクを提供します。
  • 電子署名法: タイムスタンプと電子署名の仕組みにより、契約書の非改ざん性と本人の意思表示を証明できるようにします。
  • 電子帳簿保存法 (電帳法): 契約書PDFの保管において、検索要件や真実性の確保(訂正・削除履歴の確保など)といった電帳法の要件を満たす必要があります。
  • アクセス制御: データベースとストレージへのアクセスは、最小権限の原則に基づき、必要なAPI経由でのみ許可されるように厳格に制御します。
  • 個人情報保護: 利用者情報や機密性の高いサイン画像データは、暗号化して保管します。

この構成イメージを参考に、開発を進める際の技術選定やフェーズ分けを検討してみてください。特にセキュリティと法務層の部分は、自前で構築するよりも、既存の電子契約サービスのAPIを利用する方が、法的要件を確実に満たしやすくなります。

このバックエンド構成について、特定の技術やコンポーネント(例:Firebase Functionsでのコード例など)について詳しく知りたい点があれば、お気軽にご質問ください!

コメント