スキップしてメイン コンテンツに移動

RubyでYAML設定直列化

RubyでYAML設定直列化

YAML操作の基礎

RubyでYAMLを扱うには、標準ライブラリに含まれる yaml を読み込むだけで十分です。まずは require 'yaml' をファイルの先頭に書きます。これにより YAML.loadYAML.dump が利用可能になります。

require 'yaml'

# YAML文字列をRubyオブジェクトに変換
data = YAML.load(<<~YAML)
name: 田中太郎
age: 30
skills:
  - Ruby
  - JavaScript
YAML
puts data['name'] # => 田中太郎

YAMLは人間が読みやすい構造化データ形式で、設定ファイルとして広く使われています。YAML.load は文字列やファイルからRubyオブジェクトへ直列化(シリアライズ)を行います。

Ruby実践で設定ファイルを扱う

実際のプロジェクトでは、設定情報を config.yml のようなファイルにまとめ、起動時に読み込むパターンが主流です。以下は典型的な読み込み例です。

require 'yaml'

CONFIG_PATH = File.expand_path('config.yml', __dir__)

def load_config
  YAML.load_file(CONFIG_PATH)
end

config = load_config
puts config['database']['host'] # => localhost

このように YAML.load_file を使うと、ファイルを直接オブジェクトに変換できます。設定ファイルは変更が頻繁に行われるため、読み込み時にキャッシュを利用することでパフォーマンスを向上させることも可能です。

シリアライズと直列化の実装

設定情報を変更した後、再びYAMLファイルに保存するには YAML.dump を使用します。以下は設定を更新し、ファイルへ書き戻すサンプルです。

require 'yaml'

CONFIG_PATH = File.expand_path('config.yml', __dir__)

def update_config(new_data)
  config = YAML.load_file(CONFIG_PATH)
  config.merge!(new_data)
  File.open(CONFIG_PATH, 'w') { |f| f.write(YAML.dump(config)) }
end

# 例: データベースホストを変更
update_config('database' => { 'host' => 'db.example.com' })

ここで YAML.dump がオブジェクトをYAML文字列に直列化し、File.open で保存しています。直列化は「オブジェクトを文字列化して永続化する」プロセスであり、YAMLはその代表的なフォーマットです。保存したファイルは再度 YAML.load で読み込むことで、元のオブジェクト構造を復元できます。

まとめると、Ruby実践において設定ファイルを扱う際は require 'yaml' でライブラリを読み込み、YAML.load / YAML.dump を使ってシリアライズ・直列化を行い、File クラスで保存・読み込みを実装します。これにより、設定管理が簡潔かつ安全に行えるようになります。

この記事はAIによって作成されました。

コメント