Jaiku API 仕様書

日本語訳: tsupo (http://watcher.moe-nifty.com/)

http://devku.org/docs の大雑把な日本語訳
(ただし、そのまま翻訳したわけではなく、一部、意訳。また、現時点の実装状況に合わせて、内容を修正している)

公式の API 解説書 "Jaiku | Documentation" にしたがって実際に Jaiku に投稿試験をしてみたところ、常に投稿に失敗することが判明。 いろいろ調査した結果、どのように対処すれば投稿できるか判明したため、以下にまとめてみた。 なお、情報の取得に関する API は、(individual stream entry を除いて)公式の API 解説書通りで問題ない。

パーソナルキー

Jaiku の API のうち、認証の必要なもの(現時点では POST 系の API のみ)に関しては、パスワードの代わりに、各ユーザごとに割り当てられた personal_key を使用する。 personal_key は、Jaiku にログイン後、http://jaiku.com/api にアクセスすれば、 "Your API Key" のところに表示されているので、それを使うことになる。 もしくは、http://api.jaiku.com/keyにアクセスすれば、personal_key が表示されるので、それを使う。 この personal_key は他人に知られないように注意すること。

Presence の取得

public stream の取得

全ユーザを対象に、公開されている投稿内容を取得する(最新のものから最大20件)

user's stream の取得

指定ユーザを対象に、公開されている投稿内容を取得する(最新のものから最大20件)

user information の取得

指定ユーザの contact 一覧を取得する (ただし、指定ユーザが情報を lock していない場合のみ取得できる)

user presence の取得

指定ユーザの presence (プロフィールと現在いる場所) を取得する (この API は、「(ブログ等に貼り付ける目的で用意されている)バッジ」で利用している)

last stream entry の取得

指定ユーザの最新の発言(コメントが付いている場合はコメントも一緒に)を取得する

individual stream entry

指定ユーザの指定アイテムに限定して、公開されている投稿内容を取得する(最新のものから最大20件)

「アイテム名」に指定できるものが不明。message, comment, music 等を指定してみたが、 いずれの場合も http://スクリーン名.jaiku.com/ (htmlファイル) が GET されてくるだけだった。 使い方が悪いだけだと思うが、正しい使い方が不明。

Presence の投稿

JSON バージョンと XML-RPC API バージョンの2種類がある。どちらを使っても構わない。

JSON バージョン

訳者注: パラメータに誤りがある等の理由で投稿に失敗した場合(例えば、アイコン番号が間違っている場合)でも

{"status":"ok"}

が返ってくることがあるので注意。投稿実行後、"last stream entry" を取得して投稿に成功しているかどうか確認することを推奨する。

XML-RPC API バージョン

訳者注: 投稿に成功した場合は、XML 形式のテキストが返ってくる。それ以外のテキスト(プレーンテキストあるいは html 形式のテキスト)が返ってきた場合は、投稿に失敗している。 以下に、応答例を示す。

<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
      <value>
        <array><data>
</data></array>
      </value>
    </param>
  </params>
</methodResponse>

アイコン番号

以下の表に示すアイコンのうち、available が yes のもののみ、指定可能。available が no のものを指定した場合は、投稿に失敗する。 (available が no のものを指定した場合でも、JSON バージョンの場合は、投稿に成功したことを示すレスポンスが返ってくるが、実際には投稿に失敗している)

codeitemimageavailable
300Blank
yes
301car-> 401no
302alarmclockno
303loudspeakeryes
304tramyes
305casetteno
306underwareno
307rollerbladeno
308uziyes
309scoopno
310bombyes
311brano
312videotapeno
313cigarettesno
314vinylno
315champaignno
316airplainyes
317busyes
318grumpyyes
319coffeeyes
320camerano
321basketballno
322beeryes
323binocularsyes
324boilerno
325walkyes
326wallclockyes
327trashcanno
328tvyes
329computingyes
330videocamerano
331gameyes
332coneno
333drilleryes
334popcornno
335playshirtno
336discno
337eventno
338exclamationmarkno
339footballyes
340footballshoeno
341eatyes
342gameboyno
343grenadeno
344handno
345hangerno
346hearingprotectoryes
347loveyes
348balloonsyes
349clockno
350barrierno
351laptopno
352megaphoneyes
353microwaveno
354bookyes
355middlefingerno
356notesno
357questionno
358rollatoryes
359shuttlecockno
360saltno
361scullyes
362sk8no
363sleepyes
364snorkelingyes
365snowflakeno
366sodano
367songyes
368spraycanyes
369sticksno
370stormyes
371straitjacketyes
372metroyes
373luggageyes
374sunno
375taxiyes
376technicsno
377toasteryes
378trainyes
379wheelchairno
380zippono
381icecreamyes
382movieno
383makeupyes
384bandaidno
385wineno
386cleanno
387bladingyes
388bikeyes
389pilsyes
390picnicno
391lifejacketyes
392homeyes
393happyyes
394toiletpaperyes
395theatreyes
396shopyes
397searchno
398cloudyno
399hurryyes
400morningyes
401caryes
402baby-boyno
403baby-girlno

補足

Jaiku には Twitter の friends_timeline に相当する情報(Jaiku では overview と称する)を取得する API が存在しないため、 friends_timeline 相当の情報を得るには、以下のような方法を使う。

  1. まず、自分の「user's stream の取得」を実行する
  2. 次に、自分の「user information の取得」を実行し、コンタクト一覧を保存する(キャッシュしておくとよい)
  3. 全コンタクト(Twitter の friends 相当)に対して、「user's stream の取得」を実行する
  4. 各 user's stream の内容をマージし、時系列順にソートする

コンタクトの数が多ければ多いほど処理コストが高くなるので、更新頻度の低いユーザの stream の取得頻度は減らす等の工夫が必要かもしれない。

関連ページ