[雑感] ありんくTech的2009年まとめ
こんにちは、松本です。
tech-logで2009年の総括をまとめるつもりで、ずるずるしていまい、大晦日にまとめてみました。
"34歳になりました&抱負"の記事 で書いていた事を全ては実践出来ず、若干に心残りではありますが、やれた事はおおよそ以下です。
TwitPepperのリリース
12月中順に TwitPepper(ツイットペッパー) をリリースしました。Twitterのデザインを簡単に変更したり、シェアリングできるサイトなのですが、とりあえず、まず1つサービスを定義する事ができた事が大変に良かったです。
本ブログの本格化
2009年3月より本ブログを本格的に書き始め、最低でも毎月2回程度は更新できました。お陰さまで色々な人に見て頂くことができました、ありがとうございます。
CPANやGoogleCodeでのプログラム公開
CPAN にモジュールが公開できたのも大変に嬉しかったです。
自分はmod_perl + Sldegeを使う機会が多いので、Sledgeのモジュール中心ですが、こちらもお役に立てると大変に嬉しいです。
GoogleCode では、jQueryのプラグインをUPしました。
Perlの高速・軽量なORマッパの学習
DBIx::Skinny や Data::Model 、 DBIx::MoCo など、Perlの軽量なORマッパがリリースされた事が大変インパクトが大きく感じました。(MoCoの最終更新は2008年ですが・・・)
実際に今までプロダクション環境では Class::DBI(CDBI) を使うことが大変多かったのですが、 DBIx::Class(DBIC)は、移行するにはモジュールの規模が大きすぎたり、ちょっともっさり過ぎなどオーバーヘッドを相当に感じたため、躊躇していました。
それもあり、省エネ・軽量のORMに注目しています。この中で特に DBIx::MoCo を学習していて、使い方としては一番CDBIに近いのかなと感じています。
saveメソッドだけが、CDBIのUPDATEと大きく違うのでここの取扱がまだ慣れていないです。
ORMごとのメモリ消費量
現在メインで使っているCDBIを含め、ほぼ同じ動作をする際のメモリ消費量を比べてみました。
メモリ消費量の計測は おいぬま日報さんのgtop.pl を使用させて頂きました。
| モジュール名 | メモリ消費量(x86_64/64bit) | メモリ消費量(i386/32bit) |
| Class::DBI(CDBI) | 120M | 24M |
| DBIx::MoCo | 30M | 8M |
| Data::Model | 29M | 6M |
| DBIx::Skinny | 15M | 2M |
※メモリ消費量は1の位で四捨五入しています。
※DBIx::Class(DBIC) は対象に入れていません。(そもそもメモリ食いなので)
64bit環境と、32bit環境でのメモリ消費量の違いも格段に目立ちますが、それでも DBIx::Skinny の省エネっぷりは目を引きます。
ORMはその習得自体のラーニングコストが結構にかかるため、ある程度目星をつけてからのトライ&エラーの方が望ましいとは思います。
が、DBIx::MoCo に慣れつつある昨今、それにしても DBIx::Skinny のメモリ消費の少なさに驚き、いきなり食いついてしまった次第であります。
参考リンク
- DBIx::Skinny - JPerl Advent Calendar 2009
- http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/
DBIx::Skinnyに関するHowToが大変詳しく掲載されています。
- http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/
- Data::Model Track - JPerl Advent Calendar 2009
- http://perl-users.jp/articles/advent-calendar/2009/data-model/
Data::Modelに関するHowToが大変詳しく掲載されています。
- http://perl-users.jp/articles/advent-calendar/2009/data-model/
jQuery1.3を早々に利用開始できた
jQuery1.3 のリリースで、セレクタの速度向上とliveイベントの新機能が大変便利になったと感じました。
liveイベントは本当に便利で、例えば既存のエレメントのノードに新しいエレメントを追加し、同じ挙動を適用させたい場合、
以下の様に書いていました。
//イベントハンドラの定義
var event_function = function(){ /* event function */ };
// 既存のクラスにイベントハンドラを適用
$('.hoge').click(event_function);
//エレメントの作成
var $element = $('<div class="hoge">NewElement</div>');
//イベントハンドラの追加
$element.click($event_function);
//エレメントの追加
$('#old_element').after($element);
これをjQuery1.3(実質は1.3.2)では、イベントハンドラとエレメント作成を完全分離できるので
以下の様に定義出来ます。
// イベントハンドラの定義
$('.hoge').live('click',function(){ /* event function */ });
//エレメントの作成→追加(イベントは自動で定義)
$('#old_element').after('<div class="hoge">NewElement</div>');
動的なエレメント追加にもイベントが追いかけてくれますので非常にシンプルに実装できる点が大変魅力です。
jQuery1.2.x環境から 1.3.2に移行しましたが、jQueryUIのライブラリ周りで若干ハマる程度で、jQuery本体は差し替えても
ほぼ綺麗に移行できるはずです。
蛇足ではありますが、jQuery1.4ではこのliveイベントでほぼ全てのアクションが定義できるようになるため、さらに便利になります。
※jQuery1.4については「jQuery1.4のα版がリリースされたようです」の記事で更に詳細を書いています、よろしければご覧下さい。
参考リンク
- jQuery色々まとめリンク(ありんく tech-wiki)
PHP5.3.x の利用開始
すでに PHP5.3.1 がリリースされているPHPですが、5.3のリリースで 無名関数、staticコール、ガベージコレクションが実装されたのが相当にインパクト大でした。
現在は全てのPHPを利用する環境のVerを5.3にすべく、調査している段階です。
弊社HPのiPhone版のリリース
弊社HP(http://www.alink.co.jp/)で、同一URLでiPhoneからのアクセスの時だけ
iPhone様のデザインでのサイトをリリースしました。
iPhone様のHTMLはCSSのfont-sizeの感覚が違ったり、UIの想定する動作が指(マウスではない)などでやや詰まりますが
全体としてそこまで難易度は高くなかったと思います。
ざっと考える限りは以上の様な具合です。
本当に歳を経るほど、時間の流れが速く感じまして
やろうと目標に掲げた事の半分も実践出来なかったような体感っぷりです。
来年は35歳になります。時の流れはどんどん高速になって行きますが
PGとして定年にならないよう、もっとソースコード自体をきちんと書き、保守性の高い、品質の良いプログラムを書けるように精進したいと思っています。
来年もどうぞ 株式会社ありんく をよろしくお願いいたします。
2009.12.31 松本 修士








