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

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

yamlはヤムルと読みます。

このファイルをphpで使用する方法がわからない
そもそもyamlを使用したら何がいいのかわからない
[su_spacer size=”20″]
そんな悩みを持って、このページにたどり着いた方に向けてこの記事を書きました。

ymalは何者なのか
ymalは何が出来るのか
どうやってphpで使えるのか
[su_spacer size=”20″]
そんな事を解説していきます。

目次

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

yamlとは

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

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

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

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

[su_spacer size=”20″]
usersという項目の下に、nickname(名前)とage(年齢)という項目がぶら下がっています。

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

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

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

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

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

[su_spacer size=”20″]
これではプログラムはデータをどのように扱ってよいかわかりません。
[su_spacer size=”20″]
そして、yamlファイルの用途としては、例のようなデータの保存・やりとり、設定ファイルに使用したりします。

xmlとどう違うの?

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

以下がxmlでの表現です。

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

[su_spacer size=”20″]
人間が見たときに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

[su_spacer size=”20″]

phpファイルの準備

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

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

[su_spacer size=”20″]

phpの実行

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

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

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

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

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

※symfony(フレームワーク)を使用していれば以下のインストールは必要ありません。
[su_spacer size=”20″]
インストールをしたいフォルダに移動をして以下のコマンドを叩きます。

composer require symfony/yaml

[su_spacer size=”20″]

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); // 結果を出力します。
    }
}
?>

[su_spacer size=”20″]

phpファイルの実行

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

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

[su_spacer size=”20″]
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について解説してみました。

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

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

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

それでは、また。

この記事を書いた人

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。

目次