statistics visualize

Description

生産量や生産性に関するCSVファイルやグラフを出力します。

出力結果から主に以下のことが分かります。

  • 生産量や生産性の日ごとの推移

  • ユーザごとの生産性と品質

Examples

基本的な使い方

出力対象のプロジェクトのproject_idを指定してください。複数のプロジェクトを指定することも可能です。

$ annofabcli statistics visualize --project_id prj1 --output_dir out_dir

集計対象のタスクの条件を --task_query で指定してください。

$ annofabcli statistics visualize --project_id prj1 --output_dir out_dir
--task_query '{"status": "complete"}'

注釈

できるだけ正しい生産性を求める場合は、--task_query '{"status": "complete"}' を指定して、完了状態のタスクのみを集計対象としてください。 デフォルトでは完了状態でないタスクも「生産した」とみなします。

集計期間も指定できます。--start_date は、指定した日付以降に教師付を開始したタスクを集計します。--end_date は、指定した日付以前に更新されたタスクを集計します。

$ annofabcli statistics visualize --project_id prj1 --output_dir out_dir \
--start_date 2020-04-01

デフォルトでは10個以上のファイルを出力します。よく利用するファイルのみ出力する場合は、 --minimal を指定してください。

$ annofabcli input_data put --project_id prj1 --output out_dir/
--minimal

実績作業時間情報から生産性を算出する

デフォルトではアノテーションエディタ画面を触っていた作業時間(以下、「計測作業時間」と呼ぶ)を元に、生産性を算出します。 計測作業時間はコミュニケーションしている時間やアノテーションルールを読んでいる時間を含みません。 したがって、計測作業時間から算出した生産性を元にアノテーションの生産量を見積もると、見積もりから大きく外れる恐れがあります。

アノテーションの生産量を見積もる場合は、アノテーションエディタ以外の作業も含めた作業時間(以下、「実績作業時間」と呼ぶ)で生産性を算出することを推奨します。 実績作業時間から算出した生産性を出力するには、実績作業時間が記載されたCSVを --labor_csv に渡してください。

$ annofabcli input_data put --project_id prj1 --labor_csv labor.csv \
--output out_dir/

以下、実績作業時間が記載されたCSV( labor.csv )のサンプルです。

date

account_id

actual_worktime_hour

project_id

2021-04-01

12345678-abcd-1234-abcd-1234abcd5678

8

prj1

2021-04-02

12345678-abcd-1234-abcd-1234abcd5678

6.5

prj1

複数のプロジェクトをマージする

--project_id に複数のproject_idを指定したときに --merge を指定すると、指定したプロジェクトをマージしたディレクトリも出力します。ディレクトリ名は merge です。

$ annofabcli input_data put --project_id prj1 prj2 --output out_dir/
--merge

並列処理

--project_id に複数のproject_idを指定したときは、並列実行が可能です。

$ annofabcli input_data put --project_id file://project_id.txt --output out_dir/
--parallelism 4

出力結果

1個のプロジェクトを指定した場合

$ annofabcli statistics visualize --project_id prj1 --output_dir out_dir --minimal

out_dir

out_dir
├── histogram
│   ├── ヒストグラム-作業時間.html
│   └── ヒストグラム.html
├── project_info.json
├── line-graph
│   ├── 教師付者用
│   │   └── 累積折れ線-横軸_アノテーション数-教師付者用.html
│   ├── 受入者用
│   │   └── 累積折れ線-横軸_アノテーション数-受入者用.html
│   ├── 折れ線-横軸_教師付開始日-全体.html
│   ├── 折れ線-横軸_日-全体.html
│   ├── 累積折れ線-横軸_日-縦軸_作業時間.html
│   └── 累積折れ線-横軸_日-全体.html
├── scatter
│   ├── 散布図-アノテーションあたり作業時間と品質の関係-計測時間-教師付者用.html
│   ├── 散布図-アノテーションあたり作業時間と累計作業時間の関係-計測時間.html
│   ├── 散布図-アノテーションあたり作業時間と品質の関係-実績時間-教師付者用.html
│   ├── 散布図-アノテーションあたり作業時間と累計作業時間の関係-実績時間.html
│   └── 散布図-教師付者の品質と作業量の関係.html
├── タスクlist.csv
├── メンバごとの生産性と品質.csv
├── ユーザ_日付list-作業時間.csv
├── 教師付開始日毎の生産量と生産性.csv
├── 全体の生産性と品質.csv
└── 日毎の生産量と生産性.csv

複数のプロジェクトを指定した場合

$ annofabcli statistics visualize --project_id prj1 prj2 --output_dir out_dir --minimal

プロジェクトごとにディレクトリが生成されます。

