第32回PHP勉強会に参加しました。
最近色々な勉強会・ワークショップに参加しています。
php関連もいくつか参加していますが、php勉強会はたぶん初参加でした。
初参加の人も結構いるのかなと思いましたが、他の会でも見かけたことのある人もちらほらいました。
特に発表をする人は、割とおなじみ感のある顔ぶれです。
今回は、自分用の覚書にもなるので簡単にメモを書いてみました。
events.php.gr.jpイベント管理システムについて
話者:haltさん
haltさんが作ったイベント管理システム。
このPHP勉強会の募集でも使われています。「http://events.php.gr.jp」にて稼動中。
Ethna+SQLite(多分SQLite2)
日本PHPユーザ会のwebサイトの更新が全体的に停滞していたので、何とかしようという動きがあったなど、背景が垣間見えて面白かったです。
イベント管理システムは、いつの間にかhaltさんの役割になっていたとかw
確かに、リニューアル前は全然更新されていないのに「php」でググると1位に出てきて、煩わしかったのを覚えています。
今ではイベント管理システムだけじゃなく「php.gr.jp」全体が新しくリニューアルされています。
SQLiteについて
5年くらい前からSQLiteを使っているらしく、このイベント管理システムもSQLiteだそうです。
現在phpではSQLite2とSQLite3があり、なんと互換性がない。
SQLite2のほうはもうあまり活発な開発は無さそうだけど、SQLite3はphp5のPDOからでしか使えないため、php4を大事にしたいので悩みどころみたいです。
- SQLite2
- php4,php5
- SQLite3
- PDO(なのでphp5.1.6以上)
- SQLiteのデータはファイルに格納される為、cpコマンドでバックアップ可能だし、他のサーバへ移すのもそのファイルを持っていくだけ。
- だからwebアプリをDBごと配布することもできる
- DBファイルはもちろんだが、なぜかDBファイルを置いてあるディレクトリにも書き込み権限が必要
※エラー時のダンプファイルなどを書き込むためらしい。
- データ型があってないようなものになっている
- integer型に文字列を格納できるし、取り出せる
- 「foo型」のような定義のないデータ型でCREATE TABLEできるし、動作する
プログラムについて
実際のプログラムについてはあっさり流す感じの説明でしたが、Ethnaを知っていればインストールは別段困ることは無さそうな印象でした。
add-projectをした上でプログラムを配置するのか、プログラムが既にプロジェクトの体をなしているのかはちょっと分かりませんでした。
SQLiteの部分だけは、未経験だったので調べないとですが、ちょっと説明が早くて追いきれなかったです。
このあたりは後でブログにでもと言っていました。
ソースコードはcoderepos.orgに格納されていて、忘れ物がない限りライブラリ関係も入っているらしいので、配置と設定だけやれば動かすことができそうです。
TypeKey認証を利用してますが、OpenID対応しなければいけない。せっかくcoderepos.orgにあるので誰かやってください。との事w
Ethnaでモバイルサイト開発
話者:maru_ccさん
Ethnaを使いモバイルサイトを開発するという観点から、注意点や工夫していることなど、がっつりEthnaを使っている方の話なので参考になる事が多かったです。
が、結構早足だったので、メモを取るよりは聴く方中心になりました。
「Ethnaは自由度が高いので、案件に合わせたルールが必要」の様な事を言っていて、結局はどんなアプローチであれ、必要なルールを作れば使いやすく効率よくなるんでしょうね。
そのルールを作るのが、結構大変だったりはしますがw
他の人がEthnaをどんな感じで使っているかというのは、参考になるし単純に面白かったです。
maru_ccさんも、他の人が作ったEthnaアプリのソースコードを見てみたいと言っていたので、参考にできるコードが増えるといいな。
極める!vim
話者:haltさん
本日2個目の発表のhaltさんです。
エディタは人生と言い、いつまでもカスタマイズして使っていけるエディタを使うべきということで、vimのお話です。
発表の最後に、vimの設定をcoderepos.orgに!という声が出ましたが、さすがに「人生を全部見せる訳には・・・」的な事を言っていました。
vimはサーバの設定をする時くらいしか使って無い程度の知識でしたが、vimもちょっといいかもと思い始めました。
特に興味があったのはomni completionというコード補完機能です。
PDTだと、自作クラスのインスタンスからはメンバやメソッドを補完してくれなかったりするので、vimのomni completionならもしかしたら?
仮に出来なくてもvimならカスタマイズ次第という期待もあります。
ただ、vimを使っているとブラウザのテキストエリアなどでも、vimの編集モードをしようとして大変なことになる、vim病が発症してしまうそうですw
対策としては、FirefoxではVimperatorというアドオンで、Firefox全体をvimぽく出来てしまうらしいです。
自分はOperaもSafariも使うのですが、さすがにこれらには無さそう・・・
ちなみにこの発表と同じテーマで書いた記事が、まるごとPHP!〈Vol.1〉の続編に掲載されるらしいです。発売日は今のところ不明です。もしかしたら本の名前を聞き間違えたかも。
ARGF作った(LT)
話者:btoさん
コマンドラインプログラムを作る際に便利なRubyの機能をphpに移植したもののようです。
phpは元々web用スクリプトなので、コマンドラインプログラムは非常に作りにくいですが、ARGFを使うと引数の扱いが抽象化されて、簡単になるみたい。
発表を聞いてたときはちょっと理解しきれなかったところもありましたが、btoさんのブログに解説があるので、そこを見ればよさそうです。
ちょっと面白かったのが、ライブラリを直接動かしたら、サンプルコードを出力する仕組みです。
Rubyなどでは割と例も多いみたいですが、公開元に直ぐにアクセスできない状態でもサンプルコードを見れるのは助かる場面も多そうです。
直接ライブラリを動かしたかの判別には、PHPの場合「debug_backtrace()」を使うようです。
include(require)されていない場合、debug_backtrace()は空を返すので、以下のようにすることでサンプルコードを記述できます。
if (debug_backtrace()) {
return;
}
/*
* sample code
*/
while ($line = $ARGF->each()) {
echo $ARGF->lineno.": $line";
}Ethnaで問題が起こったときにする5段階の解決法 (LT)
話者:sotarokさん
毎回のように何かしら発表をしていてすごいなぁと思います。
内容はちょっとネタっぽいでしたが、もっとコミュニティに参加した方がいい。というのは確かにですね。
自分も大して使っても居ないくせにEthnaのIRCに半常駐していますが、ログを読むだけでも参考になったりします。
sotarokさんが問題点として挙げていた「バグなのか自分の間違いなのか、自信が無いのでコミュニティに投げられない」というのは、自分も結構感じています。
PHP Frameworkの実装比較イベント「PHP Framework Fight!」というのを開催するそうです。
各フレームワークで同じものを実装して、速度などを比較するとか。
5月2日まで、参加を受け付けています。
極めてない! git (LT)
話者:kunitさん
GitというLinuxカーネル開発に使われているバージョン管理システムの解説でした。
バージョン管理システムというとCVSやSubversionが有名ですが、最近は特にRuby方面でGitが熱いみたいです。
Ruby on Railsも後述のGitベースのリポジトリサービスに移行したとか。
CVSの前身
「RCS→CVS→Subversion」
CVSが有名ですが、その前身にRCSというのがあるそうです。
これはファイルをロックして管理していたもので、同じファイルを同時に別の人が編集するようなことは出来なかった。
CVSがそれを改善し、Subversionでディレクトリもバージョン管理対象になり、コミット単位でリビジョン管理されることで、開発しているシステム全体で、あのコミットの時の状態にアクセスできるようになりました。
tracというキラーアプリも登場しかなり普及していますが、tracはデザイナーには使いにくいらしい。
Git
- RCSの流れとは別で、Linuxカーネル開発用にLinus Torvaldsが作った
- 今のメンテナは、なんと日本人で浜野純さん
- 分散リポジトリ
- ブランチは切り放題、というか切らないと使えないくらい
- その代わりマージに力を入れていて、おかしくなったリビジョンを見つけるコマンドもある(bisect)
- サクッとマージできないことも、もちろんある
分散リポジトリという仕組みのため、大本のリポジトリは運用で決めていくようです。
マージにはPullとPushがあり、Pullというのは大本のリポジトリの管理者が派生リポジトリから必要ならマージする。
Pushは派生リポジトリの管理者に予め権限を与えておき、その権限があれば大本のリポジトリにマージする。といった感じのようです。
運用によっては大本のリポジトリとか派生リポジトリという概念でなく、全部が同じレベルで扱われるというのもありえるとか。
先月発売のSoftware Design 2008年04月号に、Git特集があったそうです。
発表と重複しているところも多いそうですが、詳しく知りたい場合は読んでみるといいかもしれません。
GitHubというリポジトリサービスが登場し、Ruby関連のプロジェクトが数多く移行しているとか。
というのもGitHub自体がRuby on Railsで実装され、Ruby on RailsもGitHubにリポジトリを移行したらしいです。
懇親会
仕事も溜まっていたので懇親会には参加出来ませんでした。残念。
まとめてみたはいいけれど、書き終わってみればまとまって無さすぎて長すぎですね。
後になるにつれて息切れして手抜きになってるのも・・・w
時間も結構かかってるし、素早くまとめて書ける様になりたいものです。
リンク