REST API を簡単に作成・ホスティングする 『さくらのAPI ゲートウェイ』その1

APIエコノミーとさくらのクラウド APIゲートウェイ

さくらのAPIゲートウェイ」は、さくらのクラウドが提供しているHTTP/HTTPS プロトコルを使用した API を簡単に作成、公開することができるマネージドサービスです。

かつては、Webシステムといえば「1つのアプリケーションサーバーとデータベースが連携し、Web画面を生成する」モノリシックな構成が主流でした。しかし、現在のシステムはまったく異なる構造をとっています。クラウドコンピューティングの採用と共に、マイクロサービス化が進み、機能ごとに独立したサービスをAPIでつなぐ「API駆動型アーキテクチャ」が、クラウドの発展とともに標準的な設計手法になりました。クラウドコンピューティングでは、それぞれの機能が独立したサービスとして提供されます。このため内部はAPI同士で連携を行うことになります。

大きな初期投資を伴わないクラウドを活用したこのアーキテクチャーは、局地的な機能改善を簡易に行うことを可能とし、アプリケーション進化の速度は大きく向上しました。ビジネスを支えるアプリケーションは高いアジリティを確保し、ユーザーの要望や世の中の変化に応じてビジネスを変化させていくことが容易になりました。

この考え方をさらに推し進めたものが『APIエコノミー』です。

デジタルビジネスにおいて、企業やサービスはもはや単独で価値を提供する存在ではなくなりました。異なるサービス同士がAPIを介して連携し、相互に機能やデータを共有することで、より高度で利便性の高い体験を生み出しています。こうした構造を支える仕組みが「APIエコノミー」と呼ばれる新しい経済圏です。

たとえば、ECサイトが外部の決済APIを利用して即座にクレジット決済機能を導入したり、地図APIを使って配送経路や位置情報をリアルタイムに可視化したりすることは、今では当たり前の光景です。また、SNSの連携APIを用いれば、ユーザー認証やマーケティング連携を自動化でき、業務の効率化と顧客体験の向上を同時に実現できます。
さらに、Slack や Salesforce、Google Workspace などのクラウドサービスも、APIを介して統合されることで、企業全体の業務フローを横断的につなぐ基盤となっています。

このような時代では、APIは単なるシステム間連携の手段ではなく、企業が自らの機能や価値を外部に公開し、他者と結びつくための「経済的インターフェース」となっています。つまり、APIをどれだけ安全に、拡張性高く、柔軟に運用できるかが、そのまま企業の競争力を左右する時代になったといえます。

それぞれのサービスが独立して動作し、APIを通じて外部や他のサービスと通信する構成は柔軟性に優れていますが、一方で通信経路の増加・セキュリティの分散・運用の複雑化という新たな課題を生み出します。こうした課題を統合的に解決するために必要なのが「APIゲートウェイ」です。

さくらのAPI ゲートウェイでは以下の様な機能が提供され、企業が統合的にAPIを管理できるようになっています。

1. 統一されたアクセス経路の確立
各サービスが個別に公開されると、アクセス先が分散して管理が複雑になります。APIゲートウェイを導入することで、すべてのリクエストを一つのエンドポイントに集約し、ルーティングや設定を一元管理できます。

2. 認証・認可の集中管理
サービスごとにセキュリティ機能を実装すると重複とリスクが増します。ゲートウェイ側でJWTやOAuthなどの認証を一括管理することで、安全性と運用効率を両立できます。

3. トラフィック制御と保護
急なアクセス増や悪意あるリクエストからバックエンドを守るため、ゲートウェイではレート制限やスロットリングが設定可能です。これにより、全体の安定稼働を維持できます。

4. ログ・監視の統合
アクセスログやエラー率を一元的に記録・可視化することで、障害対応や性能改善が容易になります。SRE・運用チームの分析基盤としても有効です。

さっそくやってみる

では API ゲートウェイ の基本的な機能を試していきます。

1. 仮想サーバの起動とAPIエンドポイントの作成

このブログでは node.js を用いてシンプルなエンドポイントを起動します。

まずはさくらのクラウドで仮想サーバをUbuntuで起動します。構成は最小で問題ありません。

標準でインストールされているnode.jsを削除し、最新安定版をインストールします。

sudo apt remove -y nodejs npm
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
npm install express

server.js として以下のファイルを作成します。

const express = require("express");
const app = express();
const PORT = 3000;

// ルート "/" にアクセスしたとき
app.get("/", (req, res) => {
  res.json({ message: "Hello from root / 🎉" });
});

// "/get" にアクセスしたとき
app.get("/get", (req, res) => {
  res.json({ message: "Hello from /get API 🎉" });
});

// サーバ起動
app.listen(PORT, () => {
  console.log(`✅ Server is running at http://localhost:${PORT}`);
});

node server.js で起動した後ブラウザでIPアドレスのポート3000番(http://xxx.xxx.xxx.xxx:3000/)に直接アクセスします。

2. API ゲートウェイの初期セットアップ

さくらのクラウド ホーム画面からAPIゲートウェイをクリックします。

無料で試せるTrialプランを選択します。現在API ゲートウェイは無償で提供されています。

3. サービスの作成

まず最初に行うことはサービスの作成です。サービスとはAPIのゲートウェイをホスティングする基盤のようなものとなりAPIごとに存在するものです。 サービス作成 をクリックします。

以下の様にAPIを起動しているサーバを指定し 作成 をクリックします。

通常ホストにはロードバランサーの様に複数の冗長化されたウェブサーバのIPアドレスやドメイン名などを設定することが一般的ですが、この手順ではシンプルに先ほど起動したウェブサーバのIPアドレスを指定します。

4. ルートの作成

次にルートを作成します。ルートとはサービスの下にぶら下がる、通信のルーティングを制御する部分です。HTTPのメソッドごと、プロトコルごと (HTTP or HTTPS) に異なる制御を行う、などが可能です。

先ほど作成したサービスをクリックし左ペインから ルート一覧 をクリックします。

ルート作成 をクリックします。

適当な名前を付けプロトコルにHTTPを指定します。その後ホストをドロップダウンメニューから指定します。ホストは上記手順のサービス設定時に自動で一つ作成されています。

ルーティング先の対象パスとメソッドを指定し、 作成 をクリックします。

5. テスト

上記の手順で指定したルートで設定したホストにブラウザでアクセスします(ブラウザからのアクセスは自動で GET になります)。サービスで対象サーバのIPアドレスとポート3000番を指定しているため、ホスト名:ポート80番へのアクセスは自動的に対象サーバのIPアドレス:ポート3000番へルーティングされます。

まとめと次回予告

この記事ではAPI ゲートウェイの必要性とシンプルな環境の設定を行いました。次回は認証やドメイン名の設定等様々な設定を見ていきたいと思います。