まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

2015/02

自分が作って運用しているサービス "Tweets Mapper" を紹介します:
http://tweetsmapper.juge.me/

上記ページにアクセスしていただくと、利用者の現在地を中心としたエリアが地図に表示されます。
そして、その地図画面内において、ツイッターで「位置情報を ON にして」ツイートされたもののうち、
 ・過去3時間以内のものを
 ・近いものから20個
位置情報と併せて表示する、というサービスです。

「地図画面内でのツイート」を検索して表示するので、地図の表示位置や拡大率を変えて、表示エリアが変わるとツイート一覧もその内容に併せてかわります。

この画面例はつい先程、ハワイのホノルル周辺が含まれるよう地図を調整して撮ったものです:
2015022701

また画面上部には現在表示している地図の位置と拡大率を初めから表示するための URL です。例えば上記ページの URL はこちらで、この URL にアクセスすると、地図を調整しなくてもはじめからホノルル周辺で最近ツイートされた内容が表示されます。実際にアクセスすると、ホノルルで日本語ツイートがいかに多いかわかると思います:
http://tweetsmapper.juge.me/?lat=21.283109926822885&lng=202.1684304199951&zoom=15


PC のブラウザでアクセスすると、このように画面が左右2つに別れて表示されますが、スマホの場合は地図とツイートとが別タブで表示されます:
2015022702


コンサートやイベントなど、人が多く集まってツイートが多くされるとわかっている時に、この TweetsMapper が威力を発揮します。後でツイートをまとめたい時に、全員が共通のハッシュタグを付けてくれるとまとめやすいのですが、全員がそうしてくれるとは限りません。その点、この TweetsMapper では「位置情報が ON になっている」ことが条件にはなりますが、ハッシュタグがなくてもそのイベント周辺にいる人のツイートを取得できるので、集計が楽になります。

また、この手の検索はリアルタイム性を追求するのが結構難しいのですが、ちょっと工夫した仕組みを導入することでうまく実現できていると自負しています。実際に見ていると、ほぼリアルタイムに(本当に直前にツイートされたものも)画面に表示できているはずです。 このサービスを実現する上ではサーバー側の通信速度の確保が必要なんですが、IDCF クラウドで非常に高いコストパフォーマンスを提供していただくことで実現できています。



ちなみに、現在のこのサービスでは日本全国に加えて、ハワイ、LA、SF、ラスベガス、NY、ボストン、フロリダ周辺がサービス提供エリアとなっています。理論上は他のエリアを含めることもできますが、予算とその他の関係上(笑)いまはこのエリアに絞って提供していることをご理解ください。

でも、もし他エリアの要望があれば教えてください。一時的な対応も含めてですが、検討します。






 

WordPress は世界中の多くのサイトで使われているオープンソースコンテンツ管理システムです。

ブログシステムとして使っている人も多いと思いますが、ウェブサイトのコンテンツ管理システムとしてもよく使われています。そしてユーザーが多いこととオープンソースであることからコミュニティも形成され、WordPress 自体をさらに便利にするプラグインも多く開発され、公開されています。

先日(2015/Feb/25)、WordPress の Twitter プラグインが公開されました。しかもこれ、ツイッター社が作った「純正プラグイン」です。 面白そうなので試してみました。


以下にその手順を紹介しますが、実際に試してみるには管理者権限でアクセスできる WordPress 環境が必要です。もし新たに作成する必要があれば、IBM Bluemix を使うことで無料の WordPress サーバー環境を構築することができます。詳しくはこちらの紹介記事も参照ください:
IBM Bluemix で無料の WordPress 環境を構築する


