Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

TwitterのAPIでハッシュタグからツイートを探すJavaプログラムのご紹介

投稿日:2021年2月5日 更新日:

<目次>

(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)

(操作動画)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

JFreeChartを使ってJavaで様々なグラフを簡単に描画する方法

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) JFreeChartの概要  (2-1) JFreeChartとは?  (2-2) JFreeChartのアーキテクチャについて (3 …

JNDIとは?JDBCとの違いやメリット・デメリットについてもご紹介

<目次> (1) JNDIとは?JDBCとの違いやメリット・デメリットについてもご紹介  (1-1) JDBCとは?  (1-2) JNDIとは?   (1-2-1) 概要   (1-2-2) JND …

サーバサイドJava(JSP&サーブレット)における画面遷移の手法とそのサンプルコードの紹介

(0)目次&概説 (1) 画面遷移の代表手法  (1-1) フォワード  (1-2) リダイレクト (2) 画面遷移手法のご紹介  (2-1) 方法1:formタグ+Submitボタン(JSP/Ser …

CentOS7にEclipseをインストールする手順

<目次> (1) CentOS7にEclipseをインストールする手順  (1-1) JDKのインストール  (1-2) Eclipse資源のダウンロード  (1-3) Eclipseのインストール …

JSP/Servletで画面毎のアクセスカウンターを作成してみた(パート1:仕様説明編)

(0)目次&概説 (1) 仕様について  (1-1) アーキテクチャ(アプリ/DB)  (1-2) アプリの仕様概要  (1-3) データベースの仕様概要 (2) ソースコード (3) エラー対応 ( …

  • English (United States)
  • 日本語
Top