健康診断・遺伝子検査・歩数・睡眠記録をNotebookLMに入れて自分専用の健康相談AIを作る

自分専用の健康相談AIエージェント

自分の健康に関する検査データやライフログを、AIに突っ込む。
そして自分専用の健康相談AIエージェントを作る。

AIに渡したデータは以下。

  • 健康診断結果・・・体重や血液検査の結果や医師コメントなどを含む
  • iPhoneやスマート体重計のライフログ・・・体重・心拍数・歩数・睡眠時間
  • 遺伝子検査結果(GeneLife)・・・350項目以上の疾病リスクや体質タイプ
  • 大腸フローラ検査結果(MyKinso)・・・疾病リスクや保有菌比率
  • 通院歴や運動傾向などのライフスタイル・・・自分のトリセツ

これをNotebookLMに入れて、いろいろ相談しているんだが・・・

めっちゃ便利だった。
びっくらポン。

複数の自身のデータをクロス分析した上でAIが回答してくれるので、説得力がある。
もちろんAIの言うことが合ってるかどうかはまた別の問題だが・・・
今までWEBで「一般的な情報」を探して色々試してたのが、一発で「アナタの体質的にはコレ」「あなたの持病を考えるとコレ」みたいな自分に最適化された回答が得られる。
そこが良い。

ちょっとした体調不良の相談とか、病院でもらった薬についてとか、医療系もAIに聞いてる。
もちろん真面目な相談は医者にする必要がある。
ただ、「医師がこう言ってて、その場では聞けなかったけど、どういう意味?どう思う?」とか、簡易セカンドオピニオン的に使える。
自身の過去データや多様な検査データに照らし合わせて回答してくれるのが便利。

あとは、NootebookLMの文書や動画の作成機能。
これがビックリした。

自分の健康データを元に、データに基づいたプレゼン資料とか健康番組みたいな10分くらいの動画を作ってくれる。
自身のデータに基づいてるから、すごく説得力ある。

「こんな、自分専用のカッチリしたプレゼン資料とか学習動画、作ってくれるの???」っていう。

例えば、作ってもらった資料の一例は以下だが、15ページぐらいでデータ分析結果と結論まで書いてある。
NotebookLMで「スライド」を選択すると、イラスト付きで分かりやすいプレゼン資料を作ってくれるんだな。

  • タイトル:先天性リスクと後天性データの統合解析
  • ボリューム:14ページ
  • 本文:各診断結果や遺伝子検査結果、ライフログをクロス分析し、将来の病気のリスクなど解説。イラスト付きで分かりやすい

テーマ毎にもいける。
「最近、睡眠で疲れがとれてない気がする」みたいな質問とか。

  • タイトル:「活動量」と「深い睡眠」の真実~リモートワーク化が睡眠の質に与えた衝撃とジョギング介入の相関分析~
  • ボリューム:15ページ
  • 本文:要約すると「リモートワークで出社回数が減ってから睡眠の質が悪くなったが、一方で夜に1時間のジョギングをして1日の活動量を上げても効果がでてない、日中の活動量を上げた方がいいし、リモートワークでも家に閉じこもらずに陽の光を浴びるべし」みたいな話。※活動量は「歩数」データなど、睡眠の質はSleepCycleというアプリでとれてる「深い睡眠」の時間のこと

NotebookLMによる健康分析結果

繰り返しだが、合ってるかどうかは、別として。
ただ、データに基づいてるので説得力があるのと、資料のクオリティが高い。
こういうのを、切り口を変えて色々作れる。

詳細は省くけど、新たな発見が結構あった。
食うモノとか、運動(ダイエット)の仕方を変えた。
あと健康診断でのオプション検査の選択候補も、狙いを絞りやすくなった。

かなり参考になっている。

センシティブな個人情報をAIに渡す

自分はこれがやりたくて「Google Workspace Standard」を契約している。
これは個人も契約できる法人向けサービス(有料)で、AI学習に利用されないなどのエンタープライズ保護が適用される。
Geminiの履歴オンのために個人でGoogle Workspace Standardを契約した
※NotebookLM単体でいうと、確か無料版でもAI学習されないはずだが、WEBチャットの方はそうもいかない

それでも、健康診断結果や遺伝子検査結果をAIに渡すというのは、だいぶ「渡しちゃってる」ことになる。
一般的にはやらない方がいいが、自分はどうしてもやってみたく・・・

