「JavaScript ファイルの縮小(Minify)」が なぜ難しいか?

JavaScript を縮小・圧縮したい!

PHP の勉強も兼ねて、

「JavaScript ファイルを自動的に縮小(Minify)して、(gzip)圧縮する」

というスクリプトを作っています──と何度も書いて来ましたが、

結論: \(^o^)/ 無理

という、残念な結果に終わりそうです(8 割方 予想が付いていたけど)。

今回は、それがなぜ難しいのか という話と、/packer/ は やっぱり凄い! という話です。

目標

やりたいこと:

  • PHP4 で作る
  • 自動で処理する
  • JavaScript ファイルから
    • コメントを削除
    • 余分な空白・改行を削除

たったこれだけのことですが、じつは ものすごく難しいです。ちなみに、「PHP4」で、というのは、ただ単に ここのサーバで動いているのが PHP4 だから、というだけの理由です。PHP5 だと、類似のスクリプトはいくつかあるのですが……。

「そんなの、2 分でできるよ」というひと向けに、下記の(わざとらしい)"sample.js" をどうぞ。

/***/
/**
*  comment
*  // comment
*/
/*@cc_on
//  http://d.hatena.ne.jp/amachang/20071010/1192012056
var doc = document;          // comment
eval('var document = doc');  // comment
@*/
/*@cc_on document.write('"IE!"\n'); @*/     // comment
var hoge = "/* hoge */\n";
var fuga = '"/* fuga */"\n';
var foo  = "//* foo *//\n";
var bar  = '"\'//* bar *//\'"\n';
document.write(hoge + fuga + foo + bar);

上記のコードを Minify すると、こうなるはずです。──そんなスクリプト、書けますか?

/*@cc_on var doc=document;eval('var document = doc');@*//*@cc_on document.write('"IE!"\n');@*/var hoge="/* hoge */\n";var fuga='"/* fuga */"\n';var foo="//* foo *//\n";var bar='"\'//* bar *//\'"\n';document.write(hoge+fuga+foo+bar);

続きを読む


『16 ブロック』 窓際“ジョン・マクレーン”には遠すぎる距離

『16 ブロック(16 Blocks)』

ストーリィは、「簡単な任務」をニューヨーク市警のジャック刑事(ブルース・ウィリス[ad])が たまたま引き受けたことから始まります。

たった16ブロック(1.3km~1.6km)先にある裁判所へ、二時間後の開廷までに証人を送り届けるという、通常であれば十五分もあれば終わる仕事なのですが──もちろん、そんなに簡単には行きません。

移動中に、ある組織から執拗に命を狙われる証人、エディ・バンカー(モス・デフ[ad])。はたして、証人が命を懸けて証言しようとしていることは、なにか?

トリックもアクション・シーンも充実していて、たっぷり楽しめます。家族と、恋人と、そして一人で──、どのようなシチュエーションでも満足できる良作です。

photo

16ブロック
ブルース・ウィリス; モス・デフ; デヴィッド・モース リチャード・ドナー
ソニー・ピクチャーズエンタテインメント 2007-11-07
楽天ブックス: BEST COLLECTION LIMITED 1980::16ブロック

by G-Tools , 2007/11/24

続きを読む


『世の中にはメンドいことが多すぎ』を考えてみる

『世の中にはメンドいことが多すぎ』

週末なので軽いネタ──と思ったけど、たまの連休にこそ、ちょっと頭を使って考えよう、という記事です。

世の中にはメンドいことが多すぎ – ノッフ!

id:kotorikotoriko さんとコメント欄の温度差、というか「わかってないなー」感も注目です(このページで一番 面倒くさそうなのがコメントのような)(はてブも)。

銀行の ATM 問題

asiamoth も極度の面倒くさがりで、面倒なことを避け続けて 0x21 年ですよ!

自分の場合は、面倒くさいので窓口は滅多に利用しません。というか、地元の銀行は 15 時に窓口に閉まるけど、そんな時間帯に銀行に行くようなことはほとんどないので、「窓口」を見ることすらないですが。

ATM の使いづらさと、窓口の面倒くささ(待たされたり)を両天秤にかけると、自分は ATM を取ります。窓口だと、愛想笑いを返したり、余計な質問や話(「○○プランがお得」とか)を聞かされるのが煩わしく感じます。

銀行は、「ATM のほうが手数料がお得」であることをプッシュするなら、「銀行窓口」は別の建物にして、手数料もいま以上に取って、完全に別サービスにしてはどうか。行員は、数を減らして質を上げて、id:kotorikotoriko さんのようにそれでも窓口を利用したい人や、お年寄り用のサービスを提供するとか。

