RubyでYAML・JSON設定ファイルを使いこなす!Hashでの読み書き入門
生徒
「アプリの設定やユーザーのデータを、プログラムが終わっても保存しておく方法はありますか?」
先生
「それなら、YAMLやJSONという形式のファイルに保存するのが一般的ですよ。Rubyの『ハッシュ』を使えば、読み書きも簡単です。」
生徒
「ヤメル?ジェイソン?なんだか難しそうな名前ですね……初心者でも扱えますか?」
先生
「名前は強そうですが、中身はただのテキストファイルです。Rubyのハッシュとどう連携させるか、基本から丁寧に解説しますね!」
1. 設定ファイルとは?YAMLとJSONの役割を知ろう
プログラミングをしていると、プログラムを閉じた後も「設定」や「記録」を残しておきたい場面がたくさん出てきます。例えば、ゲームのハイスコアや、アプリの背景色、ユーザーの名前などです。これらを保存するための専用の書き方がYAML(ヤムル)やJSON(ジェイソン)です。
パソコンを触ったことがない方にとって、これらは「特定のルールで書かれたメモ帳」だと思ってください。人間が見ても内容が理解しやすく、なおかつプログラム(Ruby)にとっても読み取りやすいように作られています。Rubyはこのメモ帳の内容を読み取って、自分たちが扱いやすいハッシュ(Hash)という形に変換して使うのが得意なのです。
世界中のWebサービスやアプリ開発で、この二つの形式は毎日のように使われています。この読み書きをマスターすることは、本格的なアプリ作りへの大きな一歩になります。
2. YAML(ヤムル)の基本:人間にとって一番優しい形式
まずはYAMLから学びましょう。YAMLは、主に「設定ファイル」としてよく使われます。最大の特徴は、見た目がとてもスッキリしていて、まるで箇条書きのように書けることです。Rubyのハッシュと同じように「名前」と「値」をセットにして管理します。
例えば、アプリの設定をYAMLで書くと次のようになります。インデント(行の先頭の空白)を使って、親子関係を表現するのがルールです。
# config.yml というファイルの中身(イメージ)
# title: "私のブログ"
# user: "侍 太郎"
# settings:
# theme: "dark"
# font_size: 16
このように、見ただけで何が書いてあるか分かりますよね。Rubyでこのファイルを読み込むと、そのままハッシュとして扱えるようになります。難しい設定をコードの中に直接書かずに、外側のファイルに追い出すことで、プログラムが綺麗に保たれるのです。
3. RubyでYAMLファイルを読み込んでハッシュにする方法
それでは、実際にRubyを使ってYAMLファイルを読み込んでみましょう。Rubyには最初からYAMLを扱うための機能が備わっています。require 'yaml'と一行書くだけで、その魔法が使えるようになります。
読み込んだデータは、自動的にRubyのハッシュ(Hash)に変換されます。一度ハッシュになってしまえば、あとは今まで学習した方法でデータを取り出すだけです。
require 'yaml'
# YAML形式のテキストデータ(本来はファイルから読み込みます)
yaml_data = <<~YAML
name: "Ruby初心者"
level: 1
items: ["剣", "盾", "薬草"]
YAML
# YAMLをハッシュに変換
player_status = YAML.load(yaml_data)
puts "プレイヤー名: #{player_status["name"]}"
puts "最初のアイテム: #{player_status["items"][0]}"
プレイヤー名: Ruby初心者
最初のアイテム: 剣
YAML.loadという命令を使うことで、テキストだったデータが便利なハッシュに早変わりしました。これで、外部のファイルからデータを取り込んで活用できるようになります。
4. JSON(ジェイソン)の基本:Webの世界の共通言語
次にもう一つの重要形式、JSONについて解説します。JSONは「JavaScript Object Notation」の略で、元々は別の言語の書き方でしたが、今では世界中で最も使われるデータの受け渡し形式になりました。Webサイトがデータをやり取りする時は、ほとんどこのJSONが使われます。
YAMLとの違いは、{ } や [ ]、そして " "(ダブルクォーテーション)をたくさん使う点です。見た目は少し機械的ですが、非常に厳格なルールがあるため、どんなコンピュータでも間違いなく読み取れるという安心感があります。
# JSON形式のデータ(イメージ)
# {
# "site_name": "Rubyガイド",
# "active": true,
# "tags": ["初心者", "Ruby", "学習"]
# }
RubyはこのJSONも、一瞬でハッシュに変換して使いこなすことができます。JSONをマスターすれば、インターネット上の様々なサービス(天気予報データなど)と連携するプログラムも作れるようになります。
5. JSONデータをハッシュとして読み書きする
RubyでJSONを扱うには、require 'json'と記述します。読み込むときはJSON.parse、ハッシュをJSON形式のテキストに書き出したいときはJSON.generate(または .to_json)を使います。
プログラムの中で作ったデータを、他のアプリでも使えるようにJSONで出力してみましょう。
require 'json'
# Rubyのハッシュを作成
my_data = {
"id" => 101,
"message" => "こんにちは!",
"priority" => "high"
}
# ハッシュをJSON形式の文字列に変換
json_string = JSON.generate(my_data)
puts "JSONに変換した結果:"
puts json_string
JSONに変換した結果:
{"id":101,"message":"こんにちは!","priority":"high"}
このように、Rubyで作ったデータを「保存用のテキスト」に変換することをシリアライズと呼びます。逆にテキストをハッシュに戻すことをデシリアライズと呼びます。この言葉は少し難しいですが、要は「荷造り」と「荷解き」のようなものです。
6. ハッシュをファイルに保存して「設定保存」を完成させる
最後に、作成したハッシュの内容を、実際に「ファイル」としてパソコンに保存してみましょう。これができれば、パソコンの電源を切ってもデータが消えない、本物のアプリケーションらしい動きになります。
ここではYAMLを使って、ユーザー情報をファイルに書き出す流れを紹介します。ファイル操作とハッシュ、YAMLの合わせ技です。
require 'yaml'
# 保存したいデータ
user_config = {
"user_id" => "sample_user",
"theme_color" => "blue",
"last_login" => "2026-01-25"
}
# ファイルを作成して書き込む
File.open("settings.yml", "w") do |file|
file.write(user_config.to_yaml)
end
puts "settings.yml に設定を保存しました!"
このプログラムを実行すると、同じフォルダの中に「settings.yml」というファイルが出来上がります。中身をメモ帳で開いてみると、ハッシュの内容がしっかり書き込まれているはずです。これで、次回プログラムを起動したときに、このファイルを読み込めば前回の続きから処理を始めることができます。
7. ハッシュと設定ファイルの使い分け術
YAMLとJSON、どちらを使えばいいか迷うかもしれません。初心者のうちは、以下のような基準で使い分けるのがおすすめです。
| 形式 | 得意なこと | 主な用途 |
|---|---|---|
| YAML | 人間が直接書いたり読みやすい | アプリの設定ファイル、自分用メモ |
| JSON | 世界基準で機械に優しい | 他のサービスとのデータやり取り |
どちらを使っても、Rubyの中では結局ハッシュとして扱います。ハッシュの基本(キーと値のペア)さえしっかり理解していれば、ファイルの形式が変わっても怖くありません。データの入れ物であるハッシュと、データの保存先であるYAML/JSON。この連携を使いこなして、便利なツールを作ってみてくださいね!