21
IBM Bluemixを使って Twitter上の評判検索 アプリケーションを作る ibm.biz/bluemix-i4tw IBM Insights for Twitter デモサイト https://cdetestapp.mybluemix.net/ 2

IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

IBM Bluemixを使って

Twitter上の評判検索

アプリケーションを作る

ibm.biz/bluemix-i4tw

IBM Insights for Twitter デモサイト

https://cdetestapp.mybluemix.net/ 2

Page 2: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

“IBM” で検索

“IBM” を含むツイートが検索される。

3

“IBM sentiment:positive” で検索

“IBM” を含むツイートで、内容がポジティブなものだけが検索される。

4

Page 3: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

IBM Insights for Twitter の情報

https://www.ng.bluemix.net/docs/services/Twitter/index.html5

API リファレンス情報

https://cdeservice.mybluemix.net/rest-api/#!/ibm_twitter_insights

このページは常に開けるようにしておく。

6

Page 4: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

これから作成するアプリ

検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。

7

検索対象文字列を指定すると、その感情ごとの割合をドーナツチャートで表示する。

8

これから作成するアプリ (発展)

Page 5: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

Bluemix にログイン

ログイン後のダッシュボード画面で「アプリの作成」をクリック

9

WEB アプリを選択

アプリの種類は「WEB」を選択10

Page 6: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

PHP ランタイムを選択

ランタイムの種類は「PHP」を選択。※実際はどのランタイムでも作れるが、本資料では PHP で作成する

11

続行

PHP ランタイムの説明を確認して「続行」。12

Page 7: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

アプリケーションの名前を指定

PHP ランタイムアプリケーションの名前を指定して入力して「完了」。ホスト名の一部になるので、他の人と重ならない名前にする。

(例) PHPAppYYYYMMDD(日付)

13

ステージング処理待ち

PHP ランタイムの作成はこれで終わり。ステージング処理が完了するまで待つ。この画面では、この後にどうやって PHP アプリをランタイムに反映させるか、の方法が紹介されている。 14

Page 8: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

ステージング処理完了

ステージング処理完了(もうアプリケーションサーバーとして利用可能)。

リンクをクリックすると作成したサーバー上でスターターコードが実行されます。

一度ダッシュボードに戻る。 15

ダッシュボード画面

ダッシュボード画面に今作った PHP ランタイムが追加されていることを確認。このアイコンをクリック。

16

Page 9: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

作成した PHP ランタイムの概要

作成して稼働中の PHP ランタイムに Twitter 連携サービスを追加するので、「サービスまたは API の追加」をクリック。

17

Insights for Twitter を選択

IBM Bluemixのサービス一覧が表示される。画面左で「データおよび分析」を選択して、「Insights for Twitter」をクリック。

18

Page 10: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

Insights for Twitter の追加

Insights for Twitter サービスの内容が表示される。画面右のアプリに作成した PHP ランタイムが選択されていることを確認し、サービス名、プランはデフォルトのままで「作成」をクリック。 19

再ステージングの実行

構成が変わったため、再ステージングする必要がある。

確認ダイアログボックスが表示されるので「再ステージ」を選択。

20

Page 11: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

再ステージング完了

再ステージングが完了し、シグナルが緑色になったことを確認。

右のメニューから「概要」をクリックする。

21

Insights for Twitter の確認

画面を下にスクロールすると、”Insights for Twitter” サービスのアイコンが追加されていることが確認できる。

その中の「資格情報の表示」をクリック。

22

Page 12: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

資格情報の確認

”Insights for Twitter” サービスを利用するための情報が JSON フォーマットで表示される。この内容をテキストファイルにコピーしておく。

23

資格情報の内容

24

{"twitterinsights": [

{"name": "Insights for Twitter-tr","label": "twitterinsights","plan": "Free","credentials": {

"port": "433","username": "5bb107c76f9ca7c9049583ebff7e5815","host": "cdeservice.mybluemix.net","password": "q7wy60fEPF","url": "https://5bb107c76f9ca7c9049583ebff7e5815:[email protected]"

}}

]} “credentials” 内の “url”に Insights for Twitter の API を使うためのユーザー名&パスワード付き URL がある。この内容はランタイムの VCAP_SERVICES という環境変数の値として取得可。

