(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)
(操作動画)