管理者として使える WordPress 環境が用意できたら実際に Twitter プラグインを導入して使ってみます。まずは管理者ページ(http://(WordPress サーバー)/wp-admin/)にログインし、「プラグイン」 - 「新規追加」 で "twitter" と入力して検索します。すると多くの twitter 関連プラグインが見つかりますが、その中に作成者が "Twitter" となっている純正プラグインがるので、それを選んで「いますぐインストール」ボタンをクリックします:
2015022601


Twitter プラグインがインストールされます。完了したら「プラグインを有効化」をクリックしてサイト内で有効にします:
2015022602


次に有効にしたプラグインの動作環境設定を行います。「プラグイン」パネルを選ぶと、インストール済みプラグインの一覧が表示されます。その中に「Twitter」が追加できているはずなので、その「設定」をクリックします:
2015022603


Twitter プラグインの設定が表示されます。ツイートボタンをクリックした時の動作として特定の Twitter ユーザーへのメンションを行う設定や、ツイートボタンの表示位置などを指定できます。最後に保存します:
2015022604


これで Twitter プラグインが有効になって、設定した内容で動くはずです。試しにこの WordPress サイト内のツイートを1つ表示すると、Twitter の「ツイート」ボタンが追加されているはずです:
2015022605


このボタンをクリックすると、このページへのリンクが付与されたツイートが、エントリタイトルと併せて表示されます。またこの例では @dotnsf (僕です)ユーザーへのメンションが付与されるようになっています:
2015022606


最後にこのツイートテキストの内容をカスタマイズする方法も紹介します。管理者権限でこのツイートの編集画面(あるいは新規投稿時の作成画面)の下の方に、Twitter カスタムテキストの設定が追加されているはずです。この中のテキストを変更したり、あるいはハッシュタグを付けて保存します:
2015022607


この状態で先ほどのツイートボタンをクリックすると、今度はツイート内容が指定したテキストになっているはずです。またハッシュタグを指定していた場合はその内容も含まれているはずです:
2015022608


シンプルな内容ですが、WordPress のコンテンツが簡単に Twitter ボタンと連携できるようになっていると思います。ブログコンテンツをカスタマイズしてツイートしたい(させたい)時に便利です。


なお、管理者画面のプラグイン一覧の "Twitter" で「編集」をクリックすると、このプラグインの PHP ソースコードが確認できます。ツイッター社の純正 PHP コードが目にできるのは珍しい機会なので、書き方とか興味ある人はこちらも見ておくといいかも:
2015022609












 

BlackBerry Passport を購入して、低速定額 MVNO (通話なし)で使っています。

現実問題として自分はデータ通信中心に使っていて、通話はそんなにしないので、通話契約がないこと自体で困ることはありません。
ただ最近は IP 電話サービスが充実してきていて、通話契約がなくても 050 ではじまる電話番号を取得して発着信に使えるようになっています。特にフュージョンコミュニケーションズ社の SMARTalk サービスは初期費用と月額基本料が0円、また着信通話には料金がかからないので、着信専用電話と割りきって使うぶんには無料で環境が作れてかなり便利です(ただし発信時の料金は少し高め)。自分はこれまで Android 機に SMARTalk アプリを入れて使っていました。フュージョンコミュニケーションズさま、お世話になってます!:

↓iOS / Android 用の専用アプリが提供されているようです。
2015022500


SMARTalk 自体は一般的な IP 電話なので、正しい設定をすれば専用アプリを使う必要はありません。BlackBerry のアプリマーケットである BlackBerry World には SMARTalk アプリはありませんが、一般的な IP 電話アプリをダウンロードして設定すれば使えるはずです。 ただ1つ問題がありました。BlackBerry ネイティブの IP 電話アプリケーションは全て有料のものしかなく、「気軽に試してみる」というテンションだと二の足を踏んでしまいます。特に自分の場合は低速 MVNO を使っているという背景もあり、どこまで実用的なのか実験的な意味合いも強いのでした。「お金を払って実験したいわけじゃないんだよなあ」という感じ:

↓有料アプリばかり・・・
2015022501



そこで今回試したのは「BlackBerry 上で Android ネイティブな無料の IP 電話アプリが使えるか?」という実験(の実験?)です。BlackBerry は比較的新しい機種(Q5 以降)の最新アップデートでは Android ネイティブアプリがインストールできるようになっているので、これを使って無料の IP 電話環境を作ってしまおう、というアイデアです。 結論としては使えているように見えるので、以下にその手順を紹介します。

まずは SMARTalk のアカウントが必要です。まだ持っていない人は SMARTalk のアカウントを作成しましょう:
http://ip-phone-smart.jp/notes/

IP 電話の設定をする上で必要になるのは以下の情報です:
- SIP ドメイン(SMARTalk の場合はおそらく smart.0038.net で固定)
- SIP アカウント(待ち受け電話番号 050-XXXX-XXXX の下8桁部分の数字)
- SIP パスワード


次に BlackBerry Passport にプリインストールされている Amazon Appstore アプリを起動して、"AGEPhone" を検索します。見つかったらインストールします(AGEPhone 以外の IP 電話アプリでもできると思いますが未確認):
2015022502


インストールできると BlackBerry Passport のホーム画面に AGEPhone のアイコンが追加されます。これをタップして起動し、SMARTalk の設定を行います:
2015022503


初回起動時にはプロファイル情報が存在していないのでこのような画面になると思います。「ここをタップして下さい。」と書かれた箇所をタップしてプロファイル設定画面に移動します:
IMG_20150225_115949


プロファイル設定画面では最初にテンプレートが選択できます。ただ SMARTalk 用のテンプレートは AGEPhone には用意されていないようなので「標準の SIP アカウント」を選択します:
IMG_20150225_115956


最初にこのプロファイルに名前をつけます。適当に(この例では "smartalk")名前をつけてください:
IMG_20150225_120021


次の画面でアカウント接続情報を入力します。ドメインに SIP ドメイン名(おそらく "smart.0038.net")、ユーザIDと認証IDには SIP アカウント(着信電話番号 050-XXXX-XXXX の下8桁数字)、そしてパスワード欄に SIP パスワードを入力します。最後に「完了」で保存します:
IMG_20150225_120336


すると画面上部が「サーバに登録中」という画面になって・・・
IMG_20150225_120403


しばらくすると「ダイアルできます」という画面に変わります。これで SMARTalk に接続できました。この段階で与えられた 050 番号での着信も確認できます:
IMG_20150225_120408


「キーパッド」からダイアル画面に移動して、ここから発信することも可能です:
IMG_20150225_120425


ちょっと不安でしたが、Android 向けの IP 電話アプリも BlackBerry で動かすことができそうです。 ちなみに気になる音質ですが、WiFi や LTE であれば全然問題ないと思います。低速回線(200Kpbsベストエフォート)でも、うん、まあ、なんとか・・・という感じ。Radiko を使った時にも感じましたが、音声データだけならこの程度の回線速度でも意外といけます。








 

自分は自宅に CentOS を中心に構築した簡易ローカルネットワークがあります。自宅には固定の光回線もあるので、ブロードバンドルーターのポートフォワーディング機能を使って自宅内の HTTP サーバーを公開したり、SSH サーバーや DB サーバーににインターネットからログインできるようにしていました。
2015022401



もちろんこれはこれで便利ではあったのですが、自宅内に KVM の仮想サーバーを構築したあたりから少しずつ限界を感じることがでてきました。仮想サーバーができたことで簡単&気楽にマシンを増やして使うことができるようになるのはいいのですが、動的に増やしたマシンに接続するための設定として、2つ以上の異なる HTTP サーバーに 80 番ポートで接続したい、とか、ポートフォワーディングだけでは限界を感じることが多くなってきたのでした。まあ自宅ネットワーク環境もこんな悩みを抱えるレベルになれば立派かな、という感じ:
2015022402




この状況を打破するべく、 自宅ネットワークに VPN(Virtual Private Network) 環境を構築することにしました。結果的にですが、PC と自宅ネットワークとの間の通信をすべて暗号化することにもなるので、セキュリティ的にも向上することになります。この環境をオープンソースの OpenVPN を使ってすべて無料で構築したのですが、その手順をまとめました。


まず目標として、最終的には以下の様なネットワーク構成を作ることにしました:
・自宅ネットワークは 192.168.0.0/24 で、ルータ/DHCP/DNS 含めて今まで使ってきた自宅ネットワーク環境を変えずにそのまま使う。 
・自宅ネットワークのブロードバンドルータは 192.168.0.1、このブロードバンドルータの公開サーバー名は www.myserver.com とする。
・OpenVPN を導入する VPN サーバーは 192.168.0.4(CentOS)
・VPN で接続するクライアントは Windows7 を想定
・VPN で接続するクライアントのネットワークは 10.8.0.0/24(OpenVPN のデフォルト)
・VPN で接続したクライアントから自宅ネットワークへ、自宅ネットワーク内のマシンから VPN で接続したクライアントへの双方向の通信を可能にする
2015022403


上記の最後の文を補足します。この環境ができて VPN 接続ができた後に、VPN のクライアント機(Windows7)からは 192.168.0.XX というそのままのアドレスで自宅ネットワークの各サーバーに接続ができるようになります。加えて自宅ネットワーク内の各サーバー機からも 10.8.0.X というアドレスを指定することで Windows7 機にアクセスできるようになる、この双方向でのアクセスが可能になるような環境とする、ということを目標にします。


では以下にその構築手順を記載します。まず自宅ネットワーク内の1台のマシンに OpenVPN サーバーをインストールします。今回はこのマシンの IP アドレスが 192.168.0.4 で、CentOS が導入されているものと仮定します。また 2015/02/24 時点では OpenVPN の最新バージョンが 2.3.6 だったので、このバージョンをインストールしています。実際にはこちらを参照して、最新バージョンを確認し、最新バージョンのモジュールをダウンロードするようにしてください。

このマシンにログインして root 権限でシェルを開き、以下のコマンドを順次実行します:
# cd /usr/local/src
# yum -y install openssl-devel lzo-devel pam-devel

(最新の OpenVPN をダウンロードしてビルド)
# wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.6.tar.gz # rpmbuild -tb --clean openvpn-2.3.6.tar.gz # yum -y localinstall ~/rpmbuild/RPMS/x86_64/openvpn-2.3.6-1.x86_64.rpm # rm -f ~/rpmbuild/RPMS/x86_64/openvpn-* # rm -f openvpn-2.3.6.tar.gz
(easyrsa をダウンロードしてビルド) # wget https://github.com/OpenVPN/easy-rsa/archive/master.zip # unzip master.zip # cp -r easy-rsa-master/easyrsa3/ /etc/openvpn/ # rm -rf easy-rsa-master/ # rm -f master.zip

これで OpenVPN の導入はできました。次にこの導入モジュールを使って各種鍵・証明書ファイルを作ります:
(初期化)
# cd /etc/openvpn/easyrsa3/
# ./easyrsa init-pki

(CA証明書と秘密鍵作成)
# ./easyrsa build-ca
 (パスフレーズの入力を促されるので2度同じ内容を入力)
 (Common Name(サイト名)を聞かれたらサーバー名(www.myserver.com)を入力)
# cp pki/ca.crt /etc/openvpn/

(サーバー証明書と秘密鍵作成)
# ./easyrsa build-server-full server nopass
 (パスフレーズを聞かれるので、先ほど入力したパスフレーズを入力)
# cp pki/issued/server.crt /etc/openvpn/
# cp pki/private/server.key /etc/openvpn/

(DHパラメータ作成)
# ./easyrsa gen-dh
# cp pki/dh.pem /etc/openvpn/

(ダミーのクライアント証明書作成)
# ./easyrsa build-client-full dmy nopass
 (パスフレーズを聞かれるので、先ほど入力したパスフレーズを入力)

(ダミーのクライアント証明書廃止)
# ./easyrsa revoke dmy
 ("Continue with revocation" と表示されたら yes と入力)
 (パスフレーズを聞かれるので、先ほど入力したパスフレーズを入力)

(証明書廃止リスト作成)
# ./easyrsa gen-crl
 (パスフレーズを聞かれるので、先ほど入力したパスフレーズを入力)
# cp pki/crl.pem /etc/openvpn/
# chmod o+r /etc/openvpn/crl.pem

(TLS認証鍵作成)
# openvpn --genkey --secret /etc/openvpn/ta.key
# cp /usr/share/doc/openvpn-2.3.6/sample/sample-config-files/server.conf /etc/openvpn/

上記で最後にコピーした OpenVPN の設定ファイルを編集します:
# vi /etc/openvpn/server.conf
    :
  (変更が必要な該当箇所のみ記述、ここにある内容以外はそのままで)
    :
dev tun

dh dh.pem

server 10.8.0.0 255.255.255.0

;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
push "route 192.168.0.0 255.255.255.0"

tls-auth ta.key 0 # This file is secret

user nobody
group nobody

log-append  /var/log/openvpn.log

# 以下の2行を最終行に追加
management localhost 7505
crl-verify crl.pem

更に easyrsa3 ディレクトリでクライアント証明書および秘密鍵ファイルを生成しておきます。なお、以下の例では client1 という名前のクライアント証明書・秘密鍵ファイルを生成していますが、このクライアント名は一意である必要があります。複数クライアント向けに複数の証明書や秘密鍵ファイルを生成する場合は、既に作成したクライアント名と重ならないように注意してください:
# cd /etc/openvpn/easyrsa3
# ./easyrsa build-client-full client1
 (クライアント用パスフレーズの入力を促されるので2度同じ内容を入力)
 (サーバー用パスフレーズを聞かれるので、作成時に入力したパスフレーズを入力)

起動スクリプトとシャットダウンスクリプトを新規に作成します:
# vi /etc/openvpn/openvpn-startup
#!/bin/bash

/etc/openvpn/openvpn-shutdown
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT

iptables -I INPUT -i tun+ -j ACCEPT

iptables -I FORWARD -i tun+ -d 192.168.1.0/24 -j ACCEPT


# chmod +x /etc/openvpn/openvpn-startup
# vi /etc/openvpn/openvpn-shutdown
#!/bin/bash

delete() {
  rule_number=`iptables -L $target --line-numbers -n -v|grep tun.|awk '{print $1}'|sort -r`
  for num in $rule_number
  do
    iptables -D $target $num
  done
}

target='INPUT'
delete

target='FORWARD'
delete

target='OUTPUT'
delete

# chmod +x /etc/openvpn/openvpn-shutdown

ログローテーションの設定ファイルを新規に作成します:
# vi /etc/logrotate.d/openvpn
/var/log/openvpn.log {
  missingok
  notifempty
  sharedscripts
  postrotate
    systemctl restart openvpn 2>&1 > /dev/null || true
  endscript
}

ここまでの準備ができていれば OpenVPN サーバーを起動し、自動起動設定も行います:
# vi /etc/init.d/openvpn

 (この行のコメントを外す)
  echo 1 > /proc/sys/net/ipv4/ip_forward


# /etc/init.d/openvpn start
# chkconfig openvpn on

次にルータ(この例では 192.168.0.1)上で UDP/1194 へのアクセスを VPN サーバー(この例では 192.168.0.4)にフォワーディングするよう、ポートフォワード(と必要であればファイアウォール)の設定を行います。この具体的な手順はお使いのルータごとに異なるため、ルータの説明書などを参照しておこなってください:
2015022404


更にルータ上のルーティングを変更し、このネットワーク内での 10.8.0.0/24 宛のデータは VPN サーバー(この例では 192.168.0.4)をゲートウェイとするようにルーティングエントリを追加します。これで VPN ネットワークに接続したマシンへネットワーク側から接続することもできるようになります。この具体的な手順もお使いのルータごとに異なるため、ルータの説明書などを参照しておこなってください:
2015022405


これで OpenVPN サーバーおよびルータ型の設定が完了しました。 続けて VPN クライアント(PC側)の設定を行います。

この VPN ネットワークに接続したい PC で OpenVPN のダウンロードページを開き、環境にあった Installer をダウンロード・ダブルクリックして導入します:
2015022406


導入先フォルダの中にクライアント設定ファイルのサンプル(C:\Program Files\OpenVPN\sample-config\client.ovpn)があるので、このファイルを C:\Program Files\OpenVPN\config\client.ovpn としてコピーし、以下の内容に書き換えます(変更箇所のみ記載しています):
remote www.myserver.com 1194 # VPN サーバー名

ca ca.crt # CA証明書のファイル名
cert client1.crt # クライアント証明書のファイル名
key client1.key # クライアント秘密鍵のファイル名

tls-auth ta.key 1 # 行頭にコメントが付いているので外して TLS 認証を有効化

VPN クライアントから VPN サーバーのマシンに SFTP などで接続し、CA 証明書(/etc/openvpn/ca.crt)/クライアント証明書(/etc/openvpn/easyrsa3/pki/issued/client1.crt)/クライアント秘密鍵(/etc/openvpn/easyrsa3/pki/private/client1.key)/TLS認証鍵(/etc/openvpn/ta.key)の各ファイルを転送し、すべて C:\Program Files\OpenVPN\config フォルダ内に保存します。


最後に、この VPN クライアントは Windows7 上では管理者権限で実行する必要があるため、その設定を行います。

スタート → すべてのプログラム → OpenVPN → OpenVPN GUI を右クリックし、「プロパティ」を選択します:
2015022407


"OpenVPN GUI のプロパティ" ダイアログが表示されたら「互換性」タブを選び、「管理者としてこのプログラムを実行する」にチェックを入れます。最後に OK をクリックしてダイアログを閉じます:
2015022408



これで準備はすべて整いました。最後に実際に VPN 接続して動作確認してみます。

VPN クライアントを導入した PC が自宅以外のインターネットに接続している状態で、先ほどの手順で OpenVPN GUI を選択して起動します:


OpenVPN クライアントがタスクバーに格納された状態で起動します。この時点では接続できていないので灰色で表示されているはずです。このアイコンを右クリック → 接続を選択します。
2015022409


OpenVPN のコンソールが表示され、パスワードを聞かれます。ここではクライアントの証明書を作成する時に指定したパスフレーズを入力して OK ボタンをクリックします:
2015022410


正しく接続できるとアイコンが緑色になります。同時に新たに割り当てられた IP アドレス(この例では 10.8.0.6)が吹き出し表示されます:
2015022411


この状態で自宅ネットワーク内のサーバーの IP アドレス(192.168.0.XX)を指定すれば接続できるはずです:
2015022412

逆に自宅ネットワーク内のサーバーから割り当てられた IP アドレスに対しても接続できているはずです:
2015022413


繋がりました! これで外から自宅ネットワークに対してセキュアに、しかもポートフォワードの制約を受けずにアクセスできるようになりました。

VPN 接続を切断するにはタスクバーのアイコンを右クリック→切断 を選択します:
2015022414



今回紹介した方法は Windows クライアントを前提としていましたが、証明書や秘密鍵の作り方を少し変えると iPhone などでも利用できるようになります。 詳しくは以下の参考ページを参照ください:


(参考)
http://centossrv.com/openvpn.shtml


 

日本時間の2月20日に、IBM Bluemix 内のサービスラインナップが更新され、いくつかの新しいサービスが追加されました。

追加されたサービスの1つに IBM Insights for Twitter があります。2014年10月末に Twitter 社と IBM との連携が発表されましたが、そのサービスの API が IBM Bluemix を通じて誰でも(現時点では無料で)利用できるようになりました:
ibm-twitter-form-data-partnership-140x105

具体的には "decahose" と呼ばれる、Twitter の公開ツイート全体の中のランダムな約 10% のデータが検索の対象として提供されます。 ただこの IBM Insights for Twitter では、単に IBM に提供された decahose を誰でも検索できる、というだけではなく、IBM InfoSphere BigInsights を使ったビッグデータのリアルタイム解析によって付与されたメタ情報と合わせて 100 万ツイートまで無料で検索することができるようになっています:
2015022307


このサービスに関してはデモサイトが用意されているので、まずは論より証拠で使ってみましょう:
IBM Insights for Twitter Demo App

上記サイトにアクセスすると、検索キーワードの入力ボックス1つとボタンが表示された、シンプルなページが表示されます:
2015022301


このキーワードボックスに適当な検索ワード(この例では "oscar")と入力して "Twitter Search" ボタンをクリックすると、検索ワードにかかったツイートが一覧で表示されます。ちょうどアカデミー賞授与式が行われている頃の検索だったこともあり、式をリアルタイムに見ている人のツイートが見て取れます:
2015022302


検索結果をよく見ると、"message" という大きなブロックの中に "body"(本文)や "location"(位置情報)といったブロックに分かれて各ツイートの情報が得られていることが分かります:
2015022303


シンプルな検索結果に見えますが、実は一般的な Twitter API を使ったことのある開発者からはこの時点でもいくつかの目新しい機能があることに気づきます。

例えば一般的な Twitter API を使うにはまず開発者登録とアプリケーション登録を行い、OAuth 認証のための ID を発行する必要があります。そしてその ID を使って OAuth 認証の仕組みを使ってアクセスした上で検索の API を実行する必要があります。 IBM Bluemix から提供されている IBM Insights for Twitter  の API ではこの部分が省略され、よりシンプルなしくみで検索を実行することができるようになっています。

また、検索結果の各ツイートの内容をよく見ると "message" ブロックの下に "cde" というブロックが付与されています:
2015022304


これは "Context Data Extractor" のデータという意味です。元々のツイートには含まれていない情報を、そのデータの内容から推測・計算して得られた附属情報です。例えば「このツイートを書いた人の性別」や「このツイートの内容がポジティブなものか、ネガティブなものか」といった情報になります。 これらの情報は Twitter から提供されているものではなく、IBM Insights サービスによって格納時にリアルタイムにストリーミング処理されて付与された情報です。

IBM Insights for Twitter では、この CDE 情報を検索条件に含めることも可能です。こちらも試してみましょう。 先ほどの画面の検索ボックスにおいて "oscar" というキーワードに加えて、"sentiment:positive" と加えて検索してみます:
2015022305


すると同じような検索結果が表示されますが、その結果の CDE 情報を見ると、すべて cde.content.sentiment.polarity の値が POSITIVE になっているものばかりになっているはずです。つまり「"oscar" というキーワードを含んで、かつポジティブな内容のもの」が検索されたことになります。ちなみに値を sentiment:negative にするとネガティブなものだけ、sentiment:neutral にすると中間的なものだけを抽出することも可能です:
2015022306


CDE の sentiment 検索については、現時点では英語のみに対応している模様で、残念ながら日本語テキストの判断はできないようです。ただ、この CDE の情報まで含めてほぼリアルタイムな Twitter 検索ができる、というこの環境が誰でも無料で使えるようになる、という IBM Insights for Twitter サービスはアプリケーション開発において、その可能性を感じずにいられません。


現在はまだバージョン1がベータリリースされたばかりで、検索パラメータに指定できることも限られてしまっていますが、開発者の皆様には是非使っていただいて、どのような機能要望があるのか、その声を聞かせていただきたいと思っています。そんな IBM Insights for Twitter サービスのチュートリアルや API リファレンスはこちら:
Getting started with IBM Insights for Twitter(BETA)

↑デモサイトの検索ボックスに、どのように入力すればどのような条件で検索できるか、といった情報が詳しく書かれています。


まだベータ版ということもあって、今後の仕様変更についての可能性もあると思いますが、開発する立場で見ても可能性も多い楽しみなサービスだと思っています。









 

このページのトップヘ