なこったー / nakotter

nakotterβ

第1節「使い方」では、「なこったー / nakotter」の使い方や仕様などを記載しています。「なこったー / nakotter」は、OAuth 対応の Twitter 連携ライブラリです。

以下、「なこったー / nakotter」を単に nakotter と表記します。

  • 1. 使い方 - なこったー / nakotter - 解説 (本記事)

バージョン一覧:

Special Thanks!

豆狸さんが「なこったー」関連情報をまとめたリンク集と、命令の詳しい解説などを書いてくださいました!感謝!本家のマニュアルはほとんど整備てきていないので、「なこったー」を使ってみる時に何か分からないことがあったらこちらを見るといいでしょう。

Basic 認証から OAuth へ

なでしこで Twitter と言えば、八角研究所:誰でも簡単にできる Twitter ボット作成入門が有名です。この記事のプログラムを参考に作られた Twitter ボットも多いことでしょう。

ところが、今年(2010年)の 8 月から、 Basic 認証方式で Twitter API が使えなくなってしまいます。従って、同記事で紹介されているプログラムも使えなくなってしまいます。

ではどうすればいいかと言うと、 OAuth 方式で認証を行う必要があります。しかし、なでしこには OAuth 方式で認証を行うためのライブラリが用意されていません。(2010/08/15 なでしこ ver.1.533 時点)

そこで nakotter の登場です。 nakotter は OAuth 対応で、Twitter API を自然に使うことができます。グループ機能を使って実装されているので、拡張性も高くなっています。 nakotter の特徴は次の通り:

  • OAuth 対応(OAuth ライブラリ同梱)
  • 取得データを扱いやすい(JSONデータをなでしこのハッシュ/配列に変換)
  • Twitter API のオプション・パラメータを、ハッシュで柔軟に指定可能

OAuthの初期設定

nakotter を使う前に必要な準備の基本的な流れは次の通りです:

  1. OAuth コンシューマの設定
  2. OAuth アクセストークンの取得

それぞれ、説明していきます。

1. OAuth コンシューマの設定

まずは、つぶやいたりするためのアプリケーションの準備をします。

コンシューマとは、API を利用するクライアントアプリケーションのことです。OAuth で Twitter API にアクセスするためには、Twitter で予めコンシューマ登録して、コンシューマキー及びコンシューマシークレットを入手しておく必要があります。

ここでは例として、「nakotter」というアプリケーション名でコンシューマ登録して、「なこったークライアント」という Twitter クライアントを作ることにしましょう。なおコンシューマ登録は、Twitter 公式サイトに開発者アカウントでログインして行って下さい。

なこったークライアントとはNakotter
そのoauthのコンシューマのトークンキー = 『lFjjUGoiNEMXKGKo60Kw』
そのoauthのコンシューマのシークレット = 『VC0jfRWcmFvvG77KJagiLkmHptuoiTEJtfXTlUnrY』

このように、コンシューマ登録して入手した 2 つのキーで初期化します。これでアプリケーション側の準備が整いました。

2. OAuth アクセストークンの取得

次に、実際につぶやいたりするユーザ側の準備をします。

アプリケーションの準備はしたので、次はアクセス認証を行います。API へのアクセス権限の鍵となるのが、アクセストークンアクセストークンシークレットです。コンシューマアプリケーションが Twitter にアクセス権限を要求し、Twitter 側はユーザにその許可を求め、それをユーザが許可するというやり取りを行うのです。

では、「なこったークライアント」がユーザアカウントの代理として Twitter API にアクセスすることを Twitter に許可します。ブラウザを立ち上げてそのユーザで Twitter Web にログインしたら、次のプログラムを続けて実行します。

# コンシューマ設定は「1. OAuth コンシューマの設定」のもの
なこったークライアントとはNakotter
そのoauthのコンシューマのトークンキー = 『lFjjUGoiNEMXKGKo60Kw』
そのoauthのコンシューマのシークレット = 『VC0jfRWcmFvvG77KJagiLkmHptuoiTEJtfXTlUnrY』

なこったークライアントで認証する。
メモ記入。

実行すると、ブラウザでページが開き、「なこったークライアント」のアクセスを許可するかユーザに確認を求めてきます[*1]。間違いなければ、ここで認証を許可します。

認証画面のキャプチャ図「nakotterβによるアクセスを許可しますか?」

すると、アクセストークンの取得用の暗証番号が表示されるので、なこったークライアントに戻りそれを入力します。余分な文字が入らないように気をつけて下さい。

認証成功画面のキャプチャ図「アクセストークンの暗証番号」

