理系院卒のネットワークなブログ

意外なところに「つながり」ってありますよね

phpとtwitteroauthでタイムラインをwebブラウザに表示するプログラムを作りました

 ふとTwitterで遊んでみたくなったのでAPIを叩く練習をしています。とりあえずタイムラインを表示するところまで作ったのでメモっておきます。

f:id:ytera22:20151117101323p:plain

概要

 PCブラウザ上で自分のタイムラインを表示するプログラムです。根幹部分はphpで書いています。TwitterOAuthという素晴らしいライブラリが公開されているので、実際のところAPIはほとんど触っていません。開発の流れは以下の通りです。詳細は下で説明していきます。

1.XAMPPのインストール(実行環境)

2.Twitter Developersに登録

3.TwitterOAuthのダウンロード

4.htmlファイルの作成

 作ったプログラムはこんな感じです。こちらも下で詳しく説明していきます。

twitteroathとphpを使って自分のタイムラインを表示するプログラム

1.XAMPPのインストール(実行環境)

 まずはphpをテストする環境を用意します。今回はXAMPPというフリーソフトを使ってローカルPCのブラウザで動かせるようにしました。phpを触るのも初めてだったのです。こちらのページを参考にしました。

XAMPPをインストールする方法【超初心者向け】 | TechAcademyマガジン

 特に難しい操作はないでしょう。書かれている通りにインストールしました。XAMPPには機能がたくさんあるようですが、phpを動かすだけなら何の設定も必要なかったです。テストするときはApacheMySQLをStartしておけば良いようです。

f:id:ytera22:20151116174529p:plain

2.Twitter Developersに登録

 TwitterAPIを触るためにはTwitterアカウントとは別に開発用のアカウントも必要になります。こちらのページを参考にしました。

Twitter APIの使い方まとめ

 開発用のアカウント取得ページは英語しかないのでちょっとハードルを感じますが、やることは少ないので大丈夫だと思います。登録する時にアプリケーションの名前やらURLやらを要求されます。ここは適当でもいいとのことだったので、非常に適当に入力しておきました。

 ただ、Twitterアカウントの方で電話番号を登録する必要があります。電話番号の情報を預けたくないなあと思ったのですが、回避方法はなさそうだったので登録しました。その際、国際電話番号の先頭には0がいらない(090は90から始める)ことを知らなくてちょっと手こずりました。

f:id:ytera22:20151116174821p:plain

3.TwitterOAuthのダウンロード

 TwitterAPIを操作する便利なライブラリをダウンロードします。Abrahamさんが作ってくださったようです。GitHubで公開されています。僕がダウンロードしたのは2015年の11月です。情報が古くなっていたらごめんなさい。

abraham/twitteroauth · GitHub

 ページ右側の「Download ZIP」をクリックしてzipファイルを落とします。クリックするだけなのでGitHubを使ったことがなくても大丈夫。

 展開する場所には気をつけましょう。XAMPPを使ってphpプログラムを実行する場合は、ファイル名「xampp」の中の「htdocs」というファイルに入れておくと簡単にアクセスできます。htdocsの中に開発用のファイルを作っておくと良いと思います。例えば、htdocsの中にtestというファイルを作ってtest.phpというファイルを実行する場合、XAMPPのApacheMySQLを起動して、webブラウザに「localhost/test/test.php」と打ち込めば動きます。

 zipファイルを解凍したら、追加の操作は必要ありません。最初は古い情報を頼っていたので数時間ぐらい頭を抱えていました。というのも、「composerが必要」だと書いてあるページに当たったので、書かれている通りに進めていたのですが上手くいかなかったのです。結局、Abrahamさんがすでに対応してくれていた問題だったようです。この世界は進歩が早いので古い情報を掴むとダメですね。

4.htmlファイルの作成

4,5行目

 ここが一番悩んだところです。C言語のincludeのように外部ファイルを読み込みます。requier_onceでファイルを読んで、useで名前空間を定義するらしいです(php初心者でごめんなさい)。作成するファイルをどの階層に置けばいいのか、どのファイルを読めばいいのかが分からなくてエラーと戦っていました。こちらのページの通りに配置すると上手くいきました。

TwitterOAuth - PHPからTwitterツイート(2015年2月版) - Qiita

 下手にTwitterOAuthのファイルを弄ってしまうと内部の依存関係が崩れるのでやめておいた方がいいと思います。リンク先にあるようにファイルを置くと、ライブラリをそのまま利用できます。

ダウンロードしたファイルを解凍すると、「twitteroauth-master」というフォルダ名なので、「twitteroauth」にリネーム
─ tweettest.php ←これからつくるファイル
─ [twitteroauth] フォルダ
 └ autoload.php など
という階層になるようにする。

7~9行目

 文字コード(特にシングルクォートとダブルクォート)を調整するための「h」という関数を定義します。これは34~40行目で使います。

11行目

 時刻を日本時間にします。

13~16行目

 Twitterの開発用のアカウントで取得した情報を代入します。シングルクォートで囲んで、最後にセミコロンを忘れずに付けましょう。

18行目

 アカウント情報を使ってライブラリで定義されたクラスを作ります。ライブラリが上手く読み込めていないとここでエラーが出ると思います。

19行目

 「toa」の中の「statuses/home_timeline」という情報をgetして「statuses」という変数で管理します。「count」はタイムラインに表示する呟きの個数です。

21行目

 phpとhtmlの文字コードの関係を設定するらしいですが、現状なくても動くので必要ないかもしれません。

25~30行目

 htmlでページを作っていきます。この辺は説明不要ですね。

31行目

 ここからループです。19行目で作った「count」個のstatusesの一つ一つについて操作を行っていきます。phpとhtmlはこんな風に親和するのが素敵ですね。

34~40行目

 呟きの情報を羅列していきます。主に以下を参考にしました。

PHP + TwistOAuthでタイムラインを読み込む最短パターン - Qiita

 「<?=」と書くと「<?php echo」の省略形になります。7~9行目で定義した「h」という関数で文字列を調整します。ユーザ名や呟き本文にはあらゆる文字が含まれる可能性があります。その中で被るとマズいものを調整しているらしいです。

 

 というわけで、ユーザ名や呟きがただのテキストで表示されるタイムラインが完成しました。 ここからさらに発展させていきます。

 以前はRubyでwebページの情報を切り取ってくるプログラムを作りました。こんな感じで遊びたいと思います。