Proximodo Lite



この記事は
hideの平凡な開発の日常を淡々と描くものです。
過度な期待はしないでください。
あと、本ソフトウェアはローカルのデータを改変するだけであり、サーバ上のデータを操作するものではないということを念頭に置いて見やがってください。


13/08/16
動作の安定化と64bit化検討

動作の安定を謳いつつも、たまに不可解な異常終了が発生していたので、他のソフトウェアの改良の合間にコツコツ直していました。
そこで思ったことは、やっぱりProxomitronは偉大であるということです。

私が行う動作の安定検証確認は、OSのTCPコネクション数をデフォルトより増加させた状態で、数十のWEBサイト(ローカル&リモート含む)をFirefoxで一斉に開くことを行っています。
そうすると30以上の接続が常に行われる状態になるため、その要求を受け付けるローカルプロキシに多大な負荷がかかることになります。さらに同様の内容を何度か繰り返します。
その状態で全てのWEBサイトが正常に表示されること、フィルタが全て機能していること、Proxomitron以下の処理時間で完了すること、そして異常終了しないことをチェックします。

その中で最も重視している点は「異常終了しないこと」です。
一時的に使用するだけのちょっとしたツールならば構わないのですが、WEBブラウザのプロキシはPCを起動している限り常に動作するものなので、一々異常終了するなんて使用する気が失せてしまいます。
(普通に使っているだけでは起きないことも、高負荷を掛けると作りの甘い部分が結構浮き彫りにされてしまうのです)

稀にエラーメッセージが出てきては再起動をする度に、Proxomitronへ戻ろうかと何度思ったことか。Proxomitronは安定度については折り紙付きであり、少なくとも私は異常終了した場面を見たことがありません。どこかに穴があるだろうと上記で述べた検証を何度か行ってみましたが、それでも落ちないのですから大したものです。Proxomitronは機能面だけでなく、安定面でも最高峰の偉大な存在であるとつくづく思い知らされていました

そんな目標に近づこうと改良を重ねてきましたが、最近Proximodo Liteが異常終了した事がないことに気が付きました。異常終了したエラーメッセージをしばらく見ていないため、それが発生しないことが当然になっていたんですねこれが。
どうせ忘れた頃にまたエラーが発生するのではないかと疑心暗鬼になり、更なる負荷をかけ続けたところ、今度はFirefox自体が負荷に耐えられなくなり異常終了するという自体に!

今ではどんなに検証してもエラーが全く発生しなくなってしまいました。
安定性を求めた結果、どうやらProxomitronと同等の安定性を獲得したようです。
当面使ってみて何の異常も起きない場合は、次のステップである64bit化に挑んでみましょうかね。

13/04/29
マルチ分野開発のすゝめ

既に開発完了と思いきや、まだ改良することが結構あることに気づかされますね。高負荷を長時間かけないと発生しない問題というのは厄介ですが、まさかSTDライブラリで嵌るとは。同じ使い方でも使われる状況によって違うということか。気づかないと一生気づかないと思われる問題が発見できたことは大変意義があり勉強になりました。
Proxomitronをリファレンスとして常に比較しながらProximodo Liteを開発してきましたが、今回の修正でそろそろ本当にgoodbyしても良い頃合いかも知れない。既に機能・性能面では越えているし、後は安定面の実績作りのみだし。Proxomitronの存在を忘れるくらいになった頃に削除するとしますかね。

さてと、Proximodoで得られる真価の1つはその完成度にあります。思わず唸ってしまうような素晴らしいロジックがある一方で、なんでこんな処理をしているんだ?と呆れてしまうロジックもあり、少々カオスな状態です。なので非常に改造のしがいがあり、今まで試してみたかった処理をこれでもかと盛り込んでみています。それらは実績が無いのでとてもマウ筋Liteなどには試せないですが、まあ、Proximodoなら何してもOKな状況。
その結果、従来では考えられないほどのノウハウを得られるようになりました。
公開するからには安全第一でこの辺ちょっと抑えるかとかある意味余計で色々な配慮を全くする必要が無いが故に思いつくまま技術を投入していくのは未経験の分野ですが、とりあえず動かしてみて、OSクラッシュしてもいいやと投げやりで自由奔放な開発も面白い手法です。

もう1つの真価はProxomitronのフィルタ処理がどうなっているのかを直に確認することが出来るということです。
Proxomitronのフィルタ用の文法は独特で少々難解ですが、一部の文法は正規表現を上回るほどの便利なものもあります。とはいえ初めは独自の文法なんて覚える気が無かったので、Proximodoと出会う前まではProxomitronのフィルタの殆どは公開されているものをそのまま流用していました。
その後、フィルタ処理の仕組みを把握できるようになってから文法に興味を持ち、今ではすっかりマスターして自在に扱えるようになりました。分かってしまえば簡単ですね。
その成果として非常に汎用的な広告除去フィルタを作れるようになり、特定のページ毎に一々フィルタを作成する手間が殆ど無くなりました。記事の合間に追加される不自然な文章や画像は高確率で表示されないようになり、まあ時々削りすぎてページデザインが崩れてしまうこともありますが、概ね除去フィルタとしては成功しています。

