polidog/slack-shellというツールを作った

polidog/slack-shell というツールを作った。 ターミナルからSlackを操作するツール。

なぜ作ったのか?

去年開発環境をMacからOmarchyに移してからマウスを使うことが少なくなってきた。 しかしやっぱりSlackはどうしてもマウス操作をすることが多々ある。

さらに一昨日から分割キーボードを使い始めたら、意外とハマってもっとマウスを触りたくない気持ちが強くなった。 おまけに最近Omarchy使っているとSlackのデスクトップアプリが固まってしまってPCを強制終了することが増えた。

そんなストレスもあって、ターミナルからSlackが見られたらいいよねと思ってVibe Codingで作った。

言語の選択について

特に深い理由があるわけじゃないけど今回はGolangにした。 Rustよりはやはり慣れているし、コードリーディングぐらいならある程度はできるのと、ビルド周りとかいろいろと楽だよなと思った結果Golangにした。

Vibe Codingでも言語を何も知らないときつい

Kilarを作ったときに思ったんだけど、やはりある程度言語の知識がないとなにかトラブルがあったときに辛い。 いやまあOpus4.5になってだいぶ賢いのでそこまで知識がなくてもいけるがやはり拡張性の点でレビューできる言語であったほうがいい。 (いやまあGolangも入門者程度の知識なのでコード見られたら突っ込まれる箇所多そうだけど。。。)

まあそれでもRustよりは読めるのでやはりGolangのほうが開発が楽だ。

slack-shellの紹介

詳しくはREADME.mdまたはREADME.ja.mdに書いてあるので確認してもらえると嬉しい。 といっても簡単に紹介しておく

チャンネル一覧・選択について

1
2
slack-shell 
ptyhard> cd #times-polidog

みたいな感じでslack-shellを実行するとプロンプトが立ち上がるので、そこで cd チャンネル名 とコマンドを打つと、該当のチャンネルに移動する。 ここまでくると一覧を表示するには ls コマンドがあるだろうと想像できると思うし、そのとおり。 ちなみに ls | grep times みたいにチャンネル名を検索することも可能だ。

メッセージを確認する

1
2
3
slack-shell 
ptyhard> cd #times-polidog
ptyhard#times-polidog> live

というかたちでliveコマンドを使うとメッセージの確認や送信ができ、スレッドにも対応している。
他にもただテキストを確認したい場合に cat コマンドも使える

初期設定が意外とめんどくさい

初期設定はそれなりにハードルが高い。

  1. Slackアプリを作成する
  2. 必要な権限を設定する
  3. ワークスペースにアプリをインストールする
  4. 使いたいチャンネルにアプリを招待する

特に4番目がめんどくさい。リアルタイムでメッセージを受信するにはSocketModeを使う必要があり、SocketModeで通知を受け取るにはチャンネルごとにアプリを招待しなければならない。

アプリ作成からインストールまではまだ許容できるけど、各チャンネルへの招待は結構だるい。 そこで各チャンネルにアプリを招待するコマンドも用意した。

1
2
slack-shell
ptyhard> sudo app install

これでパブリックなチャンネルすべてにアプリを招待することができる。
ちなみに引数としてチャンネル名を入れればそのチャンネルのみに招待できるし複数指定することも可能だ。

1
2
slack-shell
ptyhard> sudo app install #general #random

一応すべてのパブリックチャンネルにインストール可能だがSlackConnectで連携しているチャンネルにはインストールされないようになっている。

最後に

ちなみに自分はSlackはMacで表示させて、プロジェクトで必要なチャンネルのみOmarchy側でslack-shellでって形にしてある。 プロジェクトごとにワークスペースを分けているので、slack-shellで必要なプロジェクトのチャンネルを開きっぱなしにしておくと結構快適だったりする。

ほんと思いついたものがぱっと作れるいい時代になったなと思うし、もっと改良を続けていこうと思う。

カテゴリ

comments powered by Disqus