お疲れ様です。
GMOリサーチの石黒です。
先日「CakePHP3縛りのプライベートハッカソン」に参加させていただき、
1日かけて「新着ツイート通知バッチ」を作りましたので、その様子と作ったものをご紹介します。
① 背景と目的
- ハッシュタグ付きツイート通知できない問題
- 勉強会の連絡などを、ハッシュタグ付きツイートで連絡してもらっているのですが、これが通知できたら便利なのになぁと考えていました。
- 色々調べてはみたのですが、ハッシュタグ付きツイートを通知する方法が分かりませんでした。
- 「CakePHP3縛りのハッカソンやらない?」
- やる。
そこで、ツイートを検索した結果を通知してくれるバッチをCakePHP3縛りで作ることにしました。
② やったこと
- 無料でやった。
- CakePHP3を使った。
- PHP7 + Docker→手順忘れて断念、いつも使っているPHP5.6+vagrant環境を使った。
- メール、Slackへ通知。
- Bluemix、GAE→PHP5.6のインストールにたどり着けず断念。Herokuを使った。
- Heroku Scheduler + シェルスクリプトでcronのように常に通知してくれるようにした。
- Twitter APIと連携(仮実装として1アカウントと連携)
③ 作ったもの
Githubに公開しました。
https://github.com/gr-ishiguro/tweets-notifier
- Heroku Schedulerから10分に1回シェルスクリプトを実行します。(10分、1時間、1日が選べます)
- シェルスクリプトは1分に1回CakePHPのシェルを実行します。
- CakepHPのシェル内でTwitter APIを利用して特定のツイートを取得します。(1アカウント180回/15分制限)
- Slackへの通知は、Incoming WebHooksで生成したURL宛てにcurlでPOSTします。
- メール通知は、GmailのSmtpサーバを介してメール送信をします。(2,000通/1日制限)
検索APIでは、ハッシュタグだけでなく、感情や位置情報などを検索することも可能なので、
いろいろな使い方が可能です。
それぞれの詳細は追って記事を投稿します。
④ ハッカソンについて
今回、初めてハッカソンというものに参加しました。
ハッカソンと言っても、かなりカジュアルなものです。
- 会場:知り合いの家
- 時間:朝から夜まで、休憩を入れて11時間+発表
- 参加者:4名(1名はSkype参加)
やることは一人で黙々とプログラミング(たまに質問)なのですが、
単に家でやるのとは違い、モチベーションが格段に上がると感じました。
Slackへの通知は、時間終了2分前に完成させることができました。
それにしても、
bakeするだけで管理画面が作れたり、
composerでインストールするだけで機能を利用できたり、
連携設定するだけでAPIが利用できたりと、
無料でこれだけ沢山のことができるという事に改めて感動し、
簡単なアプリならアイデア次第で何でもできそうだと感じた、そんなハッカソンでした。