メインコンテンツへスキップ
実装編:PubMed APIで論文検索ツールを作る
レッスン 4 / 9|15分で読めます

実装編:PubMed APIで論文検索ツールを作る

Lesson 03のMVP概念を、実物で動かす。「APIって課金されそう」で止まってた人へ、無料のPubMed APIで自分専用の論文検索ツールが今日中に動く。

このレッスンの一行サマリ

APIは「窓口」。完全無料のPubMed API で、自分専用の論文検索ツールが今日中に動く。

このレッスンで終わる頃には

  • APIが何か、自分の言葉で説明できる
  • 自分のPCでPubMedから論文タイトルを取ってこれる
  • AI系APIに進むときの料金感覚がついてる
  • Lesson 03のMVP概念が実装で腹落ちしている

Lesson 03の続き

前回(Lesson 03)で、MVPの概念とドキュメント先行の進め方を扱いました。

今回はその実装編として、実際に1本動くものを作って手を慣らします。

題材はPubMed API。理由はLesson 03で触れた「APIはMVPの強い味方」を体感する最短経路だから。

「APIって課金されそうで怖い」、止まってませんか

私もそうでした。

「APIって、Stripeとかで聞くやつでしょ。月いくらかかるか分かんないし、とりあえず手を出さない」

Vibe Coding 入門編の卒業生からも、これ、本当によく聞きます。

なので最初に お金の話から します。安心してから進みましょう。


API=3者の窓口

01

あなた

「この条件のデータちょうだい」

02

API(窓口)

決まった形式で受け渡し

03

サーバー

PubMed等の本体DB

APIってなに?医療職の比喩で

API(エーピーアイ)を一言でいうと、「窓口」 です。

現場の窓口プログラムの窓口
紹介状の宛名と内容を持っていくと、相手の医院から返事が返ってくる決まった形式で問い合わせると、相手のサーバーから情報が返ってくる
看護師ステーションに「カルテ持ってきて」と頼むと、棚から探して持ってきてくれるサーバーに「この条件のデータちょうだい」と頼むと、検索して返してくれる
薬剤情報提供書をFAXで送るデータの送受信を決まった形式でやりとりする

つまり 「決まった形式で頼むと、決まった形式で返ってくる」 仕組みのことです。

Vibe Coding 入門編でやったChatGPT・Claude Codeも、裏側ではAPIを叩いてます。それを 自分のアプリからも叩けるようにする のが、このレッスンです。


お金の話を先にする

医療職に関係ある主要APIの料金マップです。

API料金
PubMed (NCBI)完全無料、APIキーも無料登録
ClinicalTrials.gov完全無料
厚労省 e-Stat(統計)完全無料
RxNorm / ICD-10(NLM)完全無料
OpenAI API有料、使った分だけ(重量課金)
Google Gemini API一部無料枠あり、超過で課金
Anthropic Claude API有料、使った分だけ

公的機関のAPIは、税金で運営されてる分、外部からの利用は基本無料 です。

このレッスンで使うPubMed APIは、税金で動いてるNCBI(米国国立医学図書館)が公開してるものなので、完全無料。今日中に何百回叩いても請求は来ません。

「とりあえず慣れる」には完璧な題材です。


なぜPubMed APIから始めるか

理由は3つあります。

  1. 完全無料 で料金の心配がない
  2. 医療系の人なら馴染みがあり、エンジニアでも世界規模の論文DBという題材として刺さる
  3. APIキーがなくても動く(あった方がレート制限が緩むだけ)

最初の1本としては、これ以上ない題材だと思います。医療外のテーマで作りたい人は、後半で他のAPI例も触れます。


NCBIのAPIキーを取る(無料・5分)

APIキーはなくても動くんですが、取っておくと 検索のスピードが3倍 になります(毎秒3回 → 毎秒10回)。

取り方:

  1. NCBI でアカウントを作る(既にPubMedで使ってるGoogle/ORCIDログインでもOK)
  2. 右上のユーザー名 → Account Settings
  3. API Key Management → Create an API Key
  4. 出てきた長い文字列をコピー(これがAPIキー)

ここで取れたキーは、後でClaude Codeに渡します。

注意: APIキーは チャットに直接貼らない。Vibe Coding 入門編 Lesson 4c「Claude Codeで実際に作る」でやった、APIキー安全運用の型を使います(後述)。


最初の検索を、ブラウザ1つで

「APIを叩く」というと難しそうですが、まずはブラウザのURL欄に貼るだけ で動きます。

試しに、これを新しいタブで開いてみてください。

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=pediatric+asthma&retmax=5&retmode=json

開くと、JSONというデータ形式で、論文IDが5件返ってきます。

