Blogaomu

WEBアプリケーション開発とその周辺のメモをゆるふわに書いていきます。

hubot-queue というのを作ってみた

今日の午前中を使って、hubot-queueというhubot scriptを作ってみました。

TAKAyukiatkwsk/hubot-queue
hubot-queue

文字列を格納できるQueueを提供します。ただそれだけ。 使い方はREADMEを見ていただけるとお分かりいただけると思います。 enqueuedequeueというコマンドしか用意していません。(今のところ)

以下に使用例を挙げておきます。storageのqueue.Shellに配列で文字列が格納されています。 デフォルトではコマンドを叩いたユーザーの名前がqueueのkeyになります。

Hubot> hubot enqueue hello world
Hubot> hubot enqueue hello hubot
Hubot> hubot show storage
Hubot> { users: { '1': { id: '1', name: 'Shell', room: 'Shell' } },
  _private: {},
    queue: { Shell: [ 'hello world', 'hello hubot' ] } }
Hubot> hubot dequeue
Hubot> hello world
Hubot> hubot dequeue
Hubot> hello hubot

なんで作ろうと思ったのか

朝シャワーを浴びているときにパッと思いついて作りました。 「あとで読む」みたいな記事とかサイトをとりあえずここに突っ込んでおいて、 暇なときに取り出して続きを読む、みたいなのを気軽にやりたいなと思って作った次第です。

参考にした記事

ハマったところ

  • パッケージ化してexternal-scriptsとして読み込もうとしたのですが、Error loading scripts from npm package と怒られてしまった
    • グローバルでインストールしたHubotを実行していたのが原因
    • カレントディレクトリで bin/hubot で実行すれば問題なくパッケージ読み込めた
    • ここに書いてある https://github.com/github/hubot/tree/master/docs
  • Queueに入れるデータをJSON化して保存しようと思ったが断念した
    • データ型によって文字列だったらクオーテーションを文字列として追加するとか、数値型はそのままでいいとか、厄介だった

あとがき

チャットで使うときにhubot dequeueの結果がコマンドとして実行されるようになるとおもしろそう。(できるのか??) あとちゃちゃっと作ったのでQueueのサイズを全然気にしていません。Redisに格納できるサイズってどんなもんなんだろうか...。 そういえば、これが初めてのnpm publishとなりました。