

PHP5.3フレームワークとして華々しくリリースされたSymfony2を筆頭にPHPのあらゆるフレームワークを比較した比較表を作り上げるプロジェクトが進行中です。
比較表はこちら
まだ、抜けている箇所がありましたら、是非埋めてください。こうして一覧としてみると、いろいろと気づかされるものがありますね。



PHP5.3フレームワークとして華々しくリリースされたSymfony2を筆頭にPHPのあらゆるフレームワークを比較した比較表を作り上げるプロジェクトが進行中です。
比較表はこちら
まだ、抜けている箇所がありましたら、是非埋めてください。こうして一覧としてみると、いろいろと気づかされるものがありますね。
なんか知らないうちにPHPを全然書いたことがないという噂が広まっていて心外すぎるので弁明しておく。長くなるかもしれない。
必要なgemをインストールしておきましょう。
$ gem install twitter logger $ gem server
これがgemのドキュメントなので複雑なことがやりたくなったら見てください。
コンシューマーキーなどを事前に入手しておく。
XXXXXXXで埋められている部分を自分の上記で入手したKEYに変更してください。
require "rubygems"
require "twitter"
require 'logger'
LOG = Logger.new('tweet.log')
CONSUMER_KEY = 'XXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXX'
ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXX'
Twitter.configure do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.oauth_token = ACCESS_TOKEN
config.oauth_token_secret = ACCESS_SECRET
end
tweet = ['つぶやきA',
'つぶやきB',
'つぶやきC']
client = Twitter::Client.new
begin
client.update(tweet[rand(tweet.length)])
rescue => ex
LOG.warn ex
sleep 5
retry
end
これをcronなどで定期的に回せば、ランダムでつぶやいてくれます。
その他の参考情報
重要なことだから最初に伝えておくと、PHP5.3からは日付や時間の計算にUNIXTIMEなんて使わないでね。
2038年問題とかパッとみて、「これ何日間なの?」とか計算するのは、さよならしましょう。
手元にPHP5.3環境がある人は、インタラクティブモードを利用して実践しながら読むことをおすすめします。
さぁ、コンソールをひらいて、下記のコマンドを実行しましょう。
$ php -a
PHP5.3から導入された新機能として、日付に関するオブジェクトが増えました。
それが、DateTimeオブジェクトです。
$now = new DateTime();
echo $now->format("Y-m-d H:i:s") . PHP_EOL;
2010-12-28 23:00:20+09:00
昨日、明日、来週、来月はこんな感じ。
$yesterday = new DateTime("-1 day");
echo $yesterday->format($format) . PHP_EOL;
2010-12-27 23:00:20+09:00
$tomorrow = new DateTime("1 day");
echo $tomorrow->format($format) . PHP_EOL;
2010-12-29 23:00:20+09:00
$nextWeek = new DateTime("1 week");
echo $nextWeek->format($format) . PHP_EOL;
2011-01-04 23:00:20+09:00
$nextMonth = new DateTime("1 month");
echo $nextMonth->format($format);
2011-01-28 23:00:20+09:00
もちろん、UNIXTIMEからもDateTimeオブジェクトをつくれるけど注意が必要。
$now = new DateTime('@' . time());
echo $now->format($format) . PHP_EOL;
2010-12-28 14:00:20+00:00
なんと、タイムゾーンがUTCになってしまいます。
$now = new DateTime('@' . time(), new DateTimeZone('Asia/Tokyo'));
echo $now->format($format) . PHP_EOL;
2010-12-28 14:00:20+00:00
引数をつけてもダメです。
インスタンスがつくられてから、あらためてタイムゾーンを設定してください。
$now = new DateTime('@' . time());
$now->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $now->format($format) . PHP_EOL;
2010-12-28 23:00:20+09:00
DateTimeオブジェクトが日付をあらわすオブジェクトだとすると、
日付の間隔をあらわすのがDateIntervalオブジェクトです。
今日と1週間後の差分を取得してみます。
$now = new DateTime();
$nextWeek = new DateTime("1 week");
$interval = $now->diff($nextWeek);
echo $interval->format('%R%d days') . PHP_EOL;
+7 days
DateIntervalオブジェクト単体で生成するには
$interval = DateInterval::createFromDateString("+7 month");
今日、1週間後、2週間後を日付の加算処理で求めます。
$now = new DateTime();
$nextWeek = new DateTime("1 week");
$cloneDateTime = clone $nextWeek;
$twoWeeks = $cloneDateTime->add($interval);
echo $now->format($format) . PHP_EOL;
2010-12-28 23:00:20+09:00
echo $nextWeek->format($format) . PHP_EOL;
2011-01-04 23:00:20+09:00
echo $twoWeeks->format($format) . PHP_EOL;
2011-01-11 23:00:20+09:00
今日、1週間前を日付の減算処理で求めます。
$now = new DateTime(); $cloneDateTime = clone $now; $weekAgo = $cloneDateTime->sub($interval); echo $now->format($format) . PHP_EOL; 2010-12-28 23:00:20+09:00 echo $weekAgo->format($format) . PHP_EOL; 2010-12-21 23:00:20+09:00
PHPから他の処理系へ渡す時にどうしてもUNIXTIMEを使わなければならないとき、
$now = new DateTime();
echo $now->format('U') . PHP_EOL;
1292940020
PHP5.3からはUNIXTIMEを使うことなく日付時間の処理が可能である。
Propel1.5とDoctrine2もDateTimeインスタンスを返してくるようになる。
DateTimeとDateIntervalを身につけないと、2011年のPHPについていけなくなってしまう。
PHPマニュアルに詳しい内容は書いてある。
PHP5.3がリリースされた当初には、一部不足している内容があったが今は追加されている。
DateTimeオブジェクトのformatは % 必要ないのに、DateInterval は % が必要なんですかね?腹立ちますね!
とか、いろいろアレな点もありますが…。
自分の部下には「パーフェクトPHP」を読んでおいてもらいたい理由5つなど、PHP界隈で絶賛の評価がされているパーフェクトPHPも、もちろんこの内をバッチリ押さえている。
![]() |
小川 雄大¥ 3,780
![]() |
10/2〜3で開催されるPHP Matsuri 2010に参加します。
10/2の夜に開催される事例発表(JIREI NIGHT)でトークします。
ウノウでおこなったテストファースト開発によるsymfony1.4の事例を話す予定です。
まだチケットは売られていますので、みなさんの参加をお待ちしております。
ITリテラシーの高い人のなかでは、すげー流行っているマイクロブログ。
その代表がTwitterなんだろうけど、他にはどんなのあるか調べてみた。
TumblrはTwitterと基本は同じなんだけど、TumblrはTumblrなのである。
なんというか、Twitterより画像とか動画とか視覚に訴えるモノが多い。
検索結果がサムネイル風に表示されたり、UIが洗練されていると言えば良いのだろうか。
TwitterがOS界のWindowsなら、TumblrはOS界のMacだろう。
Twitterへの同時投稿もでき、RTが同時に表示されるので、
最近はTumblrからTwitterを利用している。
モバイルファクトリーが運営しているマイクロブログサービス。
公式で日本の携帯に対応している。
チャンネル機能があるが、ユーザーからの反応がゆるいというか薄いというか少ない。
ToDo機能など、いるのかいらないのかわからない機能あり。
あしあと機能などもあり。純粋に日本人が多い。SecondLifeからも投稿できるとか。
機能ありありだけど、それだけ使いこなしているユーザーは少なそう。