それで、「せめてコレくらいは・・・」ということで、以下のようにしている。

  • 法人版のNotebookLMとWEBチャット(gemini)で、エンタープライズ保護を適用する
    • AIモデル学習の対象外となり、Google社員も基本閲覧しない
    • Google社員については、重大なシステム障害や法令機関からの要請の場合、閲覧の可能性がある(法人が使う安価版のGoogleWorkspaceと同じ条件)
  • そのGoogleアカウントはAI専用として、それ以外では一切使わない新規アカウントとする
    • gmailやGoogleカレンダー、Googleマップも使わない
    • プライベートのGoogleアカウントなどとは別アカウント
  • 個人情報(氏名、住所など)を黒塗りしてから、データをAIに渡す
    • 何かの手違いで資料だけ流出した場合のことを考えて・・・
    • NotebookLMはGoogleDocとの連携が便利なんだが、データの置き場所を拡散したくないので、自分の場合はNotebookLMに閉じて使っている

Google(gemini)の場合、個人向けプロダクト(無料で使えるGoogleアカウント)だと、そもそもAIモデル学習の対象になる。
つまり、自分のデータを、AIが他人との会話の中でポロッと出してしまう可能性がある。
そのため、少なくとも個人アカウントではやらない方がいいと思います。
ChatGPTは個人版でもAIモデル学習は回避できるが、個人向けサービスの規約はコロコロ変わる可能性があるので注意。
ChatGPTでモデル学習を回避しつつ、パーソナライズもする

なお、実際の運用ではWEBチャット(gemini)とNotebookLMの両方を使っている。
NotebookLMは「与えた情報の中で考えるので、発展的な調査はできないが、ハレーションが少ない。資料生成機能も充実」という特徴があるが、ちょっとそれだけだと不便だったりもするので、拡張的な調査も可能なWEBチャットも併用している形。

WEBチャット(gemini)とNotebookLMの使い分けは以下。

  • NotebookLMに格納するデータは、まずWEBチャットでMarkdown形式に加工する
  • NotebookLMの発言に疑問点があれば、WEBチャットに「NotebookLMがこう言ってるけど、ホント?」と確認したりする

以下、各情報素材の内容と加工方法について、メモにて。

健康診断の結果

健康診断の結果は、紙でもらえる。
自分は昔から、全部スキャンしてpdf化しており、それが10年分以上ある。

これをNotebookLMに格納するにあたり、geminiチャットに頼んで、1枚のテキストファイル(Markdown形式)にしてもらった。
geminiチャットでは、OCR化されてないpdfでも、紙の健康診断結果をスマホで撮った画像でも、文字列を読み取ってテキスト化できる。

なお、NotebookLMに直接pdfや画像を入れると、ファイル数が無駄になる(NotebokLMにはファイル数上限がある)。
さらに、いちいちpdfからOCR認識してから「分析」となるので、AIトークンも無駄。

最初に一括でテキスト化してから、1ファイルのMarkdownファイルでNotebookLMに渡した方が、NotebookLMの分析精度が上がる。
NotebookLMには、健康診断データ以外にも色んなデータを横断でみて質問に回答してもらいたいので、テキスト認識とかでパワーを使って欲しくないのだ。

結果的に、geminiチャットにまとめてもらった「健康診断結果履歴」は、2000行になった。

なお余談だが、自分はgeminiチャットにpdfを突っ込まず、いったん自分でpdf→画像化をした。
量が多かったので、「pdfで個人情報を検索して一括で黒塗り」→「画像化してから再チェック」の方が楽だったのだ。

個人情報の墨消しは「いきなりPDF Complete」を使い、pdfの画像化は「JUST PDF スタンダード」を使った。
「いきなりPDF」はpdfの画像化時にdpiがあまり選べなくて、めっちゃ粗い画像しか作れない。
一方で「JUST PDF」はPro版にしか墨消し機能がないんだが、スタンダード版しか持ってなかったので。。。
1本で済ませるなら「JUST PDF Pro」がいい。pdfの墨消し機能があるのと、pdfの画像化もキレイにできる。

一般的な意味ではpdfソフトとかは介さず、以下の手順が楽だと思います。

  1. 健康診断結果(紙)をスマホで撮影する
  2. 画像上で個人情報を黒塗りする
  3. その画像をgeminiチャットに渡す

geminiの画像認識とOCR機能は優秀なので、これが一番手っ取り早い。
画像の場合のメリットは、pdfと違って「目に見えないけどメタデータに個人情報が入ってるかも」みたいな懸念点もないことですね。

