Twitter API で検索したツイートを取得する方法【Cowitter ver】

2013/07/06

みんなのツイートを検索したいんだよ

この記事は2017年11月14日に更新されました。

今回は仕事でも使用したTwitter APIの導入方法とツイートを取得するまでの流れを解説したいと思います。
Twitter APIで検索とかするためにまずTwitter Application Managementから登録を行います。
行わないとTwitter APIを使うことはできません。(Twitterアカウントがない人は作成する必要があります。)

登録方法

Twitter Application Managementにアクセスし、お持ちのTwitterアカウントでログインします。
ちなみにTwitterアカウントは電話番号を登録しておかないとエラーが出て登録させてもらえません笑

登録方法についてはTwitter API キーを取得するに詳しく書いているのでそちらを見てください。

あ、ちなみに登録時に発行される4つのコード、「Access token」と「Access token secret」と「Consumer key」と「Consumer secret」のが重要となってきますのでメモっておいてください。

さて、登録し終わったら、次は実際にOAuth認証を設定して検索してみましょう。

CowitterでOAuth認証

OAuth認証するのに以前はtwitteroauthを使っていたのですが、twitteroauthの後続となるCowitterというライブラリを使います。

Composerのインストール

Cowitterを使うにはまずインストールしないといけないんですが、Composerというものを使ってインストールしたいと思います。
ComposerとはPHPの依存管理パッケージの一種で、PHPerなら必ずと言っていいほどのお世話になるツールらしいです。詳しくはここらへんを見ておけばちょっとはわかると思います。

composerとは - Qiita

ということで、まず、Composerをインストールしましょう。

ここからはターミナルを使ってやっていきます。大丈夫だよね?
ダメな方でも大丈夫なのようにコピペでいけるように努力します笑

まずはcdコマンドで任意のディレクトリに移動しましょう。

$ cd 任意のディレクトリパス

任意のディレクトリまで行ったら、下記のコードを1行ずつ丁寧にコピペしていってください。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

これで、Composerがインストールできました。できたはず。
「composer.json」ができてればOK!

Composerを使ってCowitterをインストール

で、ようやくのCowitterのインストールしていきます。
同じディレクトリ内で

$ composer require mpyw/cowitter:^1.0

ってコピペしてEnterを押してください。
したら、ういーーんって動いて、ある程度すると止まると思います。これでOK!
vendorディレクトリができてるはず。( ´艸`)

これでひとまず下準備ができました。これから実装していきます。

完成コード

とりあえず、完成コードを載せておきます。急いでる人はコピペで早速使ってやってください!あとで解説します。

search.php

<?php
  require __DIR__ . '/vendor/autoload.php';

  use mpyw\Co\Co;
  use mpyw\Co\CURLException;
  use mpyw\Cowitter\Client;
  use mpyw\Cowitter\HttpException;

  define('CONSUMER_KEY', 'カスタマーキーを記入して下さい。');
  define('CONSUMER_SECRET', 'カスタマーシークレットを記入して下さい。');
  define('ACCESS_TOKEN', 'アクセストークンを記入して下さい。');
  define('ACCESS_TOKEN_SECRET', 'アクセストークンシークレットを記入して下さい。');

  $client = new Client([CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET]);


  $prams = array(
    'q' => 'keyword', // 検索したいキーワード
    'count' => '10', // 取得数
    'result_type' => 'recent' // 取得するツイートの種類
  );

  // Search tweets
  $statuses = $client->get('search/tweets', $prams)->statuses;

  foreach ($statuses as $status) {
    $text = htmlspecialchars($status->text, ENT_QUOTES, 'UTF-8');
    $userName = htmlspecialchars($status->user->name, ENT_QUOTES, 'UTF-8');
    $userIcon = htmlspecialchars($status->user->profile_image_url, ENT_QUOTES, 'UTF-8');
    echo '<img src="'.$userIcon.'"/><br>';
    echo $userName.'<br>';
    echo $text.'<br>';
} ?>

どのようにツイートを取得しているか

まず、Cowitterのファイルを読み込んでいます。

require __DIR__ . '/vendor/autoload.php';

次にそのCowitterの中の要素を使うためにちょろちょろっと追加で書きます。

use mpyw\Co\Co;
use mpyw\Co\CURLException;
use mpyw\Cowitter\Client;
use mpyw\Cowitter\HttpException;

ここまでがお決まりの呪文みたいな感じです。

次にTwitter Application Managementで登録した4つのコードを使ってClinetクラスのインスタンスを作ります。

define('CONSUMER_KEY', 'カスタマーキーを記入して下さい。');
define('CONSUMER_SECRET', 'カスタマーシークレットを記入して下さい。');
define('ACCESS_TOKEN', 'アクセストークンを記入して下さい。');
define('ACCESS_TOKEN_SECRET', 'アクセストークンシークレットを記入して下さい。');

$client = new Client([CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET]);

あとは取得したいキーワードや件数などを入れれば配列で返してくれます。

$statuses = $client->get('search/tweets', $prams)->statuses;

$statusesには配列でツイート情報が入っているのでforeeachで展開してあげればうまいこと取得できて無事完了です。

まとめ

twitteroauth使うよりもCowitter使った方が簡単だし、コードも短いからいいね。OAuth認証を使えば検索だけじゃなくって投稿などいろいろできちゃうから極めれば結構楽しいかも。

Kouki Okuda (ocws)サービス作りたいフリーランス / フロントエンドエンジニア / 👦お仕事募集中👦⇒⇒⇒ WordPress / EC / React / Vue / Laravel / SEO / MEO / Webマガジン運営 http://hanzou-magazine.net
https://ocws.jp