先日のものを少し発展させたものです.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のバージョン : v4.0.1
スポンサーリンク
ダウンロード
ショートカットはこちらからダウンロードしてください.
また今回もBearメモを利用するため識別子が必要です.
初めての方はこちらを見て予めメモを作成し, 識別子を取得してください.
タップ数は増えるけれど…
項目が増えるとどんどん見づらくなるものですが, ある程度カテゴリ分けできるのであればそれに対応することで多少負担は軽減されます.
前回のXML形式のplistでは, シンプルなkeyタグとstringタグの組, あるいは複数の場合にそれをarrayで囲った程度でした.
今回はdictタグも使ってカテゴリに相当する枠を増やします.
フロー
まず始めに予め作成したBearメモの内容を取得します.
今回は若干使用を変更しました, 「次にテキスト」アクションを追加し,plistのテンプレ構文である
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
~指定したBearメモの内容~
</dict>
</plist>
の部分はBearに書かず, この「テキスト」アクション側に直接書き, Bear側はその中身のみ書いておくスタイルです.
これを入力として辞書を作成します, 今回は後述しますが「辞書の中に辞書がある」状態のため"MainDict"と名付けました.
前述の通り, 今回はメインの辞書の値もまた辞書の状態です.
そのため「リストから選択」で選んだキーはいわゆる「カテゴリ」, その値は「カテゴリの辞書」に相当します.
なので後者を「辞書の値を取得」で拾って"SubDict"と名付けます.
SubDictから改めてキー(key)を選択させ, その値(value)を取得すれば必要な処理は完了です.
あとは好みの体裁で表示するだけです.
今回はタイトル(key)と本文(value)を表示したいのと, その後直ぐに他を参照することを兼ねて「結果を表示」でなく「アラートを表示」にしました.
「アラートを表示」で「"キャンセル"ボタンを表示」をオンにすると, キャンセルをタップした場合それ以降のアクションは実行されずショートカットを終了します.
対してOKをタップすると次のアクションへ移動します.
なので「アラートを表示」アクションの次に「ショートカットを実行」アクションで自分自身を呼び出せば, キャンセルしない限り何度も続けられます.
Bear側の構文
フローの初めに書いた通り, 今回はplistの前後のテンプレはテキストアクション側にあるため, Bear側ではその中身だけ書けば良いです.
今回は「辞書を含む辞書」という構造なので注意が必要です.
これまでは
<key>タイトル</key>
<string>値</string>
という形でしたが, 今回は更にカテゴリに相当する部分が必要です.
具体的には上記に「カテゴリ」を加えると
<key>カテゴリ</key>
<dict>
<key>タイトル</key>
<string>値</string>
</dict>
という風に, dictタグで囲み, これを値としてkeyタグを先頭に付けます.
複数入れた場合のイメージは画像のようになります.
これを読み込んでみると, カテゴリ→タイトルと選択して値を表示するのが分かります.
値が配列(array)だった場合は今回の仕様ではシンプルに縦列表示します.
キーと値の区別が付きづらいので括弧を加えるなどの工夫が必要かもしれませんね.
これで自分好みの辞書になります.
必要であれば参照だけでなくクリップボードにコピーするもよし, URLであればブラウザでアクセスするもよし.
〆
実際のところ, やっていることは辞書アクション内でコンテンツを入力して実行することと同じです.
辞書アクションもまた, 値として辞書を選べるので直接書き込めばわざわざBearという外部アプリを介する必要はありません.
ただ辞書アクションのデメリットとして, ここでは改行ができません.
Bearから読み込む場合はタグ内で行った改行がそのまま反映されます.
表示フォームとテキストサイズの問題で大きくは変わりませんが, 万が一文字数が多くなってもダラダラ表示されているよりは多少なりとも改行されていたほうが見やすいですよね.
またショートカット自体の問題として, 肥大化すると動作が不安定になることがあります.
当初から5chなどでも指摘されていましたが現在もあまり期待できないためできるだけショートカット側の負担を避ける意味で一定の価値はあります.
逆に辞書アクションに1万文字2万文字に相当する内容を書いたらどんな挙動になるのか、気になりますが単純にそこまで入れる作業を含めて実験するのは現実的ではありません.
どの道情報量が多い場合は辞書アクションにちまちま入れるのも面倒です.
たったそれだけのためにこの手法を選ぶべきか…と言えば微妙ではありますが, 何か他に良いアイデアを思いつくキッカケくらいにはなるかもしれません.