期待したような汎用的な広告除去フィルタに出会えなかったことに疑問がありましたが、なんとなく理由が分かったような気がします。多分、それが出回るとツール自体の存在を否定するような圧力が発生するからなのでしょう。ちょうどAdblockプラグインのように。
まあ、Adblockは名称自体がちょっと過激というかストレートな感じなので余計に目の敵にされたのでしょうが。
Proximodoに限らずローカルプロキシサーバーはセキュリティの向上や、新たな機能追加などHTMLで実現できることは全て実現が可能であるため、特定の一面に捕らわれず、単なる万能ツールとして認識されるべきだと思います。
なので仮にProximodo Liteが公開できるようになっても妙な偏見で判断されないよう自作汎用広告除去フィルタは搭載するつもりはありません。

ちょっと本筋からずれましたが、要はいろいろ広範囲に手を出してみると思いもよらない素敵な宝物に出会えることがあるということです。
Proximodo Liteは公開条件が整わないので外に出ることは無く、現実的には整うことも無いでしょうけど、それ故に開発しても一見得るものは無いように見えますが、実際には無数にあります。

あれこれ頭で考えるだけでなく、とりあえず体当たりでぶつかってみることも一興です。意外な解へたどり着くことがあるかもしれません。

13/03/17
Proxomitronとの性能対決 その4 

VS

エクストララウンド

安定したので、いじくり回しと言う名のチューニングをさらに実施。
そしてネット回線を高速なものに変えたので、その環境でレッツベンチマーク!

おお…、常にProxomitronを上回るようになったようだ。
さらに3倍とはいかないまでも2倍近い速度を叩き出すケースもあるか。
ひょっとしたらキャッシュデータなどで早くなっているのかとも考えましたが、実際にWEBブラウザからの要求を受けて動作していることはアクティブな接続数やログからも確認しているので、その心配は無し。

ベンチマーク

 Proximodo Lite

 Proxomitron


 
 □ Unknown(?)


総評
Winner !

同系では世界最速のローカルプロキシサーバーはProximodo Liteであると判断する。
さて、ここで使用感をまとめました。現状はこんな感じですね。
今回のベンチマーク以外に、様々な実用テストも行っており、そこから分かったことも載せています。



13/03/16
Proximodo Liteのその後

"Good By Proxomitron"と言っておきながら、実は"Come Back Proxomitron"と叫んでしまいたくなる問題が発生していました。開発者にとって避けては通れないメモリアクセスエラーによる異常終了です。
「0x0000000の命令が0x0000000のメモリを参照しました」って、オイ…。
ヘイベイビー!、それじゃ何が原因か全く分からないぜ、ユー!。しかも直ぐに発生するのではなく何時間か使い込まないと再現しない非常に厄介なものに遭遇するとは。この系統のエラーは最も厄介なんですよね。
どうやらメモリ操作が誤ったようですが、ロジックをどんなに確認してもエラーらしきところは見つけられないので、「俺のロジックが(そんなに)誤っているわけがない!」と開き直っていました。
で、結局原因は判明しました。それは…外部ライブラリ(具体的にどれとは言いません)のバグでしたw。
まさかとは思い、ライブラリをデバッグ(←これ、最早笑うしかない状況です。ソースだけでも何十MBもある巨大なもの。10年以上の歴史ある著名なものとはいえ、それでも疑う必要があるという良い教訓です)したところ、少しずつメモリ破壊してくれていました。
エラー処理でメモリ破壊とはやってくれるじゃないか・・・ユー。
よし!、「俺のロジックが誤っているわけがない!」に言い直し。

さっそく修正したところ、今度は気味が悪いくらい安定してしまいました。
現在も念のため連続運転をし続けていますが、特に問題は無いことから、Proxomitronと同等の安定度になったと判断しています。

惜しいな、原作者Antony Boucher氏にこの安定っぷりを見せたら、きっと感激のあまり泣いて喜んでくれるに違いないのに。機能やデザインを一切損なうことなく、Proximodoそのままに処理速度と安定性が圧倒的に向上している姿を見て欲しいものです。
(私は原作を尊重するため、デザインはあまり変えることなく、そのまま延長するような形で開発します。なので、ffftpのように原作が忠実に引き継がれているのはオリジナルに対するリスペクトが見て取れるので良いですね。まあ見る影も無くなる方針もたまに見かけるのですが、ある種のオマージュということでそれはそれで面白いものではあります。)
13/03/05
Proxomitronとの性能対決 その3 

