🐦 Twitter API 1.1 のできないこと

取得不可能なデータ、実装不可能な機能

Keisuke Kawamura a.k.a. 131e55
Liaro Engineering Blog
7 min readOct 27, 2017

--

こんにちは Keisuke です😼
個人で開発している iOS 用 Twitter クライアントアプリ「Hotaru」の開発を通して、現在の Twitter API 1.1 では取得不可能なデータがいくつもあることを知り Twitter さんに絶望したので、愚痴を投げる勢いでまとめていきます。

🙅ユーザの投稿したメディア数を取得できない

公式 Twitter では以下の画像のように、あるユーザが投稿したメディアの総数を見ることができます。

ユーザが投稿したメディアの数 (公式 Twitter iOS アプリ)

あるユーザの情報を取得するには GET users/show を使います。この API ではユーザの ID・スクリーンネーム・プロフィール文などのデータが取得でき、その中にはフォロー数・フォロワー数・ツイート数・いいね数・リスト数と「数」に関するものも含まれています。しかし、メディアの数は含まれていないので取得できません。

GET users/show 公式リファレンス

他の取得方法がないか模索しましたが「全てのツイートを取得してメディアの数を数える」のは通信量的にナンセンスですし、結局取得する方法がわからず諦めました。

Hotaru ではメディアだけ数がわからない UI に…😿

🙅ユーザの固定されたツイートを取得できない

固定されたツイート (公式 Twitter iOS アプリ)

公式 Twitter には過去に投稿したツイートを1つだけ最上部に固定できる機能がありますが、この固定されたツイートを取得する API が見つかりませんでした。ユーザの情報を取得できる GET users/show にはユーザの最新ツイートが含まれているので期待していたのですが固定されたツイートは含まれていませんでした。

GET users/show 公式リファレンス

🙅ユーザの誕生日を取得できない

ユーザの場所・URL・登録日・誕生日 (公式 Twitter Web)

ユーザの情報を取得できる GET users/show を使えばユーザの Twitter 登録日・場所・URL は取得できますが、誕生日だけは含まれていないため取得できませんでした。

GET users/show 公式リファレンス

🙅アンケートを取得できない

最近の機能なので API は存在しないだろうなとは思っていましたが本当にありません。

自分からアンケートを始めることも、他人のアンケートに答えることもできません。Twitter API 1.1 でアンケートツイートの取得を試みた場合、アンケートではない通常のツイートと同等の情報が返されます。「あるツイートがアンケートを含むかどうか」すらも判断できないため、本文だけのアンケートのないツイートに成り下がります。

Hotaru では「アンケートは公式 Twitter でしか見れません」という旨を表示し、公式 Twitter アプリへ飛ばす処理を書くつもりでしたが、判断材料が見つからず諦めました。

🙅モーメントを取得できない

最近の機能なので、はい。

🙅フォローリクエストをキャンセルできない

ユーザをフォローするときは POST friendships/create を使います。通常は対象のユーザをフォローするだけですが、対象のユーザが鍵付きであった場合、フォローリクエストという扱いになります。しかし、このフォローリクエストをキャンセルするための API が存在しません。

フォローを外すときは POST friendships/destroy を使うのでこれでキャンセルできると期待していましたができませんでした。「フォローしていないユーザのフォローを外す」つまりフォロー状態は何も変化しないという挙動なのでしょう。

POST friendships/create 公式リファレンス
POST friendships/destroy 公式リファレンス

この問題は次の Twitter 公式デベロッパーフォーラムでも議論されています。

Is there any REST API to cancel “Follow Request Sent”?

上記のフォーラムでも、フォローリクエストをキャンセルするための API は存在しないという結論のようです。「ブロックした直後ブロックを解除する」方法も提案されていますが、対象のユーザが自分をフォローしていた場合、そのフォローをも外してしまうので採用しませんでした。

Hotaru では実装を諦めて公式の Twitter アプリに飛ばすだけにし、そこでユーザ自身でキャンセルしてもらう形に妥協しました。

🙅ツイートに送られたリプライを取得できない

どうぶつの森とても楽しみ😸

例として任天堂のツイートを扱います。見てほしいのは次の箇所で、公式 Twitter では次のように「あるツイートに送られたリプライの数」がわかります。

リプライ数・リツイート数・いいね数の表示 (公式 Twitter Web)

そして、ツイートの詳細を見るとそのツイートに対して送られたリプライの一覧が見れます。

任天堂のツイートに送られたリプライの一部 (公式 Twitter Web)

Twitter API 1.1 ではこの「あるツイートに対して送られたリプライ」を取得することができません。その数も取得できません。🙀

この問題は次の Twitter 公式デベロッパーフォーラムでも議論されています。

View Conversations- API Support

2013 年から始まっているこの話題。開発者の皆さんが API を提供して欲しそうにしている中、6 日前(執筆時現在) に投稿された Twitter からの公式回答は…

There’s no current plan for a conversation API at this time.

😿😿😿😿😿😿😿😿😿😿

フォーラムを読むと GET conversation/show という非公開 API が存在しているようですが、これを公開する予定はないそうです。

🙅公式 Twitter に追いつくことはできない

まとめです。

本記事は Hotaru の開発時に気づいたものしかまとめていないため、他にも Twitter API 1.1 ではできないことが山ほどあるでしょう。

データの取得すらできず、実装することができない機能があることなど、これから開発しようと考えている皆さん、既に開発している皆さんの参考に少しでもなれれば幸いです。

ではでは〜

--

--

Keisuke Kawamura a.k.a. 131e55
Liaro Engineering Blog

🍎Apple/Swift/iOS が好きなエンジニア👨‍💻@Hotaru_iOS 開発中❗️Unity ゲームも作りたい。音楽は Serph が好き🎶趣味は音ゲー(弐寺SP十段DP七段/ドラム前作銅)、アニメ、将棋とか🎮