WebAPI
api
REST-API
開発手法
API駆動開発

注意事項

これはstmkzaの主観と偏見に基づく一方的な考えに偏った記事です。読むときは気をつけてください

API駆動開発とは

多分普通に使われるわけじゃないです。自分が勝手に命名した名前です。
Webアプリを作るときに先にサーバ側のAPIを作ってから、フロントエンドをJavaScript+HTMLで作って、フロントエンドをAPIを叩くだけの画面にする開発方法です

利点

  • 一番大変なサーバ側を先に作ることでモチベーションがなくなるのを防ぐ(一番重要)
  • APIを公開するときにかなり楽できる
  • フロントエンドは他のアプリのものを流用できる
  • 多言語化するときもサーバを修正する必要がない(データ構造が変化する場合を除く)
  • フロントエンドを作る時にAPIが仕様書になってくれる
  • フロントエンドはただのHTMLなのでCDNを使った配信が楽
  • APIサーバの転送量が減らせる
  • かなりレガシーな方法で作っても全く問題ない。むしろフレームワークを使ったら複雑すぎて余計に辛い
  • 大体のAPI仕様書は自動生成できる

欠点

  • 基本的にオフラインで使えるアプリが作れない
  • サーバとフロントエンドの開発の同時進行が難しい
  • APIを使った迷惑行為の対策が難しい
  • ログインが必要なサイトを作ると複雑になる

このように利点が大きいので、自分は最近この方法ばかりを使ってるような気がします。

開発の流れの例

  1. 扱うデータとそれに関連するCRID操作を考える
  2. 誰がその操作をできるかを考える
  3. データベースの構造を考える
  4. データを操作するWebAPIを作る
  5. フロントエンドを作る

使う技術の例

  • サーバ:PHP(php-fpm)+nginx(URLルーティング)+SQLite3(PDO)
  • フロント:Bootstrap+jQuery
  • フレームワークを全く使わない

オススメする対象

  • 趣味でプログラミングをやってる場合
  • そこまで大規模じゃないアプリを作る場合
  • フレームワークがアレルギーの人
  • 短期間でアプリを作りたい人
  • ログインが必要ないサイトを作る場合

オススメしない対象

  • 仕事でプログラミングをやってて、詳しい仕様書が必要な場合
  • 大規模アプリを作る場合
  • フレームワークの熱狂的ファン
  • 時間はどれだけでもあるから王道の方法で作りたいという人
  • 複雑なアクセス制御が必要になる場合

何かいいアイディアあれば教えてください