out_dir/
├── prj_title1
│   ├── タスクlist.csv
│   ├── メンバごとの生産性と品質.csv
│   └── ...
├── prj_title2
│   ├── タスクlist.csv
│   ├── メンバごとの生産性と品質.csv
│   └── ...

--merge を指定した場合

$ annofabcli statistics visualize --project_id prj1 prj2 --output_dir out_dir --minimal \
--merge

prj1とprj2の出力結果をマージしたファイルが、merge ディレクトリに出力されます。

out_dir/
├── prj_title1
│   ├── タスクlist.csv
│   ├── メンバごとの生産性と品質.csv
│   └── ...
├── prj_title2
│   ├── タスクlist.csv
│   ├── メンバごとの生産性と品質.csv
│   └── ...
├── merge
│   ├── タスクlist.csv
│   ├── メンバごとの生産性と品質.csv
│   └── ...

Usage Details

生産性に関するCSVファイルやグラフを出力します。

usage: annofabcli statistics visualize [-h] [--yes]
                                       [--endpoint_url ENDPOINT_URL]
                                       [--annofab_user_id ANNOFAB_USER_ID]
                                       [--annofab_password ANNOFAB_PASSWORD]
                                       [--logdir LOGDIR] [--disable_log]
                                       [--debug] -p PROJECT_ID
                                       [PROJECT_ID ...] -o OUTPUT_DIR
                                       [-u USER_ID [USER_ID ...]]
                                       [-tq TASK_QUERY]
                                       [-t TASK_ID [TASK_ID ...]]
                                       [--start_date START_DATE]
                                       [--end_date END_DATE] [--latest]
                                       [--get_task_histories_one_of_each]
                                       [--labor_csv LABOR_CSV] [--minimal]
                                       [--output_only_text] [--merge]
                                       [--parallelism PARALLELISM]

Named Arguments

-p, --project_id

対象のプロジェクトのproject_idを指定してください。複数指定した場合、プロジェクトごとに統計情報が出力されます。 file:// を先頭に付けると、project_idが記載されたファイルを指定できます。

-o, --output_dir

出力先ディレクトリのパスを指定してください。

-u, --user_id

メンバごとの統計グラフに表示するユーザのuser_idを指定してください。指定しない場合は、上位20人が表示されます。 file:// を先頭に付けると、一覧が記載されたファイルを指定できます。

-tq, --task_query

タスクの検索クエリをJSON形式で指定します。指定しない場合はすべてのタスクを取得します。 file:// を先頭に付けると、JSON形式のファイルを指定できます。クエリのキーは、task_id , phase , phase_stage , status のみです。

-t, --task_id

集計対象のタスクのtask_idを指定します。 file:// を先頭に付けると、task_idの一覧が記載されたファイルを指定できます。

--start_date

指定した日付( YYYY-MM-DD )以降に教師付を開始したタスクから生産性を算出します。

--end_date

指定した日付( YYYY-MM-DD )以前に更新されたタスクから生産性を算出します。

--latest

統計情報の元になるファイル(アノテーションzipなど)の最新版を参照します。このオプションを指定すると、各ファイルを更新するのに5分以上待ちます。 ただしWebAPIの都合上、'タスク履歴全件ファイル'は最新版を参照できません。タスク履歴の最新版を参照する場合は --get_task_histories_one_of_each を指定してください。

--get_task_histories_one_of_each

タスク履歴を1個ずつ取得して、タスク履歴の最新版を参照します。タスクの数だけWebAPIを実行するので、処理時間が長くなります。

--labor_csv

実績作業時間情報が格納されたCSVを指定してください。指定しない場合は、実績作業時間は0とみなします。列名は以下の通りです。

  • date

  • account_id

  • actual_worktime_hour

  • project_id (optional: --project_id に複数の値を指定したときは必須です)

--minimal

必要最小限のファイルを出力します。

--output_only_text

テキストファイルのみ出力します。グラフが掲載されているHTMLファイルは出力しません。

--merge

指定した場合、複数のproject_idを指定したときに、マージした統計情報も出力します。ディレクトリ名は merge です。

--parallelism

並列度。 --project_id に複数のproject_idを指定したときのみ有効なオプションです。指定しない場合は、逐次的に処理します。

global optional arguments

--yes

処理中に現れる問い合わせに対して、常に yes と回答します。

--endpoint_url

Annofab WebAPIのエンドポイントを指定します。

Default: "https://annofab.com"

--annofab_user_id

Annofabにログインする際のユーザーID

--annofab_password

Annofabにログインする際のパスワード

--logdir

ログファイルを保存するディレクトリを指定します。

Default: .log

--disable_log

ログを無効にします。

--debug

HTTPリクエストの内容やレスポンスのステータスコードなど、デバッグ用のログが出力されます。

アノテーションユーザまたはオーナロールを持つユーザで実行してください。