APIを作るのに最適なフレームワークを探す

APIを作る開発案件があったので、APIを作るのにどのフレームワークがいいのかをPHP、Ruby、GOあたりで探してみました。

Lumen (PHP)

PHP製のフレームワークで人気No.1との呼び声も高いLaravelの軽量版です。

PHPなので、共有サーバーなど安価なサーバーも含めて、サーバーの選択肢が広いことのはいいのですが、軽量版のLumenでも結構ファイル数が膨大だったりして、開発コストとしてはちょっと重めです。

また、データベースにSQLiteが使えるので、軽量なAPIだったらMySQLよりも高速に動作してくれるのもいいところです。Laravelと同じ知識が使えるので、日本語の情報が多いのもメリットです。

メリット デメリット
選べるサーバーが多い
情報が多い
開発に時間がかかる

WordPress (PHP)

WordPressnにはWP REST APIという仕組みがあって、WordPressサイトをAPIでデータ取得したり、データ更新したりできます。WordPressをインスアトールするだけで使えるので、データを作成するだけでAPIになるという手軽さが大きなメリットです。

ただ、このWP REST APIは結構曲者で、脆弱性が見つかった際にサイト乗っ取りのリスクがあったり、そもそもWordPressなので動作が重かったりします。

WordPressの管理画面に慣れているとか、すでにWordPressでサイトを作っているという場合以外は、同じPHPならLumenで作った方が良さそうです。

メリット デメリット
構築が簡単ですぐに作れる 重い
セキュリティリスク

Sinatra (Ruby)

Railsじゃないの?という感じかもしれませんが、簡易APIであれば軽量なSinatraでも十分です。

DBを使わないのであれば、Rubyが動く共有レンタルサーバーでも動かせるというメリットもあります。逆にDBを使うとなると、VPSなどのある程度しっかりしたサーバーで動かす必要があるので、コスパはあまりよくないかもしれません。

シンプルさが売りのSinatraだけに、シンプルにデータを表示・処理するだけのAPIには向いていますね。

メリット デメリット
軽量
開発が比較的容易
サーバーを選ぶ

HUGO (GO lang)

GO製の静的サイトジェネレータ・HUGOも、json出力に対応しているので、APIとして使うこともできます。

静的サイトなので、動的なAPIは作れませんが、ひたすらレンスポンスを返すだけのサーバーであればHUGOでも十分かもしれません。

ただ、HTMLファイルを返す前提で出来ているので、jsonオンリーのAPIを作るのにはちょっと癖があります。

サーバーはhugoコマンドで出力したファイルであればどんなサーバーでもいけますし(それこそAWS S3とかでも)、Netlifyみたいなホスティングサービスを使えばビルドも一緒にやってくれるので、運用・メンテナンスコストなどを考えると、かなり良い選択肢です。

メリット デメリット
サーバーを選ばない
高速
無料でも運用できる
ちょっと癖がある
動的APIは作れない
出来ることに限度がある
URLが常にindex.jsonになる

簡単にAPIを作るのに最適なフレームワークを見てきました。

RubyのGrapeなどAPI専門のフレームワークもありますが、将来的な拡張を考えると比較的柔軟なフレームワークを使う方が良さそうですね。