GitHub
Twitter4J

Twitter4J開発手順メモ(私家版の作り方)

More than 1 year has passed since last update.

いつもTwitter4Jの機能追加をするたびに試行錯誤することが多いので備忘録代わりにまとめておきます。

前提

  • AndroidStudio IntelliJ IDEA で Twitter4J の機能追加や調査・修正といった作業をする。
    • AndroidStudio2.1あたりからmavenがサポートされてないっぽいんで IDEA で。
  • Windows10
  • TortoiseGit

Forkして最新版を取得する

https://github.com/yusuke/twitter4j を Fork する(https://github.com/takke/twitter4j)

clone したり色々やって下記の状態。

$ git branch -a
* master
  video_support
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/video_support
  remotes/upstream/2.0.x
  remotes/upstream/2.1.x
  remotes/upstream/2.2.x
  remotes/upstream/TFJ-671
  remotes/upstream/TFJ-679-api1.1
  remotes/upstream/master
  remotes/upstream/revert-171-TFJ-806

最新に追いつく

作業するたびにorigin/masterがけっこう古くなってるので最新版をマージする。

GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する - Qiita などを参考に。

$ git fetch upstream
...
$ git log origin/master -1
commit 96b7f3487910febc39ec1f8230f2b847b49c0d97
Author: Yusuke Yamamoto <yusuke@mac.com>
Date:   Mon Mar 23 16:26:33 2015 +0900

    fix for KryoSerializationTest

$ git log upstream/master -1
commit 45f7de95a22a42167099c53849042cb1f88c8963
Author: Yusuke Yamamoto <yusuke@mac.com>
Date:   Tue Jun 9 23:41:45 2015 +0900

    correct scm urls
$ git merge upstream/master
...
$ git push
...
$ git log -1
commit 45f7de95a22a42167099c53849042cb1f88c8963
Author: Yusuke Yamamoto <yusuke@mac.com>
Date:   Tue Jun 9 23:41:45 2015 +0900

    correct scm urls

私家版を作ってプルリクを送るまで

IDEAのプロジェクトを作る

Mavenからインポートする感じでプロジェクトを作る。
(Import Project からデフォルト設定で mvn からインポートすることでプロジェクトが作れる)

IDEAで修正する

修正したり機能追加したりテスト書いたり。。

ビルド

package.sh を参考に mvn コマンドを実行する。

各モジュールディレクトリで下記を実行するとローカルの .m2/repo 以下に入る(twitter4j-4.0.4-SNAPSHOT ができる感じ)。

$ mvn clean install -Dmaven.test.skip=true

Goal を install にするのがポイント。

自分のアプリで利用する

"ローカルの.m2/repo" に配置された私家版Twitter4Jを自分のアプリで利用します。

build.gradle
allprojects {
    repositories {
        // Twitter4J(local)
        mavenLocal()
    }
}
app/build.gradle
dependencies {
    compile 'org.twitter4j:twitter4j-core:4.0.4-SNAPSHOT'
    compile 'org.twitter4j:twitter4j-media-support:4.0.4-SNAPSHOT'
    compile 'org.twitter4j:twitter4j-stream:4.0.4-SNAPSHOT'
...
}

プルリク

テスト通って一通り動作確認できたらプルリクを送る。

テストについて追記

イケメンさん曰く↓


らしいです。
そういえば私も修正箇所周辺のテストしか通してませんでした。というか全部通そうとすると(一度やろうとしたことがある)テスト専用アカウントを複数用意してそれらのフォロー関係とかごにょごにょしなきゃいけないので余裕で半日くらいかかりますし現実的じゃないですね。

他の人の修正を取り込む

他の人が行ったプルリクを自分のブランチにもマージしたい場合の手順をメモしておきます。

例えば、

Add property for "tweet_volume" to Trend, YouTrack Issue #TFJ-886 by Bunkerbewohner · Pull Request #232 · yusuke/twitter4j
のプルリクをマージしたい場合は下記の手順でやるといいです。

該当ブランチを探す

上記スクリーンショットの from ... の部分から分かるように、プルリク元のブランチは
https://github.com/Bunkerbewohner/twitter4j/tree/TFJ-886
です。

リモートブランチを追加する

$ git remote
mumei
origin
upstream

$ git remote add Bunkerbewohner git@github.com:Bunkerbewohner/twitter4j.git

$ git remote
Bunkerbewohner   <-- 追加された!
mumei
origin
upstream
$ git fetch Bunkerbewohner
remote: Counting objects: 36, done.
remote: Total 36 (delta 7), reused 7 (delta 7), pack-reused 29
Unpacking objects: 100% (36/36), done.
From github.com:Bunkerbewohner/twitter4j
 * [new branch]      2.0.x      -> Bunkerbewohner/2.0.x
 * [new branch]      2.1.x      -> Bunkerbewohner/2.1.x
 * [new branch]      2.2.x      -> Bunkerbewohner/2.2.x
 * [new branch]      TFJ-671    -> Bunkerbewohner/TFJ-671
 * [new branch]      TFJ-679-api1.1 -> Bunkerbewohner/TFJ-679-api1.1
 * [new branch]      TFJ-886    -> Bunkerbewohner/TFJ-886
 * [new branch]      master     -> Bunkerbewohner/master
 * [new branch]      revert-171-TFJ-806 -> Bunkerbewohner/revert-171-TFJ-806
 * [new tag]         release-tfj-886 -> release-tfj-886

マージする

マージ先をチェックアウトしてマージする

$ git checkout master

$ git merge Bunkerbewohner/TFJ-886
Merge made by the 'recursive' strategy.
 readme.txt                                         |  1 +
 .../java/twitter4j/TrendJSONImpl.java              | 13 ++++++-
 twitter4j-core/src/main/java/twitter4j/Trend.java  |  4 +++
 .../twitter4j/examples/trends/GetPlaceTrends.java  | 40 ++++++++++++++++++++++
 4 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100644 twitter4j-examples/src/main/java/twitter4j/examples/trends/GetPlaceTrends.java

conflict があれば適宜修正しましょう。

以上です。