複数アカウントのツイートを表示させてTwitterのタイムラインっぽい画面をつくる。ユーザー定義関数(function)の活用について

目次
#グラドル自画撮り部の部室さんのホーム画面を見ていると、複数アカウントのツイートが表示されています。
一般ユーザーとしては、いろいろなTwitterユーザーをフォローし、自分のタイムライン上で複数のアカウントのツイートを表示させることは簡単です。
PHPでユーザー定義関数の活用
ではTwitterAPIの場合、どうすればよいでしょうか?実はこれも簡単です。PHPでユーザー定義関数を作れば良いだけのことです。
GET statuses/user_timelineでは、引数としてひとつのscreen_nameで、ひとつのアカウントのツイートしか取れませんが、この動作を複数回まとめて行えるようにします。
ユーザー定義関数とは
「functionとは」と言うと大上段に構えてしまうかもしれませんが、ドットインストールの例文(新しいタブで開く)を見れば分かりやすいでしょう。
<?php function sayHi($name) { echo "hi! $name"; } sayHi("Bob"); sayHi("Tom");
あとは、PHPのドキュメンテーション(新しいタブで開く)を読んでみるのも良いかもしれません。
ユーザータイムラインのユーザー定義関数
Tiwtterのユーザータイムラインを関数化するときも、基本と全く同じ考え方をします。ざっくりと言えば、こんな感じになります。
<?php function userTimeline($screenname) { TwitterOAuthでツイートの呼び出し } userTimeline("hoge"); userTimeline("fuga");
ポイントは、関数の引数としてスクリーンネームを用いることです。
userTimeline関数を使う
それではごく簡単な例文を書いてみましょう。
これら3つのアカウントについて、1件ずつツイートを取得してみましょう。
<?php function userTimeline($screenname) { require_once("twitteroauth/twitteroauth.php"); $consumerKey = "MYCONSUMERKEY"; $consumerSecret = "MYCONSUMERSECRET"; $accessToken = "MYACCESSTOKEN"; $accessTokenSecret = "MYACCESSTOKENSECRET"; $twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret); $request = $twObj->OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET', array( 'count'=>'1', 'screen_name' => $screenname, )); $results = json_decode($request); if(isset($results) && empty($results->errors)){ foreach($results as $tweet){ echo date('Y-m-d H:i:s', strtotime($tweet->created_at)); echo "<br/>"; echo $tweet->user->screen_name; echo "<br/>"; echo $tweet->text; echo "<br/>"; } } } userTimeline("retrip_news"); userTimeline("ReutersJpSports"); userTimeline("TimeOutTokyoJP"); ?>
APIを呼び出したときのブラウザ上の表示画面を見ると、3つのアカウントが同時に取得できていることが分かります。
〔参考サイト〕