他のツール
YAML(YML)フォーマッター・検証ツール
コメントを保持し、構文エラーの行と列を表示できる YAML 整形・検証・圧縮ツールです。
YAML/YML フォーマッターとは?
YAML(YAML Ain't Markup Language)は、アプリ設定、CI/CD、Docker Compose、API 定義などで使われる読みやすいデータ形式です。このツールは YAML または YML をブラウザ内で整形・検証・圧縮し、入力内容をアップロードしません。
使い方
- YAML または YML を入力欄に貼り付けます。
- 2 または 4 スペースのインデントと行幅を選択します。
- 「YAML を整形」「YAML を圧縮」または「検証」を選びます。
- 結果をコピーするか
.yamlファイルとして保存します。
よくある利用シーン
- 公開前のスタイル統一
- 構造や構文の問題の発見
- ドキュメントでのきれいな表示
❓ よくある質問
Q1: 構文エラーの場所は分かりますか?
A: 最初のエラーについて行番号と列番号、パーサーの説明を表示します。
Q2: YAML を圧縮できますか?
A: はい。圧縮モードはコレクションをフロースタイルに変換し、コメントを削除します。
Q3: コメントは保持されますか?
A: 通常の整形では保持されます。圧縮モードだけがコメントを削除します。
✨ 主要な機能
- 🎯 フォーマット検証:YAML構文エラーをチェックし、詳細なヒントを提供
- 🎨 フォーマット美化:YAMLコンテンツを自動的にインデントとフォーマット
- 🗜️ コンテンツ圧縮:余分なスペースとコメントを削除し、ファイルサイズを圧縮
- 📋 ワンクリックコピー:フォーマット結果を直接コピーして使用可能
- 🔧 エラー位置特定:構文エラーの位置を正確に特定
- 💾 ファイル保存:整形結果を
.yamlとしてダウンロード
📖 使用例
フォーマット例
元のYAML:
name:ToolMi
version:1.0.0
features:
- format
- validate
- compress
config:
debug:true
port:3000
フォーマット後:
name: ToolMi
version: 1.0.0
features:
- format
- validate
- compress
config:
debug: true
port: 3000
複雑構造例
入力YAML:
database:
host: localhost
port: 5432
credentials:
username: admin
password: secret
pools:
- name: read_pool
size: 10
- name: write_pool
size: 5
検証・美化後:
database:
host: localhost
port: 5432
credentials:
username: admin
password: secret
pools:
- name: read_pool
size: 10
- name: write_pool
size: 5
🎯 応用シーン
1. アプリケーション YAML (YML) 設定ファイルの整形
アプリケーション設定ファイルの整理と検証:
# アプリケーション設定ファイル (config.yml)
app:
name: ToolMi
version: 1.0.0
environment: production
server:
host: 0.0.0.0
port: 3000
ssl:
enabled: true
cert_path: /etc/ssl/certs/app.crt
key_path: /etc/ssl/private/app.key
database:
type: postgresql
host: localhost
port: 5432
name: toolmi_db
username: ${DB_USER}
password: ${DB_PASSWORD}
pool:
min_connections: 2
max_connections: 10
redis:
host: localhost
port: 6379
password: ${REDIS_PASSWORD}
db: 0
logging:
level: info
format: json
outputs:
- type: file
path: /var/log/app.log
- type: console
2. Docker Compose YAML (YML) 設定ファイルの整形
Dockerコンテナオーケストレーション設定の管理:
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DB_HOST=database
depends_on:
- database
- redis
volumes:
- ./uploads:/app/uploads
networks:
- app-network
database:
image: postgres:13
environment:
POSTGRES_DB: toolmi_db
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- app-network
redis:
image: redis:6-alpine
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- redis_data:/data
networks:
- app-network
volumes:
postgres_data:
redis_data:
networks:
app-network:
driver: bridge
3. CI/CD パイプライン YAML (YML) の整形
GitHub Actionsワークフロー設定:
# .github/workflows/deploy.yml
name: 本番環境へのデプロイ
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_VERSION: '18'
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
- name: Node.jsセットアップ
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: 依存関係インストール
run: npm ci
- name: テスト実行
run: npm test
- name: リンティング実行
run: npm run lint
build:
needs: test
runs-on: ubuntu-latest
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
- name: Dockerイメージビルド
run: |
docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest .
- name: レジストリにプッシュ
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
4. Kubernetes YAML (YML) マニフェスト整形
Kubernetesデプロイ設定ファイル:
# deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: toolmi-app
labels:
app: toolmi
spec:
replicas: 3
selector:
matchLabels:
app: toolmi
template:
metadata:
labels:
app: toolmi
spec:
containers:
- name: app
image: toolmi/app:latest
ports:
- containerPort: 3000
env:
- name: NODE_ENV
value: "production"
- name: DB_HOST
valueFrom:
secretKeyRef:
name: app-secrets
key: db-host
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 3000
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: toolmi-service
spec:
selector:
app: toolmi
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: LoadBalancer
🔧 技術詳解
YAML構文規則
YAMLの基本構文規則:
インデント規則:
- スペースを使用してインデント、タブは使用不可
- 同じレベルの要素は左揃えが必要
- 子要素は親要素よりも多くインデントが必要
データ型:
- 文字列:引用符なしでも可、特殊文字には引用符が必要
- 数字:整数と浮動小数点数
- ブール値:true/false、yes/no、on/off
- null値:null、~、または空
コレクション型:
- 配列:- を使用してリスト項目を表示
- オブジェクト:key: value を使用してキー値ペアを表示
- ネスト:任意レベルのネスト構造をサポート
よくあるエラー
YAMLフォーマットツールが検出できるよくあるエラー:
インデントエラー:
# 間違った例
config:
debug: true
port: 3000 # インデントが一致しない
# 正しい例
config:
debug: true
port: 3000
引用符の問題:
# 間違った例
message: It's a test # 単一引用符がエスケープされていない
# 正しい例
message: "It's a test"
# または
message: 'It''s a test'
リスト形式:
# 間違った例
features:
- format
- validate # インデントエラー
# 正しい例
features:
- format
- validate
💡 使用のコツ
- 一貫したインデント:常に同じ数のスペースでインデント(2スペース推奨)
- 引用符の使用:特殊文字を含む文字列は引用符で囲む
- コメント規範:# を使用してコメントを追加、コメント前にスペースを追加
- 複数行文字列:| または > を使用して複数行テキストを処理
⚠️ 注意事項
- タブ禁止:YAMLはタブを許可せず、スペースのみ使用可能
- インデント敏感:インデントエラーは解析失敗を引き起こす
- 特殊文字:コロン、引用符などの特殊文字は正しく処理する必要
- エンコード形式:ファイルがUTF-8エンコードを使用することを確保
🚀 使い方
- YAML入力:入力ボックスに処理したいYAMLコンテンツを貼り付け
- 操作選択:「フォーマット」、「検証」、または「圧縮」ボタンをクリック
- 結果確認:出力ボックスで処理後のYAMLを確認
- コピーまたは保存:結果をコピーするか
formatted.yamlとして保存 - エラー修正:エラーヒントに基づいて構文問題を修正
ヒント:このツールはクライアント側でローカル処理を行い、YAMLコンテンツをサーバーにアップロードしないため、データセキュリティが保証されます。