──みたいなことは、森博嗣さんがとっくの昔に書いていたような気がする。

ユーザビリティを考える

ところで、今回の話は、

「サービスの提供側は、本当にユーザのことを考えているのだろうか」

という話ですが──これって、ブログの運営にも当てはまるわけで。

うーん、このブログも、自分自身が見にくい・使いにくいことを自覚して、「直さなきゃなー」と思い続けて何ヶ月も経ちました。こつこつと水面下(謎)でリニューアルの準備を進めていますが、いつ完成する事やら……。


『心もからだも「冷え」が万病のもと』 簡単な「冷え」退治法

『心もからだも「冷え」が万病のもと(川嶋 朗)』

冬は寒くて苦手な asiamoth です(あいさつ)。

冬は本当にツラくて、どう考えても哺乳類の身体の一部とは思えないほど、足の指先が冷たくなっています。足だけ爬虫類なのではないか、というくらい(本気では思ってないけど)。

このままだとマズいよなー、将来、下手をしたら足が動かなくなるのでは、と足湯やストレッチなど、いろいろと試したのですが、あまり効果がありませんでした。

それが、本書に書いてある『「冷え」退治』の方法を試してすぐに、全身が温まったのを実感できました。これは、いままで試した健康法のたぐいの中で、もっとも効果が感じられたものでしたね。

「冷え」に苦しんでいる女性の方、そして最近 増えてきたストレスによる「冷え」を感じている男性の方に、ぜひとも読んで欲しい一冊です。

著者は東京女子医科大学附属青山自然医療研究所クリニックの川嶋 朗 先生です。

続きを読む


『バイオハザード III』 砂漠でも脱ぐミラ・ジョヴォヴィッチ

『バイオハザード III(RESIDENT EVIL: EXTINCTION)』

つい先ほど、『バイオ・ハザード III』を見てきました。

基本的には、前作・前々作を見たひと向けですが、そう難しい話ではないので、アクション映画・ホラー映画が好きな人は、本作から見ても楽しめるでしょう。しかし、最低限の前知識として、元々はゲームである、ということは知っておいたほうがいいでしょうね。ときどき、不思議な描写が入るけど、「ああ、ゲーム的な表現なのか」とわかるわけです。

ゲームファン、そして前作までを見ている人であれば、思わずニヤリ、なシーンがたっぷりあって楽しめます。

『銀魂』ネタとコラボしてみた

今週の『銀魂[ad]』(第百九十訓 『想像力は中二で培われる』)があまりにも面白かったので、無理矢理コラボ。どうしても、これがやりたかった──!

クレア「私はクレアよ。あなたは?」

アリス「ただの旅人さ(ただし、戦いでピンチになると超能力も発動できる、冷徹な狂戦士となる。じつは、私の存在が世界の命運を握っている。言うまでもなく、本作の主人公。)」

クレア「オイぃぃぃぃ! ()の中で中ニ設定の説明すんじゃねェ !! そんで、さりげなく『あなたとは格が違う』みたいに言ってんじゃねェェェェ !!」

続きを読む


HUNTER×HUNTER #267『発動』 二つの絶望、なぜドラ問題

HUNTER×HUNTER No.267『発動』 (週刊少年ジャンプ 2007 年 51 号)

今回も、ほんの数秒・数十秒の間に起こった出来事でした。

簡単に言えば、「二つの絶望」についての話でしたが──次回以降がどうなるか、非常に不安で気になる回でした(毎週そう書いているけど)。

ゴンたち・討伐軍と、モントゥトゥユピーとの戦いが半分。そして──ネフェルピトーが王の元に向かい、そこで見たモノは──。

シャウアプフが今回 登場しなかったのが、非常に気懸かりでした。

続きを読む


Firefox 拡張機能「NoScript」でサックサクにしてやんよ

NoScript

“noscript”と聞くと HTML タグを思い浮かべる人も多いと思いますが、今回紹介するのは、Firefox の拡張機能(Add-on: アドオン)です。

これは、多機能なセキュリティ対策ツールで、

「基本的にすべてのサイトの JavaScript(など)を実行させない」

というのがメインの機能です。

JavaScript を実行させたいサイトをドメイン単位で許可する、というホワイトリスト法になっています。

設定方法と使い方

詳しい設定方法、使い方は、下記ページが図解入りでわかりやすいです。

NoScript – 拡張機能のおぼえがき –

Greasemonkey, UserChrome.js は?

気になるのが Greasemonkey や UserChrome.js への影響ですが、ページ内の JavaScript とは独立しているせいか、制限されません。

