ギークハウスのslackにオリジナルのbotを作成して仮想通貨を作った
久しぶりの投稿ですね、今回は珍しく「さわれないもの」の製作についてです。
Slackにbotをつくります。
いまなんか横のレンジで卵が爆発したんですけどおもしろすぎでしょ
前口上が長いことは嫌いなので本題に入ります。
僕の滞在しているギークハウス新宿2にはかっこいいネコがいます。
名前は「モカ」
ネコって一日に2回くらい水を替えなければいけないんですけど、替えたことをいちいちハウス内のslackに書き込むのってめんどくさいじゃないですか。そこでbotをつくっていい感じに問題解決できるのではないかと考えました。
この記事中にネコの水替えハックはないです
いろいろ試行錯誤してたらbotつくりがたのしくなっちゃって他の機能を色々つくってました。
方法
hubotというGithubがつくったらしいNode.jsのフレームワークを利用します。
これを使って荷物の中で眠っていたrazberrypiをサーバー機にして運用しています。
いろいろして色々したので(というより長いこと記事を書いていないのでめんどくさくなった)僕がギークハウス内のslackに実装した機能を紹介します。
・ピザの注文リンクを貼ってくれる
1枚分の値段で3枚買える!みたいなアホな企画でよくお世話になっているので(美味しい)botにピザ、ぴざ、pizza的なことを言うと注文リンクを貼ってくれる機能を作りました。これを利用して今度注文したいです。
・お願いを短冊にしたためてくれる
いつまでも和の心は忘れたくないですし、それにおいて夏のイベントである七夕の短冊にお願いを書くっていう行為はいつでもできるようにしたいですよね。
botに「○○○ tanzaku」と言うと内容をslackのチャンネル上に短冊にしてくれます。
めちゃくちゃ便利ですね。縦書きになるのでうっかり「寿限無」のアレなんかをリクエストしてしまったときは悲惨です。チャット欄が長ったらしい短冊で埋まっちゃいます。
・抽選機能をつくりました
botに言った単語の中から一つをランダムに選んで返してくれます。特に利用するシーンはいまのところないですね。
・タスク管理機能をつくりました
ギークハウス内のさまざまな「やること」をみんなで共有できればと思い、簡単なTODO機能の管理的な機能をつくりました。
「add ○○○」でタスクリストにタスクを追加します。
「tasklist」で今現在未完了のタスクを表示、完了したものは「done "タスクリストで表示されたタスクの横についている数字"」で削除できます。
もういちどタスクリストを表示させると、さっき完了した「かき氷を食べる」のタスクが消えてますね
・仮想通貨を作りました
タイトルで釣ってやろうと思ったんですけど、どうですか仮想通貨界隈の人達。仮想通貨の国の人達はブロックチェーン技術でつくられた野菜をバリバリ食って非中央集権を実現した空気を吸って毎日生きてるんですよね??楽しそうで何よりです。
それは置いておいて、ギークハウス内で仮想的にslack上でお気持ち...的な意味でつくった仮想通貨「ギーコイン」です。
ギーコインは誰もが最初に100個(個?)もらえて自由に扱える仮想的な通貨です。
ギークハウスの住人間で気持ち的な感じで贈ったりもらったり...見たいな感じで遊ぼうかなと思っています。
(住人の方達にもhubotのscriptのコードを乗せているgithubのページを公開していますし自由にイシュー、プルリクなど送ってもらえるようにしています。...あれ?本家ビットコインよりも”非”中央集権的なのでは.....???????)
まあ技術的な仕組みを言うとユーザーの名前と持っているコインの数をハッシュ化してユーザーネームをキーにして値であるコイン数を変数として保持する簡単なものです。
収支記録をブロックチェーンで監視、演算なんてしていません。
つくったbotのコードをgithubに公開しています。よかったらなんか投げてください
まとめ
はじめてちゃんとしたJavascriptのコードを書いて色々と楽しかったです。
公開したプログラムにはさっきチラッと見ただけでもぽつぽつ改善点があってどんどん修正してコミットしていきたいななどと思っています。
眠らせていたラズパイを活用できていつのは何気にうれしいことですね、最近はCUIにも慣れてきたかな...って感じなのでラズパイならではの画像解析とかいった工作のやつなんかもやってみたいです。 では
[ この記事はブログ投稿者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してあります、リンク先のツイッターアカウントに教えてくださると嬉しいです:) ]