Dang Gia Lam
再生医療・研究 × マルチテナントSaaS × AWS

実験管理・機器連携・凍結在庫・監査ログを統合した細胞培養管理SaaS

約90画面・110データモデル規模のマルチテナント型Web SaaS。バックエンドとAWSインフラを一貫して担当し、モデルクラス約120のデータモデルを破綻なく設計。

CASE STUDY / 実績 Back to WORKS
対象業種
医療・研究(再生医療・細胞培養ラボ向け)
開発区分
マルチテナント型Web SaaSの設計・開発(約90画面・110データモデル)/ 体制4名・メンバー
期間
2022年8月〜2023年7月(約11ヶ月)
担当範囲
データモデル設計 / バックエンド設計・実装 / マルチテナント基盤設計 / 機器連携 / AWS構築 / CI/CD / 運用改善(要件整理はPM、画面設計・フロントエンド実装は専任メンバーが担当)
使用技術
Python / Django / MySQL / AWS / Apache
連携サービス
ラボ測定装置(CSV・画像取り込み) / Amazon SES / Step Functions / API Gateway
OVERVIEW

プロジェクト概要

再生医療・細胞培養の研究ラボ向けに、実験管理・ラボ機器連携・データ可視化・凍結在庫管理・監査ログを1つに統合したマルチテナント型Web SaaSです。約90画面・110データモデル(テンプレート88、モデルクラス約120、URLルート200近く、Python約3万4千行)の大規模案件で、体制4名(PM1名/デザイナー1名/フロントエンド1名/私)のうち、バックエンドとAWSインフラを一貫して担当しました。業務ドメイン/ラボ機器データ取り込み2本/監査ログの計4アプリ構成で、モデル・ビュー・業務ロジックを設計・実装しています。

再生医療ラボの実験・データ・在庫を、SaaSで一元管理。
PROBLEM

元の業務課題

  • 実験メモ・継代メモ・解析メモが紙やローカルPCに分散し、探すのに時間がかかっていた
  • 凍結在庫が手書き表やExcelで管理され、手作業・転記による入力ミスや抜け漏れが発生していた
  • 履歴や根拠の追跡が困難で、監査対応に大きな工数がかかっていた
  • 情報共有が属人化し、研究の再現性と品質にばらつきが出ていた
  • 顧客ごとにデータを完全に分離しなければ、複数ラボへ提供できなかった
BEFORE

Beforeの業務フロー

  1. 01実験内容・継代履歴を紙やメモアプリへ記録
  2. 02測定装置が出力したCSV・画像を各自のPCへ保存
  3. 03凍結バイアルの在庫を手書き表やExcelで管理
  4. 04必要なデータを探すために、複数の保管場所を横断して確認
  5. 05監査や報告のたびに、履歴と根拠を手作業で再構成
分散していたラボ業務データを、トレーサビリティのある基盤へ。
SOLUTION

提案した解決方法

ARCHITECTURE

システム構成イメージ

顧客ごとに専用DB・専用ストレージを持つマルチテナント構成。
FEATURES

主な機能

実験・培養ロット管理

細胞培養ロット、継代履歴、実験ジョブ、プロトコル、撮像データ、解析結果を一元管理。

ラボ機器データ連携

測定装置が出力するCSV・画像を共有ストレージ経由で取り込み、細胞数・コンフルエンシー・成長トレンドとして整理。

凍結在庫の階層管理

保管庫→ボックス→ロット→バイアルの4階層をモデル化し、バイアル1本単位で所在・入出庫・位置変更を追跡。

QR照合による入出庫

入出庫をチケット単位で予約し、QR照合のうえ未入庫→凍結中→出庫済みのステータスを2段階で確定。

監査ログ専用アプリ

変更前後を丸ごと記録するスナップショット形式の履歴テーブル群を持つ専用アプリ。CSVエクスポートにも対応。

マルチテナント基盤

顧客ごとに専用MySQLデータベースと専用ストレージ領域を分離し、アプリ側でDBを明示指定する方式で実装。

帳票・エクスポート

python-docxによるWordレポート自動生成、CSV/ZIPエクスポート、日本語・英語の2言語対応。

AWS構築・CI/CD

EC2+Apache構成を構築し、CodeBuild/CodeDeployで開発・レビュー・本番の3環境へデプロイ。

培養ロットの成長・画像・実験履歴を、ひとつの画面で可視化。
凍結バイアル1本単位まで、所在と来歴をトレース。
OUTCOMES

導入効果

  • 約120のモデルクラスにわたるデータモデルを、マルチテナント・凍結在庫の階層構造・監査ログの3要素が絡み合う形で破綻なく設計
  • 顧客ごとに専用MySQLデータベースを持つマルチテナントを、専用ライブラリを使わずアプリ側でDBを明示指定する方式で実装
  • 保管庫→ボックス→ロット→バイアルの4階層を、チケット予約とQR照合による2段階設計で不整合なく運用できる状態に
  • CodeBuild/CodeDeployで開発・レビュー・本番の3環境へデプロイするパイプラインを構築
  • ※画像認識・解析アルゴリズム自体は実装範囲外です(倍加時間は装置側/利用者が算出した値を入力する運用)。稼働後の定量的なビジネス効果は把握していないため記載していません
STACK

技術構成

Python 3.9 / Django 3.2 LTS顧客ごとの専用DBによるマルチテナント約120モデルクラスのデータモデル設計4階層の凍結在庫モデル(保管庫→ボックス→ロット→バイアル)スナップショット形式の監査ログラボ機器データ(CSV・画像)の取り込みAWS(EC2 / RDS / S3)/ Amazon Linux 2CodeBuild / CodeDeploy(3環境デプロイ)Amazon SES / Step Functions / API Gatewaypython-docx 0.8(Word帳票生成)Apache 2.4 / MySQL 8.0(RDS)日本語・英語の2言語対応
RELATED

関連プロジェクト

LET’S CONNECT

生成AIを、
動く業務につなぎませんか。

AI適用可否の検証から、バックエンド開発、AWSインフラ構築、リリース後の運用改善までご相談いただけます。