タスクのメタデータ

タスクにはKey-Value形式のメタデータを付与できます。メタデータの値には、文字列、数値、真偽値を設定できます。タスクIDでは表現できない情報を格納するのに便利です。また、タスクのメタデータは以下の機能で利用されます。

  • タスクの絞り込み
  • タスクの割り当て

📘

タスクのメタデータは、ダウンロードしたアノテーションZIP内のJSONには含まれません。

メタデータの利用例

  • どの国で撮影した画像が含まれているタスクか:{"country":"japan"}, {"country":"china"}
  • アノテーションルールのどのバージョンで作業したか(アノテーションルール変更前に作業したタスクと、変更後に作業したタスクを区別したい場合):{"rule_version":1}, {"rule_version":2}
  • タスクを作業する際の優先順位(プロジェクト設定画面のタスクの割当方法で優先順位に対応するメタデータのキーを設定する想定):{"priority":10}, {"priority":20}
  • 不鮮明な画像が含まれているタスクか:{"is_blurred":true}

メタデータの編集

タスク一覧画面のハンバーガーメニューの「メタデータを編集」を選択すると、メタデータの編集エディタが開きます。メタデータの入力方法は、「ツリーモード」と「コードモード」の2つのモードがあります。

📘

メタデータを編集できるロール

「プロジェクトオーナー」または「アノテーションユーザー」ロールを持つメンバーのみ、メタデータを編集できます。

🚧

メタデータを編集すると、タスクの最終更新日時は更新されます。タスクの最終更新日時は、アノテーション作業以外でも更新されることに注意してください。

ツリーモード

マウスで操作しながらメタデータのキーと値を編集します。

メタデータの編集エディタ(ツリーモード)

メタデータの編集エディタ(ツリーモード)

メタデータの値の型は自動で決まります。たとえば、メタデータの値に1を入力すると数値型になります。文字列型"1"を入力するには、左側の操作メニューを開き「型 → 文字列」を選択してください。

ツリーモードの操作メニュー

ツリーモードの操作メニュー



コードモード

JSONを直接入力してメタデータを編集します。

メタデータの編集エディタ(コードモード)

メタデータの編集エディタ(コードモード)

複数のタスクに対してメタデータを編集

タスク一覧画面で複数のタスクを選択して、「メタデータを更新」ボタンを押すと、選択したタスクに対して入力したメタデータを設定することができます。

🚧

「メタデータを更新」ボタンを押してメタデータを設定した場合、すでに設定されているメタデータは削除されます。

たとえばタスクAにメタデータ{"a":1}が設定されているとします。タスクAを選択して「メタデータを更新」ボタンを押し、メタデータ編集エディタで{"b":2}を設定すると、タスクAのメタデータは{"b":2}になり、{"a":1}という情報は削除されます。

annofab-cliでメタデータを編集

複数のタスクに対してメタデータを設定する場合は、annofabcli task update_metadata コマンドが便利です。すでに設定されているメタデータを削除せずに、新しいメタデータを追記することができます。

# タスクAにはメタデータ'{"a":1}'が設定されている
$ annofabcli task list --project_id prj1 --task_id task-A --format json | \
jq '[.[] | {task_id,metadata}]'
[
    {
        "task_id": "task-A",
        "metadata": {
            "a": 1
        }
    }
]

# タスクAのメタデータに'{"b":2}'を追記する
$ annofabcli task update_metadata --project_id prj1 --task_id task-A \
 --metadata '{"b":2}'

# タスクAのメタデータは'{"b":2}'になる
$ annofabcli task list --project_id prj1 --task_id task-A --format json | \
jq '[.[] | {task_id,metadata}]'
[
    {
        "task_id": "task-A",
        "metadata": {
            "a": 1,
            "b": 2
        }
    }
 ]


メタデータによるタスクの絞り込み

タスク一覧画面の「メタデータ」テキストボックスに検索クエリを入力すると、メタデータを条件にタスクが絞り込まれます。

メタデータの検索クエリの例を以下に記載します。

~に等しい

  • priority:5:priorityが5(数値)に等しい
  • assignable:true:assignableがtrue(真偽値)に等しい
  • country:japan:countryがjapana(文字列)に等しい

~に等しくない

先頭にマイナス記号(-)を付けます。

  • -priority:5:priorityが5(数値)に等しくない
  • -assignable:true:assignableがtrue(真偽値)に等しくない
  • -country:japan:countryがjapana(文字列)に等しくない

📘

先頭にマイナス記号(-)を付けると、該当のキーが設定されていないタスクも絞り込み対象になります。たとえばタスクAとタスクBのみ存在するプロジェクトで、タスクAのみメタデータ{"assignable":true}が設定されているとします。-assignable:trueでタスクを絞り込むと、検索結果にはタスクBが表示されます。

~より大きい / ~より小さい

  • priority:>1:priorityが1より大きい
  • priority:<100:priorityが100より小さい

~以上 / ~以下

  • priority:>=1:priorityが1以上
  • priority:<=100:priorityが100以下

AND条件

複数の検索条件を半角スペースで区切ります。

  • priority:>=1 priority:<=100:priorityが1以上 AND priorityが100以下
  • priority:>=1 assignable:true:priorityが1以上 AND assignableがtrue

メタデータの閲覧

Annofabの画面では、メタデータの編集エディタでしかメタデータを閲覧できません。複数タスクのメタデータを閲覧する場合は、annofabcli task list コマンドまたはannofabcli task list_all コマンドを利用する必要があります。

$ annofabcli task list --project_id prj1 --format json |
    jq '.[] | {task_id,metadata}'
[
    {
        "task_id": "task1",
        "metadata": {
            "country": "japan",
            "priority": 2,
            "rquired": true
        }
    },
    {
        "task_id": "task2",
        "metadata": {
            "country": "china",
            "priority": 5,
            "rquired": false
        }
    },
    ...
]