BlogRELATIONS株式会社の開発ブログです。Scriptこんにちは。RELATIONS株式会社の大川です。SONICの3日目が楽しみで仕方がないです。Script・Slack・スプレッドシートを連携させたアプリ開発の話をしていきます。きっかけは、OJT中の新入社員に声をかけられたことでした。(OJTの様子はこちらからご覧いただけます。)彼は社内にバリュー(行動規範)を浸透させていくために、Slack上の「バリューを体現する行動を称賛する投稿」を増やし、バリュー自体を意識してもらう回数を増やそうとしていました。弊社ではすでに「(各バリューに対応するカスタム絵文字)(メンション)称賛メッセージ」の形式で、バリューを体現した行動を称賛できるSlackアプリが存在していました。あるバリューを体現する行動を称賛した時に反応するSlackアプリですが、これだけだとメッセージを作成することが面倒だったり、他の人が称賛した内容と同じメッセージを送ることに対してハードルがちょっと高いというフィードバックがありました。そこで、もっと簡単にSlackメッセージにリアクション(絵文字)をつけるだけで投稿としてシェアされるようになると良いのでは、という話になり、開発が始まりました。Calenderの記事を参考にしていました。Qiita)つくったものSlack上で、バリューに対応する絵文字のリアクションがされると、バリューを発揮した行動が特定のチャンネルに投稿されるようにしました。上の投稿にリアクションがされたことで、新しいメッセージが投稿されたアプリの流れは以下の通りです。APIでリアクションの追加イベントをサブスクライブしておき、イベントデータがGASに渡ってきたらユーザー情報やメッセージ内容を取得して、スプレッドシートに記録&Slackにメッセージを送信するようになっています。Script(以下、GAS)を採用しました。以下の点でGASを利用してよかったなと感じています。doGet関数を用意するだけなので簡単でした。公開されているWebアプリに変更を反映させるためには毎回デプロイが必要なので、デバッグは工夫が必要でした。関数の実行はデプロイしなくても試せるので、1つの関数でやることを小さくしてテスト用関数を用意しながらデバッグを進めていきました。POSTリクエストに反応するdoPostメソッドは、別関数を呼び出すだけのシンプルな実装になっています。スプレッドシートとの連携など色々な処理が多いですが、ほぼ別の関数に切り出してその呼び出しを行うようにしています。Slackからのリアクション内容をチェックするcheckReaction関数です。APIを利用しました。どれを利用するべきかフローチャートが用意されていたので参考にしました。APIは全パブリックチャンネルでのリアクション追加に反応します。Botを用意することでBotが参加しているチャンネルのイベントのみをサブスクライブできるようになります。Overflow今回はどのチャンネルでも使えるように特にBotは用意していません。Slackのメンバー数にもよりますが、弊社ではまだGASの実行回数リミットを過ぎてしまって実行できなくなる...ということも発生していないです。APIを利用しましたが、ライブラリを利用して簡単にOAuth認証に対応できました。Script.)今後についてGASを利用してSlackアプリを開発するのは初めてでしたが、すごく簡単に実装できてよかったです。今運用されているシステムにはいくつか課題を抱えています。監視をちゃんとしてないstackdriverでのログ出力はできるので、異常検知するような仕組みも用意しなきゃいけないなと考えています。今回構築したシステムも3秒以内にレスポンスを返せないとリトライ処理の分だけ動作してしまいます。GASではリクエストヘッダーにアクセスできずにリトライ処理をさばけませんでした。調べてみた感じだとGAS上でジョブキューを構築するような方法があるそうです。Lambdaに移行しようかとも考え中です。APIとスプレッドシートを連携させるアプリ開発について紹介しました。社内勉強会など開いて他のメンバーもGASを使って生産性を向上できるようにしていけたらいいなと考えています。12:00Slackのリアクションに反応するアプリをGASで作ってみた話Tweet関連記事2019-03-27Webエンジニアがスマホアプリをリリースするまでに学んだ32のコト(後編)こんにちは。RELATIONS株式会社の久原です。使ってジオフェンスとプッシュ通知を組み合わせてみましたこんにちは、RELATIONS株式会社の大川です。U...2019-02-05Webエンジニアがスマホアプリをリリースするまでに学んだ32のコト(前編)こんにちは。RELATIONS株式会社の久原です。2019年も開発ブロ...2019-01-23ExpoとFirebaseを使った、サーバーレスでのプッシュ通知配信の検証続きあけましておめでとうございます!RELATIONS株式会社の大川です...2018-12-28マネジメント支援のSaaSプロダクト「Wistant」のバックエンド技術スタックを紹介しますこんにちは、RELATIONS奥宮です。今年も残りあとわずか。はてなブログProRELATIONS株式会社のエンジニアメンバーによる開発ブログです。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。