{
  "header": { "type": "esearch", "version": "0.3" },
  "esearchresult": {
    "count": "39345",
    "retmax": "5",
    "idlist": ["42052307", "42051680", "42050965", "42050842", "42050841"]
  }
}

認証不要、完全無料、ブラウザでURLを叩くだけで返ってくる。これがもう APIを叩いた状態 です。何かをインストールしたわけでも、コードを書いたわけでもない。URLにルールを書いただけ で、PubMedのサーバーが応えてくれた。

これがAPIの正体です。


Claude Codeで自分用ツールに育てる

ブラウザで動くものを、Claude Codeに渡して 自分専用ツール にしていきます。

Claude Codeに、こう投げてみてください:

PubMed APIを使って、コマンドラインから検索キーワードを渡すと、最新10本の論文タイトル・著者・出版年が返ってくるツールを作ってください。 APIキーは環境変数 NCBI_API_KEY から読み取るようにしてください。 Pythonで書いて、UVで動かせる形にしてください。

ポイントは3つ:

  1. やりたいことを日本語で書く(Vibe Coding 入門編で身についたやつ)
  2. APIキーは環境変数経由 と指定する(チャットに貼らない)
  3. UVで動かせる形 と指定する(Vibe Coding 入門編 Lesson 4b「ターミナルって怖くない」でやった環境分離)

これだけで、Claude Codeが必要なファイルを作って、動くところまで持っていってくれます。

完成すると、ターミナルで pubmed-search "小児喘息" と打つだけで、最新10本の論文が出てきます。

pubmed-search コマンドの実行結果

$ pubmed-search "小児喘息"

[1] Asthma exacerbations in children: management updates 2026 Tanaka K, et al. J Allergy Clin Immunol. 2026

[2] Inhaled corticosteroid step-down strategies in pediatric asthma Smith J, et al. Pediatrics. 2026

[3] Biologics for severe asthma: pediatric considerations Garcia M, et al. Lancet Respir Med. 2026

... (10本表示)


APIキーの扱いだけ、ここで確認

APIキーは 環境変数 という仕組みで、Claude Codeに直接見せずに使ってもらいます。

具体的には、.env というファイルにこう書いておく:

NCBI_API_KEY=ここに長い文字列

そして .gitignore.env を追加。これだけで、APIキーがコードに混ざらないし、GitHubにも上がらない。

詳しくはVibe Coding 入門編 Lesson 4c「Claude Codeで実際に作る」の復習になります。今日は 「環境変数で渡す」と一言Claude Codeに伝えれば、あとは適切に組んでくれる ということだけ覚えておけばOK。


AI系API 料金感の3段階

01

試し触り

1日10回程度。数十〜数百円/月

02

毎日使う

業務に組み込む。数千〜1万円/月

03

公開

ユーザー数次第で青天井。上限設定必須

AI系APIに手を出すときの注意

ここまで来ると、次に気になるのは:

ChatGPTのAPIとか、Claude APIも自分で叩けるんじゃ?

叩けます。ただし 有料 です。

AI系APIの料金感覚を、ざっくり:

規模月額目安
試しに触る、1日10回くらい使う数十円〜数百円
毎日使う、業務に組み込む数千円〜1万円
アプリを公開してユーザーに使わせる利用者数に応じて、無限に増えうる

最初に覚えてほしい鉄則は1つ:

AI系APIを使うアプリを作ったら、必ず「上限金額」を設定する

OpenAIもGoogleもAnthropicも、課金上限の設定機能があります。月3000円までしか使わない と決めておけば、寝てる間に何十万円という事故は起きません。

これは応用編の別レッスンで、もう少し詳しくやります。


次のレッスン予告

PubMed APIで自分用ツールが動いたら、次は 公開 です。

Lesson 05(GitHub + Vercelで公開する)で、このツールを世界に出します。

ちなみにこのツールを後で Claude Codeに「道具」として持たせる のが Lesson 06 / 07のMCPで、Claudeに「PubMedで小児喘息の論文取って」と話しかけるだけで動く状態を作れます。

工程は1ステップずつ。まずはローカルで動くPubMed検索ツールを完成させましょう。


明日のアクション

今日の宿題は2ステップ

  1. NCBIでAPIキーを取得する(5分)
  2. Claude Codeに、このレッスンの指示文をそのまま投げて、PubMed検索ツールを作ってもらう

完成したら、自分の専門領域(小児科なら「小児喘息」、循環器なら「心房細動」など)で検索して、ちゃんと最新の論文が返ってくるか確かめてください。

うまく動かなかったら、エラーメッセージをClaude Codeに見せて「これ直して」と言うだけでOKです。