2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails APIについて

2
Posted at

はじめに

現在、Rails APIモードを使用した個人開発の設計を実施しているところですが、そもそもRails APIモードと通常モードの違いを整理したく本記事を執筆しました。
同じような初学者の参考になれば嬉しいです。

内容

基本的な違い

主な違いは、ビュー層の有無です。
通常モードでは、HTMLテンプレートを使ってビューをレンダリングするため、完全なMVC(Model-View-Controller)を提供します。
一方、APIモードはビュー層を省略し、データのやり取りにのみ特化しています。
この違いにより、APIモードは軽量で高速なレスポンスを実現し、フロントエンドフレームワーク(例:React、Vue.js)と簡単に統合できます。

通常モードの特徴

そもそも、RailsとはRuby 言語をベースにしたWebアプリ開発フレームワークです。  
1番の特徴は、「フロントエンドとバックエンドを両方担えるフルスタックなWebアプリ開発フレームワークであること」が挙げられます。

コンセプト 特徴
フロントエンド ユーザーが直接触れる部分の領域 HTML/CSS/Javascriptによって記述されたソースコードがブラウザによって実行されることによって、フロントエンド部分が表示
バックエンド ユーザーが直接触れない部分 フロントエンド側から受け取ったリクエストに応じてデータベースからデータを取得し、フロントエンド側にレスポンスとして返すといった役割

Rails がフルスタックなWebアプリ開発フレームワークとして成立できているのは、RailsがMVCアーキテクチャーを採用しているためです。

それぞれのアーキテクチャの違いは下記の通りです。

アーキテクチャ 特徴
Model データベースとのやりとりを管理する要素
View HTML/CSS/JavaScriptを生成する要素
Controller Model と View の仲介役で、ユーザーからのレスポンスを返す役割

APIモードの特徴

上述の通り、APIモードでは、ビュー(HTML)の部分を省略し、データのやり取りに特化した軽量なアプリケーションを構築することができます。
  
メリットは、フロントエンドはReactやVue.jsなどのモダンなフレームワークを使用し、バックエンドはRailsAPIでデータを提供する構成が可能です。

というのも、近年ではSPA(Single Page Application) という設計方針が主流になっています。
 
SPAとは、JavascriptでHTMLの一部を差し替えて必要な部分だけを読み込むため、サーバーとの通信量を抑えれ、パフォーマンス向上につながります。

Googleマップで目的地を変更するたびに、毎回ページ全体の読み込みが行われないのは、このSPAによるものです。

最後に

Railsは、通常モードとAPIモードのどちらを選択しても、高い生産性を提供するフレームワークです。
目的に応じてこれらのモードを使い分けることで、効率的なアプリケーション開発が可能になります。

通常モードでは、フロントエンドとバックエンドを統合した開発が可能で、比較的小規模なプロジェクトや完全なフルスタックアプリの構築に適しています。
一方で、APIモードはフロントエンドとバックエンドを分離した構造を採用するため、モダンなフロントエンドフレームワークと連携した開発や、大規模なSPAのバックエンドとして適しています。

本記事が、Rails APIモードと通常モードの違いを整理し、今後の開発に役立つ参考資料となれば幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?