セットプチフォッカ

勉強したアウトプット、ときどきフォッカチオ作っていました

【ツール】リストをコピーすると、Scrapbox用のリンク/リストに変換してくれるAlfredWorkflowを作る

なんで作ったか

f:id:ikmbear:20211212121719g:plain

QiitaとかZennに投稿されている記事で、「お、このリストいいな。自分のメモにコピペして一つずつ深掘りしていこう!」と思う時があります(「レビュー依頼をする前に見るリスト」とか「転職で聞かれる質問リスト」とか)。

私はメモにScrapboxを使っているのですが、そのままコピペしてしまうと、

  • そもそもリストにならない
  • 各リストごとにページ内リンクとして作成したいが、プレーンテキストにしかならない

という問題があります。

そこで今回は、Alfred Workflowを利用して「リストをコピーすると、Scrapboxのリンク/リストを作成してくれるツール」を作ってみました。

今回作ったもの

LiLink:リストを渡すと、Scrapboxのリンクリストを作成してくれるAlfred Workflow

f:id:ikmbear:20211212122305g:plain

Alfredのメニューから「lilink」と入力することで呼び出せます。スペースを開けてコピーしたリンクを貼り付けると、Scrapboxのリンクかつリスト形式に変換したものをクリップボードに出力します。

f:id:ikmbear:20211212122510p:plain

プラグインについて:以下のプラグインを導入するために、プラグインについて学びます
学習を支えるプラグイン:学習を支える3つのプラグインを紹介します
RubyMineのウィンドウ:RubyMineを開いた時に見える各ウィンドウの名称を整理します

↓(変換)

 [プラグインについて:以下のプラグインを導入するために、プラグインについて学びます]
 [学習を支えるプラグイン:学習を支える3つのプラグインを紹介します]
 [RubyMineのウィンドウ:RubyMineを開いた時に見える各ウィンドウの名称を整理します]

作成過程

ツールの名前を決める

なんでもいいんですが、今後ツールを増やしていくことを考えると、ある程度わかりやすいものがいいです。今回は、ListとLinkを作ってくれるので、「LiLink」にしました。

ドット絵を描く

f:id:ikmbear:20211212122930j:plain

AlfredはWorkflowに対して、任意の画像を設定することができます。

私はドット絵が趣味なので、ドット絵でリストの中黒とリンクのアイコンを合わせたアイコンを作成しました。

ちなみにドット絵はiPaddotpictというアプリで描いています。

Workflowを作る

f:id:ikmbear:20211212123405p:plain

大したスクリプトも書かないので、今回はBlank Workflowに対して一から作成しました。

f:id:ikmbear:20211212123525p:plain

基本的な情報を設定して、

f:id:ikmbear:20211212123602p:plain

引数つきでキーワード「lilink」を受け取るように設定

f:id:ikmbear:20211212123635p:plain

rubyスクリプトを書いていきます。

# 前段の入力をARGVとして受け取る(`with input as argv`)設定なので、これを処理する
query = ARGV[0].split("\n").map { |line| " [#{line}]" }.join("\n")

# 次の処理に渡すために、`query`という名前で出力する
print query

f:id:ikmbear:20211212123832p:plain

クリップボードへのコピーアクションを設定し

f:id:ikmbear:20211212123924p:plain

あとは全部がっちゃんこして完成🎉

おわりに

これくらいのRubyスクリプトなら、適当に作ってコマンド置き場に設置してもいいんですが、

  • 標準入出力をAlfredが担ってくれるので、ロジックだけ書けばいい
  • アイコンや説明がつくので、コマンドを実行する時に思い出しやすい
  • ターミナルを開かなくていい

という利点があるので、AlfredWorkflowとして作るのもありだな〜と思いました。