ITエンジニア流Twitterリサーチ術(その2:プログラミング編)


エンジニア流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 コードを書くよ
  • 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情報を取得するプログラムが出来ました。

capture_local_twitterphp

ただ、欲を言えばもう少し機能が欲しい所です。例えば・・

  • 気になるTwitterユーザーのプロフや最近のつぶやきをみたいので、顔写真やユーザー名をクリックすればその人のTwitterプロフィールへ飛べるようにしたい
  • つぶやき内のURLもクリックしてリンク先を見られるようにしたい
  • 表の幅や日付を調整して見やすくしたい
  • 自分のフォロワーだけでなく、特定Twitterユーザーのフォロワーもすぐ探せるようにしたい
  • 列の内容に応じて並び順を変えたい(フォロワー数が多い順、など)

次回記事では、こうしたより細かい機能も増やしながら、理想のプログラムを目指してみます。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA