Slack のスニペット機能に関する仕様や挙動を調べた

Slack をテキストストレージとして使いたかったので、仕様や挙動を一通り調べてみた。

スニペットとは

チャンネル内に長いテキストを添付できる。実体はテキストファイル。

新規作成時のパラメーター

基本パラメーター:

  • タイトル(記入式)
  • 記法(選択式、各種言語やMarkdownなどをサポート)
  • 本文(記法に応じてハイライトされる)
    • 折り返し: チェック入れると折り返し表示できる

共有パラメーター:

  • 共有相手チェック(共有を行う場合はチェックを入れる、共有対象は共有相手ボックスにて選ぶ)
  • 共有相手ボックス(共有先となる人やチャンネル名を入れる)
  • メッセージ(共有時に追加でメッセージがあれば書く)

スニペットの公開範囲

「プライベート」属性と「共有」属性がある。

プライベートチャンネルや DM などで共有すると「プライベート」属性。関係者しか見れない。

パブリックチャンネルなどで共有すると「共有」属性。誰でも見れる。

すべてのファイル

スニペット含め全ファイルは その他 > すべてのファイル からアクセスできる。ここには自分が見れるファイル(自分が所属する「プライベート」属性のものと、「共有」属性のもの)が一覧で表示される。

ちなみにスニペット作成時に共有相手を指定しなかった場合は、(どのチャンネルにも投下されていないので)ここからアクセスするしかない(後述する検索で見つけることもできるが)。

パーマリンク

三つある。

Private Rich は「ファイルのリンクをコピー」などでコピーされる URL。アクセスすると Slack 上で当該ファイルを表示・編集できるページが開かれる。

Private Raw は「RAW データを表示」などでアクセスできる。その名のとおり生のデータ。

Public は「外部リンクを作成」などで(URLを)作成できる。これは後で無効にすることもできる。

(SNIPPET-TITLE).(EXT) とは?

スニペットのパーマリンクにはファイル名が含まれる。

ファイル名は「スニペットのタイトル」と「記法」によって一意に決まる。ただし同じタイトルと記法を持つスニペットが重複しても問題はない(以下参照)。

https://(TEAM-NAME).slack.com/files/XXXXXXXXX/XXXXXXXXX/helloworld.py
https://(TEAM-NAME).slack.com/files/XXXXXXXXX/XXXXXXXXX/helloworld.py
                                              ^^^^^^^^^
                                              この辺で違いが出る。

この性質上、後からタイトルや記法を変えると、パーマリンクも変わってしまう ので注意する。

ちなみにファイル名はタイトルから 適宜マスクされるため、タイトルと全く同じ文字列になるわけではない ことにも注意する。特に日本語名。

  • 例: 記法は Markdown、タイトルが「こんにちはworld」とすると、
    • ファイル名は「_____world.md」になる
    • 日本語部分がマスクされている

検索時の挙動

検索結果には「メッセージ」タブと「ファイル」タブがあるが、「メッセージ」タブにはヒットしたメッセージそのものが表示される(のでわかりやすい)。一方、「ファイル」タブにはヒットしたファイルしか表示されない(そのファイル内のどこにヒットしたかまでは表示されない)。

本文がヒットしたとき

「ファイル」タブに検索結果が表示される。

タイトルがヒットしたとき

「メッセージ」タブに検索結果が表示される。

ちなみに検索でヒットさせられるタイトルは スニペットを新規作成したときのタイトルのみ である。あとでタイトルを変えても、変えた後のタイトルではヒットしない。

(提案) スニペットを多数投稿する運用で、各スニペットを検索しやすくしたい場合

これはただの提案なので興味無ければ読み飛ばすこと。

私は「タイトルに検索キーワードをあれこれひっつければ、後で探しやすくなる」と考えたが、上述のとおり、新規作成以後はタイトルを変えてもヒットしてくれない。なので現実的には スレッドとしてタイトルと検索キーワードを並べたメッセージを書いておく のが良いと思う。そうすれば検索時に「メッセージ」タブにヒットしてくれてわかりやすい。