Rails JbuilderでJSON整形を完全ガイド!初心者でもわかる部分テンプレ・パーシャル・条件分岐
生徒
「RailsでAPIを作るとき、JSONってどうやって作るんですか?」
先生
「RailsではJbuilderという仕組みを使って、JSONの形を自由に整えられます」
生徒
「HTMLじゃなくてJSONを書くって、難しそうです…」
先生
「大丈夫です。画用紙に情報を書き並べる感覚で考えると分かりやすいですよ」
1. RailsとAPI開発の基本をやさしく理解しよう
Railsは、Webアプリケーションを効率よく作るためのフレームワークです。画面を表示するHTMLだけでなく、API開発にもよく使われます。APIとは、アプリ同士が情報をやり取りするための窓口のようなものです。
RailsのAPI開発では、画面の代わりにJSONというデータ形式を返します。JSONは「名前と値のセット」を並べた形式で、人にも機械にも読みやすいのが特徴です。
2. Jbuilderとは?JSONを組み立てる設計図
Jbuilderは、RailsでJSONを作るための専用テンプレートです。ERBがHTMLを書くためのものなら、JbuilderはJSONを書くためのものだと考えてください。
たとえば、ユーザー情報を返す場合、どの項目を含めるか、どんな名前で返すかをJbuilderで決めます。箱にラベルを貼って中身を整理するイメージです。
3. Jbuilderの基本構文とシンプルな例
まずは、Jbuilderの一番基本的な書き方を見てみましょう。json.名前 値の形で書きます。
# app/views/users/show.json.jbuilder
json.id @user.id
json.name @user.name
json.email @user.email
このコードは、「id」「name」「email」という3つの情報をJSONとして返します。必要な情報だけを選んで渡せるのがポイントです。
{
"id": 1,
"name": "Taro",
"email": "taro@example.com"
}
4. 部分テンプレとパーシャルの考え方
同じJSONの形を何度も書くのは大変です。そこで使うのが部分テンプレやパーシャルです。これは「よく使う部品を別にして再利用する仕組み」です。
たとえば、ユーザー情報をあちこちで使うなら、専用のファイルにまとめておくと便利です。
# app/views/users/_user.json.jbuilder
json.id user.id
json.name user.name
ファイル名の先頭にアンダースコアが付いているのがパーシャルの目印です。
5. パーシャルを呼び出してJSONを整理する
作成したパーシャルは、他のJbuilderファイルから呼び出せます。これにより、JSONの構造がスッキリします。
# app/views/users/show.json.jbuilder
json.user do
json.partial! "users/user", user: @user
end
このように書くと、userという箱の中に、共通化したユーザー情報が入ります。文章で言えば、定型文を差し込む感覚です。
6. 条件分岐でJSONの内容を切り替える
Jbuilderでは、Rubyのif文を使って条件分岐ができます。状況に応じて返す情報を変えられるのが特徴です。
json.name @user.name
if @user.admin?
json.role "admin"
end
この例では、管理者の場合だけ「role」を追加しています。必要なときだけ情報を出すことで、安全で無駄のないAPIになります。
7. 配列データをJbuilderで扱う方法
複数のデータを返す場合は、配列としてJSONを作ります。これは「名簿をまとめて渡す」ようなイメージです。
json.users @users do |user|
json.id user.id
json.name user.name
end
ブロックを使うことで、一人分ずつ同じ形のJSONを並べられます。
8. Jbuilderを使うメリットと初心者が意識するポイント
Jbuilderを使う最大のメリットは、JSONの形を自分で細かく制御できることです。不要な情報を出さず、必要なものだけを整理して返せます。
初心者のうちは、「どんな情報を相手に渡したいか」を紙に書き出してからJbuilderを書くと理解しやすくなります。JSONは難しいものではなく、情報整理の延長だと考えてみてください。