Page 13: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

試しにブラウザで実行してみる

先ほど確認した “url” 値の最後に “/api/v1/messages/count?q=IBM” を付けて、ウェブブラウザでアクセスすると、”IBM” で検索した時の実行結果が表示される。

count 関数を実行しているので、結果のツイート数が “results” 値として得られる。

“count” 部分を “search” にすると、ツイート内容も含めた検索結果が得られる。

25

ポジティブな内容だけをカウントする

先ほど確認した “url” 値の最後に “/api/v1/messages/count?q=IBM%20sentiment%3apositive” を付けて、ウェブブラウザでアクセスすると、”IBM sentiment:potisive” で検索した時の実行結果(ポジティブな内容のツイート数)が表示される。

“positive” の部分を “negative” に変えると、ネガティブなツイート数が検索できる。“neutral” に変えると、中間感情的なツイート数が検索できる。“ambivalent” に変えると、混合感情的なツイート数が検索できる。

26

Page 14: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

count API の実行結果(JSON){"related":{"search":{"href":”https://cdeservice.mybluemix.net/api/v1/messages/search?q=IBM+sentiment%3Apositive”

}},"search":{"results":12978

}}

27

アプリの実装内容

(1) パラメータを受け取る。(例 IBM)

(2) 受け取ったパラメータに “positive”, “neutral”, “ambivalent”, “negative” の各感情要素を付けて、Insights for Twitter の count 関数を(4回)実行する。(例 “q=IBM%20sentiment%3apositive”, “q=IBM%20sentiment%3aneutral”, … )

(3) 各結果のツイート数をそれぞれ取得して、結果画面に反映させる。

28

Page 15: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

ソースコードの開発/デプロイ

• 選択肢は3つ

1. Eclipse 環境で開発し、Eclipse プラグインを使ってデプロイ

2. テキストエディターで開発し、cfツールを使ってデプロイ

3. IDS(IBM Bluemix DevOps Services) を使って Gitリポジトリを作り、リポジトリのコードを編集した後に

ビルド&デプロイ

今回今回今回今回はははは エディターエディターエディターエディター / cf ツールツールツールツールをををを使った方使った方使った方使った方法法法法を紹を紹を紹を紹介しま介しま介しま介しますすすす

29

cfツールのセットアップ

右メニューの「コーディングの開始」をクリックして、画面を下にスクロールし、

「CFコマンド・ライン・インターフェースのダウンロード」のリンクをクリックする。

30

Page 16: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

GitHubのCloud Foundryのページが表示される。OS環境に合った「CFコマンド・ライン・インターフェース」をダウンロードする。インストーラーを実行して導入する。

31

cfツールのセットアップ

cfツールのセットアップ

32

コマンド・プロンプト(ターミナル)を立ち上げ、”cf –v”と実行する。Cloud Foundry CLIのバージョンが表示されればセットアップ完了。

Page 17: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

ソースコードのダウンロード

PHP ランタイム用のスターター・コードを編集するため、いったんローカルPCにダウンロードする。 「スターター・コードのダウンロード」をクリック。

33

ソースコードの解凍

ローカルPCの任意の作業用ディレクトリに、ダウンロードしたzipファイルを展開する。

解凍すると、Bluemix上で作成したPHPのアプリケーション名のディレクトリが作成され、それ以下にソースコードが展開される。

34

Page 18: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

ファイルを追加する

PHPのプログラムファイルを追加する。

zipファイルを展開して作られたアプリケーション名のディレクトリの直下に“insights4twitter.php”という名前のファイルを新規作成で追加する。

エディターでこのファイルを開き、次ページのコードを入力する。

35

このファイルを追加するこのファイルを追加するこのファイルを追加するこのファイルを追加する

