Empowered by expect

希望は体力

Zulipはいいぞ

tl;dr

Slackとここが違って良いです
・スレッドに名前を付けて個別に選択できる
・"すべてのメッセージ"画面でひとつのTLとして読める


チャット系ツールとしてZulipを長いこと使っています。「Zulipはいいぞ」と一言つぶやいてばかりなのも生産的ではないので一度まとめておきます。

概要

Zulipはひとことで言うとSlack競合のチャットツールです。
github.com
zulip.com
オープンソースGitHub上に公開されていてセルフホストが可能です。またSaaSサービスも提供されています。
元々はステルス段階のスタートアップだったのををDropboxが買収し、オープンソース公開したりスピンオフで再分離したりを経て現在はKandra Labsを中心に開発とサービスが行われています。
お気に入りのツールなのであらためてご紹介いたします。

昔話

私は2016年にそれまで使っていたLet's Chatからの乗り換えで使い始めました。
当時オープンソースのチャットツールではZulipの他にMattermost、Rocket.Chatを検討候補としました。

Zulipにしたのはコミュニティの反応の良さでした。
当時「日本語検索ができないけど何か設定漏れてるかしら?」とぼんやりしたイシューを投げました。
「Postgresのdictionaryファイル差し替えないといけないね」とすぐにお返事いただき、「マジか..Postgres分かんねー..」とメソメソしていました。

ちょうどその頃PGroongaの勉強会があったので、「こんなやりとりしてたけどPostgres分からなすぎるので学びに行きますっ」と申し込んだのですが、なんと
github.com
PGroonga作者様が全文検索機能をZulipに実装してくださるというミラクル!うおおおーすげえー @ktou さんかっけー
というわけでZulipは /etc/zulip/settings.py に USING_PGROONGA = True を設定して manage.py を実行するだけでPGroonga検索が有効になります。
zulip.readthedocs.io

Zulipのここが良い

(1)全文検索が強い

前述の通りです

(2)Home TL画面がある

参加しているすべてのストリーム(Slackで言うチャンネル)を時系列に表示した"すべてのメッセージ"画面があります。
新しい物が下に表示されるという点を除けば、ツイ廃のみなさまがいつも見ている画面と同じ感じです。各チャンネルを選択して回るのが面倒な方にオススメです。

(3)スレッドがメールのように見やすい

各ストリームの中でさらにもう一階層"トピック"という分類ができます。スレッドに名前を付けて管理できます。
サイドバーにも各ストリームの下にトピック一覧が表示されていて選択表示できます。
Slackのスレッド表示が苦手な方にはイチオシの機能です。

"トピック1"を選択した状態


(4)自動リンクが地味に便利

特定のパターンを検知して自動的にリンクに変換する機能があります。
設定画面で表示されている下記画像の例では #の後に数字を書くとGitHubのIssueにリンクされます。

チケット番号やCVE番号に用いていますがとても便利です。

(5)Botが作りやすい

HubotのZulipコネクタがあるのでHubotでBot作成ができます。
また、zulip_botsという独自のフレームワークもありお手軽にbotを生み出せます。
https://zulip.com/api/running-bots

(6)Botだけでなく多様な連携

https://zulip.com/integrations/

これはイマドキ当然ですかね。様々なツールと連携できます。私はHubot以外にメールとRedmineとZabbix、GoCDなどと連携させたことがあります。

OSSコミュニティに便利な機能

Rust言語のコミュニティがZulipをヘビーに使用されていて参考になります。
https://rust-lang.zulipchat.com/

(日本語コミュニティ)
https://rust-lang-jp.zulipchat.com/

OSSコミュニティに向いている機能として以下が挙げられます。一言で言うとDiscourseっぽいことができます。

・ストリーム毎にパブリック公開設定が可能

https://zulip.com/help/public-access-option

SlackなどのWalled Gardenな環境は検索からアクセスできないので、OSSプロジェクトの場合は過去の質問や検討を追うためにログインしなければならないという状況があります。(最近は90日以上前のやりとりは隠されるという状況もあります)
メーリングリストの書庫をウェブで公開していた時代よりも情報の検索アクセス性が劣るというのは残念なので、Q&Aやリリースのお知らせなどを公開できるというのは良いと思います。

・トピックを解決済みにマークできる

https://zulip.com/help/resolve-a-topic


トピック(スレッド)に解決済みのマークを付けることができます。
Q&Aやバグ修正の対応に便利です。
またトピックにメールの件名をそのまま用いることでMLのスレッド管理代わりに用いることもできます。
この機能は応用して問い合わせ管理の業務にも使えます。

ZulipはOSSプロジェクト向け無償オファーがあります。
zulip.com

気を付けたいところ

(1)インストールはまっさらな環境で行うべし

https://zulip.readthedocs.io/en/stable/production/install.html

動作環境のページにも書かれていますが、Zulipのインストーラーはサーバー上に他のサービスが共存している事は想定していません。
https://zulip.readthedocs.io/en/stable/production/requirements.html
既存のWebとnginxで振り分けて共存..といったことは考えず、まっさらなOS環境を用意しましょう。

(2)ToDoリストは期待したとおりに並ばない

https://zulip.com/help/format-your-message-using-markdown#to-do-lists

/todo のスラッシュコマンドでToDoリストの作成入力ボックスが登場します。
便利なのですが、最初に入力した物が一番下に表示されるので、なんだか直感に反します

(3)絵文字の一括登録がたまにコケる

https://zulip.com/help/custom-emoji#bulk-add-emoji

APIから絵文字の一括登録ができるのですが大量にやると稀によくコケます。
きっと大量にやってる私が悪いのでしょう、うん

まとめ

・スレッドに名前を付けて個別に選択できる
・Home画面ですべてのチャンネルをひとつのTLとして見られる

この2点がメインですがZulipについていろいろ述べてきました。
興味を持った方は是非使ってみてください。

Zulipはいいぞ