Ruby on Railsはバージョン5からAPIオプションが追加され、rails new プロジェクト --api
で簡単にAPIサーバーが始められます。そしてRuby on Railsの流儀で生産性高くAPIサーバーが構築できます、それほど教える事などないのでは?と考える方もいると思います。
実は私もRuby on Rails API入門コースの依頼が来たときに、そう思いました。
https://www.flickr.com/photos/153350808@N02/40079141155
まずはRuby on Rails入門やSPA(React,Vue)入門
EY-OfficeのRuby on Railsコースを受講される方は、Ruby on Rails未経験の方や初心者の方も多いのです。Ruby on Railsは強い理念に基づいて作られている個性の強いフレームワークです、その基本的な理念を理解していないと高い生産性やメンテナンス性は得られるません。CoC、DRY、RESTなどがコードにどう反映されているのかを知らないと、短いがお呪いの集まりのような謎コードに思えてしまいます。
APIサーバーのクライントであるReact、Vueで作られたSPAはAPIサーバーを作る開発者には無関係かもしれませんが、一緒にデバッグしたりするさいにはReact、Vueの基本的な仕組みを知っていた方が問題解決への時間が短くなります。
また、使い勝手の良いWebアプリの主流がSPA(React,Vue)になりつつある現在、バックエンドだけではなくReact、Vueなどのフロントエンドも開発できる開発者が求められています。
Ruby on Rails API入門
APIサーバーは通常のRuby on RailsのWebアプリとは違う部分があります。主に設計的な要素です、
- API設計: よいAPIの設計には、設計方針を決める必要があると思います。またAPI仕様は運用開始後の変更は難しいのでその対応などについての解説します。
- 認証・セッション: Webアプリの場合は認証・セッションにはブラウザーのサポートするCookieを使いますが、APIではCookieは不便なのでToken認証など他の方法が必要になります。
- CORS(Cross-Origin Resource Sharing): JavaScriptはセキュリティー上の理由から、そのコードをダウンロードしたサーバーとしか通信できません。これでは問題になる事もありCORSという仕様が規定され、それをサポートするライブラリー等があります。
- APIドキュメント: APIドキュメントはバックエンド、フロントエンド両開発者をつなく大切なドキュメントです。しかも開発初期では頻繁に変わる可能性があり、開発後も追加等があります。Excelで書かれコードとは別に管理されるようなドキュメントでは不安です。このためにOpenAPI(旧Swagger)のような規格やツールがあります。
- 開発ツール: APIはブラウザーでは確認・デバッグできません。JSONをサーバーに送信し受け取ったレスポンスを表示してくれるツールが必要になります。curlコマンドやChrome拡張機能など多数のツールがあります。
- 自動テスト: APIは運用が始まった後も機能追加はあります、そのさいに既存のAPIの動きが変わるようなバグ発生を防がないといけません。それらの対策の1つが自動テストです。
- GraphQL: APIサーバーは狭い意味ではREST APIを扱うサーバーですが、SQL文でRDBを扱うようにクライアントが必要な情報を自由に取得できるGraphQLが使われ始めています。用途によってはREST APIよりGraphQLを使うべき場合もあるかもしれません。
まとめ
APIサーバーの開発には、従来のWebアプリとは違う部分があります。これらを体系的に学ぶにはEY-OfficeのRuby on Rails APIサーバー教育コースをご検討ください。
まだ具体的でなくても疑問点のある方は、お気軽にごお問い合わせ・ご質問ください。