はじめに+自己紹介
8月2日、3日に開催された「Qiita × FastDOCTOR Health Tech Hackathon」に参加しました!
私は今まで競技プログラミングという、限られた時間内にアルゴリズムの問題を解くプログラミングコンテストにちょこちょこ出ていたのですが、競技プログラミング以外の経験もしてみたい!と思い、ハッカソンに初めて参加することになりました。
そのため、ハッカソンはおろか本格的な開発経験も全くないままの参加であったため、なんとかなるか少し不安でした。しかし、優秀な友人とAIの力でなんとかなりました。
課題提起
私たちのチームがFastDOCTORの方との対話の中で見つけた課題は、以下の2つです。
- 診断に入る段階で、医師側が患者について知っている情報量が少ない
- 診断以外にも、カルテをはじめとする様々な書類作成にリソースが割かれており、本来の診断を時間的に圧迫してしまう
これらの問題に対し、AIの力を使って解決できないかを考えました。
作ったソフト


問題提起後、上のような「事前問診」+「診察中文字起こし」+「サマリー+カルテ自動作成」という、かなりボリューミーなサービスを作ることにしました。3人で出場していたのでそれぞれ分担することになり、私はカルテ自動生成の部分を担当したので、この部分について書きます。
具体的な流れとしては、
「データベースから、事前問診データと文字起こしデータのjsonを引っ張ってくる」
↓
「それをGeminiに投げてカルテ作成に必要な要約を作成してもらう」
↓
「Geminiの要約をもとにサマリー+カルテ作成ページを出力する」
というものです。

苦労した点、工夫した点など
- 文字起こしデータの取り扱い
これが一番苦労+工夫した点だと思います。
YouTubeの自動字幕などを見たことがある方はピンとくると思うのですが、自動文字起こしって結構ミスります。例えば漢字の変換が全然違っていたり、相槌がめちゃくちゃ入っていたりします。この文字起こしデータをそのままGeminiに投げると、あまり良いサマリーが返ってきませんでした。
この事を学生メンターの方に相談したところ、
「漢字/カタカナは一度すべて平仮名に変換したのち、『医療現場で行われている会話であることを考慮して、薬名などが会話に含まれていないか検討してもう一度漢字/カタカナに変換して」
「明らかに文脈から不適切な表現は除外」
など、プロンプトを工夫すると良いというアドバイスをしていただきました。実際にそのように変更したところ、精度が上がりました。
- カルテ作成のレイアウトが中々うまくいかなかった
レイアウトや、カルテのPDF出力方法などを自分が把握できないレベルでAIに任せたら、不具合(具体的には、たまに出力されなかったり、レイアウトが想定とずれる)が時々起こりました。
カルテのような正式な文書を出力する箇所は慎重性を要するので、なるべく自力でやるべきだなと思いました。(というかAIに任せても良いが、必ずすべて自分が何してるか把握しておくべきだなと思いました。)
加えて、LLMは絶対的は確実性がなかなか取りづらいので、それとどう付き合っていくのかが課題なのだと思いました。
反省点
- 事前診断データのQRコードを診察開始時に医師に見せるフェーズがあるが、それより事前に見せる方が良いことに後で気づいた
- カルテの様式を完璧にする前に本番が来てしまった
学んだことや気づいたことなど
(割と、それはそうやろみたいな内容が多いですが、ご容赦ください🙏)
- LLMに投げるプロンプトの内容次第で、返答の質が大きく変わる
- Vibe Codingは強力な武器な一方で、出力されたプログラムを人間側が追えていないと管理しきれなくなる(短期間のハッカソンでもそうなので、長期間の開発ではもっとそうなのだろうと思った)
- 最終的な目標はユーザの方に満足してもらうことなので、開発している時常に「これはユーザにとって使いやすいか?」と考えるのが大事そう
終わりに
本ハッカソンを通して、開発によってAIとの付き合い方を学んだり、様々な知見をお持ちの方に教えていただいたり、他のチームの発表を見たりして、とても貴重な経験ができました。
また機会があれば、その時までに技術スタックを増やして出場したいと思います!
有意義な機会を設けてくださった運営の方々、ありがとうございました!
(余談なのですが、Qiita運営の方ともお話しすることができ「Qiitaの運営の方って本当に存在するんだ....!」となりました(?))