なお、自分がgeminiチャットで「健康診断結果画像からのMarkdownテキスト作成」で使った指示(プロンプト)は以下。
と言っても、これも自分で作ったワケでなく、まずサンプルをgeminiチャットに渡して、「テキスト抽出するための指示を作って」とgeminiに頼んでもらったヤツだけど。

あなたは医療データの専門データ入力オペレーターです。
添付した画像(健康診断結果)を読み取り、マークダウン形式で正確にテキスト化してください。

以下の【抽出ルール】を厳格に守って出力してください。推測や情報の補完は一切行わないでください。

【抽出ルール】
1. ページ分割の統合
画像は、大きな1枚の用紙を「左半分」「右半分」のように分割してスキャンしている場合があります。複数の画像が添付されている場合、文脈や表の罫線から連続性を判断し、1つの繋がったデータとして結合して読み取ってください。

2. 基本情報の抽出(最上部に記載)
必ず以下の情報を画像のどこかから探し出し、ドキュメントの最上部に記載してください。
・受診日(健康診断の日付)
・医療機関名(病院名やクリニック名)
・総合判定(トータルの評価指標。例:A、B、要精密検査など)

3. 表(検査結果)のマークダウン化
検査結果はマークダウン形式の表として出力してください。
・フォーマットや検査項目は毎回異なる前提で、画像にある項目をそのまま書き出してください。
・「測定されていない(空欄)」の項目は、勝手に推測せず「-」として出力してください。
・「基準値」や「判定基準(例: ○〜○はAなど)」が記載されている場合は、必ず表の列(カラム)を分けて抽出してください。
・「前回値」や「前年値」の記載がある場合は、今年の値と混同しないように「前回値」という列を設けて確実に抽出してください。

4. テキスト情報の完全な抽出
数値データだけでなく、画像内に印字されている文章もすべて抽出してください。
・医師のコメント
・所見
・説明事項や注意事項
これらは表の下に「## 医師の所見・コメント」という見出しを作り、正確にテキスト化して記載してください。

ポイントは以下。

  • 健康診断結果の紙が大きすぎて、スキャンする際に折り曲げて左右別にpdfにしてたので、その点を加味してもらってる
  • AIがさぼって適当なスクリプトでテキスト処理しないよう、「検査項目は毎回異なる前提」と念押ししてる
    • AIはOCRした後でサンプルをちょろっと見て「あ、これならこのgrepで抜き出せる」的な処理をすぐやろうとするが、それだと検査項目が変わった年の分で抜けオチが発生しやすい
  • 健康診断結果には「前年度の値」とかも入ってるので、それを意識するよう念押ししてる

ライフログ(体重・心拍数・歩数・睡眠時間)

スマホやスマート体重計で日々の心拍数、歩数、睡眠時間、体重の記録を取っている。
貯まったデータは10年分以上。
※データ項目によるけど

  • iPhoneやAppleWatch・・・心拍数や歩数の記録がとれている
  • iPhoneアプリ「SleepCycle」・・・睡眠時間や「深い睡眠」の割合(これが重要)の記録をとっている
  • スマート体重計「Withings」・・・体重や体脂肪率、筋肉量などの記録をとっている

これらのデータを、NotebookLMに突っ込みたい。

iPhoneやAppleWatchのデータは「Apple Health」からエクスポートできなくもないが、結構厳しい。
AppleHealthからは、めっちゃ扱いにくいxml(大量)でしか取得できないのだ。
iPhoneのヘルスケア・データを取り出してエクセルで扱う方法と留意事項

そこで鍵になるのが「Withings」。
Withingsはフランス発のスマート体重計で、クラウドに体重などのデータをアップする。
クラウドときくと危ない気もするが、個人情報の扱いに厳しいEU系の会社なので、そこら辺は多少の安心感はある。
Withingsスマート体重計の最上位機種「Body Cardio」を買った

そのWithingsだが、「Apple Health」と連携してそのデータを取り込める。
そして「Apple Health」や体重計データの値を全て、シンプルなCSVファイルとしてエクスポートできる。
Appleの重すぎるxmlファイルより、全然扱いやすい。

エクスポートでは、WithingsアプリもしくはWEBで「エクスポート」を実行する。
すると、全データをダウンロードできるリンクが、メールで送られてくる。
ダウンロードしたzipファイルに、複数のcsvファイルが入っている。

Withings データのエクスポート画面

ただしエクスポートしたデータは、まだ細かすぎてNotebookLMで扱いにくい。
そのためgeminiチャットに放り込んで、「NotebookLMに入れるための、月次平均のデータに集計して」と指示して、テキストを作ってもらい、NotebookLMに突っ込んだ。

