mybook

プロローグ — APIが世界をつなぐ

サクラの新しいミッション

「サクラさん、来週から新プロジェクトのリードをお願いしたい」

株式会社テックブリッジのバックエンドエンジニア、山田サクラはCTOの言葉に思わず姿勢を正した。入社3年目、Railsアプリの開発経験は豊富だが、「パブリックAPI」という言葉には未知の響きがあった。

「私たちのサービスを外部のパートナー企業に開放する。APIを通じて他社がうちのデータを使えるようにしたい」

サクラは深呼吸した。これは単なる機能追加ではない。世界に向けてドアを開ける仕事だ。

APIとは何か

API(Application Programming Interface)とは、ソフトウェア同士が会話するための「共通言語」だ。

Loading diagram...

HTTPというプロトコルとJSONというデータ形式があれば、どんな言語で書かれたアプリも通信できる。RubyのRailsアプリもPythonのサービスもSwiftのiOSアプリも、同じAPIで繋がれる。

なぜAPIを公開するのか

サクラはホワイトボードに書き始めた。パブリックAPIを公開するビジネス価値は大きく3つある。

1. エコシステムの拡大

Loading diagram...

自社だけでは届かないユーザーに、パートナーを通じてリーチできる。Twitterの爆発的な普及も、サードパーティアプリ開発者がAPIを使えたからこそだ。

2. 収益源の多角化

ビジネスモデル説明
従量課金API呼び出し数に応じて課金AWS, Stripe
サブスクリプション月額固定 + 上限ありTwilio, SendGrid
フリーミアム無料枠 + 有料プランOpenWeatherMap
レベニューシェアパートナーの売上の一部Salesforce AppExchange

3. プラットフォーム化戦略

APIを公開することは、単なる機能提供ではなく「プラットフォーム」になることを意味する。自社製品の周囲に開発者エコシステムが育ち、競合が簡単に真似できない堀ができる。

INFO

Stripeが決済APIで世界を席巻したように、優れたAPIは製品そのものより強力な競争優位になりえます。

良いAPIの条件

サクラはリサーチを始めた。世界で最も使われているAPIの共通点は何か。

Loading diagram...

開発者体験(Developer Experience, DX)こそが、APIの成否を決める。どれだけ機能が豊富でも、使いにくいAPIは使われない。

この旅で学ぶこと

サクラがこれから12週間で習得するのは以下のスキルだ。

テーマ習得するもの
1-2REST基礎URI設計、HTTPメソッド
3リクエスト/レスポンス一貫性のある形式
4認証・認可OAuth 2.0, JWT
5バージョニング壊さない進化
6ページネーション大量データ対応
7レート制限API保護
8エラーハンドリング開発者に優しい設計
9ドキュメントOpenAPI/Swagger
10テスト/監視品質の維持
11GraphQL/gRPCRESTの先へ
12エコシステム持続的な運営

Railsプロジェクトの初期設定

サクラは新しいRailsアプリをAPIモードで立ち上げることから始めた。

# Rails APIモードで新規プロジェクト作成
rails new techbridge-api --api --database=postgresql
 
cd techbridge-api
# Gemfile
gem 'rack-cors'           # CORS対応
gem 'jwt'                 # JWT認証
gem 'kaminari'            # ページネーション
gem 'rack-attack'         # レート制限
gem 'rswag'               # OpenAPI/Swagger
gem 'rspec-rails'         # テスト
 
# 開発・テスト環境
group :development, :test do
  gem 'factory_bot_rails'
  gem 'faker'
end
bundle install
rails db:create
rails db:migrate

APIモードのRailsは通常のRailsと比べて軽量だ。ビューレイヤーがなく、セッション管理もない。純粋なAPIサーバーとして動作する。

# config/application.rb
module TechbridgeApi
  class Application < Rails::Application
    config.api_only = true  # APIモードの核心
  end
end

AWSインフラの全体像

「インフラどうする?」という問いに、サクラはAWSのアーキテクチャ図を描いた。

Loading diagram...
AWSサービス役割
CloudFrontCDN、キャッシュ、DDoS軽減
WAFSQLインジェクション等の攻撃防御
API Gatewayレート制限、認証、ルーティング
ECSRailsアプリのコンテナ実行
RDSデータベース(PostgreSQL)
ElastiCacheキャッシュ、セッション
CloudWatchログ、メトリクス、アラート

WARNING

パブリックAPIは攻撃対象になります。セキュリティ設計は最初から組み込む必要があります。後付けでは手遅れになることが多い。

サクラの決意

モニターに映る空のRailsプロジェクト。サクラは深呼吸してコーディングを始めた。

良いAPIを作ることは、良いプロダクトを作ることと同じだ。使う人の立場に立ち、一貫性を守り、ドキュメントを大切にする。

世界に向けてドアを開ける準備ができた。

次章では、RESTの基本原則から始めよう。