ちゅいったー
140文字ではなく、14文字までの投稿しかできない
マイクロブログサービスならぬナノブログサービスらしい。
現在はα版らしく、サービスはいつなくなるかわからない。
フィンランドのヘルシンキに拠点を置く会社をGoogleが買収したマイクロブログらしい。
利用されているシステムはGoogle codeで公開されている。ちなみに言語はPythonだ。
AppEngineで動いているってのも特徴と言えば特徴。
StatusNetを利用したマイクロブログサービス。
他になんか書こうと思ったけど、よくわからん。
個人的には一番気に入ったマイクロブログサービス。
とっても可愛いリスがいいですね。
メニューなども日本語に対応している。
Twitter同時投稿もでき、URLショートカットサービスも選べる。
ソースコードも公開されている。ちなみに言語はPHPだ。

Afficheur
これだけ紹介して、わけわからなくなっているマイクロブログサービスだが、
その全部に一括投稿できるツールがAfficheurである。
mixiとGREEとモバゲーのSNS(Facebook忘れるな)と同じように、
マイクロブログが乱立しすぎって感じ。何が何だか。。。
おもったよりオープンソース化されているシステムが多いという印象です。
海外物はSMSから投稿できたり、電話してボイスを登録できたり。
なんかもー、なんでもあり。
トラフィックランクを見るとTwitterのひとり勝ち。
えっと、この記事つくるのにメッチャアカウントつくったので、
ぜひ、各サービスでフォローして下さい。(ブログ右上に羅列してます)
あとで使いそうなのでメモ
基本的にPerlはXML::Atom::Clientを使う。
PHPはHTTP_Requestを使う。
CakePHPはBehavior(ビヘイビア)でwebserviceを使うと楽々?
で、いいのかな?
PHPからWEB2.0なAPIサービスを使う際に便利なモジュールまとめ … 大手系APIをPHPで利用する場合のモジュール。便利そう。
どう書く? … 具体的なソースコードを探すにおもしろそう
Sledge … PerlのフレームワークっていったらCatalystだけど、livedoorがPerlのフレームワークを作っていたんだ。これはおいしいの? ThinkITで中の人がSledgeによるWebアプリケーションフレームワーク入門というの書いてました。あとで試食してみる。