アクセストークンの取得が成功したら、次のように、アクセストークン(oauth_token)とアクセストークンシークレット(oauth_token_secret)が表示されます。これらの値をしっかりとメモしておきます

user_id=61839477
screen_name=_U_D_
oauth_token=61839477-HgblH76gsx4a4eVQGotmFKzTX77nFtZkKc4SqhDNp
oauth_token_secret=GeqZytZlSLmdxLzJqc2hYQSRd0eLvPnOy5Nl4epck

ここまでは、あくまでアクセストークンの取得に必要な補助のプログラムです。アクセストークンを取得するプログラムの実行は、基本的には認証したいアカウントにつき一度だけで十分です。これでようやく Twitter のクライアントアプリケーション(あるいは bot )をなでしこで実装できます。

なこったークライアントとはNakotter
そのoauthのコンシューマのトークンキー = 『lFjjUGoiNEMXKGKo60Kw』
そのoauthのコンシューマのシークレット = 『VC0jfRWcmFvvG77KJagiLkmHptuoiTEJtfXTlUnrY』
そのoauthのトークンキー = 『61839477-HgblH76gsx4a4eVQGotmFKzTX77nFtZkKc4SqhDNp』
そのoauthのシークレット = 『GeqZytZlSLmdxLzJqc2hYQSRd0eLvPnOy5Nl4epck』

oauthのトークンキー・シークレットに、先ほど取得したアクセストークン・シークレットを設定しました。これで、「 @_U_D_ 」の代理として「なこったークライアント」が Twitter API にアクセスすることが可能になります。

Twitter API を使う

nakotter に実装されている Twitter API のメソッドを解説していきます。

つぶやく

なこったークライアントからPARAMETERMESSAGEとつぶやく」で Twitter に MESSAGE を発言します。 PARAMETER は省略可能で、ハッシュで API の引数を指定します。詳しくは POST statases/update | dev.twitter.com を参照してください。成功した場合、返り値は発言したステータスの情報を含むハッシュです。

なこったークライアントから『なこったーテスト』とつぶやく
それをJSONエンコードしてメモ記入

ホームTL取得

なこったークライアントからPARAMETERでホームTL取得」で、フォローしているユーザなどのつぶやき一覧を取得します(Twitter Web の Home で見れるタイムラインと同じです)。 PARAMETER は省略可能で、ハッシュで API の引数を指定します。詳しくは GET statases/home_timeline | dev.twitter.com を参照してください。成功した場合、返り値はステータスの情報を含むハッシュの配列です。

なこったークライアントからホームTL取得して反復
 対象@`text`を表示

ユーザTL取得

なこったークライアントからPARAMETERSCREEN_NAMEのユーザTL取得」で、特定のユーザのつぶやき一覧を取得します。SCREEN_NAME にはタイムラインを取得したいユーザのアカウント名を指定します。 PARAMETER は省略可能で、ハッシュで API の引数を指定します。詳しくは GET statases/user_timeline | dev.twitter.com を参照してください。成功した場合、返り値はステータスの情報を含むハッシュの配列です。

なこったークライアントから『_U_D_』のユーザTL取得して反復
 対象@`text`を表示

返信取得

なこったークライアントからPARAMETERで返信取得」で、アカウントへの返信一覧を取得します。 PARAMETER は省略可能で、ハッシュで API の引数を指定します。詳しくは GET statases/mentions | dev.twitter.com を参照してください。成功した場合、返り値はステータスの情報を含むハッシュの配列です。

なこったークライアントから返信取得して反復
 対象@`text`を表示

返信する

返信に特化した「つぶやく」メソッドです。「なこったークライアントからMESSAGESTATUS_IDに返信する」で、特定の発言宛に MESSEGE で返信します。返信先は STATUS_ID を文字列で指定します。返り値は「つぶやく」と同じです。 MESSAGE はどこかに @返信先アカウント名 が含まれている必要があります。※整数型で指定しようとすると失敗します。

なこったークライアントから『@_U_D_ これは nakotter から返信するテストです。』と『20617375799』に返信する
それをJSONエンコードしてメモ記入

Twitter API 対応表

