YAMLファイルについて勉強した


現在お仕事でAPI連携設計を先輩と一緒に考えています。
エンジニアとして初めてのお仕事です。

そこでYAMLファイルを作成しているのですが、YAMLについて正しい認識であるか不安だったので勉強してみました!
勉強する前の私の認識としては何らかの設定を決めたファイルというような認識です。

まとめます。

YAML

簡単にいうと

「ファイルの書き方のルールの一つ」

他にもXMLとかがよく聞いたことありますが意味としては同じでルールが違うだけ。
日本語と英語と同じ意味でも「こんにちは」と言うか「Hello」と言うかが違うのと同じです。

Wikipediaでは
構造化データやオブジェクトを文字列にシリアライズ(直列化)するためのデータ形式の一種と説明されていました。

拡張子は.ymlもしくは.yamlです。

うん。
何となく私の元々の認識とずれてはいないですね。

docker-compose.yml

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./docker/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
            - selenium
    mysql:
        image: 'mysql:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql'
        networks:
            - sail
        healthcheck:
          test: ["CMD", "mysqladmin", "ping"]

# 省略

上記はLaravel8の公式のやり方で新規アプリケーションを立ち上げた時に作成されるdocker-compose.ymlです。

「mysqlはこういう風に使いますよー」「ポートはここ使いますよ」って書いてあるんですね。

書き方

コメント

YAMLはコメントが書けます。

#コメントです

配列

配列は-(ハイフン)とスペースで表します。

- AAA
- aaa
- BBB
- bbb

上記は['AAA','aaa','BBB','bbb']という配列の意味です。

以下のようにネストもできます。['AAA',['aaa','bbb']]の配列です。

- AAA
- - aaa
  - bbb

ハッシュ

ハッシュ(連想配列)は:(コロン)とスペースで表します。

ABC: abc

上記は{'ABC': 'abc'}のハッシュの意味です。

こちらもネストできます。半角2つを前に入れます。

ABC: abc
  DEF: def

なるほど。
YAMLファイルって少しでもインデントがずれるダメな理由が分かりました

以上です。