*

GAE/GOでTwitter Botを作ってみる~前編~

公開日: : 最終更新日:2017/04/13 投稿者: GAE, GCP, GO言語

TwitterやFacebookのような有名サービスと連携したアプリを開発する場合、開発者はサービスが提供するREST APIを利用することになります。ただ、実際に開発をおこなう場合、開発者は自前でAPIを操作するコードを書く必要はないかもしれません。なぜなら、サービスのDeveloper向けドキュメントを探せば、開発言語に対応したライブラリを見つけることができる可能性があるからです。今回テーマとして扱うTwitterにも、もちろんライブラリが用意されています。

Twitterが公開している以下の開発者向けのページにアクセスすれば、JavaやPHP、Python等の言語別のライブラリを見つけることができます。

Twitter Libraries
https://dev.twitter.com/resources/twitter-libraries

今回はその中からGO用のライブラリであるAnacondaを利用してGAE上で動作するbotアプリを作成してみます。AnacondaはTwitter API 1.1に対応したGO向けTwitterパッケージで、GAE/GOにも対応しています。詳しくはAnacondaのGitHub公式ページをご確認ください。

GitHub – ChimeraCoder/anaconda: A Go client library for the Twitter 1.1 API
https://github.com/ChimeraCoder/anaconda

本記事ではAnaconda × GAE/GOでTwitter botを作成するための手順について説明します。ただし、内容の長さから本記事は内容を「前編」「後編」に分割します。それぞれの内容は以下の通りです。

  • 前編
  1. Twitterアプリの登録とアクセストークンの発行
  2. Anacondaのセットアップ
  3. ローカル環境でTwitter投稿プログラムを動作させる
  • 後編
  1. 天気情報お知らせbotの実装
  2. スケジューリングの設定
  3. デプロイする
  4. Botの動作確認

前編ではTwitterアプリを作成するための事前準備とローカル環境でTwitterアプリを動作させる手順について学び、後編では実際にbotアプリを作成してみます。

それではTwitter botを作成していきましょう。

アプリケーションを登録しアクセストークンを生成する!!

Twitter APIを利用するためには、Twitter APIを利用するアプリケーションをTwitterで登録する必要があります。以下の手順に従ってアプリケーションの登録をおこなってください。ただし、以下の手順を行うためにはTwitterアカウントによるログインが必要となります。アカウントを取得していない場合はまずはTwitterアカウントを取得してください。

(1) アプリ登録ページにアクセスします

Twitter Apps
https://apps.twitter.com/

(2) 「Create New App」ボタンを押下します

(3)アプリケーションの登録フォームを入力し「Create your Twitter application」ボタンを押下します。

項目 説明
Name アプリケーション名を入力します。
Description アプリケーションの説明を入力します。
Website TwitterアプリケーションをホスティングするWebSiteのURLを入力します。

※この時点では何でも良いので適当なURLを指定してください。後編記事でGCPプロジェクトを作成しますので、GAEのURLが決定した時にURLを再度設定します。

Callback URL ユーザ認証完了後のコールバック先URLを入力します。

※本記事ではユーザ認証を利用しないため本項目は未入力とします。

 

(4) 登録が完了するとアプリケーションの詳細ページに遷移するので「Keys and Access Tokens」タブをクリックします。

(5)「Keys and Access Tokens」ページに遷移後「Create my access token」ボタンを押下します。

(6)ボタンを押下すると画面がリロードされページにアクセストークン情報が表示されます。

以上でアプリ登録とアクセストークンの発行は完了です。ただし、Twitterにツイート投稿を行う場合、アクセストークンだけでなくConsumerKeyもAPI実行時に必要な情報となります。ConsumerKey情報は「Keys and Access Tokens」ページの「Application Settings」で確認することができるので、こちらについてもメモしておいてください。

[注意点]

以下のようなエラーメッセージが表示される場合、Twitterアカウントの設定ページで電話番号を登録する必要があります。Twitterアプリケーションを作成する場合、電話番号の登録は必須項目です。電話番号の登録方法については以下URLをご参考ください。

アカウントへの携帯電話番号の登録
https://support.twitter.com/articles/20172611

Anacondaをセットアップする!!