唯一 問題になるのが SBMCommentsViewer ですが、これは NoScript を使いながらでもコメントの取得ができます。

silog – script/SBMCommentsViewer

Flash, iframe もブロック

面白いのが、許可していないサイトは、Flash や iframe も制限できること。

うざったいブログパーツや、「なんとかランキング」の読み込みがダルいサイトも、軽快に表示されます。

読み込み制限した Flash や iframe は、ワンクリックで表示可能(オプション次第)なのが、たいへん便利です。

自分の使い方

基本的に、いつでも JavaScript が動作して欲しいサイトは限られています(LDR, Google , 自分のサイトなど)。許可しないサイトは、Flash も iframe も、プラグインもすべて制限しています。

これらを止めていると問題になる場合でも、「一時的に許可」ができるので、あまり困ることはありません。

まとめ

ようするに、エ■サイト巡回が日課の人には欠かせない拡張機能。

[これが言いたかっただけ][以前に比べて軽くなった?][ひろみちゅ先生に怒られそうなこと書いてないだろうか……]


ソウ 4 (SAW IV) – テーマは「原点回帰」(※ネタバレあり)

『SAW 4(ソウ 4)』

昨日(2007/11/17)、劇場公開したばかりの『SAW 4』を見てきました。面白かったし、すごかったです!

映画 『SAW4』オフィシャルサイト

全編、「手に汗握る」という言葉通りの映画でした。オープニングから、まったく容赦ない残酷な描写が続き、とても R15 指定じゃ足りない、と感じました。なにも、あそこまでやらなくても……。ひと言で言うと「『ハンニバル[ad]』越えちゃった☆」です。

今回の見どころは、「なぜ"ジグソウ"が生まれたのか?」という、いままで断片的にしか出てこなかった謎が、やっと明かされたところです。

"彼"が"ジグソウ"になった理由、そして"ジグソウ"であり続けた理由を知って、「共感」できるだろうか──。というのが、今回のテーマだったと思います。

『1』から『3』まで通して見てきた人は、『4』も見るべきですよ! このシリーズを見ていない人は、いまからでも遅くないので、一作目から順番にどうぞ。

photo

ソウ4 DTSエディション
スコット・パターソン ベッツィ・ラッセル コスタス・マンディラー
角川エンタテインメント 2008-03-19
photo

ソウ×4 バリューパック (初回限定生産4枚組)
トビン・ベル ケアリー・エルウェス ダニー・グローヴァー
角川エンタテインメント 2008-03-19

ここから途中までは、『1』から『3』までを見た人を対象に、なるべくネタバレなしの感想を書きます。

続きを読む


gzip 圧縮した JavaScript ファイルに問題はないのか?

gzip 圧縮 JavaScript

prototype.jsを10KBにする方法 : 亜細亜ノ蛾 でおなじみ! の asiamoth(オレ)ですが、ずっと気になっていることがありました。

それは、

gzip 圧縮は対応しているが、gzip 圧縮の JavaScript に対応していないブラウザはないのか?」

ということです(いまさらながら)。

prototype.jsを10KBにする方法の続き(.htaccessをスマートに使う) : 亜細亜ノ蛾 という続編記事で書きましたが、

「圧縮した JS へのリクエストに Content-type: application/x-javascript を正しく返せば OK」

というのが、一応の結論でした(いま思ったけど、Content-type: text/x-javascript だと、どうなるだろうか?)。

──でも、本当に? と思ったので、実際に検証してみました。

結論

たぶん、大丈夫。

──という結論に至った、検証方法を公開します。

続きを読む


「トロステーション」に初音ミク(はちゅねミク)登場

「トロステーション」に初音ミク

とうとうオレも、初音ミクのネタを書くときが来たか! (って、別に避けていたわけではないけど)

ということで(?)、みんな大好き「にゅーあきばどっとこむ」の記事を紹介。

PS3上で配信されている情報番組「トロ・ステーション」の11月16日分(第373回)に初音ミクが登場したようだ。ソフトの紹介にとどまらず、ネギを持ったデフォルメキャラ「はちゅねみく」が出てきて、「みっくみくにしてやんよ?」などとしゃべっていた。

PS3「トロステーション」に初音ミクがネギを持って参上 :にゅーあきばどっとこむ

番組の様子は、下記のリンク先をご覧ください。

トロとクロがネギを振って踊っているが、メチャメチャ可愛い! そして、しつこいくらい「はちゅねミクじゃなくて初音ミクに来て欲しかった」ことにこだわるクロが、いい味を出しています。空気嫁(笑)

はちゅねミクとは – はてなダイアリー

続きを読む