

昨年あたりいくつかのWebサービスが発表されてから国内でも使われる事例が増えてきました。伊藤 将雄さんのSimple APIを先駆けに、いくつも提供されています。Webページスナップショット比較サイト、キャプチャを極める完全ガイド
実際にだしてみるとこんな感じです↓(By HeartRails)
Webページを画像やPDFとして変換する機能への需要は多くあります。外部ページへのリンクにマウスを合わせると飛び先のサムネイルが表示されるなどは、良い使い方だとおもいます。検索エンジンの結果にサムネイルを使っている場合もあります。
動的にリンク先を生成するWebアプリケーションの場合、任意のWebページのスナップショットをプログラムでリアルタイムに生成する必要があります。外部のWebサービスを使うのでは少し不安になります。プログラマであれば、自前プログラムからWebページサムネイルを生成できるようにしたくなります。
Webページサムネイルのプログラム開発アプローチは3通りあります。
方法1
正攻法は、HTMLをPersingして、レンダリングする方法です。ゼロからHTMLレンダリングエンジンを開発するのは、ワクワクと胸が躍ります。しかし、サムネイルを作成するためにだけHTMLレンダリングエンジンを自製してしまうのは、モッタイナイですよね。ですので、GPLで公開されているFireFoxのGecko HTMLレンダリングエンジンを再利用する方法があります。ゼロからスタートしても3ヶ月くらいあれば開発できるでしょう。
方法2
もっと手を抜く方法は、IEコンポーネントを再利用することです。.NetであればWebBrowserコントロール(実体はIEのCOMオブジェクト)を使う方法です。Microsoft社製ですのでソースコードは開示されていませんが、IEのほとんどの機能はCOMインターフェイスを通じてプログラムから制御可能です。パフォーマンスを要求しなければ1週間程度で開発できます。
方法3
さらに手を抜く方法としては、コマンドラインで動くWebページキャプチャツールを使う方法です。例えば、CrenaHtml2Jpgやurl2jpgなどです。こちらで実装した方がいますが、毎分10ページ程度だそうです。これなら半日で作れますね。url2jpgは方法2で作られているので、実際は方法2の手抜きバージョンですね。
ちなみに、HeartRailsでは方法1(Embedding Mozilla)を採用しているようです。
私は、方法2を試してみました。まだ、安定していないのでアプリを公開しませんが、単発で動作させるのは問題ないですが、マルチスレッドで動作させると落ちます。
IEのCOM周りにRe-entrantになっていない部分があるようで、手がでません。IE6、IE7と試してみましたがエラーがでるので、根本的にSTAモデルに対応してない資源管理している可能性があります。マルチプロセスでの処理はまったく問題ないので、どこかスレッドもでるがおかしそうです。
メール送信に利用するSMTPサーバがPOPBeforeSMTPで認証をしているケースが少なくありません。
この場合、POPサーバに対して認証を実施する必要がありますが、Microsoft .NetのSystem.Net.MailはSMTPClientのみで、POPClientがありません。
TCPClientを使って直接POPサーバにメッセージを送信してもよいですが、POPClientの認証ライブラリがほしいところです。
TKMP.dllを使えば解決できるのですが、GPLでしたので再配布する目的では利用できません。
アジルテックでは、自前のPOPClientを利用しています。非商用利用向けにβ公開していますので、ご利用ください。

