マネー報道 MoneyReport

マネーにまつわる報道を取り上げ、自分の切り口で切り取り、噛み砕いてお伝えします。

Twitterのつぶやきを自動で検索して取得したい!該当キーワードのつぶやきをTwitter APIで表示したい!

スポンサーリンク
あとで読む

新Webサイト向けの調査

現在は外の仕事をメインに作業しているので、自分自身のWebサイト構想は考えるばかりで作業の着手は出来ない状況です。
せめて検討して良さそうな物はドンドン取り込んでいける様に計画中です。

で、昨日は建物の住所データから郵便番号を取得する方法を模索しました。

日本郵便(郵便局)が提供してくれている郵便番号検索は1~10件程度までなら手作業ですぐに分かって良いのでしょうが、私は全部で18,000件の郵便番号を取得したいので手作業では無理です(^-^;
これだけで1ヶ月掛かってしまいます(>_<)

そこで郵便局の郵便番号データCSVを加工してくれている所を見つけたので、そのデータを利用して自作のプログラムで住所と郵便番号データが一致している物を検索して出力する物を作ろうかな、と。
設計段階ではループ処理で完全一致する物を引っかけようと思うのですが、全郵便番号データが1万件程度、住所データが18,000件程度なので、ループ処理でこれだけ回すと酷く遅い可能性はあります(-_-;
ループ件数的には下手をすると・・・

 1万件 × 1.8万件 = 18億件

と、なりまして最悪は18億回もループを回すことになるので、さすがに最近のパソコンでもこれだけ回すと遅くて相当な時間掛かってしまうので、都道府県は絞った後にループを回すなりの工夫はしてみようと思います(^-^;

それでも遅かったらDBに郵便番号CSVを入れてしまって、SELECT掛けて一発で引っ張る様にしようかと思います。

Twitterのつぶやきが欲しい

で、とりあえず住所データから郵便番号を取得する目処は立ったので、次はTwitterのつぶやきデータを取得したいな、と。
該当する建物名称の内容をツイートしている内容を引っ張って表示したいな、と。
まぁよくある奴ですね(^-^;

http://www.flickr.com/photos/35237097961@N01/2668956097
photo by fumi

あ、写真はFlickrのもので私じゃないですよ(^-^;

18,000件の建物データに対して全ての記事を書ければ良いのですが、それこそ1年掛かっても自力では無理ですし、クラウドソーシングサービスを利用してライターさんに依頼したとしても、こんな件数を依頼したら幾ら掛かるか分かったものではありません(-_-;
あ、でも一応計算してみますか!
1記事500円として・・・

 18,000件 × 500円 = 9,000,000円

ゲ!
900万円も掛かる・・・orz

もう少し料金を下げて1記事200円としても・・・

 18,000件 × 200円 = 3,600,000円

と、なりまして360万円(T_T)
こりゃあダメだ(^o^;

という訳で資金の無い私は色々なWebAPI等に頼らざるを得ないという(^o^;

TwitterAPIで実現したいこと

でわでわ自分で記事を書き切るのは無理なのが分かったので、Twitter APIを利用してツイートを取得する方法を検討してみましょう!
要望としては下記のようになります。

【TwitterAPIでやりたい事】

  • 「該当する建物名 + キーワード」でツイート検索し、最新の10件を表示する
  • 該当する建物名でツイートを検索し、最新の10件を表示する
  • 建物のフル名称でヒットしなければ、建物の一部名称で検索し最新の10件を表示する

といった所でしょうか?
これが実現できれば、建物名に関する話題を取り上げて見ることが出来るので、Webサイトを訪れてくれた人にとっては役立つ情報を提供できるのではないかな、と。
特に建物名とWebサイトが狙うキーワードを含むツイートを絞り込んで表示出来れば、かなり役立つのではないかな、と(^-^)w

TwitterAPIの使い方調査

やりたい事が見えてきましたので、続いてTwitterAPIの実際の使い方を調査します。
幾つか良さそうな物が見つかったので紹介していきます。

Twitter APIでつぶやきを取得する


twitter API について検索しているとJSでの取得方法もちらほら見られるけれど、twitter API ver.1.1から認証が必須となったことで、JSだとアクセストークンがまる見えになってしまう。これは危険。
ということで、PHPでの実装手順。


OAuth用ライブラリ「twistoauth」
OAuth用ライブラリ「twitteroauth」の場合


Twitter APIでつぶやきを取得する - Qiita

こちらはGitHubで公開されているライブラリを利用してツイートを検索したり、つぶやいたりする方法を紹介してくれています。
OAuth用と書かれていますが、「OAuth」って何なんでしょうね(^-^;

ちょっと調べてみたところ「OAuth」は「オーオース」と読むようで、オープンプロトコルの一種で、デスクトップ・モバイル・Webアプリケーション等にセキュアなAPI認可の標準的手段を提供する仕組みを指すそうです。

いまいち何を言ってるのか分かりにくいですが、これを使うときちんとAPI認可をした人しかWebAPIを使えなくする仕組みで、やたらめったらAPIをビシバシ使われるのを避ける事ができるようです。

で、このOAuthの仕組みを利用したライブラリの「twistoauth」と「twitteroauth」を利用したツイート検索手法を解説してくれています。
どちらの方法が良いのでしょうかね(^-^;?
ちょっと実際に使ってみないと何とも言えません。

で、続いて「twitteroauth」を利用したツイート検索手法。

Twitter API & PHP による Twitter 検索の実行方法を紹介します。検索クエリのカスタマイズ方法から、応用例として、Twitter 検索を組み合わせた自動フォローの方法も紹介します。コードは Twitter API のバージョン 1.1 に対応しています。また、実装を簡単にするため、twitteroauthライブラリを利用しています


Twitter API v1.1 & PHP による Twitter 検索の方法 : プログラミング for ツイッタラー

twitteroauthライブラリを利用するという事で前述の方の2つ目で使ったライブラリを使用した感じですね。
で、こちらでは更に該当キーワードを呟いている人を自動フォローするのまでプログラムでやってしまうそうです!
でもそんな何かのキーワードを呟いている人を片っ端からフォローしたら

「Twitterアカウント凍結しました!」

って連絡が来てしまうのではないかと(^^;
Twitter初心者時代に1日に20人位フォローしたらすぐにアカウント凍結されましたよ(T_T)
大丈夫なのかなぁ?

でも大丈夫なら、フォローしていきたいですね(^-^;
もちろん、新しいWebサイト立ち上げ時にはそのWebサイト専用のTwitterアカウントを取得するので、その新しいアカウントで徐々にフォローを増やして行ければなぁ、と。
ツイート引っ張る度に1件ずつだけ自動フォローとかにしておけば良いのでしょうかね?
でも、それでも1日のアクセスが100件とかになってくれば、100人分1日でフォローしてしまうからダメですか(>_<)
自動フォローの良い使い道が思いついた方はコメントやブコメで教えて下さい(^o^)/

で、続きましてツイート検索のsearchについてです。

ツイートを検索する。


https://api.twitter.com/1.1/search/tweets.json


検索クエリや位置座標、期間など様々な条件を指定して、ツイートを検索することができます。位置座標や期間は専用のパラメータがありますが、qに検索コマンドを含めても大丈夫です。
非公開アカウントのツイートを検索するなどの目的がない限り、レートリミットの制限が緩いアプリケーション認証を選択することを推奨します。


search/tweets - ツイートを検索する | Twitter Rest API 日本語リファレンス

Twitter API 1.1の「search」コマンドの詳しい使い方紹介。
「q」がクエリ指定だったり、「lang」で対象言語コードを絞ったり、「until」で指定日以前の過去ツイート指定が出来たりと色々と出来る事があるみたいです♪
この辺は実際に組み込む時に見ながら参考にさせてもらおうと思います♪

次はこちら。

TwitterAPIって、そもそもなに?


Twitter社が提供しているサービスで、WebサイトやアプリなどからTwitterの機能を呼び出すことができ、 このAPIを利用することでツイートの参照や検索などを行なえるアプリケーション開発ができるようになります。
今年2013年6月11日(現地時間)に従来のver1.0から「Twitter API Version 1.1」に完全移行しました。


やってみると意外とカンタン!TwitterAPIを使ってつぶやきデータを取得してみた。 | Web制作ならWebNAUT

こちらが親切なのはTwitterDevelopersの登録方法まで解説してくれている点(^-^)w
図解で書いてくれてあって分かりやすいです。

サポートがJSONのみへ
ver1.0では【JSON, XML, Atom, RSS】4つの形式が提供されていましたが、ver1.1では【JSON】のみのサポートになっています。

あら(^^;
JSONて全然使い慣れていないです(-_-;
というかXMLしか使い慣れていないorz
時代遅れも良い所ですね~(^o^;
とっととJSON形式でのデータ取り扱いにも慣れていける様にしたいです(^-^)/

まだまだ覚えなければいけない事が多いですが、色々と身につければ身につけただけより良いWebサイトを構築出来る様になりますので、頑張ります(^-^)/

まとめ

  • 大量データを紹介するWebサイトで記事を外注すると100万円単位のお金が掛かる!
  • 大量データを紹介するWebサイトではTwitterのツイート紹介が有効ではないか?
  • TwitterAPIの使い方調査まとめ
AX