理想未来ってなんやねん

娘可愛い。お父さん頑張る。

第32回PHP勉強会

トライコーン株式会社で行われたPHP勉強会に参加中ですしました。
リアルタイムに書いていきます。
抜けている所があればコメントください。

  • events.php.gr.jpイベント管理システムについて
  • Ethnaでモバイルサイト開発
  • 極める!vim
  • ARGF作ってみた
  • Ethnaで問題にぶちあたったときの5段階の解決法
  • PHP勉強会極めてない!Git

events.php.gr.jpイベント管理システムについて

haltさんの発表

PHPは5で辞める。

理由はblogにて

歴史的な話
Ethna

国産のフレームワークGREEのふじもと神がつくった
Ruby on Railsより前に出来た
PHP4,PHP5の両方で使える。
国産フレームワーク戦争を勝ち抜いた日本最強のフレームワーク
東のEthna、西のMaple
ほとんど中身が変わらないまま3年以上たっているので
CakePHPSymfonyに比べると古めかしい(だがそれがいい
古めかしい感じが初心者には優しいのじゃないか。

SQLite

変態データベース
ファイル型のDBなのでデーモンいらずで簡単
バックアップは

cp data.db. data.db.bak

あらかじめCREATE TABLEしたdbごと
メモリ上にDBをつくったりもできる
dbファイルに書き込み権限が必要で
dbファイルが置かれたディレクトリにも書き込み権限が必要
型が適当
integerに文字列が突っ込める
当然エラーは出ない
SQLite2(php4,php5)とSQLite3(pdo:php5)がある
SQLite3はpdoインターフェースしか無い
2と3には互換性はないので注意

TypeKey

six apartのオープンな認証サービス
TypeKeyに対応しているサービスならどのサイトでも同じidでログインできる
ユーザーは複数のサイトに個人情報を登録しなくて便利
サービス提供者はパスワードを管理しなくてよいので便利(漏れた日も多少は安心)
TypeKeyが使われているサービスが全然ない
はてなTypeKeyOpenID対応しやがったのでOpenIDでいいじゃんムード

ソースコードのダウンロード
svn co http://svn.coderepos.org/share/websites/events.php.gr.jp/trunk event

Smartyとかも同梱してあるので、後は設定してシンボリックリンクを貼るだけ

イベントシステムの機能

イベントシステムに隠された108の機能の一部を紹介
RSS機能
events.php.gr.jpのfeedと、各勉強会のfeedがある

Ethnaでモバイルサイト開発

id:maru_ccさんの発表
ページめくるのが早すぎてメモしきれなかった。

自己紹介

Tomoyuki MARUTA
http://maru.cc/

話す事

Ethnaについて

以前は
Ethnaを選んだ理由

php4対応が必要だった
PEAR_DB、Smartyなど土壌があった
フレームワーク構造が独自のに似ていた
prepare, perform, preforword・・・

いまでは

ほぼ全てEthna
例外

コードを書く場所

Ethnaで書く場所
ActionForm
ActionClass
View
AppManager

ケルトンに無いメソッド

ActionClass
View

ActionClass
  • authenticate
  • prepare
    • 入力値チェック
  • perform
    • データ更新
View

preforward
forward
_setDefault

AppManager
Filterの活用
Controller
  • APPID_Controller
Controllerで
  • エントリポイントの区別
  • 他の環境のActionが絶対に動かない仕組み
ケルトンの活用
  • ケルトンの作成
    • 作成の労力を少なくする
    • デフォルトのメソッドを自動作成する
    • 使用からAction、Viewなどの作成
      • XLとかを使ってる
環境差異の吸収

maru.example.server.local

      • テストは直

http://server.local/~maru/example/test/unittest.php

前半のまとめ
  • Ethnaは自由度が高い
  • 素のEthnaでは機能的にちょっと足りない
    • 簡単に拡張できる
  • ケルトンをちゃんと活用すると楽になる
  • 他の人が書いたEthnaのくせとかみてみたい
モバイル開発について
  • モバイル開発で気にする事
対応端末をしぼる
  • キャリアでしぼる
    • 3キャリア
    • 古いのは除く
    • 一部海外メーカー製の端末を除く
  • コンテンツ内容でしぼる
  • デザイン的要因でしぼる
キャリア間の違い
  • HTML、CSSの記述
  • 絵文字
  • mailto
  • 画像
  • コンテンツ
HTML, CSS
  • 3キャリアで許容できる書き方をする
  • CSS,属性の両方を書く
絵文字
  • テンプレート上での記述
  • 変換するフィルタ
    • キャリアごとにテンプレートをコンパイルする
      • Smartyのprefilter+compile_id
    • Smartyを使用しない場合
      • ob_startをつかう
絵文字以外で出ない文字
mailtoのbody等
Filterをどう動かすか
  • 動的ページ
    • そのままFilterが動くので問題ない
  • 静的ページ
どう動かすか 静的ページ
  • auto_prepernd_fileを書く
  • ViewPageClass
    • forwardを使う
画像
  • 画像形式
  • 画像サイズ
画像変換
  • 画像を端末に合わせて変換する
    • 画像変換サービスを利用する
    • 自前で変換する
    • 画像変換ルールを画像URLのパラメータで渡す
  • auto_prepend_fileを書く
後半のまとめ
  • テンプレートは共通に
    • テンプレートからキャリア区別する情報を排除する
    • デザイナーにやってもらえる事はやってもらう(絵文字とか)
  • モバイル対応はライブラリの整備が大事
  • auto_prepend_file、Filterなどを使いキャリア個別の処理を意識しないでいい土台を整える。

極める!vim

haltさんの発表

余談

夕方4時から6時までのスーパーフレックス

vimを使う前

文字コード自動判定が出来るという理由だけでPeggyPadというエディタを使っていた
エディタなんてどれを使っても同じだろ
id:secondlife
「えー!マジ(ry」
エディタについて考えさせられる

エディタとは

大工にとっての鉋
武士にとっての刀
おまえはエディタを軽視してないか?
一生かけて自分にあわせて無限に成長させられるエディタこそ真のエディタではないか?
vimemacsじゃなくて、それができるかできないか
eclipseはカスタマイズできるが作業コストがでかい。

vim

ALGIN:left
オープンOSを選ばない

vimと禿の違い

編集対象をとらえる次元が違う
text object
表示しているものを意味をもったものとして認識している
キーワードを認識していてd %でブロック単位で削除できたりできる。
エディタを使う行為もプログラミングに含まれる
vimを使ってプログラムを生成している

vimの拡張
  • plugin
    • php lint
      • 事前 構文チェック
補完辞書の作成と設定
すべてをvim
  • zshvimモードに
    • マップすると色々使える。vimモードもマップしないとダメ
  • muttでメールする
  • vimperator
さいごに
  • この内容はまるごと PHP2に収録される予定なので出たら買ってください。

名言:「.vimrcは俺の人生」

ARGF作ってみた

ごく一般的なデスクトップ
コマンドライン大好き

GUI

直感的に分かりやすい
学習コストが低い

CUI

直感的に分かりづらい
学習コストが高い
軽い
組み合わせができる

PHPコマンドラインのプログラムを書く

書きづらい
理由:

おまけ

ライブラリにサンプルコードを書こうキャンペーン
phshって面白いかも

Ethnaで問題にぶちあたったときの5段階の解決法

id:sotarokさんの発表

Ethnaで問題・・・?
  • ここでいうもんだいとは
    • 使ってるけど、わからない場合
レベル1
レベル2
  • ブログで愚痴る。フォーラムで聞く
    • コミッターさんは、Ethna関連記事を追ってたりもする
    • フォーラムで聞く
    • MLで聞く
レベル3
  • IRCで聞く
    • wide
    • %Ethna
    • #Ethna:*.jp
    • これはかなり効果的
    • その場で議論できる
レベル4
  • 自分で書く
    • パッチを投げてしまう
    • 小さな事でもOK
    • コミッターさん達が大喜び
    • 自分のコードがコミットされる
    • Ethnaはゆるゆる
    • もしかしたらそのコードを元に更に改良してくれるかも
    • でもこれって
レベル5
  • 例えばEthnaを避ける
    • 自分の要望を満たせないなら
  • でもこれって
PHP Framework Fight!

PHP勉強会極めてない!Git

kunitさんの発表

subversionはcommit単位でのバージョン管理
Tracというキラーアプリも登場
もうSubversionで良いんじゃね?

GitはLinusLinuxカーネル開発用に作った
今のメンテナーは浜野純さん(日本人)
分散、pull/pushが特徴。バンバン派生していける。

subversionでもSVKを使うと作業用ブランチを作れる

ブランチ切り放題。
マージする方法に力を入れている
おかしくなったリビジョンを見つける為のコマンドがある(bisect)

なぜ今Git
GitHub
Ruby on Railsで実装されたGitリポジトリホスティングサービス
もちろんRuby on Railsも移行

そして達人プログラマー
Progmatic Version Control Using Git
今日話した内容はSoftware Design 4月号から

まとめ

Ethnaについて何となく理解。
自分含めてvim使っている人は多かったですね。
haltさんのvimの話は聞いていて気持ちよかったです。
プログラマにとってのエディタとは、大工にとっての鉋、武士にとっての刀
名言なのでどこかで使わせて貰おうと思います。