Dasel v3によるデータ探索
<when_to_use>
このスキルは以下の場合に有効です:
- 見慣れない構造化データファイル(設定、APIレスポンス、データセット)を探索する場合
- ドキュメントを変更する前にそのスキーマや形状を発見する場合
- ネストされた設定構造(Kubernetesマニフェスト、CIパイプライン、パッケージファイル)を調査する場合
- 大きな配列や深くネストされたオブジェクトをサンプリングして内容を理解する場合
- 変換や抽出の前にデータ型を特定する場合
</when_to_use>
サポートされている形式
Daselはファイル拡張子から形式を自動検出します。標準入力から読み込む場合や拡張子が曖昧な場合は、-i <format> でオーバーライドします。
形式識別子: json、yaml、toml、xml、csv、hcl、ini
汎用探索ワークフロー
未知の構造化データファイルに遭遇した場合は、以下の順序に従ってください。各ステップで範囲が狭まります。
ステップ1 — 形式検出
Daselはファイル拡張子から形式を推測します。標準入力や非標準の拡張子の場合は、明示的に指定します:
cat mystery_file | dasel -i json 'keys($this)'
ステップ2 — トップレベルのキー
cat config.yaml | dasel -i yaml 'keys($this)'
出力:トップレベルのキー名の配列。これは常に最初の探索コマンドです。
ステップ3 — 構造プレビュー
小さなファイル(設定、マニフェスト)の場合は、ドキュメント全体をダンプします:
cat config.yaml | dasel -i yaml
大きなファイルの場合は、ステップ4に進みます。
ステップ4 — ネストされたキーの発見
階層を1レベルずつ移動します:
cat config.yaml | dasel -i yaml 'server'
cat config.yaml | dasel -i yaml 'keys(server)'
cat config.yaml | dasel -i yaml 'keys(server.logging)'
すべての深さでの再帰的なキー発見:
cat config.yaml | dasel -i yaml '..keys($this)'
ステップ5 — 配列のサンプリング
配列全体をロードせずに最初の数要素をプレビューします:
cat data.json | dasel -i json 'items[0:3]'
単一要素の検査:
cat data.json | dasel -i json 'items[0]'
ステップ6 — 型検査
任意のノードの型を特定します:
cat data.json | dasel -i json 'typeOf(settings)'
cat data.json | dasel -i json 'typeOf(items[0].count)'
戻り値:"string"、"array"、"bool"、"null"、"int"、"float"
ステップ7 — 値の抽出
パスがわかったら、特定の値を抽出します:
cat config.yaml | dasel -i yaml 'database.connection.host'
cat data.json | dasel -i json 'users[0].email'
探索パターン
幅優先探索
ルートから開始し、深く進む前に各レベルのキーを列挙します:
cat file.json | dasel -i json 'keys($this)' # レベル0
cat file.json | dasel -i json 'keys(metadata)' # レベル1
cat file.json | dasel -i json 'keys(metadata.labels)' # レベル2
検索ベースの探索(大規模ファイル)
ファイルが手動で探索するには大きすぎる場合、search() を述語とともに使用します:
# 特定のキーを含むすべてのオブジェクトを検索
cat data.json | dasel -i json 'search(has("email"))'
# "id" と "name" キーの両方を持つすべてのオブジェクトを検索
cat data.json | dasel -i json 'search(has("id") && has("name"))'
# 値が一致するノードを検索
cat data.json | dasel -i json 'search($this == 42)'
要素数のカウント
cat data.json | dasel -i json 'len(items)'
cat data.json | dasel -i json 'len(keys($this))'
一意な値の発見
すべての配列要素からフィールドを抽出し、シェルで重複を排除します:
cat data.json | dasel -i json 'items.map(category)' | dasel -i json '$this...' | sort -u
再帰的降下
任意の深さのキー名に対するすべての値を見つけます:
cat data.json | dasel -i json '..name'
すべてのネストされた配列の最初の要素を取得します:
cat data.json | dasel -i json '..[0]'
形式固有のレシピ
形式ごとの詳細な探索コマンドについては、形式固有のレシピ を参照してください。
参考文献
- Dasel v3 ドキュメント (2026-02-19取得)
- Dasel 関数インデックス (2026-02-19取得)
- Dasel GitHub リポジトリ (2026-02-19取得)