メインコンテンツへスキップ
AMPL/ dev
開発系講座一覧

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

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

この講座は「AMPL dev 教科書」に移しています。はじめて学ぶ方は、教科書から読んでください。

このレッスンで

終わる頃には、次ができるようになります

  • APIを「決まった形式で頼むと決まった形式で返ってくる窓口」だと説明できる
  • PubMed APIが公的機関の運営で完全無料である理由を説明できる
  • AI系APIは従量課金のため必ず上限金額を設定すべきだと判断できる

視点

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

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

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から始めるか

なぜPubMed APIから始めるか

1

完全無料

料金の心配がない

2

医療系に馴染みがある

エンジニアにも世界規模の論文DBという題材として刺さる

3

APIキーなしでも動く

あった方がレート制限が緩むだけ

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


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

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

01

アカウント作成

NCBIで新規登録、または既存のGoogle/ORCIDログインでOK

02

Account Settings

右上のユーザー名から開く

03

API Key Management

Create an API Key を選ぶ

04

文字列をコピー

出てきた長い文字列がAPIキー

NCBI APIキーの取得手順

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

注意: APIキーは チャットに直接貼らない。APIキー、Claudeに渡してませんか?で扱った、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に渡して自分専用ツールにしていきます。こう投げてみてください:

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にも上がりません。詳しくはAPIキー、Claudeに渡してませんか?の復習になります。今日は 「環境変数で渡す」と一言Claude Codeに伝えれば、あとは適切に組んでくれる ということだけ覚えておけばOK。


AI系API 料金感の3段階

01

試し触り

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

02

毎日使う

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

03

公開

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

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

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

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

叩けます。ただし 有料 です。料金感覚は上の3段階のとおり。

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

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

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

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


セルフチェック

1. PubMed APIの料金はどれですか?

2. APIキーをClaude Codeに安全に渡す方法として、このレッスンで紹介されたのはどれですか?

3. AI系API(OpenAI/Gemini/Anthropic)を使う際に、必ずやっておくべきこととしてレッスンで強調されていたのは?

明日のアクション

今日の宿題は2ステップ

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

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

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

このレッスンは役に立ちましたか?