phpのyamlがわからない!最短理解でyamlが得意になるには

こんにちは!独学プログラマー&ライターのつぶらやです。

yamlはヤムルと読みます。

このファイルをphpで使用する方法がわからない
そもそもyamlを使用したら何がいいのかわからない

そんな悩みを持って、このページにたどり着いた方に向けてこの記事を書きました。

ymalは何者なのか
ymalは何が出来るのか
どうやってphpで使えるのか

そんな事を解説していきます。

目次

yamlってそもそもなんですか?

yamlとは

yamlとはずばり、構造化データの表現記法です!

はい、よくわかりませんね。私はわかりませんでした。

まずは実際のyamlファイルを見てみましょう。

users:
- nickname:さかもとさん
    age:25

usersという項目の下に、nickname(名前)とage(年齢)という項目がぶら下がっています。

そしてその中身は「さかもとさん」、「25」のようにデータが入っています。

これが構造化データです。

構造化データはプログラムなどで利用する時にとても利用しやすいです。

構造化データ化されていない文字列として以下のような日本語が渡された場合を考えてみます。

ユーザーの名前はさかもとさん、年齢は25歳

これではプログラムはデータをどのように扱ってよいかわかりません。

そして、yamlファイルの用途としては、例のようなデータの保存・やりとり、設定ファイルに使用したりします。

xmlとどう違うの?

同じような構造化データの表現記法として、xmlがあります。

以下がxmlでの表現です。

<users>
<user>
    <nickname>さかもとさん</nickname>
    <age>25</age>
</user>

人間が見たときにyamlの方がxmlより認識しやすいと言われています。

たしかに、xmlより、yamlの方が理解しやすいと思いました。

phpでyamlを使う(php関数以外編)

何となく、yamlについてイメージがついてきましたでしょうか。

実際にyamlを使用する場合としては、

・yamlファイルを作成して自分が作成しているphpのプログラムに取り入れる
・開発中にこれを使用して欲しいと指定されたりする

のような場合があると思います。

その時、そのままyamlファイルを読み込んでもphp側ではうまく認識されません。

では、どうすればよいのか。

ここでは、spycとsymfonyを使用する2つの方法を紹介します。

※spyc・・・phpで書かれたyamlの解析のためのプログラムです。
※symfony・・・phpのフレームワークの一種。フレームワークはより効率よく開発ができる機能のかたまりのようなもの。

spycをインストールして使用する方法

spycを以下サイトからダウンロード

https://code.google.com/archive/p/spyc/downloads

ダウンロードしたzipを解凍すると、spyc.phpや他のファイルが出来ますが、spyc.phpのみをサーバーに上げます。

yamlファイルの準備

以下の様なyamlファイル(yamlfile.yaml)を用意します。

user:
    age: 8

phpファイルの準備

以下の内容のphpファイルを準備します。

<?php
require_once("★/spyc.php"); // ★の部分にはspyc.phpを置いたパスを入れます
class spycTest {
    function testSpyc(){
        $yaml_output= spyc_load_file("☆");// ☆の部分にはyamlファイルがあるパスを入れます
        var_dump($yaml_output); // 結果を出力します。
    }
}
?>

phpの実行

3で準備したphpファイルを実行した結果が以下です。

array(1) {
    ["user"]=>
    array(1) {
        ["age"]=>
        int(1) "8"
    }
}

symfony/yamlパッケージを使用する方法

symfony/yamlパッケージのインストール

composerという、必要なもの(ライブラリ)の名前を指定すると自動的にインストールをしてくれるphpの機能を使って、phpを動かしているサーバーにインストールをします。

※symfony(フレームワーク)を使用していれば以下のインストールは必要ありません。

インストールをしたいフォルダに移動をして以下のコマンドを叩きます。

composer require symfony/yaml

yamlファイルの準備

同じフォルダの中に、以下の様なyamlファイル(yamlfile.yaml)を用意します。

user:
    age: 8

phpファイルの準備

同じフォルダの中に、以下の様なphpファイルを用意します。

<?php
use SymfonyComponentYamlYaml;
require "vendor/autoload.php";
class symfonyTest {
    function testsymfony(){
        $yaml_file = file_get_contents("yamlfile.yaml"); // 読み込むyamlファイルを指定します。
        $yaml_output = Yaml::parse($yaml_file);

        var_dump($yaml_output); // 結果を出力します。
    }
}
?>

phpファイルの実行

3で準備したphpファイルを実行した結果が以下です。

array(1) {
    ["user"]=>
    array(1) {
        ["age"]=>
        int(1) "8"
    }
}

phpのオブジェクトに変換できました。

これでphp内で使用することが出来るようになりました。

phpでyamlを使う(php関数編)

最後に、phpのyaml用の関数の紹介です。

これは、本来ならphpでyamlを使用するための3つ目の方法なのです。

ただ、yaml拡張モジュールの使用や制約がある且つ、全項目の2つの方が手軽なため最後に簡易的な紹介とさせていただきます。

興味のある方は、ネットで検索すると色々と出てきますので確認してみてください。

[su_table]

yaml_parse_file() ()内にyamlファイルのパスを指定するとパース(解析)をかけてくれます。
yaml_parse_url() ()内にyamlファイルのurlを指定するとパース(解析)をかけてくれます。
yaml_emit() ()内に配列などでデータを渡せば、yaml形式の値が返ってきます。

[/su_table]

まとめ

今回はphpのyamlについて解説してみました。

いかがだったでしょうか。

難しいプログラムやデータなどは、最小限の量に減らして動かしたりするとわかりやすい場合もあります。

覚えることは多いですが、一つずつ理解していきましょう。

それでは、また。

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次