Twitter API と nakotter の対応状況比較表
分類
Twitter API nakotter メソッド version 補足
Timeline Methods
statuses/public_timeline --
statuses/home_timeline ホームTL取得ver.0.21-
statuses/friends_timeline --
statuses/user_timeline ユーザTL取得ver.0.21-制限付[*3]
statuses/mentions 返信取得ver.0.21-非推奨[*4]
返信一覧取得ver.0.4-
statuses/retweeted_by_me --
statuses/retweeted_to_me --
statuses/retweets_of_me リツイート一覧取得ver.0.4-
Status Methods
statuses/show つぶやき取得ver.0.4-
statuses/update つぶやくver.0.21-
返信ver.0.21-制限付[*3]
statuses/destroy つぶやき削除ver.0.31-
statuses/retweet リツイートver.0.31-
statuses/retweets --
statuses/id/retweeted_by リツイートしたユーザ一覧取得ver.0.4-
statuses/id/retweeted_by/ids --
User Methods
users/show --
users/lookup ユーザ列挙ver.0.4-制限付[*3]
users/search --
users/suggestions --
users/suggestions/category --
statuses/friends 友達一覧取得ver.0.4-
statuses/followers フォロワー一覧取得ver.0.4-
List Methods
List Members Methods
List Subscribers Methods
Direct Message Methods
direct_messages 受信DM一覧取得ver.0.4-
direct_messages/sent 送信DM一覧取得ver.0.4-
direct_messages/new DM送信ver.0.4-制限付[*3]
direct_messages/destroy DM削除ver.0.4-
Friendship Methods
friendships/create フォローver.0.31-制限付[*3]
friendships/destroy リムーブver.0.4-制限付[*3]
friendships/exists --
friendships/show フォロー関係取得ver.0.4-制限付[*3]
friendships/incoming --
friendships/outgoing --
Social Graph Methods
Account Methods
Favorite Methods
favorites ふぁぼり一覧取得ver.0.4-
favorites/create ふぁぼるver.0.33-制限付[*3]
favorites/destroy ふぁぼり削除ver.0.4-
Notification Methods
Block Methods
blocks/create ブロックver.0.42-
blocks/destroy ブロック解除ver.0.42-
blocks/blocking ブロックユーザ一覧取得ver.0.42-
Spam Reporting Methods
Saved Searches Methods
OAuth Methods
oauth/request_token oauthのリクエストトークン取得処理ver.0.21-
oauth/authorize (oauthの認証URL取得処理)ver.0.21-URL 生成のみ
oauth/authenticate --
oauth/access_token oauthのアクセストークン取得処理ver.0.21-
Trends Methods
Geo methods
Help Methods
help/test API確認ver.0.32-

バージョン情報

作者
U D
ツール名
なこったー / nakotter
ライブラリバージョン
ver.0.42
ライブラリリビジョン
rev.37
ライブラリ最終更新
2010-10-27T00:00:00+09:00
動作確認バージョン
nadesiko ver.1.5329-1.5332
文書バージョン
ver.0.4.e
文書最終更新
2011-05-20T21:30:00+09:00
なでしこバージョン対応表
なでしこnakotter
version 1.5331ver.0.32
version 1.5332ver.0.42

この文書は なこったー / nakotter の仕様書兼説明書です。

注釈

*1
もしブラウザが立ち上がらなかったら、自分でブラウザを立ち上げて認証確認画面を開いてください。この処理の時に URL をクリップボードにコピーするようにしています。
*2
STATUS_ID を整数型で扱おうとすると、値がオーバーフローして正常に扱えない可能性があります。 STATUS_ID に対して数値的な処理を行うことはないハズなので、基本的に文字列として扱うように注意してください。この問題は、「返信」メソッド以外の他の命令の引数でも同様です。
*3
いくつかの nakotter メソッドは、使いやすさと書きやすさのために、従来の柔軟な Twitter API よりも機能を制限して定義されています。例えばフォロー関係取得メソッドは 2 つの SCREEN_NAME を引数にとりますが、対応する Twitter API "friendships/show" では、実際には USER_ID を引数に与えることも出来ます。本来の柔軟な機能は損なわれますが、引数を SCREEN_NAME に限定したことで「nakotterからABのフォロー関係取得」と分かりやすく短く書くことができるようになっています。こういった制限の度合いは、各メソッドによりまちまちです。
*4
メソッド名の統一のため ver.0.4 で返信一覧取得が追加されました。古い方の返信取得メソッドは初期から存在していたメソッドのため、後方互換のため残していますが、返信一覧取得を呼び出すだけなので返信一覧取得を使うようにしてください。
*5
Twitter API が返す .json フォーマットの変更により、TL取得系の命令が正常に動作していませんでした。この不具合の原因は、なでしこの「JSONデコード」命令が「\u003C」のような数値参照記法を正しく decode できていなかったバグによるものです。 ver.0.41 (bug hotfix ver.) では、暫定的にこれら一部の数値参照記法を直接置き換える手法をとっています。