(1) TwitterのAPIでハッシュタグからツイートを探すJavaプログラムのご紹介
(1-1) プログラムの概要
(1-2) サンプルプログラム
(1-3) 操作イメージ
(1) JavaでTwitterのAPIの使い方入門
本記事はTwitterのAPIを使って、ハッシュタグに関連するツイートを検索するJavaプログラムをご紹介します。
(前提事項)
①TwitterAPIの利用申請が完了している
②Twitter4jのライブラリがサーバにある
③空の動的Webプロジェクトを作成しており、上記②のライブラリをビルドパスに含めている
もし上記の前提が未完了の場合は、先に「コチラの記事」をご覧下さい。
(1-1) プログラムの概要
まずはプログラムの全体像を簡単にご紹介します。ざっくり3つの部品があります。
①View1:検索画面
⇒ ハッシュタグを入力し、検索開始する画面
②View2:検索結果画面
⇒ 検索結果を表示する画面
③Controller:サーブレット
⇒ キー認証、ハッシュタグの検索実行、結果の格納
(図111)
(1-2) サンプルプログラム
上記3つの部品について、それぞれのサンプルプログラムをご紹介します。
①View1:TwitterToolHome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <%@ page import="java.util.List" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <label>Enter the "Hash Tag" you want to search.</label> <form action="./twitter" method="post"> #<input type="text" name="searchTarget" id="tweets"> <input type="submit" value="send"> </form> </br> </body> </html>
②View2:TwitterToolResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.List" %> <!DOCTYPE html> <% List<String> searchResult = (List<String>)request.getAttribute("result"); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% for(int i=0; i<searchResult.size(); i++){ %> <div class="resultOutput"> <%=searchResult.get(i) %> </div> <%}%> </body> <a href="TwitterToolHome.jsp">Back To Query Screen</a> </html>
③Controller:TwitterServlet.java
import java.io.IOException; import java.util.List; import java.util.*; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.conf.ConfigurationBuilder; /** * Servlet implementation class TwitterServlet */ @WebServlet("/twitter") public class TwitterServlet extends HttpServlet { /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //####(1)変数定義など //# エンコーディング方式の設定 request.setCharacterEncoding("UTF-8"); //# 検索対象キーワードの取得 String searchTarget = "#" + request.getParameter("searchTarget"); //# 遷移先画面 String forwardpage = "./TwitterToolResult.jsp"; //####(2)設定の取り込み (ConfigurationBuilderクラス) //# インスタンス生成 ConfigurationBuilder cb = new ConfigurationBuilder(); //# キー情報の設定 cb.setDebugEnabled(true) .setOAuthConsumerKey("[ご自身のOAuthConsumerKey]") .setOAuthConsumerSecret("[ご自身のOAuthConsumerSecret]") .setOAuthAccessToken("[ご自身のOAuthAccessToken]") .setOAuthAccessTokenSecret("[ご自身のOAuthAccessTokenSecret]"); //####(3)各種Twitterインスタンスの生成 //# ファクトリクラスのインスタンス生成 TwitterFactory tf = new TwitterFactory(cb.build()); //# Twitterクラスのインスタンス生成 Twitter twitter = tf.getInstance(); //####(4)ハッシュタグによる検索 //# ハッシュタグの検索用クラス(Query) Query query = new Query(); //# クエリ生成(検索対象のワードをセット) query.setQuery(searchTarget); //# 検索結果の格納用 QueryResult queryResult = null; //# クエリの発行・結果格納 try { queryResult = twitter.search(query); } catch (TwitterException e1) { e1.printStackTrace(); } System.out.println("Hit Num:"+queryResult.getTweets().size()); //# 最終結果の格納用 List result = new ArrayList(); //# 検索結果から1Statusずつ、ツイート内容を最終結果に格納 for(Status tweet : queryResult.getTweets()) { result.add(tweet.getText()); } //####(5)結果格納・画面遷移 //# 結果をリクエストオブジェクトにセット request.setAttribute("result",result); //# 画面遷移 RequestDispatcher dispatch = request.getRequestDispatcher(forwardpage); dispatch.forward(request, response); //doGet(request, response); } }
(1-3) 操作イメージ
上記のサーブレット+JSP2個を実装すると次のように、画面からハッシュタグでツイートを検索できます。
①検索するハッシュタグの入力
検索したいハッシュタグをテキストボックスに入力します(#は含めない)。
(図131)
②検索の実行
ボタンを押して検索を開始します。
(図132)
③検索結果の確認
遷移した画面でハッシュタグに関連するツイートが表示されます。
(図133)
(操作動画)