teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

28
teratailで秒速回答を目指す 泰昌平 @ShoheiTai

Transcript of teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

Page 1: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

teratailで秒速回答を目指す

泰昌平 @ShoheiTai

Page 2: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

自己紹介

泰昌平スパイスファクトリー株式会社

メディアインテグレーション事業部 事業部長

・平成生まれ

・ペチパー。CakePHP, Phalcon, CMSなど

・フロントエンドの開発、最適化が好き

・趣味はダーツとバイク

・最近鞄の中はChromebookと財布だけ

Page 3: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

最近の悩みごと

Page 4: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

なかなか回答ができていない・・・

Page 5: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

皆さんすごいです...!

Page 6: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

なぜ回答ができていないか

● teratailを開く頻度が少ない

● PHPやjavascriptなどの質問はスピード勝負

● 新規の質問にすぐ反応できない

Page 7: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

teratailを定期的に開こう!

Page 8: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

Pythonで5分に1度teratailを開く

import threading

import webbrowser

def teratail():

webbrowser.open('https://teratail.com')

t = threading.Timer(300, teratail)

t.start()

if __name__ == '__main__':

t = threading.Thread(target = teratail)

t.start()

Page 9: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

jsで5分に1度teratailを開く

setInterval(() => {

window.open('https://teratail.com');

}, 300 * 1000);

(function teratail() {

window.open('https://teratail.com');

setTimeout(teratail, 300 * 1000);

})();

Page 10: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

もう少し情報を絞り込めたら・・・?

Page 11: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

APIとか…

Page 12: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

teratail API

Page 13: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

本日使うもの

Page 14: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook
Page 15: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

質問をSlackで通知する

1. GoogleAppsScriptでteratailAPIにアクセス

2. 任意のタグから新着の質問を取得

3. SlackWebhookAPIで通知

4. GoogleAppsScriptの設定で定期的に実行

Page 16: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

実装してみる

Page 17: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

事前に用意するもの

● teratailAPIのアクセストークン

● Slack IncomingWebhookのURL

● Googleアカウント

Page 18: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

teratailAPI

指定したタグの質問を最新のものから数件取得する。

※アクセストークンはマイページから取得

Page 19: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

SlackWebhookのURLを取得

Page 20: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

GoogleAppsScript

● サーバサイドで動作するjavascript

● GoogleAppsと連携した処理が実装可能

● ブラウザ上で実装、実行できる

● トリガーの設定で定期実行もらくらく

● Chromebookにやさしい

Page 21: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

GoogleAppsScript - リクエスト

function request(url, options) {

var response = UrlFetchApp.fetch(url, options);

return response.getContentText('UTF-8');

}

UrlFetchApp.fetch()でHTTPリクエストを発行で

きる。

Page 22: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

GoogleAppsScript - teratailAPI

// 指定したタグの質問を取得する

function getQuestionByTagName(tagName, params) {

var token = '*********';

var url = 'https://teratail.com/api/v1/tags/' + tagName + '/questions/';

if(params) {

url += '?' + queryString(params);

}

var result = request(url, {

headers: {Authorization: 'Bearer ' + token}

});

return JSON.parse(result);

}

Page 23: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

GoogleAppsScript - SlackWebhook

// SlackWebhookにリクエストを投げる

function requestSlack(payload) {

var url = 'https://hooks.slack.com/services/*********';

var result = request(url, {

method : 'POST',

payload : JSON.stringify(payload)

});

return result;

}

Page 24: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

GoogleAppsScript - トリガ設定

GoogleAppsScriptの画面から、このスクリプトのトリガを設定し定期実

行させる。

Page 25: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

Slackへ通知

Page 26: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

最後に

● GoogleAppsScriptが便利すぎた

● SlackもteratailもAPIの設定が非常に簡単

● 各々手軽に扱えるので相性はかなり良い

Page 27: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

THANKS!Any questions?You can find me at✘ facebook: shouhei.tai✘ Twtter: @ShoheiTai

Page 28: teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook

Credits

Special thanks to all the people who made and released these awesome resources for free:✘ Presentation template by SlidesCarnival✘ Photographs by Unsplash