先日「Slackがカップル専用アプリだった件」という記事を拝見しまして、その衝撃たるやそうそうたるものでした。
その手があったか、と。
僕はもう辺りを警戒しながら、恥を忍んで、おずおずとBetweenを開く必要はないんだ、と。
思い立ったが吉日。善は急げです。
彼女を説得する
もともとお互いにBetweenには多少の不満があって、ちょうど乗り換えを検討していたタイミングでした。
しかし、「Slack」のデザイン性の高さには食いついたものの、英語オンリーのUIや「Channel」等の馴染みのない機能に難色を示し気味。
僕のプレゼン力が試される時です。
僕「この『Slack』作ったスチュワート・バターフィールドっていう人、海外でめっちゃ流行った『Flickr』いう写真のSNS作った人なんだけどさ。
本当はゲーム作りたかったんだって。
でもゲーム作ってる途中で予算が尽きて、しょうがなく作りかけのゲームをその写真のSNSとして公開したらめっちゃヒットしてさ。
『これでゲームが作れるぞ!』と思ったら優秀すぎてYahoo!に捕まってゲーム作らせて貰えないのwwww
でさ、3年たってやっとYahoo!から開放されて、『今度こそ!』ってゲーム作ったんだって。どうなったと思う?
全然売れないまま予算尽きてまたゲームの機能流用してできたのがこの『Slack』wwwwそしてまた大ヒットwwwなんでだよwwwwwwww」
いけた。
下準備
サーバー立ててNode.js入れてHubot入れて、というのが面倒臭すぎたのでGASの力を借りてさくっと実装します。
GASとは
「Google Apps Script」の略。
Googleの他のサービスを操作したりできる、Googleドライブ上で動くJSみたいなやつ。アナリティクスのデータをスプレットシートに吐き出すやつとかが多分有名。
Botの作り方は主にこちらを参考にさせていただきました。
ありがたいことに、偉大な先人がライブラリを作ってくれているので、それにならえば簡単にBotが作れるみたいです。
Googleドライブにフォルダを作る
適当に「slack」みたいなフォルダを作って、
- Bot用のアイコン画像
- GASファイル
- Googleスプレットシート
あたりを入れておけばいいと思います。
Slack Appからトリガーの設定
カップル専用アプリとして「Slack」を使う場合、2人しかいない前提のためMentionを飛ばし合うことなく「全ての発言を通知する」設定で使うことになります。
GASでは「毎日決まった時間に実行」みたいな設定もできるのですが、Botの発言が毎日通知されるのも憂鬱なので、ここでは「Bot宛の発言をトリガーにアクションを返す」形で実装します(通知をしないBot用のChannelを作ることもできますが極力シンプルにまとめたいので)。
チャンネルの設定から「Add an app or custom integration」を選択し、Slack Appの「Outgoing WebHooks」を導入します。
Channel
どのチャンネルで発言を許可するか。
Trigger Word(s)
反応するキーワード。「,(コンマ)」区切りで複数指定可。
URL(s)
GASのURLを入れる。
Token
GASで使うのでメモしておく。
カップル専用アプリっぽい機能を実装する
共有カレンダー機能
真っ先に思いつくのがこれで、Googleカレンダーとの連携ももちろんGASでお手のものなのですが、うちではあまりスケジュールなんて立てないし、Betweenの共有カレンダーもほぼ使っていなかったので今回はなしで。
ゴミの日通知
これも最初はこのGoogleカレンダーを使えばいいやと思っていたのですが、曜日毎に決められた単純なスケジュールなのでスプレットシートで管理することにしました。
- 曜日ごとのゴミ分類
- 今日と明日のゴミ(
today関数
とvlookup関数
) - &で繋いで1つのセルに発言としてまとめる
記念日通知
上記と同じ要領で、
- 記念日の「日付形式」セル
- 記念日から今日までの経過日数セル
- 経過年+1年セルと今日からその日までの日数セル
- &で繋いで1つのセルに発言としてまとめる
今日の夕食
これは現在地を取得するGeolocation APIと食べログAPIあたりで近くの飲食店をランダムに取得したりできないかな、と思ったのですがよくよく考えたら毎日の食事で新規開拓目指したりしないし行くところなんて限られてるな、ということでやっぱりスプレッドシートに適当に数十パターンの夕食候補を入れておいて、ランダムでとってくるだけにしました。
- C列に候補一覧
- B列あたりで
counta関数
を使ってC列の総数をカウント - A列にC列+発言っぽくまとめたセルを列挙
これで、ひとつのスプレッドシートにみっつの機能をまとめられました。
今日と明日の天気
これはライブドア天気予報のWeather Hacks APIで取得してきます。
完成
かなりざっくばらんなif
ですが業務ではないので良しとします。
ちなみに「ゴゴ」は一昨年までうちで飼っていた猫の名前です。
お気に召したようです(アイコンかぶってるけど)。
まとめ
冒頭で紹介した記事以外にも「割と本気で家庭用Slack Botを作ってみた」等、いろいろ参考になる記事が上がっていていま何番煎じくらいなんでしょう。
作り始めるとつい余計な機能を持たせたくなって、無駄にapi一覧なんかを漁ってみたりして、そしてふと気がつくんですね。
彼女とのコミュニケーションコストは削減しなくていいし、効率化も特に必要ない。
僕からは以上です。
ではでは。