「APIを使っています」という言葉をよく聞く。しかしAPIが何をしているのか、なぜ必要なのかを腑に落として使っている人は少ない。なんとなく動いているから使っている、というのが実態だ。
結論から言う。APIとは「pyファイルをHTTPでラップして、URLで呼び出せるようにする仕組み」だ。本稿では地理空間データの具体例をもとに、APIの本質をわかりやすく解説する。
1. APIとは何か——窓口の話だ
API(Application Programming Interface)を一言で言えば、「決まった形式でリクエストを送ると、決まった形式でデータが返ってくる仕組み」だ。
レストランで例えると——客(アプリ)が注文(リクエスト)を出し、ウェイター(API)がキッチン(データベース)に伝えて料理(データ)を持って返ってくる。客はキッチンの中身を知らなくていい。窓口だけ使えばいい。
地理空間データで言えばこうだ。
http://localhost:8000/attribute?lat=34.7108&lon=137.7261
↓
{"地目": "宅地", "用途地域": "第一種住居地域", "林班": "---"}
座標を送ると、属性データがJSONで返ってくる。これがAPIだ。
2. HTTPベースのやり取りとは
APIはHTTP通信の上で動く。HTTPとは、ブラウザとサーバーが会話するための仕組みだ。実は普段使っているあらゆる操作がHTTPだ。
| 操作 | 実態 |
|---|---|
| ブラウザでURLを打つ | HTTPリクエスト |
| Googleで検索する | HTTPリクエスト |
| ngrokで外部公開する | HTTPをトンネリング |
| APIを叩く | HTTPリクエスト |
全部同じ仕組みの上に乗っている。APIは特別なものではなく、HTTPという共通の土台を使った「データの窓口」だ。
3. FastAPIでラップするとはどういうことか
Pythonで地理空間データの処理を書いたattribute_core.pyがあるとする。このファイルは優秀だが、そのままではコマンドラインからしか呼べない。これをHTTPで呼べるようにするのがFastAPIの役割だ。
# api.py
from fastapi import FastAPI
from attribute_core import get_attribute
app = FastAPI()
@app.get("/attribute")
def attribute(lat: float, lon: float):
result = get_attribute(lat=lat, lon=lon)
return result
これだけだ。attribute_core.pyの中身は一切変えていない。FastAPIという「皮」を被せることで、URLで呼び出せるようになる。
uvicorn api:app --reload
起動するとブラウザから叩けるようになる。さらにhttp://localhost:8000/docsにアクセスすると、APIのテスト画面が自動で生成される。
構造で整理するとこうだ。
attribute_core.py(本体・ロジック)
↓ 皮を被せる
FastAPI(HTTPでラップ)
↓
http://localhost:8000/attribute?lat=34.71&lon=137.72
4. URLで呼び出せる意味——誰でも・どこからでも
コマンドラインでpython attribute_core.pyを実行するのと、APIで呼び出すのは何が違うのか。
呼べる相手が変わる。
| 呼び出し方法 | 呼べる相手 |
|---|---|
| コマンドライン(py直接) | 自分のみ |
| Streamlit | 画面を操作できる人間 |
| FastAPI(API) | プログラム・他システム・他開発者 |
URLさえ知っていれば、スマホアプリからでも、他社のシステムからでも、同じデータを取得できる。pyファイルの中身を知らなくていい。URLと返り値の仕様さえわかれば使える。
5. 公開・複数開発・サービス化への発展
APIにしておくと、置く場所を変えるだけで公開範囲が広がる。
| 公開方法 | 特徴 |
|---|---|
| localhost | 自分のPCのみ |
| ngrok | 一時的・PCが起動中のみ外部公開 |
| VPS・レンタルサーバー | 常時稼働・固定URL |
| クラウド(AWS・GCP) | 大規模・スケール可能 |
コードは同じまま、置く場所だけ変える。これがWebベース(HTTP)にしておく最大のメリットだ。
複数の開発者が同じAPIを使う場合はこうなる。
開発者A(スマホアプリ) →
開発者B(Webアプリ) → 同じAPIを叩く
開発者C(AIツール) →
全員がattribute_core.pyの中身を知らなくていい。複数開発にはAPIが必須と言われる理由はここにある。さらに進めば、座標を送ると地目・用途地域・林班・固定資産属性が返るAPIを有償提供するサービス化も現実的だ。Google Maps APIやmlit-dpfと同じ構造だ。
まとめ:APIの本質は「pyをHTTPでラップすること」
| 項目 | 内容 |
|---|---|
| APIとは | 決まった形式でリクエストを送るとデータが返る窓口 |
| 通信の仕組み | HTTP(ブラウザと同じ土台) |
| FastAPIの役割 | pyファイルをHTTPでラップする皮 |
| メリット | 誰でも・どこからでも・どのシステムからでも呼べる |
| 本領発揮 | 複数開発・外部公開・サービス化 |
「なんとなく使っているAPI」の正体は、pyファイルにHTTPという皮を被せただけのものだ。本体のロジックは何も変わっていない。この構造を理解しておくと、StreamlitでもMCPでも、次の展開が見えてくる。
#API #FastAPI #Python #HTTP #WebAPI #GIS #プログラミング #DX #データ活用 #システム開発


コメント