プロローグ — APIが世界をつなぐ
サクラの新しいミッション
「サクラさん、来週から新プロジェクトのリードをお願いしたい」
株式会社テックブリッジのバックエンドエンジニア、山田サクラはCTOの言葉に思わず姿勢を正した。入社3年目、Railsアプリの開発経験は豊富だが、「パブリックAPI」という言葉には未知の響きがあった。
「私たちのサービスを外部のパートナー企業に開放する。APIを通じて他社がうちのデータを使えるようにしたい」
サクラは深呼吸した。これは単なる機能追加ではない。世界に向けてドアを開ける仕事だ。
APIとは何か
API(Application Programming Interface)とは、ソフトウェア同士が会話するための「共通言語」だ。
HTTPというプロトコルとJSONというデータ形式があれば、どんな言語で書かれたアプリも通信できる。RubyのRailsアプリもPythonのサービスもSwiftのiOSアプリも、同じAPIで繋がれる。
なぜAPIを公開するのか
サクラはホワイトボードに書き始めた。パブリックAPIを公開するビジネス価値は大きく3つある。
1. エコシステムの拡大
自社だけでは届かないユーザーに、パートナーを通じてリーチできる。Twitterの爆発的な普及も、サードパーティアプリ開発者がAPIを使えたからこそだ。
2. 収益源の多角化
| ビジネスモデル | 説明 | 例 |
|---|---|---|
| 従量課金 | API呼び出し数に応じて課金 | AWS, Stripe |
| サブスクリプション | 月額固定 + 上限あり | Twilio, SendGrid |
| フリーミアム | 無料枠 + 有料プラン | OpenWeatherMap |
| レベニューシェア | パートナーの売上の一部 | Salesforce AppExchange |
3. プラットフォーム化戦略
APIを公開することは、単なる機能提供ではなく「プラットフォーム」になることを意味する。自社製品の周囲に開発者エコシステムが育ち、競合が簡単に真似できない堀ができる。
INFO
Stripeが決済APIで世界を席巻したように、優れたAPIは製品そのものより強力な競争優位になりえます。
良いAPIの条件
サクラはリサーチを始めた。世界で最も使われているAPIの共通点は何か。
開発者体験(Developer Experience, DX)こそが、APIの成否を決める。どれだけ機能が豊富でも、使いにくいAPIは使われない。
この旅で学ぶこと
サクラがこれから12週間で習得するのは以下のスキルだ。
| 週 | テーマ | 習得するもの |
|---|---|---|
| 1-2 | REST基礎 | URI設計、HTTPメソッド |
| 3 | リクエスト/レスポンス | 一貫性のある形式 |
| 4 | 認証・認可 | OAuth 2.0, JWT |
| 5 | バージョニング | 壊さない進化 |
| 6 | ページネーション | 大量データ対応 |
| 7 | レート制限 | API保護 |
| 8 | エラーハンドリング | 開発者に優しい設計 |
| 9 | ドキュメント | OpenAPI/Swagger |
| 10 | テスト/監視 | 品質の維持 |
| 11 | GraphQL/gRPC | RESTの先へ |
| 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'
endbundle install
rails db:create
rails db:migrateAPIモードのRailsは通常のRailsと比べて軽量だ。ビューレイヤーがなく、セッション管理もない。純粋なAPIサーバーとして動作する。
# config/application.rb
module TechbridgeApi
class Application < Rails::Application
config.api_only = true # APIモードの核心
end
endAWSインフラの全体像
「インフラどうする?」という問いに、サクラはAWSのアーキテクチャ図を描いた。
| AWSサービス | 役割 |
|---|---|
| CloudFront | CDN、キャッシュ、DDoS軽減 |
| WAF | SQLインジェクション等の攻撃防御 |
| API Gateway | レート制限、認証、ルーティング |
| ECS | Railsアプリのコンテナ実行 |
| RDS | データベース(PostgreSQL) |
| ElastiCache | キャッシュ、セッション |
| CloudWatch | ログ、メトリクス、アラート |
WARNING
パブリックAPIは攻撃対象になります。セキュリティ設計は最初から組み込む必要があります。後付けでは手遅れになることが多い。
サクラの決意
モニターに映る空のRailsプロジェクト。サクラは深呼吸してコーディングを始めた。
良いAPIを作ることは、良いプロダクトを作ることと同じだ。使う人の立場に立ち、一貫性を守り、ドキュメントを大切にする。
世界に向けてドアを開ける準備ができた。
次章では、RESTの基本原則から始めよう。