視点
このレッスンの一行サマリ
APIは「窓口」。完全無料のPubMed API で、自分専用の論文検索ツールが今日中に動く。
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から始めるか
なぜPubMed APIから始めるか
完全無料
料金の心配がない
医療系に馴染みがある
エンジニアにも世界規模の論文DBという題材として刺さる
APIキーなしでも動く
あった方がレート制限が緩むだけ
最初の1本としては、これ以上ない題材だと思います。医療外のテーマで作りたい人は、後半で他のAPI例も触れます。
NCBIのAPIキーを取る(無料・5分)
APIキーはなくても動くんですが、取っておくと 検索のスピードが3倍 になります(毎秒3回 → 毎秒10回)。NCBI で無料取得できます。
アカウント作成
NCBIで新規登録、または既存のGoogle/ORCIDログインでOK
Account Settings
右上のユーザー名から開く
API Key Management
Create an API Key を選ぶ
文字列をコピー
出てきた長い文字列が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つ:
- やりたいことを日本語で書く(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にも上がりません。詳しくはAPIキー、Claudeに渡してませんか?の復習になります。今日は 「環境変数で渡す」と一言Claude Codeに伝えれば、あとは適切に組んでくれる ということだけ覚えておけばOK。
AI系API 料金感の3段階
試し触り
1日10回程度。数十〜数百円/月
毎日使う
業務に組み込む。数千〜1万円/月
公開
ユーザー数次第で青天井。上限設定必須
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ステップ
- NCBIでAPIキーを取得する(5分)
- Claude Codeに、このレッスンの指示文をそのまま投げて、PubMed検索ツールを作ってもらう
完成したら、自分の専門領域(小児科なら「小児喘息」、循環器なら「心房細動」など)で検索して、ちゃんと最新の論文が返ってくるか確かめてください。
うまく動かなかったら、エラーメッセージをClaude Codeに見せて「これ直して」と言うだけでOKです。