注意事項
これはstmkzaの主観と偏見に基づく一方的な考えに偏った記事です。読むときは気をつけてください
API駆動開発とは
多分普通に使われるわけじゃないです。自分が勝手に命名した名前です。
Webアプリを作るときに先にサーバ側のAPIを作ってから、フロントエンドをJavaScript+HTMLで作って、フロントエンドをAPIを叩くだけの画面にする開発方法です
欠点
- 基本的にオフラインで使えるアプリが作れない
- サーバとフロントエンドの開発の同時進行が難しい
- APIを使った迷惑行為の対策が難しい
- ログインが必要なサイトを作ると複雑になる
利点
- 一番大変なサーバ側を先に作ることでモチベーションがなくなるのを防ぐ(一番重要)
- APIを公開するときにかなり楽できる
- フロントエンドは他のアプリのものを流用できる
- 多言語化するときもサーバを修正する必要がない(データ構造が変化する場合を除く)
- フロントエンドを作る時にAPIが仕様書になってくれる
- フロントエンドはただのHTMLなのでCDNを使った配信が楽
- APIサーバの転送量が減らせる
- かなりレガシーな方法で作っても全く問題ない。むしろフレームワークを使ったら複雑すぎて余計に辛い
- 大体のAPI仕様書は自動生成できる
このように利点が大きいので、自分は最近この方法ばかりを使ってるような気がします。
開発の流れの例
- 扱うデータとそれに関連するCRUD操作を考える
- 誰がその操作をできるかを考える
- データベースの構造を考える
- データを操作するWebAPIを作る
- フロントエンドを作る
使う技術の例
- サーバ:PHP(php-fpm)+nginx(URLルーティング)+SQLite3(PDO)
- フロント:Bootstrap+jQuery
- フレームワークを全く使わない
オススメする対象
- 趣味でプログラミングをやってる場合
- そこまで大規模じゃないアプリを作る場合
- フレームワークがアレルギーの人
- 短期間でアプリを作りたい人
- ログインが必要ないサイトを作る場合
オススメしない対象
- 仕事でプログラミングをやってて、詳しい仕様書が必要な場合
- 大規模アプリを作る場合
- フレームワークの熱狂的ファン
- 時間はどれだけでもあるから王道の方法で作りたいという人
- 複雑なアクセス制御が必要になる場合
何かいいアイディアあれば教えてください