VS

遂に決着の時 〜さらば!友よ永遠に〜

ベンチマーク

 Proximodo Lite


# URL Average Median StdDev
1 www.yahoo.co.jp 0.54 0.56 0.06
2 www.yahoo.co.jp 0.64 0.64 0.09
3 www.yahoo.co.jp 0.53 0.54 0.07
4 www.yahoo.co.jp 0.52 0.52 0.02

 Proxomitron

# URL Average Median StdDev
1 www.yahoo.co.jp 0.65 0.63 0.08
2 www.yahoo.co.jp 0.57 0.56 0.06
3 www.yahoo.co.jp 0.70 0.59 0.18
4 www.yahoo.co.jp 0.57 0.58 0.06

Proxomitron、遂に陥落!


さらに複数ページを同時に表示した場合を計測

ベンチマーク その2

複数のWEBサイトをまとめて表示し、全ての読み込み完了までの時間をストップウォッチで測定する。アクセス先は日本を代表する3大新聞社とディーブなニュースのまとめサイト3つ、著名なIT系のニュースサイト3つ、計9つ同時に表示し、その5回平均を求める。(単位はsecond)

 Proximodo Lite
# Average
1 8.71

 Proxomitron
# Average
1 14.06

さらに差が開いてしまった。圧倒的ではないか!
測定する前からある程度の予測はしていたが、結果はそれ以上であったので、正直驚かされた。


総評
Winner !

チューニング作業中に、ある時点から異様にWEBページの表示が早くなったので、もしかしたら凄いことが起きているのかもと予感はしていたが、本当にProxomitronを越える性能になるとは想定外である。
正直ほぼ互角かと思いきや、ほぼコンスタントに性能を上回るとは嬉しい誤算であった。
上記ベンチもさらに何度か計測してみても結果は似たような状況になったので間違いは無さそうだ。

完全にProximitronの代替が勤まるというかアップグレードできたので、Proxomitron縛りから卒業だ。
Good By & Thanks Great Software "Proxomitron",
Welcome new Hero "Proximodo Lite"!

ところで完成したのは確かに嬉しいのだが、しばらくはいじくり回せるかと思っていた折角の楽しい遊びが意外なほど早く終わってしまうとは、本当に予想GUY! お父さん犬もびっくりだ。

当初の目標であったProxomitronを全ての点で超えることは達成できたので、本件はひとまず完了とする。

他に未だチューニングの余地はありそうというか、実際にあるので、次は3倍のスピードアップでも目指してみるか。それが果たせたらアイコンデザインを赤くしてみるのも一興。
13/02/18
Proxomitronとの性能対決 その2

VS

