0Pricing
Ruby Academy · レッスン

YAML 設定

YAML を読み込み、書き出します。

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

YAML とは

YAML(YAML Ain't Markup Language)は、設定に広く使われている、人が読みやすいデータ形式です。Ruby では yaml ライブラリ(Psych を基盤としています)を使って読み込みます。

require 'yaml'
text = "name: Ruby\nyear: 1995"
p YAML.load(text)

YAML の読み込み

YAML.load は YAML 文字列を解析して Ruby オブジェクトに変換します。マッピングは Hash に、シーケンスは Array になります。

require 'yaml'
cfg = YAML.load("port: 8081\ndebug: true")
puts(cfg['port'])
puts(cfg['debug'])

インデントで構造を定義する

YAML では、入れ子構造を表すためにインデント(スペースのみで、タブは使用しません)を使います。深い階層ほどインデントを増やします。

require 'yaml'
text = "server:\n  host: localhost\n  port: 8081"
cfg = YAML.load(text)
puts(cfg['server']['port'])

YAMLのリスト

シーケンスは先頭にダッシュを付けて記述します。RubyのArrayにパースされます。

require 'yaml'
text = "tags:\n  - fun\n  - oop\n  - dynamic"
p YAML.load(text)['tags']

YAMLへのダンプ

YAML.dump(またはto_yaml)を使うと、RubyオブジェクトをYAMLテキストに戻す形でシリアライズできます。

require 'yaml'
data = { 'name' => 'Ruby', 'tags' => ['fun', 'oop'] }
puts(YAML.dump(data))

スカラー型

YAMLは型を推論します。数値、ブール値(true/false)、nullは対応するRubyの値になります。

require 'yaml'
cfg = YAML.load("count: 3\nactive: false\nnote: null")
puts(cfg['count'].class)
puts(cfg['note'].inspect)

シンボルキー

先頭にコロンを付けて記述したキーは、読み込むとRubyのSymbolになります。

require 'yaml'
cfg = YAML.load(":env: production")
p cfg

複数のドキュメント

1つのYAMLファイルに、---で区切った複数のドキュメントを格納できます。YAML.load_streamはそれらをすべて返します。

require 'yaml'
text = "a: 1\n---\nb: 2"
docs = YAML.load_stream(text)
puts(docs.length)

設定ファイルの書き込み

設定用ハッシュを、読みやすいYAMLファイルとして保存します。

require 'yaml'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'config.yml')
File.write(path, { 'port' => 8081 }.to_yaml)
puts(File.read(path))

設定ファイルの読み込み

YAML.load_fileは1回の呼び出しでファイルを読み込んでパースします。アプリが設定を読み込む一般的な方法です。

require 'yaml'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'app.yml')
File.write(path, "name: AppPanel\nport: 8081")
cfg = YAML.load_file(path)
puts(cfg['name'])

安全な読み込み

信頼できないYAMLの読み込みは安全でない場合があります。YAML.safe_loadはデフォルトで基本型に制限し、悪意のあるペイロードから保護します。

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

確認問題

YAMLでは、入れ子構造や構造を表すために何を使用しますか。

まとめ:YAMLによる設定

YAMLで設定を管理できます。

  • 読み込みにはYAML.load / load_fileを使用します
  • 書き込みにはto_yaml / YAML.dumpを使用します
  • インデントで入れ子構造を定義し、ダッシュでリストを作成します
  • スカラーは数値、ブール値、nullとして型推論されます
  • 信頼できない入力にはsafe_loadを優先します
require 'yaml'
puts(YAML.load("x: 5")['x'] * 2)

よくある質問

「YAML 設定」レッスンは無料ですか?

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

「YAML 設定」で何を学びますか?

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

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

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

「YAML 設定」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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