2009年04月04日

PHPで作ること、作らないほうが良いこと

ひさびさの更新です。

CakePHPに関しては、なんかこう、自分の中では“普通の”ツール扱いになってしまい、MySQLやphpMyAdminを使うのと同じ感覚になってきたため、それほどここに書き込む内容もなくなってきたような…。

CakePHP.orgができたばかりの頃は、できないことやバグも多いということで、わいわいがやがやとした雰囲気がありましたが、その頃の人たちの声が今ではWeb上には出なくなり、Ticketもそれほど面白くなくなってきた?ような気もします。

1.2の成熟期かも。1.3や2.0になった時にはまた活発になるかもしれません。とはいえ、日本では安藤さん主導でハンズオンセミナーが開かれ、まだまだ驚くようなプロジェクトや仕掛けが出てきそうな気配です。gwooも日本に期待しているのではないでしょうか。

gwoo says:
so yandod tells me that next week our cakephp friends in Japan plan to work for 24 hours straight. I wonder what they will come up with....


今回、“htmlをPDF化するオンラインツール”を作る必要が出てきました。具体的には、見積もりをWeb上で作るオープンソースのソフトがあって、それにはすでにそういうコードが入っていたんですが、日本語出力に対応していなかったんです。PHPで定番と言えば、

FPDF
や、
TCPDF
などがあり、どちらも日本語を出力する方法があります。

しかし、今回のプロジェクトでは、html2psを使っていました。
html2ps and html2pdf

FPDFや、TCPDFにはできない芸当をhtml2psはやってしまいます。
PHPだけで、かなりの数のサイトのWeb画面を生成してしまうのです。
まるで、"PHPでブラウザを作る"みたいなプロジェクトです。
HTMLを独自にパースして合成してゆくので。

最初、これをちょっといじれば日本語化対応できるかな、と思い、コードを読み始めましたが、これはちょっと手に負えないな、と思い、やめてしまいました。同時に、「ここまでやるか〜」というような気分になったのも確かです。

TCPDFはアルファチャンネルにも対応している、と書いてあるのですが、実際に使ってみると、計算に時間がかかりすぎました。

PHPは便利なので、やろうと思えば、「画像認識OCRをPHPコードで」とか、「Webページの画像を合成」とか、もっといけば「音声合成・認識をPHPで」とか、「もしかしたらできるんじゃないの」と思ってしまうかもしれません。実際に画像認識もがんばっている人が入るみたいだし…。

ただ、道具は使いようというか、「本当にそれはメリットがあるのか」ということを考えないと、ただの自己満足に終わる危険があります。
数日、html2psを日本語化できないかコードを追い続けてさじをなげた後、「これだったらC#で書いたほうが速いかも」と思い、Visual Studioを立ち上げました。

その結果、動作コードは半日もかからずに出来上がってしまいました。C#でPDFを出力するオープンソースのライブラリがこんなにたくさんあるとは。ライブラリに付属のサンプルをちょっといじるだけでできてしまいました。URLから画像を生成するツールと組み合わせたら、あっという間に完成です。日本語ももちろん対応しているし、何より速度が大違い。

Windows上で動作すれば今回は良いので、これでおしまい、ということにしました。それと、「それ、本当にPHPでするべき仕事?」というのは考えないといけないと思います。

[追記]
今頃気がつきましたが、

Takeshi Kannoさんの、
http://libharu.org/
と、これをPHP上で使えるようにした
PECLのext/haru extension
http://jp.php.net/manual/ja/book.haru.php
でも良かったかも。

Dynamically Generating PDF Files with PHP and Haru
http://devzone.zend.com/article/4044-Dynamically-Generating-PDF-Files-with-PHP-and-Haru-

http://php.net/manual/ja/function.imagegrabwindow.php
でIEのキャプチャも取れる〜。
posted by SDozono at 15:14| 東京 ☁| Comment(3) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
私にとっては、バージョンアップよりもコンポーネント化やプラグイン化を進
めて欲しい。もう web サイトは定型化してしまっているので。

私は目下 WPF と格闘中。学習コスト高い!
Posted by custar at 2009年04月04日 17:06
メッセージありがとうございます。WPFも面白そうですね!
Posted by 管理人 at 2009年04月04日 20:56
> WPF も面白そうですね!

WPF は今暫くは面白くないと思いますよ。.NET 4.0 辺りからぼちぼちビジネス
ユースに堪えられるものになるのではないでしょうか。


> CakePHP に関しては、なんかこう、自分の中では“普通の”ツール

そうですね、サイトやサービスに欠かせないものにはなっていますが、
改めて学習を必要とするような存在ではなくなっています。
使えて当然。

フレームワークが浸透してしまった感じです。

そうなると、サービスの構築に時間を掛けたくないので、
コンポーネントやプラグインとして自作したものをまとめています。
Posted by custar at 2009年04月04日 23:15
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
手(パー)To make a comment: Please type your name and comment. at the validation field box, type 'cakephp'. And there two glay buttons. "Preview"/"Submit". Thank you!
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。