メタデータ

Nu を使用していると裏でなにか特別なことがおきているのではないかと思うことがあるでしょう。例えば、Nu がサポートしているファイル形式を忘れていて、余計に変換しようとしてしまったとしましょう。

> open Cargo.toml | from toml
error: Expected a string from pipeline
- shell:1:18
1 | open Cargo.toml | from toml
  |                   ^^^^^^^^^ requires string input
- shell:1:5
1 | open Cargo.toml | from toml
  |      ---------- object originates from here

エラーメッセージは、from tomlに渡したものが文字列ではなかったことだけではなく、元の値がどこから来たかも示しています。どうやってこれを知るのでしょうか。

Nu のパイプラインを流れる値には、多くの場合、メタデータと呼ばれる一連の追加情報が付加されます。これらはストアにあるアイテムにつけられているタグのようにタグと呼ばれています。これらのタグはデータには影響しませんが、データを操作する際の体験を向上させます。

もう一度openコマンドを実行してみましょう、ただし今回は、返されるタグを確認します。

> open Cargo.toml | tags
────────┬───────────────────────────────────────────
 span   │ [row end start]
 anchor │ /home/jonathant/Source/nushell/Cargo.toml
────────┴───────────────────────────────────────────

現在、パイプライン上の値について2つのメタデータを追跡しています。このデータがどこから読み込まれたかをしめす anchor があることに気づくでしょう。これにより Nu はデータの表示方法をよりよく理解できるのです。

今度は span をみてみましょう。

> open Cargo.toml | tags | get span
───────┬────
 start │ 5
 end   │ 15
───────┴────

ここでの"start"と"end"の span は下線が行のどこにあるのかを示しています。5 から 15 まで数えてみるとそれが"Cargo.toml"ファイル名と一致することがわかるでしょう。このようにして、さきほどみたエラーはどこに下線をひくべきかをしったのです。