では、Services_Twitterをインストールできたかどうか確認しましょう。リスト1のソースコードをファイルに保存し、Webブラウザを起動して表示してみましょう。
<?php
require_once("Services/Twitter.php");
$twitter = new Services_Twitter();
$twits = $twitter->statuses->public_timeline();
?>
<html>
<body>
<table>
<tr>
<th>日付</th>
<th>画像</th>
<th>ユーザー</th>
<th>つぶやき</th>
</tr>
<?php foreach ($twits as $twit): ?>
<tr>
<td><?=$twit->created_at?></td>
<td><img width="48" src="<?=$twit->user->profile_image_url?>" /></td>
<td><a href="<?=$twit->user->url?>"><?=$twit->user->name?></a></td>
<td><?=htmlspecialchars($twit->text)?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html
図2のように、画面にパブリックツィートの一覧が現れれば成功です。もしエラーが発生したときは、プログラムのタイプミスやServices_Twitterのインストール失敗、PHPのバージョン違いなどの可能性があります。確認してください。
TwitterはWeb APIを用意しており、開発者はこのAPIを通してTwitterサーバのデータベースにアクセスし、ツィートの検索や投稿などができるようになっています。Services_Twitterは、この公開Web APIを操作する面倒な作業を肩代わりしてくれます。開発者はPHPプログラムからServices_Twitterのクラスを呼び出すことになります。
Twitter APIが提供する機能については、Twitterの開発者向けWebページに詳しい記述があります。Web APIのドキュメントは英語版ですがこのWebページで参照できます。
PEARのServices_Twitterでは、このTwitter APIを操作するメソッドなどをPHPのクラスとしてまとめたものです。リスト1のソースコードを見直してみましょう。今回、PHPのプログラムと言えそうなのは、下の3行です。
require_once("Services/Twitter.php");
$twitter = new Services_Twitter();
$twits = $twitter->statuses->public_timeline();
まず、1行目で先ほどインストールしたServices_Twitterを取り込んでいます。そして、そのクラスのインスタンスを$twitterという変数に格納し、プロパティとメソッドを呼び出すことで、公開タイムラインを引き出しています。ファイルの後半部分にあるHTML文の中では、得られたタイムラインの一覧を$twits変数に格納し、foreach構文で画面に表示しています。
この例のように、Services_Twitterでは$twitterオブジェクトのプロパティやメソッドを利用してTwitterにアクセスします。このオブジェクトが持つプロパティの一部を表3にまとめました。
| プロパティ | 役割 |
|---|---|
| statuses | ステータス関連の情報を提供 |
| lists | リスト関連の情報を提供 |
| users | ユーザー情報を提供 |
| direct_messages | ダイレクトメッセージの情報を提供 |
| account | アカウント管理関連の機能を提供 |
| 表3 Services_Twitterオブジェクトが持つ主なプロパティ | |
それぞれのプロパティで、利用できるメソッドが異なります。先ほどはstatusesプロパティのpublic_timelineメソッドを通じて、公開タイムラインを検索しました。
このプロパティやタイムラインの一覧は、Web APIのドキュメントで確認できます。右側にあるメニューにAPIの一覧があり、そのAPIのURLが、Services_Twitterのプロパティとメソッド名に対応しているのです。
別の例として、特定のユーザーのフォロワー一覧を表示してみましょう。サンプルコードはリスト2の通りです。
<?php
require_once("Services/Twitter.php");
$screen_name = "asialnews";
$twitter = new Services_Twitter();
$friends = $twitter->statuses->followers(array(
"screen_name" => $screen_name,
));
?>
<html>
<body>
<p><?=htmlspecialchars($screen_name)?>さんをフォローしている人一覧</p>
<table>
<tr>
<th>画像</th>
<th>ユーザー</th>
<th>つぶやき</th>
</tr>
<?php foreach ($friends as $friend): ?>
<tr>
<td><img width="48" src="<?=$friend->profile_image_url?>" /></td>
<td><a href="<?=$friend->url?>"><?=htmlspecialchars($friend->screen_name)?></a></td>
<td><?=htmlspecialchars($friend->description)?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
リスト2を実行するときは、3行目の「$screen_name = "asialnews";」の「asialnews」の部分を任意のユーザー名に置き換えてください。実行すると図3のようになります。
このサンプルでは、statusesプロパティのfollowersメソッドを利用しています。followersメソッドは、引数としてユーザー名を渡すと、そのユーザーをフォローしているユーザーの名前が返ってきます。フォローしているユーザーは複数になるので、ここでは配列を作って複数のユーザーを格納しています。
Twitter APIは認証の仕組みも用意しており、セキュリティを意識して扱わなければならないデータを不用意に操作できないようになっています。ここまでのサンプルでは特に認証が必要ない範囲で説明してきました。しかし、例えば書き込みや、誰かをフォローしたりする場合は、Twitter APIが提供する認証機構を通じて操作する必要があります。
Services_TwitterではOAuthを使った認証に対応しています。OAuthを使ったWeb APIは仕組みが複雑で、取り扱いには高度な知識が必要になります。今回はOAuthについて詳しく説明はしませんが、ご要望を多くいただけるようでしたら、いずれ解説したいと思います。
今回は、PEARライブラリの導入方法とPEARの標準パッケージであるServices_Twitterの使い方を紹介しました。
今回解説したように、ライブラリを使うと面倒な処理を簡単な記述のコードで実現できます。PHPは多くの標準関数を備えていますが、ライブラリはその可能性を一段と広げてくれます。
開発者同士の会話に「車輪を再発明」という言い回しがよく出てきます。これは、ライブラリなどの有用なプログラムが存在するにもかかわらず、同様のものを最初から作成してしまうという意味です。車輪の再発明とならないよう、PEARなどのライブラリを活用しプログラマとしての幅を広げてください。
アシアル株式会社
田中正裕
アシアル株式会社代表取締役。根っからのプログラミング好きが高じて、ソフトウェア企業であるアシアル株式会社を設立。サーバサイド開発言語であるPHPと、iPhone/Androidなどのスマートフォンに特化し、開発者向けにソフトウェアやサービスを提供している。プロフェッショナルなエンジニアを育成するため、講座カリキュラムの開発や運営など教育事業も展開。主な著書に『超・極める!PHP(共著、翔泳社)』や『symfony×PHP(共著、技術評論社)』など。PHP技術者養成を支援する『PHP技術者認定機構』の顧問も務める。
Copyright © ITmedia, Inc. All Rights Reserved.