ありがとう。また会おう。

ゆるいかんじで。かたのちからぬいて。やってます。

PHP Apocalypse に参加した

気がついたら前回更新から半年経ってる・・・
もっとまめに書く癖をつけないとなぁ。。。

さて。昨日は「PHP Apocalypse」に参加しました。
Apocalypse・・・ヨハネの黙示録ですね。
あとは「世の終末」とか「大災害」とかなんかおどろおどろしいですが。
英辞郎調べ)

まぁPHPも普及期は・・・2000年代前半くらいですかね?
それから概ね10年弱が経過して
その間、RubyRuby on Railsがブレイクしてトレンドを作ったり
PythonGoogle App Engineを背景に根強く人気を広げたりして
ここ数年PHPは、新規の書籍発行数をみても、ちょっと一時期の勢いはないのかな・・・
とか思っていたりもしたのですが
でも、こういうイベントに100人近く集まるということは
それ自体がまだまだ健在である証拠ではないでしょうか。

どなたかの発表にもありましたが
PHPはどこまでいっても「現実主義」的な言語なのかなと思います。
確かに、言語構造としてはRubyPythonの方が綺麗なのかもしれない。
でも、PHPで動く環境を用意することの容易さ、手軽さが
Word Pressのような大きなプロダクトを生んだわけですし。
RedminePHP移植プロジェクト「CandyCane」もまた
Redmineの導入の難しさをPHPであれば越えられるという恒例ではないかなと。

余談ですが、今私が働いている会社では
不幸にも?役割分担がきっちりしていまして
サーバのroot権限が必要な作業はインフラ担当部署にしかなく
プログラマは自由にソフトウェアをインストールできないのです。
そういう環境では特に、Wordpress、CandyCane、PukiWikiのような
「置くだけで動く」ソフトというのはとても大事なのです。

あ。
なんかイベントの趣旨とか当日の状況とかをちゃんと説明してないですね(笑)
まぁ簡単に言えばPHP界隈の方々の忘年イベントです(爆)
夕方からはピザ&アルコールで徐々に砕けた感じに。
それにしてもほんとに豪華な面々で
この場でテロでも発生しよう物なら、日本のPHP界が大打撃なくらいにw

