0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

定常的な作業のチェックリストを確認するためのAlfred Workflowを作成する

Posted at

TL;DR

定常的な作業の実施確認のためのチェックリストをAlfred Workflowで作成しました。
ezgif.com-gif-maker.gif

ダウンロード
ソースコード・使い方

本文

デスクワークは日々同じ作業をするということが多いと思います。しかし、同じ作業だからこそ惰性でやってしまいミスをする。また、うっかり行うのを忘れてしまうということがあると思います。

そのための手軽なチェックリストとしてFlight ChecklistsというAlfred Workflowを作成しました。
機能は以下の通りです。

  1. continue: 前回のchecklistデータを読み込み、続きから確認を再開する。
  2. checklists: checklistsを読み込み、初めから確認を行う。
  3. make: checklistを作成する。~/Documents/checklists上でvimが起動する。
  4. clean: 実行途中のchecklistデータを削除する。

使用例は上記のgifをご参照ください。
今回は以下のWorkflowの全体像のうちのいくつかを説明します。
スクリーンショット 2021-06-13 14.25.46.png

①Workflowのトリガー

ここでは、AlfredからWorkflowへの入り口の部分を説明します。

ここでやっていることは以下の3点です。

  1. Keywordトリガー (今回は「flight」で起動)
  2. Script Filterアクション(機能を選択する)
  3. Conditionalで選択された機能を呼び出す

今回は4つの機能の選択を表示するため、Script Filterでは以下のようなJSONをpythonで出力しています。

Script_filter(python)
import sys
import json

options = {"items": [
            {"title": "continue", "arg": ""},
            {"title": "checklists", "arg": "txt"},
            {"title": "make", "arg": "make"},
            {"title": "clean", "arg": "clean"}
        ]}

print(json.dumps(options))

ここで、"title"はメニューに表示する文字列であり、"arg"が次のConditionalに渡す値です。
Script Filterで選択された値をConditionalで分岐させ、それぞれの機能を動作させます。
次以降の節で、それぞれの機能の記述について説明します。

②キャッシュをクリアする

clean機能の記述について説明します。
clean機能は、チェックリストの確認途中でAlfredを閉じた場合に残るキャッシュをクリアするために用います。
内部では、④,⑤のchecklists機能で使用するキャッシュデータをクリアしています。

ちなみに、やりかけのチェックリストがある状態でchecklists機能を新たに実行すると、選択されたチェックリストでキャッシュが上書きされて、正常に新たなチェックリストを実行できます。
つまり、clean機能はその名の通り、キャッシュが残っている状態が心地良くないと感じる人の心をクリーンにするための機能です。

③チェックリストを作成する

ここでは、make機能の記述について説明します。
Flight Checklistsでは以下のtxtファイルでチェックリストを作成することを前提にしています。

txt
* 必須のチェック要素。
- 任意のチェック要素。

...[以下上記2点のどちらかの繰り返し]
例:使用例のチェックリストの記述
foo.txt
* タイマー
* 打刻
* 瞑想
- あいさつ

上記のような、txtファイルを指定のディレクトリで作成することで、チェックリスト確認を実行するchecklistsや確認を再開するcontinue機能でチェックリストを読み込めます。

フォーマットをある程度指定されているので、専用のエディタという選択肢もありますが、
今回はvimを指定のディレクトリで起動させるTerminal Commandアクションを用いました。

Terminal_Command(zsh)
mkdir ~/Documents/checklists

cd ~/Documents/checklists

vim

④, ⑤チェックリストを実行する

ここでは、checklists機能の記述について説明します。
checklistsは、以下の様なフローです。

  1. File Filterで指定のディレクトリ以下のtxtファイル一覧を表示する
  2. 選択されたtxtファイルの情報をWorkflowのキャッシュに書き込みする
  3. Call Externalself.selectCheckを呼び出す
  4. Script Filterでキャッシュのチェックリストを表示する
  5. 4で選択されたチェック要素について、キャッシュの情報を書き換える。
    • また、必須の要素について全て実行済みステータスになっているか判定する
  6. 全て終わっていない → 4に戻る
    • 終わっている → キャッシュをクリアし、完了の通知を出す

今回作成したWorkflowのキモは3~5のループです。Externalの呼び出しにより、ループの処理を記述しております。

キャッシュに関しては、以下の公式ページを参考にファイルを作成し、そのパスを環境変数として定義しています。
https://www.alfredapp.com/help/workflows/script-environment-variables/

キャッシュの中身は、元のtxtファイルとほぼ変わりません。
実行済みのチェック要素に関して、行頭の記号を変更し、チェックリストの末尾にずらす操作を 5. で行なっています。

continue機能

今まで言及していなかったcontinue機能についても少し説明します。
continue機能とは、確認途中で一旦Alfredを閉じた際に、再度途中から再開する機能です。
キャッシュに必須項目が残っている場合、上のフローの 4. から再開します。
残っていない場合は、WorkflowのトリガーのScript Filterに遷移します。

おわりに

手軽に定常的な作業のチェックリストを確認できるWorkflow Flight Checklistsについて説明をしました。
ぜひ、使っていただければ幸いです。もし改良されたい方はプルリクやissueをお待ちしております。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?