Expressで自作APIを作成してみた
2026/5/6
Expressで自作APIを作成してみた
〜 自作アプリと連携するための第一歩 〜
開発の経緯
最近、Next.jsでブログ機能を開発している中で、
「フロントエンドだけではなく、自分でAPIも作れるようになりたい」
と思うようになりました。
一般的にWeb開発では、外部APIやCMSを利用することが多いですが、
実際に自分でAPIを設計・実装することで、
- フロントエンドとバックエンドのつながり
- HTTP通信
- JSONの扱い
- 認証
- データ設計
など、Webアプリケーションの全体像をより深く理解できると感じました。
そこで今回は、学習も兼ねて、Expressを使ったシンプルなAPIを作成してみました。
そもそもAPIってなに?
API(Application Programming Interface)は、
簡単に言うと、
「ソフトウェア同士がやり取りするための窓口」
のようなものです。
例えば、
- フロントエンド(Next.js)
- バックエンド(Express)
- データベース
- 外部サービス
などが、お互いに情報をやり取りする際に利用されます。
Wikipediaでは以下のように説明されています。
アプリケーションプログラミングインターフェースとは、広義ではソフトウェアコンポーネント同士が互いに情報をやり取りするのに使用するインターフェースの仕様である
参照:Wikipedia
今回作成したAPI
今回は、レシピデータを扱う簡単なAPIを作成しました。
できること
- レシピ一覧取得
- レシピ追加
- レシピ更新
- レシピ削除
いわゆる CRUD 操作を実装しています。
使用技術
今回の構成は以下です。
技術 | 内容 |
|---|---|
Node.js | JavaScript実行環境 |
Express | APIサーバー構築 |
Render | API公開用ホスティング |
dotenv | 環境変数管理 |
curl | APIテスト |
API設計と実装
Expressを採用した理由
今回はExpressを使って実装しました。
理由としては、
- シンプルで学習しやすい
- 情報量が多い
- API開発の基礎を学びやすい
という点が大きいです。
特にジュニアエンジニアの学習では、
「まずHTTP通信の流れを理解する」
ことが重要だと思っているので、Expressは非常に扱いやすいと感じました。
実際のAPIエンドポイント
例えば、レシピ一覧取得APIは以下のようになっています。
GET /recipesRender上にデプロイしたテスト用APIはこちらです。
アクセスするとJSON形式でデータが返ってきます。
curlでAPIをテストしてみる
API開発では、実際にHTTPリクエストを送って確認することが重要です。
今回は curl を使ってテストしました。
レシピ一覧取得
curl https://test-api-rygp.onrender.com/recipesレシピ追加
curl -X POST https://test-api-rygp.onrender.com/recipes \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_TOKEN" \
-d '{
"title":"カレー",
"ingredients":["玉ねぎ","にんじん"]
}'実装して学べたこと
今回のAPI開発で特に学びが大きかったのは以下です。
HTTPメソッドの役割
- GET → データ取得
- POST → データ追加
- PUT → データ更新
- DELETE → データ削除
なんとなく触っていた頃よりも、
通信の仕組みをかなり理解できるようになりました。
環境変数の重要性
最初は(テスト段階では)トークンをコードに直接書いていましたが、
セキュリティ的に良くないことを学びました。
その後、dotenvを使って環境変数で管理するように変更しました。
TEST_TOKEN=xxxxx実務でも重要な考え方なので、非常に良い学習になりました。
Renderへのデプロイ
ローカルだけではなく、実際に公開してみることで、
- 環境変数設定
- ビルド
- サーバ起動
- デプロイ
など、より実践的な経験ができました。
特に、
「ローカルでは動くのに本番で動かない」
という経験は、かなり勉強になりました。
今後やりたいこと
今回は簡単なAPIでしたが、今後は以下にも挑戦したいです。
- MongoDB/PostgreSQLとの接続
- JWT認証の実装
- Next.jsフロントとの連携
- Docker化
- Swagger/OpenAPIによるAPI設計
- バリデーション強化
現在は固定トークンによる簡易認証を実装しているため、
今後はログイン機能を含めた本格的なJWT認証にも挑戦したいと思っています。
最終的には、
「自作API + 自作フロントエンド」
でWebサービスを作れるようになりたいと思っています。
まとめ
今回はExpressを使って、自作APIを作成してみました。
実際に作ってみることで、
- HTTP通信
- API設計
- 認証
- デプロイ
など、Web開発の理解がかなり深まったと感じています。
プログラミング学習をしている方でも、
一度APIを自作してみると、Webアプリケーション全体の見え方が変わると思います。
これからも少しずつ改善していきたいです。