私的利用、自作 Twitter アプリ < iYKTwitter >

@iphone_dev_jp [ http://twitter.com/iphone_dev_jp ] 閲覧目的で、遅ればせながら Twitter @KYoshiaki [ http://twitter.com/KYoshiaki ] を始めてみました。とりあえず、次のアプリをダウンロードしてみました。

iPhone
カテゴリ/ソーシャルネットワーク
Twittelator Pro
\600
http://itunes.apple.com/jp/app/twittelator-pro/id288963578?mt=8
リスト対応
Tweetie 2
\350
http://itunes.apple.com/jp/app/tweetie-2/id333903271?mt=8
リスト対応
TwitBird Premium
¥230
http://itunes.apple.com/jp/app/twitbird-premium/id307876729?mt=8
リスト対応
Tweetery
\230
http://itunes.apple.com/jp/app/tweetery-twitter-made-easy/id334303843?mt=8
Twitterrific
無料
http://itunes.apple.com/jp/app/twitterrific/id284540316?mt=8
有料版もある
Echofon for Twiiter
無料
http://itunes.apple.com/jp/app/echofon-for-twitter/id286756410?mt=8
NatsuLion for iPhone
無料
http://itunes.apple.com/jp/app/natsulion-for-iphone/id289977677?mt=8
TweetDeck for iPhone
無料
http://itunes.apple.com/jp/app/tweetdeck-for-iphone/id318518757?mt=8

私自身、Twitter についてよく理解していません。時間的余裕もないので、発言もしていません。そのため、ホームとリストの閲覧が、私の Twitter の利用目的なっています。リストに対応した Twitter アプリを探すと、次の3つが対応していました。

Twittelator Pro
Tweetie 2
TwitBird Premium

一番使いやすかったのが Twittelator Pro でした。ただし、最新の発言が20個までしか読むことができません。1日に1,2回しか起動しない私には物足りません。

Twitter API Wiki / API Overview
http://apiwiki.twitter.com/API-Overview

それで Twitter API が REST を使用しているので、試しに自分専用の Twitter アプリを作ってみることにしました。私専用なので、リストとホームが見れるようにし、発言の仕組みは省くことにしました。

Twitter API Wiki / Twitter API Documentation
http://apiwiki.twitter.com/Twitter-API-Documentation

の statuses/home_timeline を確認しました。

Twitter API Wiki / Twitter REST API Method: statuses home_timeline
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-home_timeline
http://api.twitter.com/1/statuses/home_timeline.format

format は、拙作 iYKRSS [ http://itunes.com/apps/iYKRSS ] のソースが再利用できるので xml を選びました。

また、Requires Authentication で OAuth は難しそうなので Basic Auth を利用することにしました。

Basic access authentication - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Basic_authentication
2010/11/14(Sun) 現在 Twitter の認証方式で Basic 認証 (Basic Auth) は、廃止になりました。OAuth 認証の簡易版 xAuth を利用した記事を [  id:KYoshiaki:20100919 ] で公開しています。

最初 Basic Auth は、

Uniform Resource Locators (URL)
http://www.ietf.org/rfc/rfc1738.txt?number=1738
3.1. Common Internet Scheme Syntax
//:@:/

で大丈夫なのかと思いましたが、非公開リストのデータの取得に失敗するので、MGTwitterEngine を参考にしました。MGTwitterEngine のソースは Terminal 上で

svn checkout http://svn.cocoasourcecode.com/MGTemplateEngine

を実行するすればダウンロードできます。

since_id で指定すれば、簡単に発言を遡ってダウンロードできるものと思っていたのですが、最新20個しかダウンロードしてくれません。

仕方のないので、パラメーター count を使って 最新の発言 200 個をダウンロードし、前回の最新発言 id 以降のデータを探し、追加するようにしました。結局、未読の発言を最大 200 個まで遡ることができるようになりました。

また、リストの取得には

Twitter API Wiki / Twitter REST API Method: GET lists
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-GET-lists

を利用し、follow しているリストは GET list subscriptions

Twitter API Wiki / Twitter REST API Method: GET list subscriptions
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-GET-list-subscriptions

で取得できるようです。

簡単にテキストから URL 抽出をしたかってので、

iPhoneアプリ正規表現を使う - 24/7 twenty-four seven
http://d.hatena.ne.jp/KishikawaKatsumi/20081031/1225463896

を参考に正規表現を利用しました。RegexKitLite を使用するには libicucore.dylib をリンクする必要があります。

一番簡単なリンク方法は Xcode でターゲット名を選択し、

‘メニュー/ファイル/情報を見る’ か Option キーを押したまま、’メニュー/ファイル/インスペクタを表示’ を選びます。

ターゲット “iYKTwitter” の情報というウインドウが表示されるはずです。

‘一般’ タブをクリックし、リンク済みライブラリの下の ‘+’ ボタンを押し、スクロールして libicucore.dylib を追加してください。

libicucore.dylib を Frameworks のフォルダに移動しておくと良いかもしれません。

何とか、動作できるようになりました。プロフィール画像や日付の表示には対応していませんが、私的に利用するには十分です。最後にスクリンキャプチャーを付けておきます。