Twitter4jソースコードリーディング
-
Upload
yusuke-yamamoto -
Category
Technology
-
view
1.989 -
download
2
description
Transcript of Twitter4jソースコードリーディング
• Twitter4Jについて
• 開発のきっかけは?
• 誰が使ってるの?
• IDEは何使ってる?
• 設計ポリシーは?
• テストをうまく動かすには?
• 苦労する点は?
Twitter4Jって何?
Java用Twitter APIライブラリ30名を超すコントリビュータ
• JDK1.4.2~• Google App Engine
• Android
に対応LOC: 5.3万行くらいの規模
開発のきっかけは?
開発のきっかけ• 2007年4月 Twitterにサインアップ
• よくわからないけどなんだか面白そう
• APIがある!
• ライブラリないねϵ( 'Θ' )϶
• ないものは作る!
思惑
• ライブラリが存在しない、作ればデファクトスタンダードに?
• APIは単純明快、メンテナンスも不要!
とりあえず作ってみた
Copyright(c) Yusuke Yamamoto All rights reserved.
即日マイコミジャーナルで取り上げられました!
http://journal.mycom.co.jp/news/2007/05/29/017/index.html
Copyright(c) Yusuke Yamamoto All rights reserved.
一方はてな市民の反応は・・・
Copyright(c) Yusuke Yamamoto All rights reserved.
ネタ?
Copyright(c) Yusuke Yamamoto All rights reserved.
アホスw
とりあえず作ってみた-2
当初の思惑1
• ライブラリが存在しない、作ればデファクトスタンダードに?
Copyright(c) Yusuke Yamamoto All rights reserved.
2007年6月9日
Copyright(c) Yusuke Yamamoto All rights reserved.
Twitter4J バージョン 1.0 リリース
Copyright(c) Yusuke Yamamoto All rights reserved.
マイコミジャーナルでも取り上げられました
http://journal.mycom.co.jp/news/2007/06/11/011/index.html
• JTwitter
• java-twitter
Twitter4Jの競合
• JTwitter (瀕死)
• java-twitter (死亡)
Twitter4Jの競合
デファクトスタンダードに!
当初の思惑2• APIは単純明快
• メンテナンスはほぼ不要
Copyright(c) Yusuke Yamamoto All rights reserved.
geo location!
Copyright(c) Yusuke Yamamoto All rights reserved.
retweet API!
Copyright(c) Yusuke Yamamoto All rights reserved.
検索API!
Copyright(c) Yusuke Yamamoto All rights reserved.
・・・・
Copyright(c) Yusuke Yamamoto All rights reserved.
トレンドAPI!
Copyright(c) Yusuke Yamamoto All rights reserved.
ストリーミングAPI!
Copyright(c) Yusuke Yamamoto All rights reserved.
OAuth!
Copyright(c) Yusuke Yamamoto All rights reserved.
・・・・
Copyright(c) Yusuke Yamamoto All rights reserved.
リストAPI!
Copyright(c) Yusuke Yamamoto All rights reserved.
xAuth!
Copyright(c) Yusuke Yamamoto All rights reserved.
BASIC認証廃止!
Copyright(c) Yusuke Yamamoto All rights reserved.
Annotation!
Copyright(c) Yusuke Yamamoto All rights reserved.
orz
Copyright(c) Yusuke Yamamoto All rights reserved.
写真ホスティング!
Copyright(c) Yusuke Yamamoto All rights reserved.
orz
メンテナンスはほぼ不要
IDEは何使ってる?
IDEは何使ってる?
• プラグインごにょごにょ入れなくても快適
• Mavenにネイティブ対応
• 空気を読んでくれるIDE
• 100% Pure Java
Copyright(c) Yusuke Yamamoto All rights reserved.
Twitter4Jの開発で利用しているツールIntelliJ IDEA: github / Jiraに対応
JUnit: テストツール
Maven: ビルドツール
Jira: issue管理ツール
スライドに登場するロゴ、製品名は各社、各コミュニティの登録商標です
Copyright(c) Yusuke Yamamoto All rights reserved.
Twitter4Jの開発で利用しているツール
Maven Central Repository
Hudson / Jenkins: CIツール
github: ソーシャルコーディングハブ
Sonatype Nexus: Mavenプロジェクト管理2010年1月~
2009年4月~
スライドに登場するロゴ、製品名は各社、各コミュニティの登録商標です
2011年2月~2009年3月~
2008年6月~
Copyright(c) Yusuke Yamamoto All rights reserved.
Twitter4Jの開発の流れ
開発マシン CIサーバ github.com
service hook
repo1.maven.org
oss.sonatype.org
release:perform
promote
git push origin master
設計ポリシーは?
設計ポリシー
• Twitter APIをそのままマッピング
• JavaDocと公式ドキュメントを見比べやすい
http://api.twitter.com/1/statuses/show/XXXX.json → showStatus()
設計ポリシー
• 出来る限りシンプルに
• インターフェースを作らない
• デザインパターンを適用しない
インターフェースを作らない• 実装とインターフェースが分かれるまではインターフェースを切らない
• v1.0:
Twitter.java(クラス) / Status.java(クラス)
• v2.2.0:
Twitter.java(インターフェース)、TwitterImpl.java(クラス)
Status.java(インターフェース)、StatusJSONImpl.java(クラス)
テストをうまく動かすには?
テストをうまく動かすには
• ダウンロードしてそのままテストを動かしても失敗する
• とにかくtest.propertiesを埋める
• 何を書くかはtest.properties.templateに書いてある
苦労する点は?
Twitter APIの新陳代謝が激しい
• しょっちゅう新しいAPIが追加される
• 時には互換性がなくなることも・・・
質問が多い• メーリングリストのトラフィックが日に日に増している
• 最近はコミュニティ内での助け合いも増えてきて助かってます