2 posts tagged “perl”
Perl(http://www.perl.com)ってたいがいシブトイと思うのです。
僕がWeb屋なお仕事に絡み始めてはや10年。最初に触ったどころか、最初にブラインドタッチを覚えながら学んだ言語がPerlなわけですが。未だ第一線で活躍し続けるこの言語。いい加減で、小回りが利いて、ワンライナーばりばりで、大規模にはどっかなーなーんて思いつつ意外に使われてたりして。PHP、Java、Ruby( on Rails)、etc・・・色んな言語がそれなりに席巻して、もちろんそれらも生き残り続けるのでしょうが、Perlも相当シブトイ。僕個人の経験言語をさらに書くと、C++、bash、sed、awk、tck/tk、pythonがありますが(もちJavaScript、HTML、XMLなんぞは当たり前に使いますが、これらはどちらかというとなんというかWebをやる以上、構成要素みたいなものなので。生物におけるたんぱく質のような感じ?のでとりあえず経験言語からはずす)、ずっと10年間使い続けているのはやっぱりPerl。アプリケーション作成に使わなくても、サーバ管理だの、ちょこちょこっとしたテキストの加工だので使わないシーズンというのがない。これは、もちろんPerlが僕の母国語であるということもあると思いますが、やはり愛着が強く、Perlで書いていると手になじむ。書いていると手になじむって変な日本語ですが(笑
Javaも4年~5年前は相当やりましたが、結局なじむということはなかった。もちろん書くことはできる。付き合うことはできる。でも、いつも一緒にいたい相手かというとJavaは僕にはそっけないというか、堅物すぎるというか。他の言語もそれぞれ性格があって(プログラマの皆さんはみんなわかるでしょう)、なんというかあうあわないってあるんですね。不思議に。
まぁ、ともかく、日本人がどうしたって日本語が身体にフィットして、日本食を求めて、日本文化に恋焦がれるように、僕はPerlで育った以上、どうしてもまずPerlありきなんでしょう。外国語を学ぶとき、重要なのは母国語の力だとよく言われます。それは母国語は身体で覚えるけれども、外国語は頭で、理性で、つまり母国語を使って覚えるものであり、また身体に母国語の感覚がしっかり組み込まれてないと、外国語の概念を母国語の概念との差異を利用して理解するということができないからだと思います。
というわけで、Perl使いとして今後覚悟を決めてもっと習熟することにします。フレームワークも使ってみよう。ところで、PerlのフレームワークのシェアってCatalystとSledge、どっちが強いんだろ。というか盛り上がっているんだろうか。とりあえず、Sledgeはもう開発止まってる(?)っぽいから、Catalystか。まぁ、使い勝手良くて枯れてればその方がよろしって発想もあるけど。
今、WebSigエコ&ピースでお手伝いしているホームレス総合相談ネットワークでホームレス、特にネットカフェなどで寝泊りをされている方達をターゲットにしたご相談フォームを設置しました。
しかし、このフォーム、携帯対応していなくて、かつターゲットユーザ(ホームレスの方達ですね)は携帯利用が多いということで、携帯用にCHTMLやXHTML-Conpactで作ったフォームを作ることにしました。そこで、必要なのが携帯のユーザーエージェント判定。つまりは、「携帯でアクセスしてきてんの?してないの?」という判定です。ご相談フォームがアクセスされた際に、アクセス元が携帯かそうじゃないか(たぶんPCと判断)を調べて、携帯だったら携帯用フォームに飛ばして利用いただくわけです。
つーことで、昨夜ユーザーエージェント判定のライブラリをちま×2探してみました。フォームはPerlで実装されているので、Perlのライブラリを探してみたところ、見つけたのが二つのライブラリ。
HTTP::MobileAgent
http://search.cpan.org/~kurihara/HTTP-MobileAgent-0.26/lib/HTTP/MobileAgent.pm
[Perl] phone.pl 携帯電話キャリア自動判別ライブラリ
http://www.kawa.net/works/perl/phone/pnews.html
どちらも最近までメンテされているし、3G携帯にも対応しているみたいだから、使いやすさでphone.plかなぁと思ったんですが、phone.plはwillcomに対応してないっ!んじゃ、HTTP::MobileAgentはどうかというと、これもはっきりしない。
Willcomの端末について質問です。
http://q.hatena.ne.jp/1168318511
Perl の判定モジュールを参考にする限り UserAgent に DDIPocket もしくは WILLCOM の文字が含まれるようです。
ここでのPerlの判定モジュールとはつまりHTTP::MobileAgentなんですが、HTTP::MobileAgentのHTTP::MobileAgent::AirHPhoneがソースを見ると、
$ua =~ m!^Mozilla/3\.0\((WILLCOM|DDIPOCKET);(.*)\)! or $self->no_match;
という判定をしている。ので、HTTP::MobileAgent::AirHPhoneでwillcomeも携帯判定できそうだが、
willcome=AirHということでよろしいのか?たぶん、いいんでしょうね。
http://journal.mycom.co.jp/news/2005/02/02/009.html
自分が単に常識知らずなだけなんだけど、どうしてこう携帯端末の界隈ってのはややこしいことに
なっているのか。j×もV、Sと気まぐれに変更していくしさー。泣くぞ?
でもHTTP::MobileAgent::AirHPhoneでいけるならいいんじゃねと思うと、willcomeの場合、
http://www.willcom-inc.com/ja/lineup/spec/voice/index.html
で確認すると、Opera/NetFront/IE、それにケータイ向け閲覧用ブラウザCompact NetFrontが
搭載されている場合があり、機種によって搭載ブラウザが違う。
Compact NetFrontの場合は携帯と判定するのが妥当なんだろうし。。。
とすると、willcomはUserAgentでWILLCOMかDDIPOCKETが入っているかだけ判定しても、
機種によってPC判定すべきだったり、携帯判定すべきだったりするってことになるんだろうか?・・・orz
機種をいちいち判定してなんてやってたら保守がえらく大変になってしまうよ。
まぁ、あれですな。次善の策として、willcomeの判定に完璧を期すよりも、HTTP::MobileAgent::AirHPhoneで
true判定が出たら、もう一括で全部携帯扱いしちゃって携帯用フォームに飛ばし、
携帯用フォームはCHTMLやXHTML-ConpactでPCブラウザでも表示、利用可能なフォームにしておくのが
よさげですな。このフォームは見た目よりも使えることが重要なわけだし。
はぁー、ややこしい。