2015年4月20日月曜日

非公式クライアントを使うユーザー「だからこそ知ってほしい」Twitterの制限とか仕様

非公式のクライアントを使っているとよくタイムラインが更新できなくなったり、投稿できなくなったりしますよね。今回は知っているようで知られていないTwitterのAPI制限について




そもそもAPIってなんぞ?

って人も少なくは無いでしょう。かなり雑に説明するなら「工具」もうちょっとマトモな説明をするならTwitterの取り扱い説明書(マトモかこれ?)と思っておきましょう。

なんで制限があるの?

理由は単純「サーバーへの負荷を低減するため」この一言でしょう。けど昔ほど貧弱でもないはずなんでもう少し緩めてくれてもいいと思うんですがね・・・(API1.0時代に少しでも近づいてほしい。同等とは言わないが)

どんなものに制限があるの?

Twitterでできる行動ほぼすべてにあります。
タイムラインの更新に始まり、ツイート、リストの取得、ユーザ情報の取得、プロフィールの更新、etc・・・・
これらは大体15分間隔で回数のリセットがかかります(一部例外もあります)

制限って回避出来ないの?

”技術的には”できなくはないです。後述するAPIキーというものを複数アプリに実装して上げるだけです。ただしTwitterの規約に抵触している可能性がかなり高いので(負荷をかけないのが目的だから)してしまうとそのアプリに関連するAPIキーすべて凍結・・・なんてことも。
しかしタイムラインの更新についてはストリーミング(正確にはユーザーストリーミング)を使用してあげると回避することが可能ですので、これは実装しているクライアントが多いはずです。

APIキーってなに?

API+キーなのでなんとなく意味はつかめるかもしれませんが、要するに鍵です(投げやり)
まあどこのだれかわかんない奴にAPIを自由に使わせたらそれこそ制限の意味もなくなりますし、管理が難しくなってしまいますからね。
ちなみに一部のクライアントではこのAPIキーを自由に設定できたりできるものもあります。(規約的に大丈夫なのかこれ?)

APIキーの制限

今回これが言いたくてこのネタ書いてるようなものです。
このAPIキーにも無論制限があるわけでこんな風な制限があります。

 1.権限
 2.登録ユーザー数
 3.アプリのUI(直接制限されるわけでは無いが一応)

大体この三つだと思われます。

まず権限について

たびたびTwitter上でできたてほやほや新たなサービスが始まるとほぼ必ず出回る情報

「ツイートしか出来ないはずなのにユーザーの情報変更できる。乗っ取られる!」

見かけたことあるんじゃないですかね?
確かにものによってはそういう悪意のあることをするものもあります、それは否定しません。だが全部じゃないんです。

「じゃあ開発者がAPIキーを取る時にツイート以外の権限は禁止にしたらいいじゃん」

と考えるのが普通ですがはっきり言うとできません
何故出来ないか?こちらの画像を見てもらいましょう。


これはAPIキーを作成した後に権限を弄れる画面に行けるようになるんですがそこのスクショになります。
これだけです、たったの選択肢はこれだけです。
英語がわかんないぞゴルァって人のために日本語で書きだすと

 ・読み取り
 ・読み取りと書き込み
 ・読み書きとダイレクトメッセージへのアクセス権

この三つです。
どこにもプロフィール関連の設定項目もなければ、細かい権限の設定もありません。(正直糞)
この機能使わないのにってなっても権限として表示されますし、それをユーザに求める仕様になってます。
正直これだと正常なアプリと悪意のあるアプリと見分けが尽きません、それこそソース公開でもしないと潔白が証明できないぐらいにやばいです。
ちなみに2つ目と3つ目の権限の違いとしてはダイレクトメッセージにアクセスできるが否かのみの違いです。
逆に1つ目と2つ目はできることと出来ないことの差が激しすぎて、1つ目はただただタイムラインのツイートを拾うだけに対し2つ目は書き込みやプロフィールの変更等など通常の非公式クライアントでできることほぼすべてできます。
なのでこの手の情報が出てきた場合は全部を全部鵜呑みにするのではなく警戒はするけどホントかな?ってぐらいの気持ちを持ってもらえるといいと思います。

登録ユーザ数について

これもある意味厄介なものなんですが一つのAPIキーに対して10万人というと語弊があるので10万アカウントしか登録できません。
最近よく見かける認証が通らないの原因はほぼ100%これです。
これの回避方法としてはAPIキーを新たに作って初回起動時に選択させるぐらいでしょう。(黒に近いグレーだと思うけどねこれ個人的には)
この制限に関してはおそらく乗っ取り等の対策だと思われます。(でも微妙な数字だし機能してない気が・・・)

アプリのUIへの制限

制限とはいえ直接的に何かあるってわけでは無いんですがこれは「Display Requirements」(英語)って奴を守ってないとAPIを使えなくなってしまう可能性があります。
実際それ関連かどうかわかりませんが最近「春のバン祭り」が如くキーが凍結されたって案件があります。

ちなみに・・・

最近はあまり言葉として見かけませんが以前絶滅しないスパムRT、これも無論APIキーを利用して何らかの方法でユーザーに認証させてるものが多いです。
なので万が一引っかかっても冷静にアプリ連携をPCからまたは私のアプリ(まさかの宣伝だがリンクを張らない)を使って解除してあげましょう。
今はただRTだけでとどまってるかもしれませんがその気になればアカウントのプロフィールを弄ったり、変なツイートをしたり誰かに意味不明な文章送り付けたり、場合によっては犯罪予告されてたなんて・・・・ことになる前に解除しておきましょうね?あと単純に見ててうざいしね(本音)

あと公式アプリにもAPIキーがあるんですが、そのキーは特別なものになってて上記の制限の大体が緩和されてます。(完全に非公式クライアントハブりですねわかります)

結局何が言いたい?

「○○が出来ない」
それが本当にアプリのバグなのかそれともTwitterの仕様なのかそれとも障害が起きてるのか、まずそこをしっかり見極め、バグならバグの報告を、仕様なら仕様への対処、障害なら障害への対処をしっかりとしてほしいってことです。
何をどんなツールを使うにせよ、基本の大前提として「自己責任」がついて回ってるってことを頭の隅にでも覚えておいてください・・・

0 件のコメント:

コメントを投稿