Twitter APIの機能を網羅的に理解したいと思いこの記事を書きました。
以前、「予約投稿」という観点から、Twitter APIで出来ること/できないことを整理しましたが、Twitter APIを使い倒すには不十分でした。そこで、Twitter APIで提供される機能の全体像が分かりやすく整理されている日本語文献(英語苦手なので…)を探したのですが、見当たらなかったので、自分で整理してみようと思い至りました。
お品書きは以下の通りです。
- マインドマップによる機能の整理
- 各機能とモジュールの対応
- ①プロフ・ユーザー・DM・いいね・投稿
- ②ミュート・ブロック・フォロー/被フォロー・リスト
「マインドマップによる機能の整理」では、Twitter APIで提供される機能の全体像を整理し、
「各機能とモジュールの対応」では、上述の機能とそれを実現するpython-twitterモジュールの対応関係を整理しています。
マインドマップによる機能の整理
早速ですが、Twitter APIで利用できる機能には以下のようなものがあります。ご存知の方も多いでしょうが、Twitterアプリ上で実現出来ることの多くが、Twitter APIによってカバーされているようです。

現段階で分かっている「出来ないこと」は以下の通りです。使い倒す過程で判明したものを、適宜追加していこうと思います。
- 予約投稿の機能はない(投稿機能はある)
- 投稿をいいねしたユーザー一覧を取得する機能はない(RTしたユーザー一覧を取得する機能はある)
- 過去のフォロー/フォロワー数を取得する機能はない(現在のフォロー/フォロワー数は取得する機能はある)
なお、今回参考にしたのは、python-twitterというライブラリの公式ドキュメントです。
ドキュメントに記載されているモジュールのうち、主要なものを独断と偏見でピックアップし、私がしっくりくる軸で整理しました。
余談ですが、マインドマップのツールには、Brainioを使いました。今回初めてこのツールを使いましたが、下記のように、マークダウン記法とGUIを併用できるので、とても便利でした!

