PerlとかPHPとかの最近のブログ記事

あ、あけましておめでとうございます!

今年も無理して頑張らないとなぁと思ったりで、そうなると今年の目標ですよね。
今年の目標は「本質」かなぁ、と。

もっと人に見てもらえるにはどういうデザインがいいのか?
もっと人を感動させるにはどういう演出がいいのか?
どういう体験なら人に触ってもらえるのか?喜んでもらえるのか?

ざっくりとですが、もっとそういうのに長けた人になりたいです。
いわゆるクリエイターってのは、そういう人ですよね。

なんか、弊社の今期(昨年の11月からね)の目標は「本質の追求」なんですけど、奇遇にも少しかぶり気味。でも、そっちのは、広告クリエイティブの本質・職務における本質・経営における本質、それらに対しての追求だそうです。そういう意味ではこの3つのうちの最初のものに該当するのかな。

そのためにはブクマアプリが必要なんじゃね?

目標とする、人に訴えかけるコンテンツの制作スキル。
その前の段階として「コンテンツの良さが判断できる目」を培う必要があると思うんですよね。
たくさん本を読まないと良い本はわからないし、多くの映画を見ないと映画の批評はできないですし。おいしいもの作れる人は、それだけおいしいものを食べているわけで。良いコンテンツを体験しなければ、良コンテンツは分からないし作れないのは当然ですよね。

