この記事はtraP夏のブログリレー2018、8月16日(木)の記事です。
はじめに
みなさん、夏休みいかがお過ごしでしょうか。nagatechです。
僕はdアニメストア for prime videoを契約してアニメにどっぷりつかった夏休みを送っています。(申し訳程度の日記要素)
さて(唐突)、みなさんにクイズですが、2018年8月16日は何の日でしょう??
.
..
...
....
.....
答えは、TwitterのUserStreamsAPIの廃止日です。簡単ですね!!!!!
というわけで、いちBot製作者としてTwitterBot開発の今後について語ってみようかなと思います。
そもそもUserStreamsAPIとは
ざっくり言うと、「何もしなくても勝手にTLのツイートが取得できる機能」です。
開発者的にこのAPIのなにが嬉しかったかと言うと、
- 1度接続すれば何もしなくても勝手にTLのツイートが取得できる(そのまんま)
- API制限がない(似た機能としてRESTAPIの
GET home_timeline
があるがこちらは要求しないとTL取得できないうえに15分に15回の制限がある) - 常時接続状態なのですぐ反応ができる
- TLが自動更新できてたのしい
などの恩恵がありました。
Twitterの非公式クライアントにはこのUserStreamsAPIを使って、いちいちTL更新をしなくてもツイートが取得できるようにしていたクライアントもありました。
しかし、Twitter社はこのUserStreamsAPIを2018年8月16日に廃止することを決定しました。
本日全ての開発者の皆さんにAccount Activity APIを公開しました。なお、User StreamsとSite Streamsとともに、ダイレクトメッセージの使われていないエンドポイントは本日から3ヶ月後の2018年8月16日(米国時間)に廃止されるよう変更になります。詳細は以下ブログをご覧ください。
— Twitter Dev Japan (@TwitterDevJP) 2018年5月16日
各非公式クライアントはその対応に追われ、ストリーミング接続の機能を廃止したりサービス自体を終了することになりました。
[悲しい] [お知らせ] 現在申請作業を進めている次のバージョンの feather (v3.11.1) では Twitter が User Stream API を廃止するのに伴いそれに関連する機能の削除を行います. 😢 API が削除されるギリギリの 8/16 にリリース予定です. ご了承ください 🙇 pic.twitter.com/9WGebyhL7P
— feather公式@(13~17日は夏季休暇) (@feather_ios) 2018年8月8日
【重要なお知らせ】2018年8月16日にTwitterから開発者に提供される機能が一部廃止される事に伴い、TheWorldの機能が一部利用できなくなります。利用できなくなるのは、自動更新機能、DM、通知機能になります。ご不便をおかけしますが、ご了承ください。
— TheWorld_JP (@TheWorld_JP) 2018年8月13日
2018年8月16日に、Twitter社がUserStreamを含めた複数の機能を廃止します。https://t.co/KVOAkzHm6M
— SobaChaDev (@SobaChaDev) 2018年8月13日
従いまして、8月16日以降はSobaChaの以下の機能がご利用頂けなくなります。予めご了承下さい。
・リアルタイム更新
・通知
・DM
【再告知】8月16日(米国時間)をもってUserStreamと旧DM APIの提供が終了するため、Yukariでもこれらに依存する下記機能が使用できなくなります。
— Yukari for Android (@yukari4a) 2018年8月13日
*TLのリアルタイム受信
*通知
*DMの送受信
終了後は該当する操作で通信エラーが表示されると思われます。予めご了承ください。#yukari4a
ツイやつシリーズ終焉のお知らせ
— ツイッターするやつ (@suruyatu) 2018年8月14日
google+に投稿しました!https://t.co/liHVIdCxVK
(えっ...ツイやつのサービス提供終了するのか...僕一時期使ってたのに...)
UserStreamsAPIは非公式クライアントだけでなくUserStreamsAPIを使ったBotにも影響が及びました。
かくいう自分もいくつかのBotにUserStreamsAPIを使っていたので、Botの稼働を停止せざるを得ない状況になりました。
(8月16日に廃止されるので8月17日以降動かなくなるという意味)このままだと@_nagatea の命日は8/17
— ながてち (@syobon_titech) 2018年7月25日
じゃあこれからどうするの
自分の作ってるBotは別にリアルタイム更新しないといけないわけではないので、8月16日以降も提供を続けるREST APIを使って無理やり1分に1回呼び出すようにして何かTLに更新があったら処理という方法を使ってBotの運用を続けていこうと思います。
しかし、UserStreamsAPIの一番の利点であった制限なしにTLを読み込むことができるという機能がなくなった影響でこれからの開発が大幅に制限されることになるのは事実です。
そこでTwitter社は2018年8月16日にUser Streams APIを廃止する代わりに新たにAccount Activity APIを提供開始することを発表しています。
Account Activity APIとは
UserStreamsAPIは何もしなくても情報が受け取れるAPIでしたが、AccountActivityAPIはある特定の操作(Activity)があったときに情報のPOST送信が行われる(Webhook)というAPIです。
ここでいう特定の操作とは、
- ツイートの投稿
- いいね
- RT
- フォローされた
- etc...
などです。
例えば、誰かが自分のツイートをいいねすると、
「○○さんが△△というツイートをいいねした」
という情報がTwitterからこちらが指定したURLに届くといった感じです。
UserStreamsAPIと比較したメリットデメリットについてですが、
メリット
- Twitterのサーバに接続しなくても情報を受け取れる
- 受け取れる情報がUserStreamsAPIよりも多い
デメリット
- 情報の受け口(自分で用意したサーバなど)がないと受け取れない
- TLは読み込めない
- Developer Accountがないとそもそも使えない
などがあります。
特に、TLは読み込めないということから、UserStreamsAPIの代わりにはならないということでだいぶ不評のようです。
ちなみにDeveloper Accountがないと今後開発を続けていくことが困難になります。(現状Developer Accountがないと新しいアプリが作成できないため)
今後TwitterBot作りたいと思ってる人はまずはDebeloper Accountを作成することがまず最初にやることになります。
最後にDeveloper Accountの取得方法について説明したいと思います。
Devoloper Account 取得方法
まず、https://developer.twitter.com/ にアクセスします。
(ちなみに今まではhttps://apps.twitter.com/ でアプリを作成することができました。しかし、今は新しいアプリが作成できなくなっているうえに、今後使えなくなることがお知らせされてます。)
こんなページに飛ぶと思います。
右上のApplyを押します。
「Apply for a developer account」を押します。
「Continue」を押します。(アカウント名は気にしないでください...)
「I am requesting access for my own personal use」を選択したのちに自分の名前を「Japan」を選択して「Continue」
Developer Accountを取得する目的を300単語以上の英語で記入します。
できたら下の質問のYes/Noどちらかを選択して「Continue」
すると登録したメールアドレスにこのような認証メールが届くので、「Confirm your email」を押します。
これで申請は終了です!
しばらく待つとTwitter社から審査の結果が送られてきます!
...とはならず、いつまで待っても審査結果は届きません。
何故かと言うと、今まで作成したアプリ(Botなど)の個別の説明文を書いてないからです。
次に作成したアプリの個別の説明文を書きましょう。
先ほどのhttps://developer.twitter.com/ にアクセスします。
すると「Apply」となっていた部分が自分の名前になっているはずです。
そこを選択して「Apps」を押します。
作成したアプリの一覧に飛びます。
(どこかで見たことあるアプリ名だなあ...)
「Details」を押します。
詳細画面に飛びます。
「Edit」で編集しましょう。
必要事項を埋めていくと最後にアプリの説明文を記入する欄があります。
100単語以上の英語で書く必要があります。
同じ作業を自分が持っているすべてのアプリにする必要があります。考えるだけでもつらい。
不備があると、このようにメールが飛んできます。
要約すると、「もうちょっと詳しいことをこのメールに返信してね」ってことです。
これらの作業を繰り返していってようやくTwitter社からDeveloper Account取得の許可が下りるということです。
おわりに
とにもかくにも、この記事が投稿された2018年8月16日は良くも悪くもTwitterにとって大きな転機となる日でした。
ちなみにこんな記事を書いておいて、僕はまだDebeloper Accountを取得できていません。
世知辛いのじゃー