ShinyとLLMでClinicalTrials.govを分析するツールを作ってみた

>100 Views

January 27, 26

スライド概要

profile-image

SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

とLLMでClinicalTrials.govを分析するツールを 作ってみた Shiny Tomoki Nishikawa January 28, 2026 大阪SAS勉強会#12 1

2.

ClinicalTrials.gov (CT.gov) とは? 世界最大の治験情報データベース → 治験の概要、デザイン、結果、文献リンク 他いろいろ 「他社の薬剤開発状況」「世界のトレンド」などを調べるのに便利 ▶ ClinicalTrials.gov 大阪SAS勉強会#12 2

3.

CT.gov の活用イメージ 「社長、最近○○がアツいらしいですよ」 他社の動きや開発トレンドをキャッチ 市場調査や戦略立案に役立つ でも、検索や集計はちょっと面倒 大阪SAS勉強会#12 3

4.

ちょっと面倒 ウェブUIは検索条件が限られる 大量のデータをダウンロードしてエクセルで集計するのは大変 直接データベースを操作できれば楽だけど、書ける人が限られる 大阪SAS勉強会#12 4

5.

自然言語で検索・分析できたらうれしい 「日本で進行中の高血圧治療薬の治験を一覧して」 「近年増えてるがん免疫治療をグラフで見せて」 → SQLやRやSASを書かずに、チャットでお話ししながら分析したい 大阪SAS勉強会#12 5

6.

Aggregate Analysis of ClinicalTrials.gov (AACT) の情報をPostgreSQL形式で公開しているサービス → Sign upから無料で利用可能 → SQLを叩いてCT.govを検索できる! とは? CT.gov ▶ AACT 大阪SAS勉強会#12 6

7.

のスキーマ AACT 大阪SAS勉強会#12 7

8.

ということは を使うにはSQLクエリを書く必要 → 自然言語→SQL変換 すればいいのでは 分析にはRを使いたい → 自然言語→Rコード変換 もできれば最高 AACT とShinyの出番! LLM 大阪SAS勉強会#12 8

9.

実現するためのRパッケージとLLMのAPI でLLMを動かす shinychat: ShinyでLLMとのチャットUIを簡単に実装 Gemini: Googleアカウントがあれば無料でAPIが使える! ellmer: R ▶ ellmer ▶ shinychat 大阪SAS勉強会#12 9

10.

で作った Vibe coding 今回は VSCode 上の GitHub Copilot を使って実装しました。 GitHub Copilot、本当に便利です。 大阪SAS勉強会#12 10

11.

要件定義の例 🗣️ GitHub Copilotへの指示 の情報をSQLクエリで取得できるAACTというサービ ClinicalTrials.gov スがある。 これとshinychatを使って、自然言語を入力したらそれに合った情報を 抽出するSQLクエリを実行して返し、必要に応じてRで処理・可視化 するアプリを作って。 使用するAPIをGeminiに変更して。 → Copilotが要件定義書を生成してくれる 大阪SAS勉強会#12 11

12.

要件定義に基づいて実装 🗣️ 次の指示 この要件定義に従って実装して Copilotが必要なファイルを生成 → app.R: Shinyアプリ本体 → server.R: サーバーロジック → ui.R: UIコンポーネント 大阪SAS勉強会#12 12

13.

エラーや意図と異なる点を修正 実行してみると… ❌ データベース接続エラー ❌ SQLクエリの実行結果が表示されない ❌ アプリの見た目がイマイチ 🗣️ 修正の指示 データベース接続でエラーが出る。環境変数から認証情報を読み込む ように変更して 大阪SAS勉強会#12 13

14.

GitHub Copilot の強み 従来の開発 ドキュメントを読む コードを書く デバッグする 繰り返し… を使った開発 自然言語で指示 AIが実装 対話的に修正 完成! Copilot 大阪SAS勉強会#12 14

15.

作成したツール Enter a message... ▶ CTgov-bot 大阪SAS勉強会#12 15

16.

ツールの動き方のイメージ でチャットUIを提供 2. 入力された自然言語をもとにLLMがSQL/Rコードを生成 3. 生成されたSQL/Rコードを実行し、分析・可視化結果を返す 1. Shiny 大阪SAS勉強会#12 16

17.

自然言語からSQL/Rコード生成の例 (1/2) 🗣️ユーザーの入力 日本で実施された高血圧の治験を期間別にカウントして 🤖 LLMの出力 承知いたしました。日本で開始された高血圧の臨床試験を、開始年別に 集計するSQLクエリを実行します。 1 SELECT 2 EXTRACT(YEAR FROM s.start_date) AS start_year, 3 COUNT(s.nct_id) AS study_count 4 FROM studies s 5 JOIN conditions c ON s.nct_id = c.nct_id 6 JOIN countries co ON s.nct_id = co.nct_id 7 WHERE c.downcase_name ILIKE '%hypertension%' 8 AND co.name = 'Japan' 9 AND co.removed = false 10 GROUP BY start_year 11 ORDER BY start_year; 大阪SAS勉強会#12 17

18.

自然言語からSQL/Rコード生成の例 (2/2) 🗣️ユーザーの入力: 開始年別の治験数の棒グラフを作成して 🤖 LLMの出力: 承知いたしました。 1 library(ggplot2) 2 3 ggplot(plot_data, aes(x = factor(start_year), y = study_count)) + 4 (省略) 大阪SAS勉強会#12 18

19.

👍 大阪SAS勉強会#12 19

20.

に与えたシステムプロンプト Gemini こんなことをGeminiに伝えました 目的: 治験データの検索・分析・可視化を支援 環境: AACT接続、SQL/Rコードが実行可能であること 動作方針 → 小さなステップで進め、都度説明を添える → ggplot2 を用いて一貫した可視化を行う → SQLは ILIKE 検索・nct_id 結合を基本とし、実行結果は即時表示 → セキュリティ上、ローカルファイルや外部操作は実行しない AACTの主なデータ構造 分析・可視化の例 大阪SAS勉強会#12 20

21.

開発・デプロイまで全部無料 でコード補完とvibe coding → 学生はPro版も無料 (今回 Claude Sonnet 4.5 を使いました) Posit Connect Cloud: Shinyアプリをデプロイ可能 → 無料プランでRAM 4GB GitHub Copilot: VS Code 大阪SAS勉強会#12 21

22.

まとめ でデータ分析が変わる Shiny の中に LLM を組み込むのは簡単 チャットで指示して抽出・分析・可視化ができちゃう Shiny自体も簡単に作成可能 LLM LLM × Shiny = 👍 大阪SAS勉強会#12 22

23.

Enjoy 😊 大阪SAS勉強会#12 23