目次
背景
こんにちは。 karintomania(@karintozuki)です。
JavaでTwitter APIを触る方法を調べたところ、
Twitter4jというライブラリが良いらしい。
今回はそれを使って、ターミナルからTwitterを触るツールを作ってみたので、
少しソースを解説したいと思う。
環境・必要事項
- Java8以上
- MacOS
Twitterデベロッパーアカウントが必要。
使い方
プロジェクトをダウンロード
Githubはこちら。
適当なフォルダでgit clone
するなり
zipでダウンロードするなりしてほしい。
いくつか初期設定が必要です。
Consumerキーを設定
resource/twitter4j.properties
内の以下二つのプロパティを設定する。
これらの値はTwitterデベロッパーアカウントを作成すると取得できる。
1 | // コンシューマーキーを設定 |
ユーザ名を変更
ユーザ名(使用したいアカウントの@xxxxのxxxx部分)をAuthenticator.java
の以下の箇所に入れる。
ソースベタうちでごめんなさい。
1 | public void init(){ |
起動コマンド
以下コマンドをプロジェクトルートフォルダで実行すると、
ツールが起動する。./gradlew run --console=plain
–console=plainオプションをつけているのは、
Gradleのメッセージがちょっとうるさいから。
起動したら以下のコマンドが使える。
最初はloginコマンドを打ってログインする必要がある。
コマンド | 意味 |
---|---|
login | ログインできる |
tl | タイムラインを5件ずつ表示する。nを押すと次の5件を表示する |
tw | ツイートです。素のままだと改行もできないので、実用的じゃない爆 |
help | ヘルプが申し訳程度に出る |
ソース解説
Twitter 4jについて
このツールではTwitter4jというライブラリを使っている。
公式サンプルがだいぶ参考になるので、そちらも合わせてみていただきたい。
http://twitter4j.org/ja/
OAuthを使ったログイン処理
OAuth処理はAuthenticator.javaで行っている。authenticate()
メソッドを少し紹介する。
1 | // OAuth認証 |
実際に動作させると、
以下の流れで成功するとトークンが取得できる。
- 認証用のURL表示 requestToken.getAuthorizationURL()使用
- 認証画面をブラウザで開き、コードを取得
- コードをターミナルに入力してもらい、トークン取得 twitter.getOAuthAccessToken(requestToken, pin);
このGIFをみてもらうと分かりやすいと思う。
トークンは取得すると、アクセストークンとアクセストークンシークレットが取得できる。
このプログラム内ではMyBatisとSQLiteを使って永続化している。興味があればDTOフォルダ内を参照して欲しい。
タイムラインの取得
タイムラインの取得はTwitterServiceクラス内のshowTimeLine()メソッドで行っている。
1 | // タイムライン表示 |
twitter.getHomeTimeline()
メソッドでタイムラインを取得できる。
このメソッドはページネーションに対応しているため、
このプログラム内では5件ずつ取得するようにしている。
こちらも動作イメージとしてGIFを用意した。
ツイート
ツイートにはtwitter.updateStatus()
メソッドを使う。
普通に標準入力を読み込んでメソッドに文字列を渡しているだけ。
1 | // ツイートする |
こちらも動作イメージとしてGIFを用意した。
まとめ
Twitter周りの実装は全部Twitter4j任せで簡単にできた。
しかし、利用したいAPIによっては対応していないのもあるようなので、注意が必要。
例えばいいねやインプレッション数が取得できるEngagement APIには対応していないようだった。
また、CLIツールとして動作するようなものを作るのが初めてだったので、
そこに結構苦戦した。
それじゃ今日はこの辺で。
関連記事
こちらの記事もおすすめ。
Spring BootでLINE Botのサンプルを動かす 〜おうむ返しのその先へ〜
PR
あなたの会社はあなたの技術を評価してくれていますか?
技術力を高めようと頑張っているのに、
技術が評価されないような会社にいたらそれは良い環境なのでしょうか?
エンジニアとして技術を高めたいのなら環境を選ぶことも大事です。
レバテックキャリア
エンジニアとして働いていて実務経験があるなら、
求人数の充実具合からレバテックキャリアがおすすめです。
IT転職ではデファクト・スタンダードですね。
▼レバテック キャリア 登録はこちら▼
Tech Clips
Tech Clipsは年収500万以上&自社サービスを持った会社に特化した求人サイトです。
首都圏限定になってはしまいますが、
収入を増やしたい、自社サービスを持った企業への転職をしたい人におすすめです。