現在お仕事でAPI連携設計を先輩と一緒に考えています。
エンジニアとして初めてのお仕事です。
そこでYAMLファイルを作成しているのですが、YAMLについて正しい認識であるか不安だったので勉強してみました!
勉強する前の私の認識としては何らかの設定を決めたファイル
というような認識です。
まとめます。
YAML
簡単にいうと
「ファイルの書き方のルールの一つ」
他にもXML
とかがよく聞いたことありますが意味としては同じでルールが違うだけ。
日本語と英語と同じ意味でも「こんにちは」と言うか「Hello」と言うかが違うのと同じです。
Wikipediaでは
構造化データやオブジェクトを文字列にシリアライズ(直列化)するためのデータ形式の一種
と説明されていました。
拡張子は.yml
もしくは.yaml
です。
うん。
何となく私の元々の認識とずれてはいないですね。
例
# 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ファイルって少しでもインデントがずれるダメな理由が分かりました
以上です。