んで、僕は本当に残念なクリエイターだったんですよね。
過去形で言ってますけど、要は今よりももっと残念だったってことです。
1年半ほど前まで「面倒くさい」を理由に、ウェブサイトを観るのを怠っていた時期があって。2年間くらい続いたのかな。進んで見ようとしない毎日。器が小さいから、観て悔しい気持ちになるのが嫌だったんでしょうね、小っちゃ~。ええ、ええ、プロ失格ですよね、それw
ところが、半年前に雑誌の連載の話をきっかけに、サイトを良く観るようになって。
雑誌で人にウェブサイトを紹介する以上、お金も貰ってますし適当な話はできないので、様々なウェブサイトを細かいところまでしっかりと観るようなったわけです。
遅いながらも delicious アカウント取得して(naggg's Bookmarks on Delicious)、観たサイトには感想を多めに綴ってメモメモメモ。メモを多くするのは、後で思い出す用、です。

おかげさまで、多少なりとも観察眼が向上したなぁと思う今日この頃。
実際に自分でも驚くくらいに仕事で活用できていて、制作の幅もディレクションの幅も増えてると思ったり(たぶん)。やっぱり、良いデザインや良い演出には理由があるんですよね。連載の話を下さったウェブデザ編集部の皆さんに心から感謝したいところです。
そして、その連載もようやく今月でおしまい。
だけどウェブサイトを観る習慣だけは続けていきたいなぁと。

しかしながら、いくつか問題もあって。

  • 【問題点1】ウェブサイトを見るのはやっぱり「面倒」
  • 【問題点2】delicious にメモぎっしりとブクマしたところで、文字だけでは思い出せない

ってのを正月にボーっと考えていて、
「じゃあ、ブクマするのが楽しくなればいいんじゃね?」
と思いついたところ。

良いのか悪いのか、正月は泥酔して転倒して腰を強打して動けなくなり、それをきっかけに俺俺ブクマアプリの開発がスタート。新潟の僕の実家は回線がないので、腰の痛みをこらえて最寄の漫画喫茶に出向き、こそこそっと開発。
そうして完成したのが冒頭のキャプチャ画像。アプリというよりもシステム、かもしれませんね。
簡単に言うと「delicious にブクマすると同時に、専用のキャプチャ画像も保存できて、いつでもサイトを思い出せる」というFirefoxハックです。おかげさまで、毎日 delicious 開くのが楽しいし、ウェブサイトを見るのも楽しい! Firefox4 が出たらスマートフォンでも閲覧できるし(ってスマートフォン持ってないけど)。いや~、作って良かったマジで!!
※ちなみに完全に個人用アプリで公開は不可能なんです。詳しくは後述します。

今日はPHPのコードでハマった。マルチバイト系。忘れないようにメモ。

mb_strlen とか mb_substr とか mb_strpos とか、マルチバイトを扱う組み込み関数は基本的に、最後の引数でエンコーディングを指定可能(しかもオプション)。オプションなんでこれを省略していたら痛い目に遭あった・・・。

エンコーディングを指定しない場合、マルチバイトで扱うエンコーディングはPHPの内部エンコーディングとなる。今回のサーバーは内部エンコーディングが EUC-JP でも UTF8 でもなかったようで、おかげで凄い動作をしてやがった。
例えば、
$text = "あaいiうuえeおo";
print(mb_strpos("a"));
として、文字 "a" が何文字目を出力してみると、こちらが期待するのは「2」なのに、なんと「3」に。明らかに「あ」を2とカウントするという有様。「あ」を1文字としてではなく2バイトと認識しているよう。ぜんぜんマルチバイト扱ってねーし!!

ようやく内部エンコーディングに辿りついて、サーバーの設定が原因まで気づくのに時間がかかった・・・。要は、
$text = "あaいiうuえeおo";
print(mb_strpos("a"), 0, "EUC-JP");
と最後の引数でエンコーディングを指定すればOK。相変わらず何っつー言語なんだPHPはっYO!!

この他にも設定ファイルさわったり .htaccess とかで内部エンコーディング自体をいじる方法があるんだろうけど、サーバーに左右されないどこにでも置けるようなプログラムを考えると、そこはナシかなと。

ちなみに今日開発していたのは、マルチバイト文字のワードラップ関数とか、サイト内検索の該当文字列抜粋ロジックあたりでした。
うーん、忘れないようにメモしているつもりだけど、3日もしたら忘れてるんだろうなぁ。

WebはじめてからずっとActionScriptとPerlという微妙な武器を持ってやってきてけど、このうちのサーバーサイド担当のPerlさんをPHPへと移行しようということになってきてる。
ありがとう、そしてさようなら、Perl。

Perlのどこがはがゆいかって言うと、
 ・モジュールのインストール状況に左右されるレンサバがある
 ・cgi-binフォルダに制約されるレンサバがある
 ・記述が奥深すぎて自分で自作クラスとか作れず、全体的に非効率になる
あたり。

レンサバの制約を受けるってのがどうも致命的で、これで仕事の時間が予想以上に取られることが多くあったりしてて。ウチの会社ではクライアントごとにサーバーの仕様が異なることが少なくないんで、本当に困ったことも何度か。
PerlはCPANでモジュールがものすごく豊富ってのがすごく魅力的なんだけど、ここに依存しちゃうとレンサバの仕様で痛い目にあうということもしばしば。諸刃の剣っすわ。

んで、ようやくPHPで開発に。Rubyなんかは無視ですよこの野郎。
時間作って色々さわったりしてるけど、PHPのどこがいいかって言うと、先の逆で、
 ・フォルダやモジュールのインストール状況に依存するケースが少ない
 ・自作クラス作るのがECMAちっくにできるから、(ボクにとっては)より簡単
かな。

ちなみにPHPやってて気持ち悪いのも多々ある。
ECMAとPerlしか知らない半端プログラマーですけど、PHPの記述方はなんかうさんくさいというか。変数作ったときのスコープとかキモいし。こういうあやふやなところがあるからこそ、デザイナーに支持される言語なんだろうけど。
っつーか、ECMAでサーバーサイドがプログラミングできれば最高なのに!!

とか考えていたら、今日はFlashPlayer9の正式版の配布開始だそうで。
FlexとかやってたらサーバーサイドでECMAちっくできんのか?っつーかMCMLとかいう制約は抜け出せないのか?んーわからん。
マジでFlash業界からおいてきぼり喰らってきているなぁ・・・
いいかげんBitmapクラスをいじり倒す日々がすごせるようになりてー

今年になってブログを始めてみたものの、ぜんぜんエントリーしてない・・・
技術まわりの小ネタとかちょこちょこあるんで、発信していきたいとは思ってるだけど、たぶんをそれを塞き止めているのはこのブログのデザイン。MTのデフォルトのまんま。ダサすぎ→俺。
これが職業柄らしくもっとカッチョよければ、もっと積極的にエントリーできてコメントも投稿できるんではないか、ブログモチベーションあがるんじゃないかと、このGWの期間中にデザインでもしてみようかなぁとスッゲー本気で考えてる。

で、そこで問題となるのがMTのテンプレートの編集。
ずいぶん前にドリのMT用拡張をインストールしてはいたんだけれど、ドリで拡張子".tmpl"がHTMLと認識できないってのがあって。
わざわざ.htmlとかでテンプレート作るのって何か負けた気に・・・。

ところがGoogle先生にお尋ねしたらあるじゃないっすか!
Dreamweaver MX で認識できるファイルの拡張子を変更または追加する

MMDocumentTypes.xml ファイル

MMDocumentTypes.xml ファイルには、Dreamweaver MX で認識可能な各ドキュメントタイプに関連付けされた拡張子のリスト、及び、ドキュメントタイプの定義が保存されています。Extensions.txt ファイルに拡張子を追加するだけでは、Dreamweaver では拡張子を認識し、Dreamweaver でそのタイプのファイルを開くようにすることは出来ません。MMDocumentTypes.xml ファイルに拡張子を追加することによって、その新しく追加された拡張子をどのように扱うか、その拡張子がどのドキュメントタイプに従属するのかを Dreamweaver は認識します。

うぉー!!、とあれこれ試してみたら、
.tmpl → HTML形式、.inc → PHP形式 で開くようになった!
これでドリでMT構築が楽になる(はず)!GWに絶対デザイン当て込めるっす!
ついでにPHPでクラスとか作っちゃおうかな超個人的フレームワーク用だけど!!

ちなみに、上記URLはDreamweaverMXの解説なんで注意がいるかも。Dreamweaver8では多少ファイルの構成が変わってるそうな。
・Extention.txt
  記事と変わらず "C:\Documents and Settings\username\Application Data\Macromedia\Dreamweaver 8\Configuration "
・MMDocumentTypes.xml
 これはMXとは異なり、Programフォルダにありました。ちょっと探すのに時間かかったなぁ。
 "C:\Program Files\Macromedia\Dreamweaver 8\Configuration\DocumentTypes"

いずれも必ずバックアップを取ることをお忘れなく~