- 開発技術
【比較】Spring BootとRuby on Railsの違いとは?
- Ruby on Rails
- #SpringBoot
はじめに
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
新たな技術を学ぶときには、既存の知識を活用することが重要です。一つのフレームワークやプログラミング言語の概念やパターンを理解しているなら、その知識を活かして別のフレームワークや言語の学習を進めることができます。
この記事では、そういった視点から、JavaのSpring BootとRubyのRuby on Railsという2つの人気のあるウェブアプリケーション開発フレームワークを取り上げ、それぞれの主要な違いを簡単に比較します。
モデルの書き方の違い
Spring Bootでは、モデルはクラスに@Entityというアノテーションを記述し作成します。JPA(Java Persistence API)やMybatisなどのフレームワークを通じてデータベースとのマッピングが行われます。
以下はユーザモデルの例です。
1 2 3 4 5 6 7 8 |
@Entity public class User { @Id @GeneratedValue private Long id; private String name; } |
Ruby on Railsでは、モデルはapp/modelsディレクトリ内のクラスで表現されます。Active Recordを継承し、データベースとのマッピングが行われます。
以下はユーザモデルの例です。
1 2 3 |
class User < ApplicationRecord validates :name, presence: true end |
Viewの書き方の違い
Spring Bootでは、ThymeleafやFreeMarkerなどのテンプレートエンジンを使用してViewを作成します。
以下の例では、Thymeleaf でname変数を利用したpタグを作成しています。
1 |
<p th:text="'Hello, ' + ${name} + '!'"></p> |
Ruby on Railsでは、ERB(Embedded Ruby)を使ってビューを作成します。
以下の例は、ERBでname変数を利用したpタグを作成しています。
1 |
<p>Hello, <%= @name %>!</p> |
Controllerの書き方の違い
Spring Bootでは、コントローラーはクラスを利用し、@Controllerや@RestControllerといったアノテーションを記述することでコンパイル時にコントローラーとして必要な機能が追加されます。
以下の例では、ユーザー一覧をJson形式で取得するためのエンドポイントを作成しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@RestController @RequestMapping("/users") public class UserController { private final UserRepository userRepository; public UserController(UserRepository userRepository) { this.userRepository = userRepository; } @GetMapping public List<User> getUsers() { return userRepository.findAll(); } } |
Ruby on Railsでは、コントローラーはApplicationControllerを継承したクラスを利用し、アクションはメソッドとして作成します。
以下の例では、ユーザー一覧をJson形式で取得するためのアクションを作成しています。
1 2 3 4 5 6 |
class UsersController < ApplicationController def index users = User.all render json: users end end |
ルーティングの書き方の違い
Spring Bootでは、コントローラー内でルーティングを管理します。
それぞれのメソッドは特定のURLパスに対応し、@RequestMappingや@GetMappingなどのアノテーションでルーティングを行います。
下記の例では、/api/helloにGETリクエストを送信した場合、helloメソッドが実行されます。
1 2 3 4 5 6 7 8 |
@RestController @RequestMapping("/api") public class MyController { @GetMapping("/hello") public String hello() { return "Hello, World!"; } } |
Ruby on Railsでは、ルーティングは一元管理されており、config/routes.rbファイルで定義します。
HTTPメソッドとURLを特定のコントローラーのアクションにマッピングします。
下記の例では、/api/helloにGETリクエストを送信した場合、sampleコントローラーのhelloアクションが実行されます。
1 2 3 |
Rails.application.routes.draw do get 'api/hello', to: 'sample#hello' end |
以上がSpring BootとRuby on Railsの基本的な違いについてです。
簡単な解説にはなりましたが、いかがだったでしょうか。
この記事がSpring BootとRuby on Railsの学習の参考になれば幸いです。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>