次はGOPATHにAnacondaパッケージのダウンロードをおこないます。以下のコマンドを実行しダウンロードを実行してください。

※GOPATHの設定については以下をご参考ください。

The GOPATH environment variable
https://golang.org/doc/code.html#GOPATH

以上でAnacondaのセットアップは完了です。とても簡単ですね。

ローカル環境でTwitter投稿プログラムを動作させる!

次はローカル環境で開発サーバを起動しTwitterにツイートを投稿してみます。ただし、GAE/GOアプリをローカルで動作させるためにはGO用のGAE SDKのインストールが必要になります。GAE SDKがインストールされていない場合は以下URLを参考にSDKのインストールを行ってください。

Download the SDK for App Engine
https://cloud.google.com/appengine/docs/standard/go/download

SDKのインストールが完了したら、以下の手順に従ってTwitterにツイートを投稿してみましょう。

(1) GAEプロジェクト用のフォルダを作成します

(2) プロジェクトフォルダへ移動します

(3) GAE設定ファイル(app.yaml)を作成します

※ローカル環境で実行するだけですので「application」で指定するGCPプロジェクトのIDは任意の文字列で問題ありません。

(4) 以下プログラムをコピーしtwitter.goというファイルを作成します

※以下4点の項目にはTwitterアプリ登録時に発行されたトークン情報を指定してください。

  • consumerKey
  • consumerSecret
  • accessToken
  • accessTokenSecret

(5)SDKに同梱されているgoappツールを利用して開発サーバを起動します

※「serve」は開発サーバを起動するためのサブコマンドで「twitter-bot」は(1)で作成したGAEプロジェクトのフォルダパスです。

(6)curlコマンドでプログラムを実行します

(7)Twitterを確認しツイートが投稿されていればプログラムの実行は成功です

以上でローカル環境からのプログラム実行手順の説明は終了となります。

前編まとめ

以上でローカル環境でTwitterアプリを動作させる手順の説明は終了です。導入はとても簡単だったのではないでしょうか。ただし、今のままではHTTPリクエスト経由で固定文言をツイートするだけの不完全なプログラムで、まだまだbotとは言えません。後編記事では、前編で作成したプログラムを改造し、自動で定期的にツイートを投稿するbotプログラムを完成させます。ぜひ後編記事もチェックしてください。

※ 弊社ではクラウドエース(Cloud Ace)というGCPの導入・運用支援サービスを提供しておりますので、ご興味のある方はこちらまでお問い合わせください。GAEに限らず、あらゆるGCPサービスのサポートが可能です。

この記事を書いた人

tomorier
tomorier
普段はGCP専門のエンジニアをやっています。
最近は個人的な活動としてGOとswiftでアプリ作ってます。

関連記事

2016/2/24 GCE vs AWS vs Azure ベンチマーク

2016/02/24 GCE vs EC2 vs Azureベンチマーク 本シリ

記事を読む

2015/07/10 GCE vs AWS ベンチマーク

2015/07/10 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

Google App Engine Modules in Javaを試す WebToolsPlatform編

みなさんこんにちは。 2013年の7月に、Google App Engine1.8.2がリリー

記事を読む

Datastoreの仕組み ~Consistencyについて~

はじめに スケーラビリティと可用性が高いと言われているGoogle Cloud Datastore

記事を読む

2014/12/18 GCE vs AWS ベンチマーク

2014/12/18 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

GCE@東京でGUI(GNOME)を動かしてみた

今回は、GCEの東京リージョン上でGUIを動作させてみたいと思います。 GCEにGNOME

記事を読む

2014/11/20 GCE vs AWS ベンチマーク

さて、始まりました、待望のシリーズ! ワールドワイドなクラウドIaaS界の2大巨頭である2つの

記事を読む

2016/03/18 GCE vs AWS vs Azure ベンチマーク

2016/03/18 GCE vs EC2 vs Azureベンチマーク 本シリ

記事を読む

AppEngineでTwilioを試してみた(応用編)

AppEngineでTwilioを試してみた(基本編) AppEngineでTwilioを試し

記事を読む

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する

GAEでMemcacheを利用した経験はありますでしょうか? MemcacheとはGAEで利用

記事を読む

PAGE TOP ↑