0Pricing
Ruby Academy · レッスン

フォーマットの選択

トレードオフを学びます。

「フォーマットの選択」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。

3つの形式、3つの役割

これでJSON、CSV、YAMLについて学びました。それぞれ得意な場面が異なります。適切な形式を選ぶと、データの生成、保存、利用が容易になります。

  • JSONはAPIとWeb向けです
  • CSVは表形式やスプレッドシートのデータ向けです
  • YAMLは設定向けです
puts ['JSON', 'CSV', 'YAML'].join(', ')

JSONの長所

JSONはコンパクトで、どこでも利用でき、入れ子になったHashやArrayに対応します。Web APIやサービス間のデータ交換における事実上の標準です。

require 'json'
puts({ id: 1, items: [1, 2] }.to_json)

JSONの短所

JSONにはコメントがなく、人が手作業で編集するには冗長です。末尾のカンマやシングルクォートは無効なため、設定ファイルでは間違いやすい点にも注意が必要です。

require 'json'
begin
  JSON.parse('{"a":1,}')
rescue JSON::ParserError
  puts 'trailing comma not allowed'
end

CSVの長所

CSVはフラットな表形式のデータ、つまり行と列で構成されるデータに最適です。スプレッドシート、エクスポート、バルクインポートはいずれもCSVに対応しており、大規模な表でも非常にコンパクトです。

require 'csv'
puts(CSV.generate { |c| c << ['a', 'b']; c << [1, 2] })

CSVの短所

CSVでは入れ子構造や階層構造のデータを表現できません。標準の型システムがないため、変換するまではすべて文字列として扱われます。また、方言(区切り文字や引用方法)にも違いがあります。

require 'csv'
row = CSV.parse_line('5,true')
puts(row[0].class)
puts(row[1].class)

YAMLの長所

YAMLは最も人間が読みやすく、コメントに対応し、入れ子構造も自然に扱えます。そのため、開発者が手作業で編集する設定ファイルに最適です。

require 'yaml'
text = "# app config\nport: 8081"
puts(YAML.load(text)['port'])

YAMLの短所

YAMLのインデント規則は間違いやすく(余分なスペース1つで壊れます)、安全でない読み込みはセキュリティリスクになります。また、JSONよりパースに時間がかかります。

require 'yaml'
cfg = YAML.safe_load("port: 8081")
puts(cfg['port'])

入れ子構造の比較

JSONとYAMLはどちらも同じ入れ子構造を自然に表現できますが、CSVでは表現できません。

require 'json'
require 'yaml'
data = { 'user' => { 'name' => 'Ada', 'roles' => ['admin'] } }
puts(data.to_json)
puts(data.to_yaml)

可読性とコンパクトさ

トレードオフがあります。YAMLは最も読みやすく、JSONはバランスが取れており、CSVは表形式のデータで最もコンパクトです。主な利用者が人間か機械かに応じて選択してください。

require 'json'
require 'yaml'
h = { 'a' => 1, 'b' => 2 }
puts("JSON len: #{h.to_json.length}")
puts("YAML len: #{h.to_yaml.length}")

選択ガイド

簡単なルールを確認しましょう。

  • Web APIと通信しますか。JSON
  • スプレッドシート用に行をエクスポートしますか。CSV
  • 人が編集するアプリ設定ですか。YAML

迷った場合は、データ交換のデフォルトとしてJSONを選ぶのが最も安全です。

choice = { api: 'JSON', table: 'CSV', config: 'YAML' }
puts(choice[:config])

形式間の変換

3つの形式はいずれも同じRubyのHash/Array構造にパースされるため、変換は簡単です。一方をパースして、もう一方にダンプします。

require 'json'
require 'yaml'
data = JSON.parse('{"port":8081,"name":"app"}')
puts(data.to_yaml)

確認問題

開発者が手作業で編集し、コメントも記述したい設定ファイルには、どの形式をデフォルトとして選ぶのが最適ですか。

まとめ:形式の選択

これで適切なツールを選べるようになりました。

  • JSON:API、データ交換、バランスの良さ
  • CSV:フラットな表、スプレッドシート、コンパクトさ
  • YAML:設定、可読性、コメント、入れ子構造
  • すべて同じRubyの構造にパースされるため、変換は簡単です
require 'yaml'
require 'json'
puts(YAML.load('a: 1').to_json)

よくある質問

「フォーマットの選択」レッスンは無料ですか?

はい。「フォーマットの選択」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。

「フォーマットの選択」で何を学びますか?

トレードオフを学びます。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ruby Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「フォーマットの選択」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このRuby Academyレッスンでコードを書いて実行できますか?

はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. JSON の読み書き
  2. CSV の扱い
  3. YAML 設定
  4. フォーマットの選択
← Ruby Academyに戻る