insights4twitter.php の内容<html><head><title>Insights for Twitter in PHP</title></head><body><?php$apiurl = '';$vcap = getenv( 'VCAP_SERVICES' );if( $vcap ){$bluemixenv = json_decode( $vcap );$apiurl = $bluemixenv->twitterinsights[0]->credentials->url;

}if( isset( $_GET['q'] ) ){$q = $_GET['q'];if( $q ){

?><h1><?php echo( $q ); ?></h1><table border='1'><?php

$iturl = $apiurl . '/api/v1/messages/count?q=' . $q . '%20sentiment%3a';

$sentiments = array( 'positive', 'neutral', 'ambivalent', 'negative' );

foreach( $sentiments as $sentiment ){$url = $iturl . $sentiment;$text = file_get_contents( $url );$json = json_decode( $text );$results = $json->search->results;

?><tr><td><?php echo( $sentiment ); ?></td><td><?php echo( $results ); ?></td></tr><?php

}?></table><?php}

}?>

</body></html>

環境変数取得環境変数取得環境変数取得環境変数取得

パラメータパラメータパラメータパラメータ q ががががある場合のみ実行ある場合のみ実行ある場合のみ実行ある場合のみ実行

4つの4つの4つの4つの sentiment

各各各各 sentimentごとに件数を取得ごとに件数を取得ごとに件数を取得ごとに件数を取得

各結果を表形式で各結果を表形式で各結果を表形式で各結果を表形式で

出力出力出力出力

Page 19: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

コードをBluemixにデプロイ

37

コマンド・プロンプト(ターミナル)で Bluemixにログインする。

追加(変更)したコードをBluemixにデプロイする。

コマンド・プロンプト(ターミナル)で作成した“insights4twitter.php”のあるディレクトリに移動し、”cf push”コマンドを実行する。

C:¥Bluemix>cf login –a https://api.ng.bluemix.net –u (IBM ID) –p (パスワード)

C:¥Bluemix>cd PHPApp20150924

C:¥Bluemix¥PHPApp20150924>cf push

変更したコードをBluemixに push

38

Bluemixへのデプロイが実行されるのでしばらく待機。

上のような表示で終了すればデプロイ成功。

Page 20: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

動作確認

ウェブブラウザで

http://(アプリ名).mybluemix.net/insights4twitter.php?q=IBMにアクセスして、期待通りに表が出力される結果になることを確認する。

“IBM” の部分を別の文字列にしても動くことを確認する。

39

ドーナツチャートで表示する場合

Google Visualization API を使用:

https://developers.google.com/chart/interactive/docs/gallery/piechart

jQuery を使用:

https://jquery.com/

40

Page 21: IBM Bluemix を使って Twitter 上の評判検索 アプリ …...これから作成するアプリ 検索対象文字列をパラメータ q で指定。指定文字列の感情毎の検索結果件数を表形式で出力する。7

insights4twitter2.php の内容<html><head><title>Insights for Twitter in PHP</title><script src="//www.google.com/jsapi"></script><script src="//code.jquery.com/jquery-2.0.3.min.js"></script><script type="text/javascript">google.load("visualization", "1", {packages:["corechart"]});$(function(){var data = google.visualization.arrayToDataTable([[ 'Sentiment', '#' ]

<?php$apiurl = '';$vcap = getenv( 'VCAP_SERVICES' );if( $vcap ){$bluemixenv = json_decode( $vcap );$apiurl = $bluemixenv->twitterinsights[0]->credentials->url;

}if( isset( $_GET['q'] ) ){$q = $_GET['q'];if( $q ){$iturl = $apiurl . '/api/v1/messages/count?q=' . $q .

'%20sentiment%3a';

$sentiments = array( 'positive', 'neutral', 'ambivalent', 'negative' );foreach( $sentiments as $sentiment ){$url = $iturl . $sentiment;$text = file_get_contents( $url );$json = json_decode( $text );$results = $json->search->results;

?>,[ '<?php echo( $sentiment ); ?>', <?php echo( $results ); ?> ]

<?php } } } ?>]);var options = { title: '<?php echo( $q ); ?>', piHole: 0.4 };var chart = new google.visualization.PieChart( document.getElementById('donutchart') );chart.draw( data, options );

});</script></head><body><h1><?php echo( $q ); ?></h1><div id='donutchart' style='width:100%; height:90%;'></div></body></html>

動作確認

insights4twitter2.php を前頁の内容で作成してコミット&プッシュ&デプロイ。

ウェブブラウザで

http://(アプリ名).mybluemix.net/insights4twitter2.php?q=IBMにアクセスして、ドーナツチャートが表示されることを確認する。

“IBM” の部分を別の文字列にしても動くことを確認する。 42