メタデータ

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 | origin
----------+------------------------------------------
[object] | /home/jonathan/Source/nushell/Cargo.toml
----------+------------------------------------------

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

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

> open Cargo.toml | tags | get span
-------+-----
start | end
-------+-----
5 | 15
-------+-----

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