Withingsからエクスポートしたデータの項目は、以下。
Withings体重計のデータのほか、AppleHealthのデータが含まれる。

測定項目(月次)データ諸元
歩数(日平均)AppleWatch&iPhone→AppleHealth→Withings
距離(日平均m)AppleWatch&iPhone→AppleHealth→Withings
運動カロリーAppleWatch&iPhone→AppleHealth→Withings
体重(平均kg)Withings (スマート体重計)
筋肉量(平均kg)Withings (スマート体重計)
脂肪量(平均kg)Withings (スマート体重計)
体脂肪率(平均%)Withings (スマート体重計)
心拍数(平均bpm)AppleWatch→AppleHealth→Withings
睡眠時間SleepCycle(アプリ)→AppleHealth→Withings
深い睡眠比率SleepCycle(アプリ)→AppleHealth→Withings
心電図(ECG)AppleWatch→AppleHealth→Withings
体温たまに手入力→AppleHealth→Withings

データ全体としては、1700行くらいに収まった。

このデータは、作り直す際に同じ手順を踏む必要がある。
ただしgeminiチャットの履歴を残しておけば、データを放り込むだけで新しいテキストを作れる。

  1. Withingsからデータをエキスポート(csvファイル)
  2. csvファイルをgeminiチャットに添付して、NotebookLM用の集計データ生成
  3. NotebookLMのデータソースで旧ファイルを削除して、新しく作ったファイルを添付しなおす
    • 集計データをGoogleドキュメントに入れておけば上書き更新もできる
    • 個人的にはGoogleDocをあまり使いたくないので、NotebookLM直接にしている

ちなみに、最初は全データを日次平均にしようかと思ったんだが、geminiから「NotebookLMに入れるとしたら、月次平均データにした方がいい。1ファイルあたりの読み込みトークン量の制限にひっかかるなどすると、AIの認識精度が落ちるから」というアドバイスがあり、月次平均のデータに丸め込んだ。

遺伝子検査結果(GeneLife)

過去に遺伝子検査を受けたことがあるので、その結果もNotebookLMに突っ込んだ。
唾液を容器にペッ!!として郵送すると、遺伝子検査の結果がもらえる。
GeneLife 総合遺伝子検査キット Genesis2.0 Plus

遺伝子検査の話については、以下なども参照。
検査項目の全リストも、こっちのページに追記しておいた。
遺伝子検査キット「GeneLife Genesis2.0 Plus」を使ってみた感想

これもgeminiチャットに頼んで、Markdown形式のテクストファイルにまとめてから、NotebookLMに格納している。

検査結果は「疾患リスク」と「体質傾向」の2つあり、検査項目は合計345。
結果は5段階評価で、「胃がん=低い傾向」、「大腸ガン=やや高い傾向」、「顔のシミのできやすさ=標準」みたいな感じの結果になる。

あくまで遺伝子情報での統計的なリスク評価なので、必ず自分に当てはまるワケではない。
後天的な話もあるだろうし、「科学的手法の占星術結果」くらいで受け止めるのがいいのかな、と。

とはいえ、実際には「知りたくなかった」みたいなこともあるかもしれない。
そういう意味では、遺伝子検査を受けるというのは、基本オススメできない。

で、GeneLifeの場合、アプリやWEBで結果をみることができる。
そのWEBの方から、geminiチャットに渡すためのテキストを簡単に作れる。

遺伝子検査キット「GeneLife Genesis2.0 Plus」 結果ページ

以下の手順で入手したテキストをgeminiに渡し、NotebookLMに渡すためのMarkdownフォーマットに整形してもらう。

  1. PCでWEBの診断結果を開く
  2. 診断項目「全て」を選択する
  3. 表の上から下までマウスで全部選択してから、コピーする(右クリック→コピー)
  4. テキストエディタを開き、貼り付ける(html書式などを含まない文字列だけ入手できる)
  5. そのテキストを全部コピーし、geminiのチャット画面に貼り付ける
    • 多少ゴミ文字列が入ってたり、フォーマットが崩れてても、geminiは読み取れる

なお、「疾患リスクレベル一覧」というページもあり、それもgeminiに渡すと良い。
geminiに「NotebookLMがクロス分析しやすいデータ形式にして」と頼んだら、結局リスク別に整理したMarkdownを作ってた。
NotebookLMでは、「リスクレベルが高いヤツだけ注意しておく」みたいな感じで使われてそう。

