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

50
Twitter4Jについて 開発のきっかけは? 誰が使ってるの? IDEは何使ってる? 設計ポリシーは? テストをうまく動かすには? 苦労する点は?

description

 

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

Page 1: Twitter4jソースコードリーディング

• Twitter4Jについて

• 開発のきっかけは?

• 誰が使ってるの?

• IDEは何使ってる?

• 設計ポリシーは?

• テストをうまく動かすには?

• 苦労する点は?

Page 2: Twitter4jソースコードリーディング

Twitter4Jって何?

Page 3: Twitter4jソースコードリーディング

Java用Twitter APIライブラリ30名を超すコントリビュータ

• JDK1.4.2~• Google App Engine

• Android

に対応LOC: 5.3万行くらいの規模

Page 4: Twitter4jソースコードリーディング

開発のきっかけは?

Page 5: Twitter4jソースコードリーディング

開発のきっかけ• 2007年4月 Twitterにサインアップ

• よくわからないけどなんだか面白そう

• APIがある!

• ライブラリないねϵ( 'Θ' )϶

• ないものは作る!

Page 6: Twitter4jソースコードリーディング

思惑

• ライブラリが存在しない、作ればデファクトスタンダードに?

• APIは単純明快、メンテナンスも不要!

Page 7: Twitter4jソースコードリーディング

とりあえず作ってみた

Page 8: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

即日マイコミジャーナルで取り上げられました!

http://journal.mycom.co.jp/news/2007/05/29/017/index.html

Page 9: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

一方はてな市民の反応は・・・

Page 10: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

ネタ?

Page 11: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

アホスw

Page 12: Twitter4jソースコードリーディング

とりあえず作ってみた-2

Page 13: Twitter4jソースコードリーディング

当初の思惑1

• ライブラリが存在しない、作ればデファクトスタンダードに?

Page 14: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

2007年6月9日

Page 15: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

Twitter4J バージョン 1.0 リリース

Page 16: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

マイコミジャーナルでも取り上げられました

http://journal.mycom.co.jp/news/2007/06/11/011/index.html

Page 17: Twitter4jソースコードリーディング

• JTwitter

• java-twitter

Twitter4Jの競合

Page 18: Twitter4jソースコードリーディング

• JTwitter (瀕死)

• java-twitter (死亡)

Twitter4Jの競合

Page 19: Twitter4jソースコードリーディング

デファクトスタンダードに!

Page 20: Twitter4jソースコードリーディング

当初の思惑2• APIは単純明快

• メンテナンスはほぼ不要

Page 21: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

geo location!

Page 22: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

retweet API!

Page 23: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

検索API!

Page 24: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

・・・・

Page 25: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

トレンドAPI!

Page 26: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

ストリーミングAPI!

Page 27: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

OAuth!

Page 28: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

・・・・

Page 29: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

リストAPI!

Page 30: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

xAuth!

Page 31: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

BASIC認証廃止!

Page 32: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

Annotation!

Page 33: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

orz

Page 34: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

写真ホスティング!

Page 35: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

orz

Page 36: Twitter4jソースコードリーディング

メンテナンスはほぼ不要

Page 37: Twitter4jソースコードリーディング

IDEは何使ってる?

Page 38: Twitter4jソースコードリーディング

IDEは何使ってる?

• プラグインごにょごにょ入れなくても快適

• Mavenにネイティブ対応

• 空気を読んでくれるIDE

• 100% Pure Java

Page 39: Twitter4jソースコードリーディング

Copyright(c) Yusuke Yamamoto All rights reserved.

Twitter4Jの開発で利用しているツールIntelliJ IDEA: github / Jiraに対応

JUnit: テストツール

Maven: ビルドツール

Jira: issue管理ツール

スライドに登場するロゴ、製品名は各社、各コミュニティの登録商標です

Page 40: Twitter4jソースコードリーディング

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月~

Page 41: Twitter4jソースコードリーディング

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

Page 42: Twitter4jソースコードリーディング

設計ポリシーは?

Page 43: Twitter4jソースコードリーディング

設計ポリシー

• Twitter APIをそのままマッピング

• JavaDocと公式ドキュメントを見比べやすい

http://api.twitter.com/1/statuses/show/XXXX.json → showStatus()

Page 44: Twitter4jソースコードリーディング

設計ポリシー

• 出来る限りシンプルに

• インターフェースを作らない

• デザインパターンを適用しない

Page 45: Twitter4jソースコードリーディング

インターフェースを作らない• 実装とインターフェースが分かれるまではインターフェースを切らない

• v1.0:

Twitter.java(クラス) / Status.java(クラス)

• v2.2.0:

Twitter.java(インターフェース)、TwitterImpl.java(クラス)

Status.java(インターフェース)、StatusJSONImpl.java(クラス)

Page 46: Twitter4jソースコードリーディング

テストをうまく動かすには?

Page 47: Twitter4jソースコードリーディング

テストをうまく動かすには

• ダウンロードしてそのままテストを動かしても失敗する

• とにかくtest.propertiesを埋める

• 何を書くかはtest.properties.templateに書いてある

Page 48: Twitter4jソースコードリーディング

苦労する点は?

Page 49: Twitter4jソースコードリーディング

Twitter APIの新陳代謝が激しい

• しょっちゅう新しいAPIが追加される

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

Page 50: Twitter4jソースコードリーディング

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

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