APIはラップだ——pyファイルをHTTPで包むと何が変わるのか

APIはラップだという概念を表現したイメージ。PythonファイルをHTTPで包み、ネットワーク経由で利用可能になる仕組みを示す。 この違いわかる?
PythonコードをHTTPでラップすることで、ローカル処理が外部から呼び出せるAPIへと変わるイメージ

「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 #データ活用 #システム開発

コメント

タイトルとURLをコピーしました