実際に、NotebookLMとのQAしてると、「あなたは○○が遺伝子傾向的にも弱いし、健康診断結果をみても危ないので、○○した方が良い」みたいな言い方で、遺伝子検査結果が引用されることが多い。

大腸フローラ検査結果(MyKinso)

大腸フローラ検査として、「MyKinso」を2年連続で受けてみた。
腸内フローラ、つまり菌の多様性に関する結果がでる。
腸内フローラ検査「マイキンソー」

すごく簡単にいうと、「【やせ菌】が少ないから、○○を食べるべし」とか、「機能性下痢/IBSのリスクあり」とか、そういう結果がでる。

自分は2年前の診断結果「総合判定C」を真摯に受け止め、食生活を改善した。
そして翌年は、腸内フローラ「A判定」になった。

スゴクない?

MyKinso 総合評価画面

具体的には、キノコ類とヨーグルトの摂取を増やしたりした。
ちなみに、大腸の調子の良し悪しの実感は、あんまない。

それはともかく、MyKinso結果はWEBで閲覧できるほか、PDFをダウンロードできる。
そのPDFを、またgeminiチャットに渡して、NotebookLM用のMarkdownテキストを作ってもらうだけの、簡単なお仕事。

検査結果としては、以下が含まれる。

  • 疾患別リスク判定
    • 機能性下痢(IBS)
    • 血圧系ディスバイオーシススコア
    • 糖代謝系ディスバイオーシススコア
    • 大腸画像検査おすすめ度
  • 自分の菌比率と一般的な平均値
    • レベル別の菌比率
    • 門レベル、綱レベル、目レベル、科レベル、属レベル
    • 属レベルは最も細かく50種類以上あり、それぞれの割合(%)の数字が得られる

NotebookLMとのQAでは、このMyKinsoの結果も結構使われる。
ダイエット用の食材、プロテイン、ヨーグルトの種類なんかをAIに相談する際に、この結果をもとにアドバイスもらってる感じ。

通院歴やライフスタイル

最後に、過去の自分の通院歴やライフスタイルをMarkdownのテキストファイルにまとめた。
geminiチャットに情報を渡して、テキストを作ってもらう形。

自分はそれほど病院にお世話になってはいないんだが・・・
例えば去年から副鼻腔炎まじりの花粉症になって通院したとか、いくつかの通院歴はある。

また、自分は毎年健康診断前の2ヶ月だけジョギングして体重が減ったり、歩数が増えたりする。
そのことをAIに説明しておかないと、AIも「なんだ、この増減は?」となるので、そういう情報も文章で渡しておく。

あと、普段食ってるモノとか、使ってるプロテインとか、そういう「摂取頻度が高い物」なんかも書いておく。
すると、AIの方で「よく○○食ってる見たいだけど、遺伝子検査や大腸フローラ検査と照らし合わせると、体質的に合わないと思うよ」みたいなことを教えてくれる。

まぁ、自分のトリセツみたいなものを、AIに渡しておくわけですね。

自分が「取説」として有効だと思ったポイントは以下。

  • 通院歴(病名、ケガ名、時期など)、親の病気など
  • 普段の運動量や働き方(よく歩くか、座りっぱなしか、リモートワークか)
  • 摂取頻度の高い食事メニューや品名(市販の商品名でもイケる)

西野カナばりに細かくトリセツを書いてやった方が、AI回答も精度があがる。

まとめ

NotebookLMがどういう回答してくれるかは、渡したデータの充実度による。
そういう意味では、大腸フローラ検査とか遺伝子検査の結果は、なかなか有用だった。
あと、「歩数」とか「睡眠の深さ」も地味に役立っている。

今後は、他にも有用そうな有料検査があったら、データ化して突っ込んでみたいな、と。

もちろんAIの言うことは絶対ではないし、間違えたり考えが浅いことも多々あるんだが・・・
ポイントは、「自分のデータと一般常識を掛け合わせた仮説を作れる」というところ。
しかも可能な場合は、その結果をフィードバックして仮説を訂正できる。
その面倒な作業を、システムでやってもらえる。

「自分にはたぶんこの食材が合ってる」とか。「この運動方法が痩せやすい」とか。
あと疾病リスクの捉え方。
「自分はこの疾病リスクが高そうだから、一応こうしておこう」みたいな。

そういうのが便利だな、と。
一種の趣味じみた話だが。

なかなか楽しいです。

ほい。

そんな感じ。

tonogata
tonogata

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です