このレッスンの一行サマリ
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者の窓口
あなた
「この条件のデータちょうだい」
API(窓口)
決まった形式で受け渡し
サーバー
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つあります。
- 完全無料 で料金の心配がない
- 医療系の人なら馴染みがあり、エンジニアでも世界規模の論文DBという題材として刺さる
- APIキーがなくても動く(あった方がレート制限が緩むだけ)
最初の1本としては、これ以上ない題材だと思います。医療外のテーマで作りたい人は、後半で他のAPI例も触れます。
NCBIのAPIキーを取る(無料・5分)
APIキーはなくても動くんですが、取っておくと 検索のスピードが3倍 になります(毎秒3回 → 毎秒10回)。
取り方:
- NCBI でアカウントを作る(既にPubMedで使ってるGoogle/ORCIDログインでもOK)
- 右上のユーザー名 → Account Settings
- API Key Management → Create an API Key
- 出てきた長い文字列をコピー(これが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つ:
- やりたいことを日本語で書く(Vibe Coding 入門編で身についたやつ)
- APIキーは環境変数経由 と指定する(チャットに貼らない)
- UVで動かせる形 と指定する(Vibe Coding 入門編 Lesson 4b「ターミナルって怖くない」でやった環境分離)
これだけで、Claude Codeが必要なファイルを作って、動くところまで持っていってくれます。
完成すると、ターミナルで pubmed-search "小児喘息" と打つだけで、最新10本の論文が出てきます。
$ 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段階
試し触り
1日10回程度。数十〜数百円/月
毎日使う
業務に組み込む。数千〜1万円/月
公開
ユーザー数次第で青天井。上限設定必須
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ステップ
- NCBIでAPIキーを取得する(5分)
- Claude Codeに、このレッスンの指示文をそのまま投げて、PubMed検索ツールを作ってもらう
完成したら、自分の専門領域(小児科なら「小児喘息」、循環器なら「心房細動」など)で検索して、ちゃんと最新の論文が返ってくるか確かめてください。
うまく動かなかったら、エラーメッセージをClaude Codeに見せて「これ直して」と言うだけでOKです。
