Zulipでデイリーログ
Zulip はオープンソースのチャットツールです.
ZulipはSlackライクですが、 チャネル に相当する ス トリーム の他に、Zulipには トピック があります.トピックがあるとディスカッションが明確になり、結論に辿りやすくなると思っています.Redditや2ちゃんねるのようにカテゴリ+スレッドがストリーム+トピックのようになっています.例えば、Rustの日本語コミュニティではZulipを使っていますが、閲覧するだけなら掲示板のように見ることができます.
https://rust-lang-jp.zulipchat.com/
今回はZulipを使ってデイリーログを書く仕組みを構築したのでその紹介です.
動作環境
Windows 11
Python 3.9.15
どのように使うか
基本として、ターミナルからメッセージを入力してZulipに送信します.また、Keyhacなどと組み合わせることで、ターミナルを経由しなくても送ることができます.Keyhacについては以下を参照してください.
http://mebiusbox.github.io/docs/note/keyhac
もともと、ターミナルからのコマンドを手軽に記録したいのが目的でした.Jupyter Notebookのようにコマンドとその結果を記録できると便利です.私はNotionを使っていますが、Notionになんでも記録するよりかは、まずはどこかにバッファして、後から整理したいと考えていました.
Bot
ZulipではプログラムなどからZulipにメッセージを送るなどの処理をするためにBotを作成します.Botは3種類あって、一般的なもの(generic bot)、外部から来るもの(incoming webhook)、外部に向かうもの(outgoing webhook)があります.
Botを作るには、Zulipの設定から個人設定を選び、ボットページを開いて、新しいボットを追加ボタンを押します.
(Zulipの設定)
(個人設定)
(ボットの作成)
デイリーログが目的ですが、汎用的なボットを作成しますので、zuweetという名前にしました.tweetのzulip版です.アバターは任意で設定してください.
これでボットが作成されました.
Python の Zulip クライアント
Zulipは公式でPythonとJavaScriptのクライアントライブラリを提供しています.
https://zulip.com/api/client-libraries
今回は Python ライブラリを使います.Zulipクライアントライブラリをpip
でインストールします.
pip install zulip
API key
Zulipクライアントを使うにはAPI keyが必要です.APIキーなど必要な情報を記載したzuliprc
ファイルをダウンロードできます.ボット画面からZuweet Botのダウンロードボタンを押します.
そのファイルをホームフォルダに保存します.ファイル名はそのままでも良いのですが、複数のボットを管理したいときのために、別名にしておきましょう.次のようにします.
~/.zulip_zuweetrc
.zulip_zuweetrc
ファイルの中身はapi
セクションがあって、email
、key
、site
が設定されています.
Zuweet
まずはひな形です.
import argparse
import zulip
VERSION = "0.1"
CONFIGFILE = os.path.expanduser("~/.zulip_zuweetrc")
parser = zulip.add_default_arguments(argparse.ArgumentParser("zuweet"))
opts = parser.parse_args()
opts.zulip_config_file = CONFIGFILE
opts.client = "Zuweet/" + VERSION
client = zulip.init_from_options(opts)
argparse