Twitter4jソースコードリーディング

Post on 15-Dec-2014

1.989 views 2 download

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が追加される

• 時には互換性がなくなることも・・・

質問が多い• メーリングリストのトラフィックが日に日に増している

• 最近はコミュニティ内での助け合いも増えてきて助かってます