開発の軌跡と学び - 367コミットから見る10ヶ月間の成長
2025年10月から12月にかけて、GitHubで367コミットを実施し、ほぼ毎日機能追加・改善を行いました。この記事では、開発の軌跡と、そこから得た学びや反省点について振り返ります。
開発の軌跡
October 2025 - 基盤構築とUI/UX改善(205コミット)
10月は、システムの基盤を構築し、UI/UXの改善に注力しました。
実装した主な機能
- 多言語対応: 日本語・英語・中国語・韓国語への対応を開始
- 症状検出: 包括的な症状キーワードの追加と医薬品タイプ分類の精度向上
- UI/UX: ユーザー情報モーダル、オンボーディングガイド、FAQセクションの実装
- 管理者機能: フィードバック機能、セッション管理、詳細症状情報の表示
学んだこと
この時期は、機能追加を優先しすぎたことが課題でした。コードの可読性やメンテナンス性を後回しにした結果、後で大きなリファクタリングが必要になりました。
反省点:
- 機能追加の前に、コードの構造を整えるべきだった
- テストを書きながら開発を進めるべきだった
良かった点:
- ユーザーフィードバックを迅速に反映できた
- 多言語対応により、より多くのユーザーに対応できた
November 2025 - パフォーマンス最適化と基盤の確立(51コミット)
11月は、パフォーマンス最適化と基盤の確立に注力しました。
実装した主な機能
- ハイブリッド推奨システム: ルールベースとAIの融合による高精度な推奨を実現
- マルチインスタンス対応: PostgreSQLベースのセッション管理システムを実装
- パフォーマンス最適化: 二段階スコアリングによる高速化、ChatGPT API呼び出しの統合(約67%削減)
- 漢方薬推奨アルゴリズム: 34種類の漢方薬に対する詳細なルールを統合
学んだこと
パフォーマンス最適化の重要性: API呼び出し回数を約67%削減したことで、レスポンス時間が大幅に短縮されました。ユーザー体験の向上に直結することを実感しました。
マルチインスタンス対応の難しさ: PostgreSQLベースのセッション管理を実装する際、セッションの同期や競合状態の処理に苦労しました。しかし、この経験により、分散システムの基礎を学ぶことができました。
良かった点:
- パフォーマンス最適化により、ユーザー体験が大幅に向上
- マルチインスタンス対応により、スケーラビリティが向上
December 2025 - 機能の爆発的拡張(111コミット)
12月は、機能の爆発的拡張が行われました。
実装した主な機能
- LLMトリアージ機能: 5つのカテゴリへの自動分類
- カウンセリング機能: 感情的症状への共感的な対応
- 店舗案内機能: 2,362件の商品データベースに対応
- 緊急事案検出機能: 火災、医療緊急、不審者などの自動検出
- 方言対応機能: 全国の方言を標準語に変換
- 成分重複チェック機能: 30種類のリスク成分を検出
- イースターエッグ機能: 13種類の特別イベント対応
学んだこと
機能追加の速度と品質のバランス: 12月は機能追加に注力しましたが、コードの品質を維持することが難しくなりました。後でSRP改善計画を実施する必要がありました。
ユーザー体験の重要性: イースターエッグ機能のような、ユーザーが楽しめる機能を追加することで、システムへの親しみやすさが向上しました。
良かった点:
- 多様な機能を実装し、システムの価値が大幅に向上
- ユーザーフィードバックを迅速に反映できた
開発を通じて学んだこと
1. 「システムを誤らせない設計」の重要性
医療情報システムとして、安全性は最優先事項です。このプロジェクトを通じて、「正しく動く」だけでなく「誤らせない」設計の重要性を改めて実感しました。
具体例:
- 診断名検出機能により、市販薬では対応が難しい疾患を早期に検出
- 成分重複チェック機能により、過剰摂取のリスクを防止
- 緊急事案検出機能により、緊急事態に適切に対応
2. 継続的な改善の重要性
367コミットという数字は、継続的な改善の積み重ねの結果です。ほぼ毎日機能追加・改善を行うことで、システムは急速に進化しました。
学んだこと:
- 小さな改善の積み重ねが、大きな価値につながる
- ユーザーフィードバックを迅速に反映することが重要
- 完璧を目指すのではなく、まず動くものを作り、継続的に改善する
3. コードの可読性とメンテナンス性
開発初期段階では、機能追加を優先していたため、コードの可読性やメンテナンス性を後回しにしました。その結果、後で大きなリファクタリングが必要になりました。
学んだこと:
- 機能追加の前に、コードの構造を整えるべき
- SRP(Single Responsibility Principle)を守ることで、コードの可読性とメンテナンス性が向上
- テストを書きながら開発を進めることで、リファクタリングが容易になる
4. パフォーマンス最適化の重要性
API呼び出し回数を約67%削減したことで、レスポンス時間が大幅に短縮されました。ユーザー体験の向上に直結することを実感しました。
学んだこと:
- キャッシュ機能の実装により、パフォーマンスが大幅に向上
- 早期リターン処理により、不要な処理をスキップできる
- 二段階スコアリングにより、処理速度と精度のバランスを取れる
5. ユーザー体験の重要性
イースターエッグ機能のような、ユーザーが楽しめる機能を追加することで、システムへの親しみやすさが向上しました。
学んだこと:
- 機能だけでなく、ユーザー体験も重要
- 小さな工夫が、ユーザーの満足度を大きく向上させる
- アクセシビリティ機能により、より多くのユーザーに対応できる
失敗から学んだこと
1. コードの可読性を後回しにした
開発初期段階では、機能追加を優先していたため、コードの可読性やメンテナンス性を後回しにしました。その結果、後で大きなリファクタリングが必要になりました。
学んだこと:
- 機能追加の前に、コードの構造を整えるべき
- SRPを守ることで、コードの可読性とメンテナンス性が向上
- テストを書きながら開発を進めることで、リファクタリングが容易になる
2. テストの不足
開発初期段階では、テストを書きながら開発を進めていませんでした。その結果、リファクタリング時にテストの追加が必要になりました。
学んだこと:
- テストを書きながら開発を進めることで、リファクタリングが容易になる
- 単体テストにより、バグの早期発見が可能
- 統合テストにより、システム全体の動作を確認できる
3. ドキュメントの不足
開発初期段階では、ドキュメントを後回しにしていました。その結果、後でドキュメントを作成する必要がありました。
学んだこと:
- ドキュメントを書きながら開発を進めることで、後で振り返りやすくなる
- READMEの充実により、他の開発者や将来の自分が理解しやすくなる
- コメントの適切な使用により、コードの理解が容易になる
今後の展望
短期目標(1年以内)
- 精度向上: より多くの相談事例データの蓄積
- UI/UX改善: より直感的な操作感の実現
- テストカバレッジの向上: 単体テストと統合テストの充実
- ドキュメントの充実: APIドキュメントとユーザーガイドの作成
中期目標(3-5年)
- 物理学的思考の応用: 統計力学や情報理論の知識を活用し、より精密な医薬品推奨アルゴリズムの開発
- データ分析の深化: 量子統計や確率論の観点から、ユーザーデータの分析精度を向上
- システムの最適化: 熱力学のエントロピー概念を応用し、システムの効率性と安定性を追求
長期目標(10年以上)
- 信頼性が求められる基盤・インフラ領域での実務経験: 「止めてはいけないシステム」を任されるエンジニアになる
- 技術・ドメイン・運用を横断的に理解: プロジェクト全体の安全性・正確性に責任を持つ立場へ
- 「この人に任せれば大丈夫」と言われる信頼ベースのリーダー: チームや将来の自分が引き継げる設計を目指す
まとめ
367コミットという数字は、継続的な改善の積み重ねの結果です。このプロジェクトを通じて、「システムを誤らせない設計」の重要性を改めて実感しました。
今後も、現場の声を大切にしながら、より良いシステムの構築を目指していきます。そして、物理学科としての知識を活かし、より精密なアルゴリズムの開発に取り組んでいきます。
「人や社会に影響を与えるシステムは、誤ってはいけない」 - この信念を胸に、今後も開発を続けていきます。