エンジニア流Twitterリサーチ術、第2章です。(第1章はコチラ)
今回は実際に Twitter API というものを使って、情報を取得してみます。地道に1つ1つ調べていくのに比べて、どのくらい効率良く情報収集出来ているか?に注目しながら読み進めて頂ければ、と。
目次
- 1 お題:リサーチせよ!
- 1.1 業界の有力Twitterユーザーをフォローしている人達は?
- 1.2 必要な情報を必要なだけ、まとめて見たい
- 2 どうやって探すか考える
- 2.1 公式サイトで1つ1つ見るのは、あり得ない
- 2.2 ツールやサービスはあるけれど・・
- 2.3 そうだ、Twitter API を使おう
- (※ ここまで、前回記事)
- 3 コードを書くよ
- 3.1 結局、何が欲しいんだい?
- 3.2 理想の表示結果をHTML&CSSで書く
- 3.3 まずは「自分のアカウント」のフォロワーを取得可能に
- (※ 以下、次回記事にて・・)
- 4 取得結果をもうちょっと見やすくする
- 4.1 ユーザー名をリンク形式に [39行目]
- 4.2 列の横幅を広く [40行目]
- 4.3 日付を見やすく [47,49行目]
- 4.4 つぶやき内のURLを自動でリンク化 [48行目]
- 5 さらに使いやすく・・
- 5.1 対象Twitterユーザーを自由に選択
- 5.2 ソート機能は面倒なのでExcelにお任せ
- 6 まとめ
コードを書くよ
さて、ではいよいよ実装。さいわい僕は自分のパソコン内にローカルサーバー環境なるものを用意しています。これはWebサイト制作をする際、納品前にテストする環境として使っているもの。
この環境があるおかげで、あるフォルダ内にPHPで書いたコードファイルを保存すれば、対応するURLをブラウザに打ち込むだけで、書いたコードが起動し結果が表示されます。(この環境がなければ、別途サーバーを用意してあげる必要があります)
環境作りの方法について話すとかなり長くなるので、今回はどんな流れでプログラムを考えていくか?を以下に。
結局、何が欲しいんだい?
プログラミングは、INとOUTが何より重要です。何を入力して、何を出力するのか?
今回は上記でも触れた通り、以下のような情報がExcelの表みたいに一覧表示されるとOKです。
- 指定ユーザーをフォローしているユーザー100人が、1行1人ずつ表示。
- 判断基準として、各行の列には以下のような情報が欲しい
- 名前
- ユーザー名(クリックしたらプロフィールページに飛べればBest)
- プロフィール画像
- フォロー数/フォロワー数
- お気に入り数
- 最新つぶやき内容と日時
- 列ごとに並び替えしたい(フォロワーの多い順、など)
- ユーザー名を入力すれば、そのフォロワー情報が表示されるようにしたい
・・とりあえず、こんな所でしょうか。これだけでも結構使えるリサーチ用ツールになるんじゃないかと。
理想の表示結果をHTML&CSSで作ってみる
続いて僕は、いよいよプログラミング(コーディング)に入ります。ここからの順番は人それぞれですが、今回はまず「理想の表示結果」をHTML/CSSで先に書いてみようと思います。表示内容は、適当に。
以下のようなコードを書けば、欲しいデータを表示する場所としての『ひな形(テンプレート)』が出来上がります。
<html> <head> <meta charset="utf-8" /> <style type="text/css"> table { border-collapse: collapse; font-size: 10px; } table th, table td { border: 1px solid #999; padding: 4px; } table th { background: #e0e2e5; } </style> </head> <body> <table> <tr> <th>アイコン</th> <th>ユーザー名</th> <th>名前</th> <th>解説</th> <th>Tweet数</th> <th>フォロー数</th> <th>フォロワー数</th> <th>リスト数</th> <th>お気に入り数</th> <th>開始日時</th> <th>最新Tweet内容</th> <th>最新Tweet日時</th> </tr> <?php for ( $i = 0; $i < 100; $i++ ) : ?> <tr> <td><img src="http://placehold.jp/80x80.png" /></td> <td>@ーユーザー名ー@</td> <td>@ー名前ー@</td> <td>@ー解説ー@</td> <td>@ーTweet数ー@</td> <td>@ーフォロー数ー@</td> <td>@ーフォロワー数ー@</td> <td>@ーリスト数ー@</td> <td>@ーお気に入り数ー@</td> <td>@ー開始日時ー@</td> <td>@ー最新Tweet内容ー@</td> <td>@ー最新Tweet日時ー@</td> </tr> <?php endfor; ?> </table> </body> </html>
実際に表示すると、こんな感じです。「@ー●●●ー@」の部分に、実際Twitterからデータ取得した情報が入る予定です。
上記の表示結果サンプル
こんな感じで、先に「どんな表示結果が欲しいか?」をHTML/CSS中心で書いてみてから、実際にデータを取得するプログラムを書いていきます。
まずは「自分のアカウント」のフォロワーを取得可能に
さて、続いてPHPでのプログラミングに入りましょう。といっても、すべてをゼロから作るわけではありません。
PHPに限らずプログラミングでは、よく利用される処理を優秀なプログラマーさん達が「ライブラリ」という形で使いやすいようにしてくれています。
Twitter API の場合は、TwitterOAuthという便利なライブラリがあるので、有難く使わせて頂く事に。
https://twitteroauth.com/
https://github.com/abraham/twitteroauth
これを使って以下のように書くと、指定ユーザーのフォロワー情報一覧を取得するプログラムになります。結構短いコードで書けちゃいますね。
// ライブラリの読み込み require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; // Twitterに接続 $consumerKey = "●●●●●●●●●●●●"; $consumerSecret = "●●●●●●●●●●●●"; $accessToken = "●●●●●●●●●●●●"; $accessTokenSecret = "●●●●●●●●●●●●"; $TwitterOAuth = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); // 特定ユーザー「@●●●●」のフォロワー情報を100件取得 $results = $TwitterOAuth->get('followers/list', array( 'screen_name' => '●●●●', 'count' => '100', ));
そして、Step-2で書いたHTMLの中に、このPHPで取得した情報を表示するコードを挿入してあげれば、表形式で表示されます。(見やすく為に、セキュリティ対策などの処理は省いてます。)
<html> <head> <meta charset="utf-8" /> <style type="text/css"> table { border-collapse: collapse; font-size: 10px; } table th, table td { border: 1px solid #999; padding: 4px; } table th { background: #e0e2e5; } </style> </head> <body> <table> <tr> <th>アイコン</th> <th>ユーザー名</th> <th>名前</th> <th>解説</th> <th>Tweet数</th> <th>フォロー数</th> <th>フォロワー数</th> <th>リスト数</th> <th>お気に入り数</th> <th>開始日時</th> <th>最新Tweet内容</th> <th>最新Tweet日時</th> </tr> <?php foreach ( $results->users as $result ) : ?> <tr> <td><img src="<?php echo $result->profile_image_url; ?>" /></td> <td><?php echo $result->screen_name; ?></td> <td><?php echo $result->name; ?></td> <td><?php echo $result->description; ?></td> <td><?php echo $result->statuses_count; ?></td> <td><?php echo $result->friends_count; ?></td> <td><?php echo $result->followers_count; ?></td> <td><?php echo $result->listed_count; ?></td> <td><?php echo $result->favourites_count; ?></td> <td><?php echo $result->created_at; ?></td> <td><?php echo $result->status->text; ?></td> <td><?php echo $result->status->created_at; ?></td> </tr> <?php endforeach; ?> </table> </body> </html>
・・こんな感じで、前回記事に貼り付けたような、表形式のTwitter情報を取得するプログラムが出来ました。
ただ、欲を言えばもう少し機能が欲しい所です。例えば・・
- 気になるTwitterユーザーのプロフや最近のつぶやきをみたいので、顔写真やユーザー名をクリックすればその人のTwitterプロフィールへ飛べるようにしたい
- つぶやき内のURLもクリックしてリンク先を見られるようにしたい
- 表の幅や日付を調整して見やすくしたい
- 自分のフォロワーだけでなく、特定Twitterユーザーのフォロワーもすぐ探せるようにしたい
- 列の内容に応じて並び順を変えたい(フォロワー数が多い順、など)
次回記事では、こうしたより細かい機能も増やしながら、理想のプログラムを目指してみます。