Proxomitronは早くて軽い優等生。しかしヤツは所詮10年前の(ny
今まで培ったチューニング技術を惜しみなく投入した新型で勝負だ。
そこの緑色!。ザクはヤラレ役であることを思い知らせてやるw

ベンチマーク

前回と同様、webwaitを使用。(単位はsecond)。フィルタ条件は同一。
より正確に計るため、5秒間隔で5回アクセスの1セットを4づつ測定しました。
さあ、どうだ?

 Proximodo Lite
# URL Average Median StdDev
1 www.yahoo.co.jp 0.62 0.59 0.08
2 www.yahoo.co.jp 0.63 0.59 0.10
3 www.yahoo.co.jp 0.59 0.52 0.14
4 www.yahoo.co.jp 0.59 0.58 0.05

 Proxomitron
# URL Average Median StdDev
1 www.yahoo.co.jp 0.55 0.53 0.06
2 www.yahoo.co.jp 0.49 0.47 0.03
3 www.yahoo.co.jp 0.61 0.52 0.15
4 www.yahoo.co.jp 0.56 0.56 0.08

おお…素晴らしい。最速のProxomitronとほぼ互角だ。
僅かにProxomitronの方が早いかな。


総評
引き分け!  -

Proxomitronの方が全体的に性能が良いが、明確な優劣を語るほどの差はない。
しかも、現在のProximodoはフィルタ条件の完全日本語化対応という性能面で不利な機能を追加しているにもかかわらずProxomitronに近い性能を叩き出している。
これらを考慮し、引き分けとする。

正直なところを言うと、この結果は意外でした。
チューニングで劇的な高速化が得られたときは勝てると確信していたからです。
Proxomitronの壁は厚いな。日本語対応機能を外してでも性能を追求すべきか、機能を取るか悩ましいですが、妥協した目標を達成しても楽しくないので、高機能と性能を両立させるという矛盾した難題に挑んでみることにしましょう。

13/02/17
Proximodoの新バージョンが登場して欲しい

とあるOSSコミュニティで面白いやりとりがあったことを知りました。

A氏: XXX方式で行えば、より良くなると思うよ。ほら、こんな仕様を書いてみたんだ。
B氏: 仕様?gdgd言ってんじゃねぇ!
    もしかして誰かが無料で作ってくれると期待しているじゃ無いだろうな?
    そんな訳あるかぁ!
    そんなの提示するくらいなら、具体的な成果があるんだろう?
    まずはそれをコミュニティに還元しろよ。

うむ、まさにOSSならではです。まずは結果が先、次に仕様というのは一見逆に見えますが、スピード感と多様性を生み出す有効な手段です。

私の立ち位置はB氏ですね。まずは結果。結果ほど雄弁なものはありません。独自理論をこねくり回し、ただ述べるだけなのははっきり言って不要です。
私がProximodoに手を入れているのは、要望を満たす代替が無かったからにすぎません。
もし他に優れたのがあるならば即乗り換えます。だってその方が時間の節約になり、他にやりたいことに着手できるのですから。
なので、腕に覚えのある方でProxomitronになんらかの不満を抱いているならば、是非新バージョンを作って欲しいものです。何も生み出さない下らないgdgdはもう十分です。gdgdは某妖精で十分満足していますからw

Privoxyという別の代替OSSで、フィルタ条件に日本語がそのまま使用できる優れた先人もあります。
少々玄人好みな雰囲気ですが、そちらを改良するというのも有効な手段かと思います。
フレームワークを使用しておらず、作りそのものはシンプルな感じなので、こちらの方が好まれるのかもしれません。

13/02/16
Proxomitronとの機能対決 -日本語化対応-

VS

Proxomitronは早くて軽い優等生。しかしヤツは所詮10年前の旧式。
性能では敗北したが、機能の優劣で辛酸を味わうが良い!

ということで、Lite版はフィルタ機能で完全日本語化に対応しました。
前回は"置換するテキスト"に日本語を使用可能にしたことを説明しましたが、
今回はなんと"マッチングパターン"にも日本語を使用可能にしました。
どういうことなのか? 

Proxomitronでは日本語をフィルタ条件に使用するためには特殊なエンコード手順が必要です。
例えばgoogleトップページの検索ボタン名称を変更する場合は次のような指定を行います。
-------------------------------------------------------------------
マッチングパターン: 
 「<input value=$AV(*[%e6][%a4][%9c][%e7][%b4][%a2]*) (name=$AV(btnK))\0 \1>」
置換するテキスト:  
 「<input value="&#12369;&#12435;&#12373;&#12367;&#9734;" \0 \1>」
-------------------------------------------------------------------
はい、何をしているか全く分かりませんね^^
これはボタン名称に"検索"という文字が含まれていた場合は、"けんさく☆"に変更するというフィルタです。はっきりいって、素人お断りの世界ですねー。作った本人が後でこれを見ても何をしているか忘れているに違い有りません。

一方、Proximodo Liteで同じ事をすると、次のようになります。
-------------------------------------------------------------------
マッチングパターン: 
 「<input value=$AV(*検索*) (name=$AV(btnK))\0 \1>」
置換するテキスト:  
 「<input value="けんさく☆" \0 \1>」
-------------------------------------------------------------------
Oh!、非常に簡潔な記述で分かりやすいですね。
しかも、Proximodo Liteは日本語を扱う際に対象となるWEBページの文字コードを指定する必要がないのです。従来Proxomitronではまず対象ページの文字コードを調べて、その文字コード専用のフィルタ設定を作成する必要があったのですが、Proximodo Liteではそれらを自動的に行うというクールな仕様になってます。

では実際に文字コードがUTF-8であるページに、このフィルタを使用するとどうなるのか検証してみましょう。

ちゃんとボタンのタイトルが変更されました。

ついでにロゴ直下の文字も変更してみました。これは単にこんな書き方で実現できます。
-------------------------------------------------------------------
マッチングパターン: 「\0日本\1」
置換するテキスト:  「\0にほん\1」
-------------------------------------------------------------------

総評
Proximodo Liteの勝利! 

機能面では勝利しましたが、次に目指すは性能面で越えること。少なくともほぼ同等の性能に近づけたい。機能を追加すると重くなるのが世の常ですが、追加しても尚さらに軽くしたいものです。
チューニングは既にし尽くした感があったのですが、調べるとまだ手を入れる余地がありそうに見えるので、のんびりと探ってみます。
あ、そうそう。安定性と性能、そして機能面で十分に仕上がったので1.0版とします。真の完成バージョンです。後は改良していくだけですね。まずは性能でProxomitronを目指します。

噂の先行は好きではない(ry
ところで、ここで答え合わせをしておきましょうか。

Q1.作成した後にライセンス情報に初めて気が付いたって本当?
A1.13/01/13の記事でライセンスの話題に触れています。その後で書いたことはオリジナルの作者に依頼するというシナリオに至るための単なる物語です。

Q2.ソフトウェアを一度でも公開したことある?
A2."A1"のとおり、最初の記事で公開が困難であることを述べています。そのためありません。
それにしても、GPL汚染という言葉が一般用語の基礎知識に載っているとは知らなかった。秀逸なのは問題点の項目で簡潔にして明瞭に説明されており、ちょっとした皮肉を織り交ぜているのは文才とユーモアがある方が書いたのだろうと推測されます。
問題点についてはここで少し詳しく解説していますが、ほぼ内容の方向性は同じです。
ついでに現在のライセンス状況について述べると、@ITの記事によると最も勢いのあるホスティングサービスであるGitHubのアクティブプロジェクトで採用されるライセンスの殆どがBSD・MIT系の緩いライセンスのようです。やっぱりというか自然な流れというか、その理由はここで述べていることと同様です。
うん、まあ、色眼鏡がない見識者の大半はそのような結論に至るでしょうね。

Q3.ネット専用ニュースサイトって信用できる?
A3.信用の有無は記事の根拠を確認して判断するだけの話です。もっとも根拠が妄想という事例を見たことがあるので、それにはある意味で楽しませて貰いました。

以上、答え合わせ終わり。

13/02/09
私のブラウザがこんなにシャダイな訳がない

いつもお世話になっているgoogleさん。
季節のイベント毎に素敵なデザインに癒されます。

そんなgoogleさんに新しいパターンが!
ん? ニコニコで見慣れたような気がしなくもない。



そうか、今日はエルシャダイの日だったのか。
随分ニッチなイベントだな、私は嬉しいけど…、ってなわけあるかい!


さて、前置きはこれくらいにするとしましょう。
googleページの文字コードは「UTF-8」であり、一般的(というほど種類は多くない)なローカルプロキシを使っても通常は日本語で改変できません。
でもProximodo Liteは違います。置換処理は完全日本語対応となりました。
それにはまず、日本語を特殊なエンコードして…は不要です。
なんと置換条件にそのまま日本語を指定可能だ!
そして設定画面をよく見ると、文字コードを指定する項目が、、、無い。
そう、文字コードを指定する必要は無いのです!
WEBページの文字コード(UTF-8、EUC-JP、JIS、SJIS)固有の判断と必要な処理は全てProximodo Liteが全自動で処理するためです。
日本語がそのまま使用できるのは快適。そして何より面白い!



13/02/06
フル日本語対応への検討

Proxomitronを使っていてどうしても実現したいと思ったこと、
それは自由に日本語を使用できるようにすることです。

現状でも特殊なエンコーディングを行うことでマッチ条件に使用できるようになるのですが、さらに文字コードも考慮しなければならないため、何かと手間がかかりあまり嬉しくはありません。
あと、置換条件もデフォルトでは日本語を使えません。
フィルタ条件に日本語を使用しなくても大抵は事足りるのですが、時々使いたくなる場面があるので困ったところです。

ところでProximodoはフィルタ対象のWEBページの文字コードがSJISであれば日本語が使用できるのですが、それ以外は未対応です。(使っても文字化けします)
ローカルプロキシは文字コードなど意識せず、自由に日本語が使えたらいいなと常々思ってました。
ということで、フル日本語対応を目指してみたいと思います。
これが実現できたら相当便利になるに違いない。

 @フィルタのマッチ条件と置換条件に日本語がそのまま使用可能
 A文字コード(Shift-jis、EUC-JP、UTF-8)の自動判別により、
   ユーザーを文字コードの呪縛から解放する

13/02/03
Proxomitronとの性能対決

VS

Proxomitronは早くて軽い優等生。しかしヤツは所詮10年前の旧式。
最新のテクノロジーを搭載した新型が負けるはずはない!
開発した当初、性能でどうしても勝てず惜敗の涙をグラスに溜めさせられたが、今度はその舌で己のを味わうが良い!

ベンチマークはその測定方法、判断基準が異なるため、複数の方法で行い、多角的な観点から判断してみます。

共通の測定条件:
 1.ProximodoはProxomitronとフィルタ完全互換(というか、互換にした)なので、
  Proxomitronと同一のフィルタを使用
 2.使用するブラウザはIE

ベンチマーク その1

.webページの読み込み時間測定にまったりベンチ.NETを使用しました。(単位はms)

さあどうだ!
Oh!No!. 2倍から3倍の性能差だと!? 実は坊やだったのはこちら側だとでも言うのかー。

Proximodo Lite


Proxomitron


うーん、WEBブラウザから表示する分には体感的にはほぼ同じなのだが…。
結果は結果なのでしかたない。


ベンチマーク その2

次はwebwaitでyahooへの平均アクセス時間を測定してみましょう。
(単位はsecond)

 Proximodo Lite
# URL Average Median StdDev
1 www.yahoo.co.jp/ 2.47 2.50 0.09

 Proxomitron
# URL Average Median StdDev
1 www.yahoo.co.jp/ 2.12 2.11 0.20

ほぼ変わらない。そしてベンチマークその1の結果とかけ離れている。
この結果は体感速度とほぼ同じなので、こちらの方が納得できる。
PCのベンチマークもそうだが、測定ツールによって性格が異なるので、善し悪しは言えないが私は体感的に感じた方を信じる。


ベンチマーク その3

属人性を除いたベンチの後は、やっぱり実際の運用条件で測定したくなる。
てなことで複数のWEBサイトをまとめて表示し、全ての読み込み完了までの時間をストップウォッチで測定する。
アクセス先は日本を代表する3大新聞社とディーブなニュースのまとめサイト3つ、計6つ同時に表示し、その5回平均を求める。(単位はsecond)

 Proximodo Lite
# Average
1 14.51

 Proxomitron
# Average
1 11.98

お!、ベンチマークその2とほぼ同様の差になった。うん、これなら理解できる。
その1やその2と全く異なる結果が出たらどうしようかと思っていたが。
結果が他と突出したその1を除いて、2と3のデータから判断することにする。


総評
Proxomitronの勝利! 
Proximodo Liteの約1.2倍の性能を叩き出しました。
おめでとう!コンチクショーw。また後塵を拝してしまったー

Proximodo Liteは性能のチューニングを施してオリジナルより数段スピードアップしてるにも関わらず、まだ届かないか。でもまあ、ほとんど性能差は無いし、1つのページの概要を見ている刹那の間にロードは完了しているので、実際には同等として見なせる。実際、WEBブラウザによって、機能・性能検証のためにそれぞれのローカルプロキシを割り当てているが、どのブラウザががどっちを使っているのか曖昧になるときがあるほどである。機能は同じ、性能はほぼ同等なので仕方ないが。
とはいえ、ベンチの上では性能差は明らかになったので、改めてScott R. Lemmon氏へ賞賛を贈らせて頂きます。一体どんなマジックを使ったらそんな速度が出るのやら。アセンブラとか使いまくっているのかな。ソースコード見たかったなぁ、きっと目が覚めるような鮮やかなロジックだったんだろうなぁ。

そんな偉大な壁に対向するには禁断のチートアイテム Intelコンパイラに手を出すしかないのか!?
wikiよるととても性能が向上するらしい。
>CPUの開発元が自ら開発しただけあって高い最適化能力を誇り、最新のCPUへの命令セットへの対応も非常に早い。
>(中略)
>その性能の高さから特に映像、音声・音響関係で使用される場合が多い。

でも、Windows版は無償版が無く、かつ10万以上とお高いのね…
無償でおためしが出来きて良い性能が出たら褒めまくるのに。
てことで投資だと捉えて、是非製品版をPlease give me! > Intel様!

ところでProximodoの原作者Antony Boucher氏へ公言したライセンス変更依頼、実はマルチライセンスの方が良いかもと思い直し、依頼内容を変更!
----------------------------------------------------------------------
Please change Proximodo License,"New BSD License" or "2-clause BSD license" or "GPL/New BSD Multi-licensing"!
If it done, I'll release new Proximodo as (nearly) first as Proxomitron!
----------------------------------------------------------------------
13/01/27
Proximodoの優れた機能

以前Proxymitronと比較したとき、機能的にはほぼ同様と説明しましたが、まだあまり知られていない機能があります。(というか使い込んで初めて知りました)

@Http Headerフィルタのインポート
ProxymitronのWEBページフィルタのインポートが可能であることは確認しましたが、Http Headerフィルタも可能でした。cfgファイルのHTTP headersの全フィルタをコピー&Proximodoへインポートで一括で取り込めます。

-----------------------------------------------
[HTTP headers]
In = FALSE
Out = FALSE
Key = "URL: Nico nicoplayer Replace (OUT)"
Match = "http://www.nicovideo.jp/swf/nicoplayer.swf\1"
Replace = "$RDIR(http://local.ptron/nicoplayer.swf\1)"

In = FALSE
Out = FALSE
Key = "URL: kill api.nicodic.jp (out)"
URL = "api.nicodic.jp/"
Replace = "\k"


-----------------------------------------------



Aフィルタの階層化
フィルタの分類は1階層だけかと思ってましたが、ほぼ無制限に階層化が可能です。
実際にはそれほど深い階層は不要ですが、多くのフィルタをより分かりやすく整理することができます。



Bフィルタ設定のリアルタイムな切り替え

用途に応じてフィルタ設定をまとめてたプリセットとして保存し、リストから切り替えが可能です。Proxymitronの場合は設定ファイルの読み込み機能で同様のことが可能ですが、こちらの方が直感的かつ容易に変更できます。



Cフィルタ優先度の指定

Proxymitronの場合、フィルタの並び替えで優先度が決まりますが、Proximodoは設定画面で優先度を直接指定可能です。そのため優先度を決めるためにフィルタのカット&ペーストを繰り返す必要はありません。

Dフィルタに説明を付けることが可能

フィルタが多くなると内容を名称から判断することが難しくなります。
マウ筋Liteの場合もそうでしたが、管理項目が多くなってくると簡単なコメントが欲しくなりますが、Proximodoはコメント機能を実装しています。しかも日本語が使えるのでさらに使い易いです。
個人的にはこれが一番有り難い機能です。



13/01/14
把握しているバグを全て修正し、ようやく完成!

Proxomitronには実行ファイルパスの"html"ディレクトリにあるファイルをフィルタに指定する機能があります。それにより不要なJavascriptを安全なスクリプトに置き換えたり、背景画像を差し替えるなど便利なことができます。
例えば不要なポップアップウィンドウを抑制するために「Kill pop-up windows」というフィルタがありますが、次のようにローカルファイルのスクリプトに置き換えて制御しています。
------------------------------------------------------------
マッチ対象: (<!DOCTYPE*> |)\1
置換:     $STOP()\1\r\n_<!--//--><script src="http://local.ptron/WindowOpen.js"></script>\r\n
------------------------------------------------------------


当然Proximodoもできるはず、なのですが出来ませんでした。
ソースを解析してみると、wxWIndowライブラリの処理が上手く動作していないようなので
全てライブラリに依存しない処理で直したところ解決しました。

Proximodoの処理の90%はwxWIndowライブラリに依存しているため、どこにバグが潜んでいるかは見ただけでは分かりません。他に修正した箇所の大半はそのライブラリ関連なのです。
多数のバグの傾向から、Windowsでは殆どテストが行われてないと判断します。多分、オリジナルの作者の開発環境は主にLinuxだったんじゃないかな。コンパイルに関する説明もLinux関連が大半を占めてる状況ですし。
Proxomitronを目指したならば、まずは同じプラットフォームで完成させて欲しかったのですが、まあ仕方ないです。そのような状況であったからこそ、私の手で完成版を成し遂げる機会があったので結果オーライです。

よし、Proxomitron相当のローカルプロキシサーバを自由に開発することの出来る(多分)世界唯一のソフトウェア作家になったはず! 
もうProxomitronに抱いていた不満な点は全て払拭できたし、何か改良したいことがあっても自由自在だー。
Proxomitronで使用していた無数のカスタムフィルタは一切の手を加えずに、フィルタの設定ファイルをコピー&ペーストするだけの僅か1秒で移行完了できたし、フィルタ動作も完璧じゃん♪↑
さて気分良く公開しようかな…、ってだめじゃん!?↓
ライセンスがGPL…。特定の開発者にとっては鬼門と言うべき存在。某OS開発企業も知名度の高いゲーム会社も漏れなく謝罪とその対応に追われたことを知る者としては無視できません。
その気が無くてもうっかり私の作品に混入したら目も当てられませんからね。当然万一に備えて手を入れた箇所はProximodo専用に新規に書き下ろした処理のみにして、他では一切使用しないようにProximodo用処理であることが一目で分かるような書き方をしていますが。

発展しているオープンソースのプロジェクトは大抵BSDかそれに準ずるライセンスを採用している状況を鑑みて、もし後継を望むのであれば修正BSDにすべきでしたね。
ということで、今からでも遅くはないので修正BSDライセンス(New BSD License or 2-clause BSD license)に変更してください、作者(Mr Antony Boucher)様!
公開されているアドレスは使われてないようなので、
Please contact me !,Mr Antony Boucher.
My address is included my work's documents.

-------------------------------------------------------------------
Dear Mr Antony Boucher

I have created complete version of Proximodo based on the publicly your source code.
I have named new version, "Proximodo Lite".

I hope to release new version, bat, I do not want to publish because Proximodo's license is "GPL".
I think that GPL is cause of the various problems.
I do not like trouble.

So please change "New BSD License" or "2-clause BSD license".
I will publish new version if it does so.
Please understand and accept my proposal!
-------------------------------------------------------------------

なお作者である場合は現在も存在している公式HPを変更可能かどうかで真贋を確認するため、成りすましは現実的にはできません。
13/01/13
ローカルプロキシサーバの開発

ローカルプロキシサーバの代表格といえばProxomitronが真っ先に候補に挙がります。
WEBサーバーとWEBブラウザの中継役になることで、コネクション制御や情報の監視、情報の書き換えなど自在に情報を制御します。
それによりセキュリティの向上、通信の高速化などを行うことが出来るようになりますが、最も分かりやすいのはWEBページの書き換えでしょう。
不要な広告を除去したり、著名な動画サイトの外観や使い勝手を変更できたりします。
またWEB関連の開発者は運用現場をエミュレートする場合など重宝する場面が多いかと思います。

Proxomitronは自由度が高く多機能でありながら軽快に動作する優れたソフトウェアですが、作者であるScott R. Lemmon氏は既に他界されており、設計図であるソースコードは公開されていなかったため、開発を継続することは不可能な状態です。
現状、winXP,7,8で正常に動作するため使い続けても問題はないのですが、将来的に使えなくなる可能性を払拭できない以上、代替を用意しておきたいものです。

捜してみると…、意外にいっぱいありますね。ブラウザ依存のものや汎用的な非ブラウザ依存のものも。ただし、主にWEB開発者向けの印象があり、一般的なユーザーにとっては敷居が高すぎるようです。Proxomitronに匹敵するほどの機能はあれど、Proxomitronの使い勝手に比肩するものは無いように見受けられます。

ユーザビリティは日常的に使うソフトウェアにとって最重要課題であるため、私見ですがProxomitronの完全な代替は無いと言えます。

ただ、1つだけ他とは異なる雰囲気を持つものがありました。Proximodoです。
ユーザの評価を総合すると「Proxomitron似の不安定なソフトウェア」とのこと。
試したところ、なるほど確かに不安定です。WEBページを何個か開くと時間の程度の差はあれど100%異常終了するという問題を抱えてました。それ以外にも設定が保存できないなど他多数。
2005年以降開発が停止しているので、もう改良は望めない雰囲気ですが、マニュアルを読むと真剣にProxomitronの完全再現を目指しているとありました。
興味を持ち関連文書をソースに添付の開発メモに至るまで全部目を通したところ、本気度が伝わってきました。
ここまで熱い思いが込められる技術者ならは完成版になるまで開発を継続するはずですが、僅か1年足らずで開発が停止しているのは疑問でした。

文章にあった主な利点を挙げてみると、凄いことが書いてます ^^;
Proxomitron互換だけでなく、マルチプラットフォーム対応とは恐れ入りました。

・Proxomitronフィルタとの完全互換
・マルチランゲージ対応
・マルチプラットフォーム対応

もはや欠点は見あたらないです。(安定性除く)
機能面で不足無く、というか充実しすぎており、ライセンスはGPLなので、引き継ぐ者が現れてもいいはずですがその様子も無し。不思議だったのですが理由が分かりました。マルチプラットフォーム対応のために特殊なフレームワークを採用していたのです。wxWindowライブラリというのですが、開発にそれなりに精通しているはずの私がロジックを全く読めませんでした。諦めを通り越して、こんな世界もあるのかと感心させられたほどです。(さらに悪いことに全てのソースが揃っているわけではなく、GUI設計をしたときのデザインファイルが無い)

ここまで不利な条件だと通常は手が出ません。むしろ0ベースで作った方が早いような気がします。ただ簡単なローカルプロキシサーバを作った経験者は分かると思いますが、Proxomitron級のものを目指すには検討課題が多すぎて何年かかるか分からない状況になります。

そんな葛藤が様々あったのですが…、
結局ほぼ
完成版のProximodoを作ってしまいました ^^
その名もProximodo Lite !
(windows用に最適化させており、マルチプラットフォーム対応ではないので"Lite"。
まだ既知の問題がありますが、実用に影響する件では無いため、のんびりと対応予定)

出来たときは正直自分でも信じられなかったのですが、少なくとも私が思いつく限りの負荷テストを繰り返しても異常終了することはありません。また他の問題も全て修正しました。
まさにProxomitronマークUと呼称しても良いかもしれない。

さて、Proxomitronと比較してどのような利点があるのでしょうか?
少し整理したいと思います。



Proximodo Liteの方が利点が多いです。というかそうでないと開発する意味がないというものありますが。
あとLiteに足りないのは実績ぐらいでしょうか。少なくとも私は従来Proxomitronで行っていたことをProximodo Liteに任せるだけの実績は得られています。

また機能面の互換性だけでなく、GUIの使い勝手についてもほぼ類似なので、Proxomitronユーザは特に操作に迷うことはないでしょう。

あと1つ、最大の問題が。
それはProximodoのライセンスがGPLであるということです。
一体何が問題なのか。それは開発の自由度に制限があるということです。
この件については世界中の技術者が様々な議論をし尽くしているため、是非について言及することはしませんし、議論したいとも思いません。,また世に出ないソフトウェアに関する議論もしません。
BSDライセンスであれば直ぐにでもソフトウェアを公開可能なのですが、ライセンス問題は難しいテーマです。
まあ技術的には興味深いソフトウェアであるため、個人の範囲内で楽しく使うことにします。^^;