twitter api 1.1 变化


REST API


REST APIはTwitter APIの一番伝統的で中核となるAPI群です。これまでREST APIを呼び出す際のエンドポイントURLは「http(s)://api.twitter.com/1/*」でしたが、Twitter API 1.1では「http(s)://api.twitter.com/1.1/*」となります。

 多くのAPIはエンドポイントURLが変わるだけですが、一部廃止・変更もあるので、注意が必要です。公式ドキュメントに廃止・変更になるAPIのリストがないので、以下にまとめました。

 なお、廃止対象に挙げているAPIでもAPI 1.1のエンドポイントで実際呼び出せてしまうものがいくつかありますが、ドキュメントには記載されておらず、今後呼び出せなくなる可能性がありますので使うべきではないでしょう。

  • 廃止になるAPI(废弃的)

  /statuses/retweeted_by_me
  /statuses/retweeted_to_me
  /statuses/retweets_of_me
  /statuses/retweeted_to_user
  /statuses/retweeted_by_user
  /statuses/:id/retweeted_by
  /statuses/:id/retweeted_by/ids
  /friendships/exists
  /friendships/no_retweet_ids
  /account/totals
  /notifications/follow
  /notifications/leave
  /trends/daily
  /trends/weekly
  /blocks/blocking
  /help/test

  • 変更になるAPI(有变更的api)

  /blocks/blocking/ids → /blocks/ids
  /direct_messages/destroy/:id.json → /direct_messages/destroy.json?id=:id
  /favorites/create/:id.json → /favorites/create.json?id=:id
  /favorites/destroy/:id.json → /favorites/destroy.json?id=:id
  /account/rate_limit_status.json → /application/rate_limit_status.json
  /lists.json → /lists/list.json

Twitter API 1.1では全てOAuthが必須となります。



検索APIの変更点

従来検索API呼び出し用のエンドポイントは「http://search.twitter.com/search.json」でしたが、API 1.1ではREST APIと統合され、「https://api.twitter.com/1.1/search/tweets.json」となります。

 また、従来検索APIのレスポンスの構造はREST APIのレスポンスと異なっていましたが、API 1.1で統一されることになります。つまり、呼び出しエンドポイントを書き換えるだけではなく、レスポンスをパースする部分についても、コードの改修が必要になります。

 レートリミットについては、これまでIPアドレス単位であったのが、REST APIと同じくアカウント単位となります。他のサービスとIPアドレスを共有しているクラウドにデプロイしたアプリケーションが予測できないタイミングでレートリミットに達してしまうようなことはなくなります。

検索API変更のポイント

  • エンドポイントURLが変更
  • レスポンスの構造がREST APIと統一
  • レートリミットはIPアドレス単位ではなくアカウント単位へ

【3】レートリミットの変更点

 Twitter APIを利用する上で忘れてはならないのがレートリミットです。従来REST APIのレートリミットはOAuthなしの場合はIPアドレス当たり1時間150回、OAuthありの場合は1アカウント当たり1時間350回でした。

 API 1.1では、1アカウント当たり15分で“エンドポイントごとに”15回または180回となります。単純に1時間当たりにならすと、60回または720回になるので、多数のエンドポイントを利用するアプリケーションにとっては350回以上呼び出せることになります。よって実質、制限が緩くなったことになります。

 しかし、特定のエンドポイントを集中的に呼び出すようなアプリケーションにとっては幾分制限が厳しくなります。レートリミットにシビアなアプリケーションでは、呼び出せる残り回数をX-Rate-Limit-Remainingヘッダで、また呼び出しカウントがリセットされる時間をX-Rate-Limit-Resetヘッダで確認するようにしましょう。従来のX-RateLimit-*と違いRateとLimitの間にハイフンが入っていることに注意してください(参考:公式ドキュメントの「レートリミットの詳細(英語)」)。

 各エンドポイントの実際のリミットについては公式ドキュメント「エンドポイントごとの15分当たりのリミット(英語)」をご参照ください。

 1日1アカウント当たりツイート1000件、ダイレクトメッセージ250件といった更新系のAPI、またストリーミングAPIの制限については変更ありません。

