在庫管理を行うアプリはApp Storeにたくさんありますが、代わりにショートカットとData Jarで作ってみます.
Data JarはActionsなどと同様ショートカットを補助するアプリのひとつで、名前の通りデータの扱いに特化しています.
日本語には対応していませんがデータクリアできない標準メモやファイルを作るのに一手間かかるファイルアプリなどと違ってデータの追加や編集、削除が容易に行えます.
データはJSONとして扱うことになります.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS17.4.1
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
スポンサーリンク
「辞書」アクションの性質を使う
「辞書」アクションは、アクションそのものを入力として「リストから選択」を行うと選択肢にキーとその値も一緒に見ることができます.
これを利用してみます.
Data Jarに項目を追加しておく
レシピを作る前に、在庫管理したい項目をあらかじめData Jarに追加しておきます.
Data Jarは全体がJSONの構造を持っているため、特定のデータとして取り出すにはメインとなるキーを用意し、内容に応じて値の構造が確定します.
今回は在庫となる項目とその値(value)、そして単位(unit)を分けて管理することにします.
なので上の画像のように作ることになります.
Data Jarのアプリを開き、トップページ(Store)の"Add Value"か画面右上の+アイコンをタップします.
種類は"Dictionary"にし(①)、"Key"の項目にメインとなるキー(②)の文字列を書いて"Save"をタップします.
これで指定のキーによるデータの型ができました.
この中に在庫管理する各種項目とその内容を書き込みます.
"Add Value"または+ボタンをタップします.
種類は"DIctionary"にし(①)、キーには項目となる文字列(画像はリンゴ)を入れ(②)、"Save"をタップします(③).
これで項目をキーとする辞書ができたのでタップして(④)valueやunitの値を入れていきます.
valueやunitという文字列は好みで決めてください.
まずは実際の量や個数となる値valueからです.
種類を"Number"にし、キーに"value"と書いて"Value"に適当な数を入れて"Save"します.
同じように項目直下に単位となる組を追加します.
種類は"Text"、キーには"unit"、値は項目に合った文字列を入れます(リンゴなら例えば"個").
これでひとつの項目に対する情報が揃いました.
同じように他の項目も追加していきます.
メインキーから見て画像のようになっていればOKです.
在庫管理レシピ1
上で作ったData Jarのデータを利用して実際にレシピを作ってみます.
各項目を選択し、「入力を要求」で上書きする仕様にします.
まず内部処理用の辞書変数dictを空の状態で設定しておきます.
一度作ったらこの「変数を設定」は削除しても動作します.
続いてData Jarの"Get value"アクションで先程作った在庫管理データを読み込みます.
"Get value"の"Key Path"の部分にメインキーの文字列を書き込むことでその値が出力されます.
今回はその値は各項目をキーとする辞書になっています.
扱いやすくなるように、取り出した値(辞書)のキーに対して「ファイルにフィルタを適用」アクションで昇順に並び替えしておきます.
オプションは特に弄る必要はありません.
並び替えた辞書のキーに対して、そのキーを改めてキーとし、valueとunitをくっつけたものを値とする辞書を新規に作成し、先程用意した変数dictに置きます.
上で作った辞書dictに対して「リストから選択」でひとつ選ばせます.
このアクションでのメニューの仕様は最初に紹介した通りだと在庫管理の項目をメインに、その下に小さく値(value)と単位(unit)が書かれているわけです.
続いて「入力を要求」で更新したい値を入力させます.
様々な単位を想定し、オプションは以下にしておきます.
- デフォルトの数字:空のまま
- 小数点以下の数字を許可:オン
- 負の数字を許可:オフ
せっかくなのでプロンプトに選択中の項目の現在の情報を書いておくのもいいですね.
「選択した項目」はそのままだとdictの値を返すのですが、タップして「種類」を「名前」にすると項目名の方を出力できます.
最後にData Jarの"Set value"アクションで選択した項目のvalueを「入力を要求」の値に上書きします.
ここで特定の値は例えばキー"a"の値"b"に対して
a.b
と半角のドットを使うことで指定できます.
実際にはメインキーから指定することになるので今回例えばメインキー"inbentory0"直下の"りんご"キーの値"value"を指定したい場合は
inventory0.りんご.value
となります.
ただし"りんご"の部分はリストから選択したときの結果なのでマジック変数で指定し、更に「種類」を「名前」にする手間があります.
つまりキーや値にドットを使うとデータの取り出しや書き込みがうまくいかなくなるおそれがあるので控えてください.
オプションは以下にしておきます.
- Store value as:Automatic、値を自動保存します
- Overwrite:Yes、上書きします
- Filename:空のままにします
実際に操作してみると、上書きした後に実行することでちゃんと値が書き換わっていることがわかります.
在庫管理レシピ2
在庫管理の基本的な仕組みは上のレシピで十分ですが、このままだとそのデータがいつ更新されたかがわかりません.
なので最終更新の情報も追加してみます.
前回は項目に対してvalue、unitの2つでしたがこれにタイムスタンプとして"time"も加えます.
種類は"text"で十分でしょう.
中身は空の状態ですべての項目に追加します.
レシピを組んでみます.
前回同様、Data Jarから該当データを取り込んでキーを並び替えます.
並び替えたキーに対してリストから選択させるための新しい辞書dictを作るのですが、前回は値がvalueとunitのみでしたがここにタイムスタンプとなるキーtimeの値を追加します.
それ以外は構造は同じです.
こうして作った辞書dictを前回と同じく「リストから選択」でひとつ選ばせ、「入力を要求」で新しい値を"Set value"で自動上書き保存します.
更に"Set value"を追加し、今度は指定項目の"time"キーにタイムスタンプを上書き保存します.
オプションはvalueの時と同じで大丈夫です.
日付のフォーマットは見やすい程度にしたほうがいいかもしれません.
分単位、秒単位で記録したい場合は日付の出力のタイミングはこのアクションと同じかその直近(画像)にします.
少なくとも操作でモタつく可能性のある「入力を要求」の後にする必要があります.
これでタイムスタンプ付きの在庫管理として使えます.
タイムスタンプの値が空のときの見栄えはひと手間かければ消すこともできます.
〆
今回は(これでも)必要最低限です.
一定の日時を超えたら注意喚起するアイコンを加えたり、オートメーションと組み合わせて更新を促すのも良さそうですね.