発表内容は・・・まぁきっと誰かがまとめてくれてますw
PHP Apocalypse」でググれということで(汗
PHPのテクニカルな話よりは
もうすこし概念的な話というか、どう捉えるか、という話が多かったですね。
@さん、@さんの話とか
ほんとに胸熱で、よかったです。

あと「ワールドカフェ」というの、初体験だったんですが、面白かったです。
普通の勉強会とかだと、発言しにくかったり
コミュニケーション取りづらかったり感じてしまうときもあるんですが
こういう呼び水的なものがあると、自然と会話が出てくるのでいいですね。

最後に、会場を提供していただいたGREE
主催者の@さん、本当にありがとうございました!

過去のLT資料をSlideShareへ移行しました。

今まで勉強会で発表したスライド資料は、handsOutにアップしていたのですが
こちらのサービスが残念ながら終了してしまうとのことで
急遽、SlideShareへ移行しました。

M_norii presentations

それにしても、あまりできのいい資料じゃないなぁ、我ながら。
もっと、「今フォローすべき●●界のスーパーエンジニア」とかに取り上げられるよう、がんばらねば。

そういえば、上のスライドの1つにある、SoftBankSSL仕様変更、まもなくですね。
(もう再延長とか…ないよね?)
みなさん準備は大丈夫でしょうか。
主に影響ありそうなのは、SSL下で、x-jphone系のヘッダが取れなくなるのとShift_JISエスケープシーケンス方式の絵文字記述が使えなくなること、ですかね。

前者は対応漏れてるといろいろ大変だと思うので気をつけましょう。

データベースの日付時刻型に思うこと

MySQLPostgreSQLもだけど、日付・時刻両方を格納するデータ型は、格納サイズとして8バイトが必要*1
で、扱える範囲は、どちらも少なくとも西暦0年〜9999年までいけるので、まぁよっぽど古代の歴史に関することや、宇宙規模の事でない限りは、どんなApplicationでも問題無い。

ただ、ちょっと思うのは…
そもそも一般的なアプリケーションで、そこまでの日付範囲が必要なのはかなり稀なのでは?

例えば、あるデータの「登録日時」を格納するカラムがあったとして。
今から作るアプリケーションであれば、「今以前」の時刻って必要ないですよね、少なくともこのカラムに関しては。
で、アプリケーションの寿命次第ではあるけど、今から初めて、4バイトで表現できる経過秒数(およそ68年)を越えるアプリってそうそうないんじゃないかと。

なので、「エポック日時をデータ型指定時に指定できる日付時刻型」みたいのがあれば、4バイトの格納サイズで、実用的な日付時刻データを扱えるんじゃないかなぁ、とかちょっと思った。

4バイトくらいけちるなよ、と思うかもしれないけど、
ソーシャルゲームなんかで、データ件数1億件とかいくテーブルがあると、この1カラムあたり4バイトの差でも結構でかい*2

まぁやろうと思えば、4バイト整数型で格納して自前で計算すればいいんだけど。
ただそうすると、生データを見た時に、ぱっと見がわかりにくいのと、DBの日付時刻関数が使えない、というデメリットもあるわけで。

まぁ…そのデメリットと、データ領域圧縮のメリットの天秤なのかな…どっちとるかは。

*1:MySQLには、4バイトのtimetamp型があるけど、これは副作用もあって扱いにくいのでここでは除外

*2:ディスク領域的にはそれほどでもないけど、メモリにデータを載せきることまで考えると

facebookはじめました

いろいろのっぴきならない事情で始めることにしました。

https://www.facebook.com/m.norii

始めたばかりで全然慣れてないです。
facebookどんだけアクティブにやるかも…今のところ不明。
twittermixiで充分足りてるしなぁ…

まあでも知り合いの方は申請いただければ承認しますのでお気軽にどうぞ♪

6月4日 第4回Symfony2勉強会

第4回 Symfony2 勉強会[東京]開催のご案内 (6/4 土) | 日本Symfonyユーザー会

参加しました。自分は第2部のみ参加。
しかも後で第1部が補欠から繰り上がっていたことを知るという…
うーん、ATNDはそういうとこ不便だなぁ…

で、詳細はきっと皆さんがすでに素晴らしいレポをあげてると思うのでw
Twitterで#Symfony2studyを見ればいいと思うよ)

個人的な雑感を駆け足で。

Behat(@

  • BDDしたい!と思った
  • でもその前にUnitTestすらままならない現状をどうにかせねば
  • 達人出版会の「はじめる!Cucumber」あとで買おう。できれば紙で欲しいが…

Formコンポーネント(@

  • だいぶ使いやすそう。
  • 昔業務で1.0使ってたときは、Formクラス使おうと思ったけど、いろいろ余計なことしてくれたので、断念したんだっけ
  • 他のフレームワークでもたぶん使えそう。PHP5.2系でもいけるのかな?
  • Validatorもいいんじゃないだろうか。
  • Form/ValidatorともZendのより筋がいい作りになってる気がする
  • でも、今ソーシャルゲームやってるけど、ソーシャルゲームはあんま複雑なFormないんだよなw

Silexマイクロフレームワーク(@

  • PHP5.3環境ならいいマイクロフレームワークだと思う
  • 自分の周りはまだ5.2だし、周りの人間も5.3習熟度足りないので、しばらくはLimonadeの方がいいのかもなぁ…
  • ドキュメントが素晴らしい。見習いたい。

よりよいソフトウェアを作るために(@

  • とてもいい発表。資料Upされたら復習したい
  • ドメインモデルが主、フレームワークは従、ってことですね
    • ドメインモデルを意識して設計できてる人って現場にはあまりいない気がする
  • とりあえず、DDD本読んだ方がいい。
  • PofEAA、アジャイルソフトウェア開発の奥義も読んどけ。

LT

  • はじめてのSymfony2(@
    • router:debug便利そう
  • Symfony2でMongoDB(@
  • PHPUnitのMockObject(@
    • PHPUnitのMockObjectは知らなかったが、Mockはほんと便利
      • 使いどころはやはり外部との接続周り
      • 外部データソース使うところはとりあえずDIにしとけば、後々すごく楽。特にテストが。
  • モテるPHP女子力を磨くための4つの心得「symfony1.4を使えない女をアピールせよ」(@)
    • 全てはこれのための前振りだったのか!?というくらい秀逸のまとめLT!www

全体

  • 会場、WiMAX、電波入らなかった…
  • 自分は普段Zend使いで、symfonyは1.0で知識が止まってるんだけど、Symfonyに限らず、一般的なWebアプリケーション作成という観点で役に立つ知識が多かった
  • もっとPHP5.3普及してほしい。名前空間みんな使おうよ。*1
    • Zend_Application_Resource_ResourceAbstractとかもう萎えるw
  • 最近は発表スライドの2枚目にイケメン写真を入れるのが流行りらしいので、なんかそれ用の写真撮っておこう
    • 夏のつま恋がいいかな…

最後に、会場提供していただいたジンガジャパン様、
勉強会運営に携わったスタッフの皆様、ありがとうございました!

*1:もう「\」キモイとかはいいよね?機能として便利なんだから。

コントローラを多層化する

http://d.hatena.ne.jp/noopable/20090205/1233792325
のコメント欄を見て知った。
Zend Frameworkは、コントローラの多層化できるんだ。
もっと早く知っていれば…

具体的な方法。
コントローラは

controllers/Foo/Bar/BazController.php

というパスで、クラス名は「Foo_Bar_BazController」とする。

ビューも同じようにファイルパスは

views/scripts/foo/bar/baz/index.phtml

で、アクセスするURLは

http://example.com/foo_bar_baz/index

となる。

ちなみに、モジュール構造を採用している場合は
クラス名は「<モジュール名>_Foo_Bar_BazController」
ビューのファイルパスは

views/scripts/<モジュール名>/foo/bar/baz/index.phtml

で、URLは

http://example.com/<モジュール名>/foo_bar_baz/index

となる。

ちなみに、コントローラ名が複数語で構成されている場合
例えば「Foo_Bar_MyHogeFugaController」とすると
アクセスURLは

http://example.com/<モジュール名>/foo_bar_my-hoge-fuga/index

となる。
多層化のパスの区切りがアンダーバー。
単語の区切りがハイフン。
…という、ちょっとわかりにくいルール…
まぁこのあたりは、Zend Frameworkのデフォルトルーティング使わず
ちゃんとマッピングルールを作った方がいいでしょうね。

社会人復帰します。

昨日、久しぶりにエントリー書いたんですが、実はこれのため。

ほんとは当日に書きたかったんですが、時節柄、嘘っぽくなるので(笑)
前日にご報告。

昨年暮れから長らくニート生活しておりましたが
4月から社会人復帰します。

勤務先は・・・別に言ってもいいんだろうけど
何となく伏せときます。ここで書くのはどうも気恥ずかしいので。
気になる方は、メールなりツイッターDMいただければ。

就職活動自体は、3月上旬にほぼ終結していて
最終的に結論出したのが・・・3月9日だったんですよね。
こういう言い方はあまりよくないのかもしれないですが・・・
滑り込んだというか・・・3月11日前という意味で。
現実問題、知り合いの新卒の若いやつで、震災を理由に内定取り消されたのを2人ほど知っているもので・・・

こういうご時世で就職先決まったのはほんとによかった。。。

気を引き締めて、4月から、新しい環境で精一杯がんばりたいと思います。

このブログもできるだけ書いて情報アウトプットして行きたいなと思っておりますので
引き続きごひいきいただければ幸いです。
それでは、また。