レートリミット変更のポイント

  • リミットはアカウント単位ではなくエンドポイント単位
  • アプリケーションにより、制限が緩くなる場合と厳しくなる場合とある
  • ツイート数、DM数については変更なし

【4】アプリケーション当たりのユーザー数

 今回初めて導入されたのが「アプリケーション当たりのユーザー数」という制限です。ここでいう「アプリケーション」はTwitter APIに接続するサービスやアプリごとにdev.twitter.comで登録するものを指しており、1クライアントアプリケーション当たり10万ユーザーが限度となりました。それ以上の数のユーザーが利用するには、個別にTwitterの許可が必要です。

 今回のAPI/規約改定において、後述の「Display Requirements」と併せて、とりわけ大きく話題になっており、また開発者の離反を招く原因ともなっています。

 ただし、このユーザー数の制限は「クライアントアプリケーション」にのみ適用されるもので、単にTwitterと連携するサービスやアプリケーションは関係ありません。いわゆる「Twitterクライアント」を新規に開発するのでなければ気にする必要はないでしょう。

 また、すでに10万ユーザーを超えているクライアントアプリケーションについては現ユーザー数の倍まで許容されるとのことです。実質的には既存ユーザーには影響を与えずに新規のクライアントアプリケーションの開発を抑止するための施策と見てよさそうです。

 そもそもTwitterは1年半以上前、開発者向けにクライアントアプリケーションの開発ではなくTwitterが提供していない領域のサービスの開発を推奨する旨の声明を出しています(参考:「Twitter Development Talk > consistency and ecosystem opportunities」)。

 趣味や習作であれば問題ありませんが、今後ビジネスとして新規にTwitterクライアントアプリケーションを開発するのは賢明ではなさそうです。どれだけ努力をしても安全に到達できるユーザー数は10万であり、それ以上のユーザー数を獲得するのがTwitterによって許可されるのかどうかは不明だからです。

【5】ツイート、タイムライン表示方式の厳格化

 Twitterは従来よりAPIを通じて取得したコンテンツを「Display Guidelines」で決められたフォーマットに従って表示するよう開発者に要請してきました。これまでは「ガイドライン」であり、その適用を強制することはありませんでした。

 今回からガイドラインは「Display Requirements」と改められ、アプリケーションはこのフォーマットに従ってツイートなどを表示する必要があります。技術的に対応できない場合は、個別に問い合わせて許可を得る必要があるとしており、かなり厳密に適用を求める姿勢のようです。

 規定の内容はかなり細かく、例えば「山本裕介 @yusuke」のように@ユーザー名よりも前(または上)に名前を表示すること、ツイートのタイムスタンプが24時間以内であれば相対時刻で表示すること、ツイートのアイコンを左側に必ず表示することなどが決められています。詳しくは、公式ドキュメント「Developer Display Requirements」をご覧ください。

 Webサイトに数個のツイートを張り付ける程度であればTwitterの「このツイートをサイトに埋め込む」機能より取得したHTMLを利用すると良いでしょう。

ma_tweet01.gif 図 ツイートの埋め込み機能

冷静に情報の情報の真贋を見極めよう

 Twitter APIは柔軟性と自由度の高さから人気があるだけに、いくらかの制約を加える今回の仕様・規約変更はセンセーショナルに受け止められています。しかしTwitterの主張するユーザー体験の統一や、一部の過負荷なアプリケーションの抑制といった目的からは理にかなった変更ともいえるでしょう。

 要点さえ押さえれば、今回の変更に対応するのは難しいことではありません。年々存在感を増しているプラットフォームですから、その強みを生かして今後もAPIを活用してはいかがでしょうか?

 また、今回の騒動に連動してTwitter関連の話題はことさら拡散しやすい状態にあります。中には憶測にすぎない記事も確定事項であるかのように大きく取り上げられていることすらあります。

 Twitter連携アプリケーションを開発・検討している開発者の方はいつも以上に冷静になって、情報の真贋を見極める必要があります。Twitterと連携するビジネスを展開する場合は日ごろから、公式ドキュメントブログ掲示板、非公式ですが、Twitter API日本語メーリングリストをチェックしておくと良いでしょう。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值