
症状・体調・生活状況に基づき、一般用医薬品をチャット形式で提案するWebアプリケーション。登録販売者の相談プロセスを再現した独自スコアリングアルゴリズムとLLMを併用したハイブリッド推奨システムを実装。ドラッグストアでの現場経験(高齢者とのコミュニケーション、言語の壁、人手不足)を踏まえ、2025年4月から開発開始。要件定義から設計・開発・運用まで一貫担当し、継続的に機能拡張と改善を実施。セキュリティ機能、多言語対応、アクセシビリティ対応、クラウドインフラ構築など、包括的なシステム開発を実現。
コミット数
426
開発期間
2025年4月 - 継続中(約10ヶ月)
使用技術数
10
コード行数
185,508
コントリビューター
1
Flaskフレームワークを使用したWebアプリケーションのコアロジック実装。医薬品推奨アルゴリズム、セキュリティ検証、データ処理を担当。
軽量で柔軟なWebアプリケーションフレームワーク。Blueprintによるモジュール分割、セッション管理、ルーティングを実装。
症状分析、カウンセリング応答、質問生成などに使用。ルールベース推奨と組み合わせたハイブリッドシステムを実現。
サーバーレスPostgreSQL。セッション管理、フィードバック保存、グローバル状態管理に使用。マルチインスタンス対応を実現。
日本語・英語・中国語・韓国語の4言語対応。翻訳速度を10-20倍高速化し、コストを約100倍削減。
フレームワーク不使用のモダンJavaScript。インタラクティブなUI、アニメーション、アクセシビリティ機能を実装。
アプリケーションのコンテナ化。GCP Cloud Runへのデプロイを容易にし、環境の一貫性を保証。
サーバーレスコンテナ実行環境。スケールゼロ対応、自動スケーリング、コスト最適化を実現。
症状入力と推奨結果の表示
4言語対応と音声読み上げ機能
効能・禁忌・ユーザー属性・症状パターンを統合評価するルールベース+LLMハイブリッド推奨システム。方言対応・漢方ロジック・成分重複チェック・効能特異性スコアリングを実装。単一症状時の解熱鎮痛薬・総合感冒薬の推奨精度向上を実現。
850以上の攻撃パターンを検出する多層防御システム。不適切・危険入力の検出とブロック、危機検出(緊急受診勧奨)、絶対ブロックリスト、セッション永続化によるUX維持を実装。医療相談用途にふさわしい入力フィルタリングと、ブロック時も案内メッセージを表示するユーザー体験の両立を実現。
日本語・英語・中国語・韓国語対応、方言変換(100件以上の方言表現を標準語に変換)、音声読み上げ、文字サイズ調整、WCAG AA準拠を意識したアクセシビリティ、季節イベントUI(正月・節分・バレンタイン・冬装飾)を実装。高齢者・外国人の利用を想定した多様なユーザーに対応するUI/UXを実現。
RenderからGCP Cloud Runへの移行、Cloud SQLからNeon PostgreSQL(サーバーレス)への移行を実施。Docker化、GitHub連携による自動デプロイを実現。約2日での移行、コスト最適化、スケールゼロ対応を達成。
「15歳以上以上」の重複表現修正、カロナールA・タイレノールAの効能データ修正、イブプロフェン200S/200SCの同一成分重複回避、HTMLタイポ検索手順のドキュメント化、医薬品名の半角統一機能を追加。
Render から GCP Cloud Run、Cloud SQL から Neon PostgreSQL へ移行。GitHub 連携による継続的デプロイ、Docker 化、約2日での移行完了。本番 URL は asia-northeast1(東京)で運用。
絶対ブロック・セキュリティブロック時もセッションに案内メッセージを永続化し、status: ok で返すよう変更。不適切ワードの拡張(パパ活、ナンパ・出会い系等)、ブロック時は元入力を表示するよう修正。
app.py を約89行にスリム化。ルートは main/admin/api/feedback に分離。rule_based_recommendation・medicine_logic・counseling_response・chat_handler をモジュール分割。妊娠・授乳時レッドフラッグの表示統一、エラー表示のユーザーフレンドリー化。
candidate_normalizer.py を新規作成し、スコアリング統合テスト失敗7件を解消。カロナール・タイレノール・ロキソニン系を生理痛専用医薬品の除外から例外として追加。