各機能とモジュールの対応
以降、前述のマインドマップで触れた各機能に対応するモジュール一覧をご紹介します。マインドマップと合わせてレファレンス的に使っていただければ幸いです。
※複数行記載している機能は、類似するモジュールが複数あるものです。詳細は、公式ドキュメントにてご確認いただければと思います。
紹介するモジュールは、下記の要領で実行可能なはずです。
import twitter #今回使うTwitter APIのライブラリ
import config #Twitter APIにアクセスするための情報を記録したもの
api = twitter.Api(consumer_key=config.CONSUMER_KEY,
consumer_secret=config.CONSUMER_SECRET,
access_token_key=config.ACCESS_TOKEN,
access_token_secret=config.ACCESS_TOKEN_SECRET
)
api.[以下で紹介するモジュール]
①プロフ・ユーザー・DM・いいね・投稿
カテゴリ | 機能 | モジュール |
プロフ | プロフバナー更新 | UpdateBanner(image, include_entities=False, skip_status=False) |
プロフ | プロフ画像更新 | UpdateImage(image, include_entities=False, skip_status=False) |
プロフ | プロフ更新 | UpdateProfile(name=None, profileURL=None, location=None, description=None, profile_link_color=None, include_entities=False, skip_status=False) |
ユーザー | ユーザーIDに対応するユーザー情報※の取得 ※GetUserの返り値が持つ属性情報(statuses_count、followers_count、friends_countなど)を参照すれば、投稿数、フォロー数、フォロワー数などの情報が確認出来る | GetUser(user_id=None, screen_name=None, include_entities=True, return_json=False) |
ユーザー | 検索ワードに関連するユーザー一覧の取得 | GetUsersSearch(term=None, page=1, count=20, include_entities=None) |
DM | DMの削除 | DestroyDirectMessage(message_id, include_entities=True, return_json=False) |
DM | DMの送信 | PostDirectMessage(text, user_id=None, media_file_path=None, media_type=None, screen_name=None, return_json=False) |
DM | 受信したDM一覧の取得(自分のみ) | GetDirectMessages(since_id=None, max_id=None, count=None, include_entities=True, skip_status=False, full_text=False, page=None, return_json=False) |
DM | 送信したDM一覧の取得(自分のみ) | GetSentDirectMessages(since_id=None, max_id=None, count=None, page=None, include_entities=True, return_json=False) |
いいね | いいね | CreateFavorite(status=None, status_id=None, include_entities=True) |
いいね | いいねの取り消し | DestroyFavorite(status=None, status_id=None, include_entities=True) |
いいね | ユーザーがいいねした投稿一覧の取得 | GetFavorites(user_id=None, screen_name=None, count=None, since_id=None, max_id=None, include_entities=True, return_json=False) |
投稿:全般 | Tweetの投稿 | PostUpdate(status, media=None, media_additional_owners=None, media_category=None, in_reply_to_status_id=None, auto_populate_reply_metadata=False, exclude_reply_user_ids=None, latitude=None, longitude=None, place_id=None, display_coordinates=False, trim_user=False, verify_status_length=True, attachment_url=None) |
投稿:全般 | Tweetの投稿 (ただし、文字数が超過した場合には複数投稿に分割する) | PostUpdates(status, continuation=None, **kwargs) |
投稿:全般 | 投稿の削除 | DestroyStatus(status_id, trim_user=False) |
投稿:全般 | タイムラインの取得(自分のみ) | GetHomeTimeline(count=None, since_id=None, max_id=None, trim_user=False, exclude_replies=False, contributor_details=False, include_entities=True) |
投稿:全般 | 投稿の検索 | GetSearch(term=None, raw_query=None, geocode=None, since_id=None, max_id=None, until=None, since=None, count=15, lang=None, locale=None, result_type=’mixed’, include_entities=None, return_json=False) |
投稿:全般 | status idに対応する投稿情報の取得 ※GetStatusの返り値が持つ属性情報(created_at、retweet_count、retweet_countなど)を参照すれば、投稿日時、いいね数、RT数などの情報が確認出来る | GetStatus(status_id, trim_user=False, include_my_retweet=True, include_entities=True, include_ext_alt_text=True) |
投稿:全般 | status idsに対応する投稿情報の取得(複数のidを指定可能) | GetStatuses(status_ids, trim_user=False, include_entities=True, map=False) |
投稿:全般 | ユーザーの投稿一覧の取得 | GetUserTimeline(user_id=None, screen_name=None, since_id=None, max_id=None, count=None, include_rts=True, trim_user=False, exclude_replies=False) |
投稿:返信 | 自分への返信一覧の取得(自分のみ) | GetReplies(since_id=None, count=None, max_id=None, trim_user=False) |
投稿:RT | 投稿をRTしたユーザー一覧の取得 | GetRetweeters(status_id, cursor=None, count=100, stringify_ids=False) GetRetweets(statusid, count=None, trim_user=False) |
投稿:RT | RTされた自分の投稿一覧の取得(自分へのRTのみ) | GetRetweetsOfMe(count=None, since_id=None, max_id=None, trim_user=False, include_entities=True, include_user_entities=True) |
投稿:RT | 自分がRTした投稿一覧の取得(自分のRTのみ) | GetUserRetweets(count=None, since_id=None, max_id=None, trim_user=False) |
投稿:RT | RTの投稿 | PostRetweet(status_id, trim_user=False) |
投稿:メンション | ユーザーがメンションされた投稿一覧の取得 | GetMentions(count=None, since_id=None, max_id=None, trim_user=False, contributor_details=False, include_entities=True, return_json=False) |
②ミュート・ブロック・フォロー/被フォロー・リスト
カテゴリ | 機能 | モジュール |
ブロック | ブロック | CreateBlock(user_id=None, screen_name=None, include_entities=True, skip_status=False) |
ブロック | ブロックの解除 | DestroyBlock(user_id=None, screen_name=None, include_entities=True, skip_status=False) |
ブロック | 自分がブロックしているユーザー一覧の取得(自分のみ) | GetBlocks(skip_status=False, include_entities=False) GetBlocksIDs(stringify_ids=False) GetBlocksIDsPaged(cursor=-1, stringify_ids=False) |
ミュート | ミュート | CreateMute(user_id=None, screen_name=None, include_entities=True, skip_status=False) |
ミュート | ミュートの解除 | DestroyMute(user_id=None, screen_name=None, include_entities=True, skip_status=False)[ |
ミュート | 自分がミュートにしたユーザー一覧の取得(自分のみ) | GetMutes(skip_status=False, include_entities=False) GetMutesIDs(stringify_ids=False) GetMutesIDsPaged(cursor=-1, stringify_ids=False) |
フォロー/被フォロー | フォロー | CreateFriendship(user_id=None, screen_name=None, follow=True, retweets=True, **kwargs) |
フォロー/被フォロー | フォローの解除 | DestroyFriendship(user_id=None, screen_name=None) |
フォロー/被フォロー | フォロー/解除 | UpdateFriendship(user_id=None, screen_name=None, follow=True, retweets=True, **kwargs) |
フォロー/被フォロー | ユーザーのフォロー一覧の取得 | GetFriendIDs(user_id=None, screen_name=None, cursor=None, count=None, stringify_ids=False, total_count=None) GetFriendIDsPaged(user_id=None, screen_name=None, cursor=-1, stringify_ids=False, count=5000) GetFriends(user_id=None, screen_name=None, cursor=None, count=None, total_count=None, skip_status=False, include_user_entities=True) GetFriendsPaged(user_id=None, screen_name=None, cursor=-1, count=200, skip_status=False, include_user_entities=True) |
フォロー/被フォロー | ユーザーのフォロワー一覧の取得 | GetFollowerIDs(user_id=None, screen_name=None, cursor=None, stringify_ids=False, count=None, total_count=None) GetFollowerIDsPaged(user_id=None, screen_name=None, cursor=-1, stringify_ids=False, count=5000) GetFollowers(user_id=None, screen_name=None, cursor=None, count=None, total_count=None, skip_status=False, include_user_entities=True) GetFollowersPaged(user_id=None, screen_name=None, cursor=-1, count=200, skip_status=False, include_user_entities=True) |
フォロー/被フォロー | フォロー申請を保留中のユーザー一覧の取得(自分のみ) | IncomingFriendship(cursor=None, stringify_ids=None) |
フォロー/被フォロー | 自分とユーザーとのフォロー関係の取得(自分にフォローされているか、自分をフォローしているか) | LookupFriendship(user_id=None, screen_name=None, return_json=False) |
フォロー/被フォロー | 自分がフォロー申請中のユーザー一覧の取得(自分のみ) | OutgoingFriendship(cursor=None, stringify_ids=None) |
フォロー/被フォロー | 特定のユーザーA/Bの間のフォロー関係の取得(ユーザーAがBにフォローされているか、AがBをフォローしているか) | ShowFriendship(source_user_id=None, source_screen_name=None, target_user_id=None, target_screen_name=None) |
リスト | リストの作成 | CreateList(name, mode=None, description=None) |
リスト | リストにメンバーを追加 | CreateListsMember(list_id=None, slug=None, user_id=None, screen_name=None, owner_screen_name=None, owner_id=None) |
リスト | リストをフォロー | CreateSubscription(owner_screen_name=None, owner_id=None, list_id=None, slug=None) |
リスト | リストを削除 | DestroyList(owner_screen_name=None, owner_id=None, list_id=None, slug=None) |
リスト | リストからメンバーを削除 | DestroyListsMember(list_id=None, slug=None, owner_screen_name=None, owner_id=None, user_id=None, screen_name=None) |
リスト | リストのフォローを解除 | DestroySubscription(owner_screen_name=None, owner_id=None, list_id=None, slug=None) |
リスト | リストに登録されているユーザー一覧の取得 | GetListMembers(list_id=None, slug=None, owner_id=None, owner_screen_name=None, skip_status=False, include_entities=False) GetListMembersPaged(list_id=None, slug=None, owner_id=None, owner_screen_name=None, cursor=-1, count=100, skip_status=False, include_entities=True) |
リスト | リストへの投稿一覧の取得 | GetListTimeline(list_id=None, slug=None, owner_id=None, owner_screen_name=None, since_id=None, max_id=None, count=None, include_rts=True, include_entities=True, return_json=False) |
リスト | ユーザーが作成したリスト一覧の取得 | GetLists(user_id=None, screen_name=None) GetListsPaged(user_id=None, screen_name=None, cursor=-1, count=20) |
リスト | ユーザーがフォローしているリスト一覧の取得 | GetListsList(screen_name=None, user_id=None, reverse=False, return_json=False) GetSubscriptions(user_id=None, screen_name=None, count=20, cursor=-1, return_json=False) |
リスト | ユーザーがメンバー登録されているリスト一覧の取得 | GetMemberships(user_id=None, screen_name=None, count=20, cursor=-1, filter_to_owned_lists=False, return_json=False) |
リスト | 特定のユーザーが特定のリストをフォローしているかどうか | ShowSubscription(owner_screen_name=None, owner_id=None, list_id=None, slug=None, user_id=None, screen_name=None, include_entities=False, skip_status=False, return_json=False) |
最後に
最後までご覧いただきありがとうございました。
繰り返しの案内になりますが、詳細に関しては公式ドキュメントをご覧ください。

以上!またどこかでお会いしましょう!