プロジェクトの作成
では、Androidアプリケーションのプロジェクトを新規作成しましょう。Eclipseの[新規]-[Androidアプリケーション・プロジェクト]を選択します。今回は「Trendwatcher」という名前で作成し、アクティビティは[Blank Activity]を選択しました。このスケルトンのアプリケーションに、必要なコードを追加していきます。
ライブラリの追加
Twitter4Jのサイトから、ライブラリ(執筆時点では、twitter4j-4.0.1.zip)をダウンロードします。
zipファイルを解凍すると、多くのファイルが生成されますが、今回のアプリでは、 libフォルダにできるtwitter4j-core-4.0.1.jarというファイルのみ使用します。これを、プロジェクトのlibsフォルダにコピーしておきます。
twitter4j-core-4.0.1.jarには、Twitter APIを利用するための、基本的なコードが含まれています。
permissionの追加
Twitter APIを利用するには、インターネットへのアクセスが必要ですので、アプリケーションのpermissionの設定をしておきます。AndroidManifest.xmlに、次の行を追加します。
<uses-permission android:name="android.permission.INTERNET"/>
レイアウトの変更
最新のADTでアプリケーションを新規作成すると、フラグメント(fragment_main.xml)を使用したスケルトンアプリケーションになります。今回のアプリでは、このfragment_main.xmlに、ボタンとリストビューを追加します。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.rakuraku.android.Twitter.MainActivity$PlaceholderFragment" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/trend_button" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>
なお、スケルトンアプリケーションでは、フラグメントはRelativeLayoutとなっていますが、ボタンとListViewを縦に配置するため、LinearLayoutに変更します。
LinearLayoutは、向き(orientation)を縦(vertical)にし、横幅(layout_width)と高さ(layout_height)をともに、画面いっぱい(match_parent)に設定しています。
ボタンは横幅を画面いっぱいに指定し、高さを自動調整(wrap_content)にしています。
リストビューでは、横幅、高さとも、画面いっぱいに指定します。
Twitterオブジェクトの生成
ここからはコードの追加です。まずは、Twitter4Jライブラリの初期化処理である、Twitterオブジェクトの生成を行います。
Twitterオブジェクトは、Twitter4Jライブラリのメインのオブジェクトです。このオブジェクトの生成時に、OAuth認証用の4つのキーコード(consumerKey、consumerSecret、accessToken、accessTokenSecret)を設定します。
キーの設定には、プロパティファイルに記述する方法と、プログラム内で直接指定する方法の2つあります。今回のアプリケーションでは、プログラム内に記述しています。
public static class PlaceholderFragment extends Fragment {
// Twitterオブジェクト
private Twitter twitter = null;
public PlaceholderFragment() {
// OAuth認証用設定(1)
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setOAuthConsumerKey("XXXXX");
configurationBuilder.setOAuthConsumerSecret("XXXXX");
configurationBuilder.setOAuthAccessToken("XXXXX");
configurationBuilder.setOAuthAccessTokenSecret("XXXXX");
// Twitterオブジェクトの初期化(2)
this.twitter =
new TwitterFactory(configurationBuilder.build()).getInstance();
}
}
ConfigurationBuilderというクラスを利用して、必要な4つのキーコードを設定します(1)。そして、TwitterFactoryクラスのgetInstanceメソッドで、Twitterオブジェクトを生成します(2)。
なお、ここでconfigurationBuilder.build()を指定しない場合、プロパティファイル(twitter4j.properties)から自動的に設定が読み込まれます。
PlaceholderFragmentについて
前述のサンプルコードは、MainActivity.java内のコードですが、PlaceholderFragmentというフラグメントクラスの定義と、コンストラクタになっています。
スケルトンアプリでは、フラグメントクラス(PlaceholderFragment)は、アクティビティクラス(MainActivity)の内部で、定義されています。
最後に
今回は、主にTwitter APIを利用するための準備編でした。次回は、Twitter4Jライブラリを非同期で実行する部分など、残りのコードを解説していきます。


