デザインのあれやこれ
Twitter『User Streams API』その廃止に伴う影響や意図
2018年5月16日、TwitterのUser Streams APIが三ヶ月後(つまり8月16日)に廃止決定とのアナウンスがありました。このAPIについて、そもそも何をしていたものなのか・廃止になるとどうなるか・対策は?等を、エリマキ風にざっくりとまとめてみました。
私個人のTwitter使用頻度は(この分野の人間にしては)低いほうだと思ってます。時期によってムラはあるんですが、この記事を書いている現在は、たまに知人と雑談をする程度にしか使っていないんですよね。あまりに情報の波に飲まれ続けていると、自我を失う感覚に襲われるというか、たまにふと情報の波から離れたくなるというか。
そういう個人的な話は置いといて、16日にTwitterから『User Streams APIを8月16日に廃止する』とアナウンスが出たようですね。トレンド入りしていたので知ったのですが、軽く騒ぎになっているようなので、このあたりの情報を調べてまとめてみました。
そもそもAPIってなんだよ?
この手の記事は専門家向け過ぎて、ユルい脳みその私では最初何語を話してるのかもわかりませんでした。なので、牛のように何度も噛みほぐしてわかりやすくした説明でいこうと思います。そもそも突然APIって言われても何のことだよって話ですよね。(特にこの手の英語3文字略語は、分野ごとに違うものを指すケースも多いので余計めんどくさいって思います。CMSといったら、Web業界と印刷業界では違うものを指すように…)
APIとは、ざっくり説明するとWebなどのサービスの一部機能を使用させてもらうものです。
例えば『Googleの検索機能を自分のWebサイト内で使用する』『自サイトに投稿したブログを自動的にfacebookにも投稿する』『Twitterの投稿を絞り込んで自サイトにまとめて表示させる』といったサービスは、これらGoogle等が提供しているサービス(機能)の一部を使わせてもらうAPIというシステムを利用しているんです。
これらAPIは、有償の(使用にお金がかかる)ものもありますが、GoogleやTwitter・facebookなどは無償(お金がかからない)で提供しているものも多くあります。考えてみればすごい話で、他人が作ったサービスを自由に自分のところで使えるワケですよね、しかもタダで。
しかし勿論サービス提供側にもちゃんとメリットはあって、
- 自社提供サービスを広めて認知させるのに役立つ
- 使用数に制限のある無償版と、大量に使える有償版を用意している
こう見ればなんとなく納得できるかもしれませんね。
また、無償APIの多くは『自社の都合で仕様や使い方・制限などを自由に変更できる』といったことを条件にしています。『タダで提供するから、自由に使いなよ。そのかわり、こっちの都合であれこれ変更はするよ。君達は便利なサービスを無料で使えるし、我々はサービスの宣伝になるし、両得だろう?』みたいなカンジでしょうか。
TwitterもAPI機能を提供しており、特定ユーザーの投稿データを読み込んだり、キーワード検索して絞り込んだ結果のリスト取得などが出来ます。
これを利用すれば、例えば『◯◯◯というキーワードが入ったTwitter投稿を自サイトに表示させて、宣伝に使ってしまおう!』といった事や、『もっと見やすくて使いやすいTwitterアプリを開発して商品にしよう!』といった事が可能になります。
(今回のUser Streams API廃止で主に影響を受けるのは後者ですね)
誤:もうTwitterAPIは使えなくなるってこと?
一部機能は使えなくなりますが、その他多くのAPI機能はそのまま使用できるようです。
Twitterが提供するAPIには大きく2種類あり、1つは『Rest API』もう1つが『User Streams API』と呼ばれるものです。
Rest APIは、Twitterの基本的な機能…ツイートの表示や検索・投稿や削除といった基本機能を提供するものです。
対してUser Streams APIは、リアルタイムなアクションを即座に反映する機能を提供しています。テレビでいう生放送のようなイメージでしょうか。
例えば、自分(のアカウント)がフォローしている人達が投稿した瞬間に即座に表示される、『いいね』や『リツイートされました』が即座に通知される、または特定キーワードを含むツイートが投稿されれば即座に表示される、といった機能ですね。
主に人気のある使い方は3番目でしょうか?例えば好きなドラマを見ている最中に『#(ドラマ名)』で絞り込んで、ドラマを見ながらそれに関する投稿も一緒にながめる…といったような。こう言うとニコニコ動画みたいなカンジに見えますね。
このリアルタイム通知機能を提供していたUser Streams APIが、2018年8月16日に廃止されるという事です。
ですが、その他Twitterの基本機能を提供しているAPIの多くは引き続き使用可能という事ですので、結果的には『一部のコアユーザー向け機能だけが制限された』という見方が正しいのでしょうか?
サーバに負荷のかかる行為を削減したいという意図
どうも、この廃止騒動に伴うTwitter側の意図に『自社サーバに負荷のかかる行為を削減したい』というのが見え隠れしているようですね。
今回のUser Streams API廃止に伴い、出来なくなる行為をリストにしてみました。
- リアルタイムなタイムラインの表示
- リアルタイムな『いいねされました』『リツイートされました』の通知
- リアルタイムなダイレクトメールの送受信(RestAPIから廃止のようです)
※これはあくまでAPIによるもの、つまりTwitter本家以外のWebサイトやサードパーティー製アプリで提供できなくなるもの、ということです
全て『リアルタイムな』が付いていますね。
要するに『Twitterのサーバ側から、事あるたびにユーザ側へ送信する必要のあるサービス』を提供するAPIが廃止になったという事です。
『投稿があるたびにユーザへ送信』『いいねされるたびにユーザへ送信』『◯◯◯されるたびにユーザへ送信』という、今までTwitter側サーバがわっしょいわっしょいと行なっていた作業を、APIを使う側にやらせるように変更した、というようにも見てとれますね。
また、今回のUser Streams API廃止に伴い、代替えとして発表されたAccount Activity APIの仕様は下記のようなイメージです。
- このAPIを使用するための(Twitter社以外の)サーバが必要
- 無償では15人分までしか使用できない(開発用ということ)、250人分まででも月額2,899ドル(約30万円)
- 完全リアルタイム保証ではなく、一部遅延の可能性がある
- リアルタイムのタイムライン表示(流れるタイムライン)は使用できない(完全に廃止)
こう見ると結構ハードルが高いように感じます。サーバの準備はまだしも、月額使用料がかなり高く設定されていませんかね?『250人分以上は要交渉』とあるので、例えば数万人規模に使用されているTwitterクライアントなどはどれくらい請求される事になるのでしょうか。
API使用側の今後の対策はどうなる?
前述のように代替APIはそれなりのハードルなので、今まで通り使用できるRest APIの機能を駆使していくのがメインになりそうですね。ことWebサイト上で展開するサービスに限っては、リアルタイムな反映を必須とするものはそこまで多くはないんじゃないでしょうか?個人的にはこのように感じています。
ただネックとなるのが、Rest APIの使用回数制限だと思います。この使用回数制限を回避するためにUser Stream APIを使っていたというケースもありそうですね。
ざっくりですが、Rest APIには『15分間に15回まで使用可能』という制限があります。
例えば、Webページ上で『#◯◯◯◯というタグのついたツイートを表示させる』といった機能を載せた場合、5分間のうちに15回ページが開かれたら、残りの10分はエラー表示になってしまいます。
この対策としてTwitter側で推奨されているのが、使用回数が多い有料のAPIを使う…ではなく、データをキャッシュ(一時保存)してAPI使用回数を抑えるというものなんですね。
TwitterAPI利用ガイドラインから、関連するものを抜粋してみました。(意訳です)
- APIの使用回数は、15分間に15回までだよ。
- 使用回数制限にかからないため、頻繁に使用するものはキャッシュを使ったりしてね。
- でも、ユーザーの位置情報とか個人を特定する情報は絶対キャッシュしちゃだめだよ!
という事です。(以前は関連項目に『User Streams APIを使ってみてね』がありましたが…)
つまり今後はRest APIを使用して、タグ検索結果などのデータをキャッシュファイルとして保存し、Webページ上(など)での表示はキャッシュから読み込んで行う。加えて、1分おきにキャッシュを更新(例えばキャッシュファイル作成時間が現在より60秒以上過去かどうかを判定キーに指定)するシステムを組み込む…といったところでしょうか。
なんだかTwitterサーバは常に悲鳴をあげつづけているように思えますね。
今回のアナウンスに伴い、Twitter上では『改悪だ』『悪い方向にしか進んでいない』等のコメントが目立っていましたが、たしかに利用者側から見ればデメリットでしかない事ですね。
しかし、Twitterはプロモツイートという広告で成り立っているサービスです。それをサードパーティー製クライアントで広告をカットされて使われ、それでいてサーバの負荷ばかり上がっていくような現実があっては、正直たまったもんじゃあないというのが本音ではないでしょうか。
兎にも角にも今回のTwitterのAPI廃止は『ヘビーユーザーやアプリ提供者にとっては』かなり痛い変更のようです。とはいえ、一日中TwitterのTLにかじりつくような日々を送っていなければ、全く問題にならない変更だ…とも言えますが。
開発者にとってはシャレになりませんよね。APIの変更って『おまえの自宅にミサイル落ちたらしいよ』くらいのショックじゃないでしょうか?過去にInstagram APIを利用したサービスを作っていた身としては、軽く背筋が凍るニュースでもありました。
TwitterのAPIを利用したサービスとして『何ができるか』『何ができなくなったか』の線引きが揺れる時期だと思うので、個人的にも調査を続けてみたいと思います。
なんだかんだあって旬を過ぎてからの投稿になりましたが、何らかのお役に立てれば幸いです。