« 2012年6月 | トップページ | 2012年10月 »

2012/08/05

Windows版Safariの終焉?


為替取引を始めるなら≪DMM FX≫

話題に上ってから2週間ぐらいになりますので、間抜けな感じもしますが、Windows版Safariの新規開発がストップするのではないかという憶測に関するコメントを書いてみたいと思います。

Macの新OS「Mountain Lion」(10.8.x)が7月25日にリリースされて、同時にSafari 6がリリースされました。Safari 6はLion(10.7.x)でも使用できます。しかし、Windows版にはSafri 6がないということがその憶測の理由であり、公式的には確認されていないようですが、恐らくその通りなのだと思います。

最新のSafari 5.1.7(英語版)は、
http://support.apple.com/kb/DL1531?viewlocale=en_US

からダウンロードできます(日本語版はたぶんありません)。なくなる前にダウンロードしておきたい方は急がれたほうが良いでしょう。(他にも古いバージョンの入手の仕方はありますが、信頼性の問題からできるだけ公式サイトからの方が良いでしょう。)

さて、Windows版Safariは出始めの時は、Macを持っていないWindowsユーザーの開発者などに喜ばれたと思いますが、今では、その役割を完全に終えていると思います。というのは、私が運営しているサイトのアクセスログで調べてみると、iPhone/iPad/iPodからのアクセスは、全アクセスの5.6%にもなっているにもかかわらず、Windows版Safariはわずかに0.1%です。0.1%というのは完全に誤差の範囲内です。千人に一人です。ちなみに、Mac版Safariは約4.9%ですから、iPhone/iPadの勢いがいかにすごいかが分かります。

iPhone/iPadでの動作確認ができれば、Windows版Safariは必要ありません。iPhone版のSafariの方がWindows版Safariより挙動も近いはずです。Windows版Safariのみに存在する不具合もたくさんあります。でも千人に一人しか使っていないので、あまり時間をかけて、その不具合対策をすることもできず、結局、開発者にとっては、重荷でしかありません。Netscapeの衰退時期やMac版IEのリリース中止時期と似ているような気がします。「頼むから、嫌がらせでないなら、NetscapeやMac版IEのようなマイナーなブラウザは使わないで・・・。」と思っていたことを思い出します。Windows版Safariの終焉は心から歓迎したいです。



| | コメント (0) | トラックバック (0)

2012/08/04

Google Chromeの古いバージョンを入手し、最新版と共存する方法



Google Chromeは普通、最新版に自動アップデートされるため、開発者としては困る場合があります。敢えて古いバージョンでテストしたい場合に、複数バージョンの共存が難しくなるためです。Firefoxならインストールフォルダーを変えて、「更新に関する設定」をいじると、自動更新されなくなりますが、Google Chromeの場合はできません。

●1.インストーラの入手方法
▼バージョン20.0.1132.57の場合
http://dl.google.com/edgedl/chrome/win/20.0.1132.57_chrome_installer.exe

というようなリンクになっています。

▼バージョン21.0.1180.60の場合
http://dl.google.com/edgedl/chrome/win/21.0.1180.60_chrome_installer.exe

URLの法則性は自明だと思いますが、古すぎるファイルは削除されますので404エラーになります。また、ダウンロードしたファイルが723KBの場合は、エラーです。

どのようなバージョンのGoogle Chromeが存在するかどうかは、アクセスログなどで確かめてください。

●2.圧縮解凍ソフト7-Zipで開きます。
7-Zipが未インストールの場合は、こちらからダウンロードしてください。

20.0.1132.57_chrome_installer.exeをエクスプローラで右クリックして、「開く」を選択してください。


●3.chrome.7zをダブルクリックで開きます。


●4.Chrome-binをダブルクリックで開きます。


●5.「20.0.1132.57」というフォルダーを選択しつつ、コピーボタンをクリックします。


●6.コピー先のパスを選択してください。


●7.chrome.exeを選択しつつ、コピーボタンをクリックします。


●8.「5.」「6.」でコピーしたフォルダー「20.0.1132.57」にchrome.exeがコピーされるようにします。


●9.これで準備は完了です。7-Zipは終了してください。また、Google Chromeのウインドウが一つも開いていない状態にしてください。

●10. エクスプローラで「20.0.1132.57」フォルダーを開き、その中のchrome.exeをダブルクリックしてください。下記のようなダイアログが表示されますが、OKボタンを押してください。



●11. Google Chromeが起動したら、ツールバーのレンチマークをクリックして、「Google Chromeについて」をクリックして下さい。



●12. 確かに古いバージョンになっていることを確認してください。「更新サーバにアクセスできません」となっていれば、勝手にアップデートされず、かえって好都合です。



開発者の方は、サーバから古いファイルが消される前に、こまめにダウンロードしておいたほうがいいですね。




| | コメント (1) | トラックバック (0)

2012/08/02

デュアルモニター(複数モニター)+Google ChromeでYoutubeのフルスクリーンがすぐに解除される場合

先ほど、デュアルモニターをJavaScriptで検出する方法は存在する?の記事にも書いた「デュアルモニター(複数モニター)」ですが、ちょうど今、Google Chromeの一部ユーザーの間で、デュアルモニターの環境で、何かの作業をもう一つのモニターで行うと、Youtubeのフルスクリーンがすぐに解除される不具合が発生していることが多数報告されています。

●Full Screen automatically exit by Flash Player for Dual Monitor
http://code.google.com/p/chromium/issues/detail?id=139995

●Youtube will not stay full screen in 1st monitor while working on second
http://code.google.com/p/chromium/issues/detail?id=139465

●Flash video full screen displays on wrong monitor
http://code.google.com/p/chromium/issues/detail?id=137523

3つ目のリンクはオリジナルのPOST内容からずれてきていているのですが、解決方法はこの議論の10番に書いてあるように、pepflashplayer.dllを無効にすることです。

pepflashplayer.dllを無効にする具体的な方法はこちらを参照してください。

●Google Chrome での使用に関するよくある質問(Flash Player)
http://kb2.adobe.com/jp/cps/854/cpsid_85404.html

●Adobe Flash Player プラグイン - Chrome OS ヘルプ
http://support.google.com/chromeos/bin/answer.py?hl=ja&answer=108086

にも掲載されているのですが、Google Chromeでは、ブラウザに統合されたFlash Player(ブラウザの更新と同時にFlash Playerも更新される。)と元々、Adobe社のサイトからダウンロード・インストールしたFlashの両方が同時に存在しています。 NPSWF32.dllやNPSWF32で始まりバージョン番号のついたdllはシステムにインストールされているプラグインですが、pepflashplayer.dllやgcswf32.dllはGoogle Chrome内蔵のFlashプラグインです。

pepflashplayer.dllやgcswf32.dllの違いは正直よく分からないのですが、Youtubeのfullscreen問題の原因はpepflashplayer.dllで間違いなさそうです。私も有効・無効を切り替えてテストしてみましたが、確認できました。

実は、私の開発中のアプリケーションがChrome 21になって動かなくなったので調べてみたら、Flashのバージョンが11.3 r31になっており、今までは11.3 r300だったのに、何で数字が減ったの? ということで調べていったら、pepflashplayer.dllが原因と分かった次第です。pepflashplayer.dllが3つのdllファイルの中でトップにリストアップされるようになっていて、navigator.pluginsから調べられるファイル名で、flash用dllファイルがpepflashplayer.dllになっている場合に限り問題が発生するとわかりました。私の環境では3台で3台ともそうだったので、これだとほとんどの環境で問題が発生しているのだろうか?と危惧したのですが、調べてみるとpepflashplayer.dllは3.5%ほどしかいませんでした。

どういう場合に、pepflashplayer.dllが有効になっているのか(flash関連のdllファイルで先頭にリストアップされるのか)は不明です。試しに、Google Chromeのバージョン20をインストールしてみたところ、pepflashplayer.dllは存在するものの、2番目でした(gcswf32.dllがトップでした)。だから問題が無かったようです。バージョン21にアップグレードすることでpepflashplayer.dllが先頭にリストアップされる傾向を生み出す何かがあるのでしょうかね。

そもそも、「Chrome に統合されている Adobe Flash Player プラグイン」としてgcswf32.dllとpepflashplayer.dllの2種類もあるのはなぜなのでしょうかね。謎です。

| | コメント (0) | トラックバック (0)

デュアルモニターをJavaScriptで検出する方法は存在する?

仕事の関係で、デュアルモニター(複数モニター)でのテストが必要となり、AmazonでI-O DATA USB接続外付グラフィックアダプター 「USBグラフィック」 デジタル&アナログ対応モデル USB-RGB/D2を買いました。また、モニターはそれまで19型の1440×900のモニターを使っていたのですが、I-O DATA LEDバックライト採用 超解像技術搭載 21.5型ワイド液晶ディスプレイ LCD-MF224XBRを買ったのですが、モニターの高さはちょうど同じぐらいです。解像度は1920×1080に跳ね上がったので、かなり広く感じます。

仕事の内容には直接は役立った無かったのですが、ただ今まで知らなかったことがたくさん分かりました。また、確かに複数のモニターがあると、IEとFirefoxでの同時テストなどでも役立ちそうです。

JavaScriptでデュアルモニターかどうかを判断する方法についていろいろ調べてみましたが、よく分かりませんでした。デュアルモニターかどうかを判断する必要十分条件をJavaScriptで求めることは不可能かもしれません。

ただし、「少なくとも、この条件を満たせば、デュアルモニターを使っている可能性が高いだろう」という十分条件は求められそうです。

  • (Aパターン)window.screenLeft(IE/Google Chrome用)、window.screenX(Firefox用)を調べて、マイナスの値であれば、デュアルモニターである。
    (メインモニターが右側にあり、左のサブモニターにブラウザ・ウインドウがある場合など。)

  • (Bパターン)window.screenLeft(IE/Google Chrome用)、window.screenX(Firefox用)を調べて、screen.widthと比較して、screen.widthの値より大きければ、デュアルモニターである。
    (メインモニターが左側にあり、右のサブモニターにブラウザ・ウインドウがある場合など。)
というような感じです。

ただし、少し調べれば分かりますが、Firefoxの場合、モニターが一つでも左上の端にブラウザ・ウインドウが位置すると、x座標が-8、y座標が-8になるようです。ですから、その点を考慮したJavaScriptが下記になります。






screen.widthやscreen.heightで求められるモニターの解像度は、IEと非IE系ブラウザ(FirefoxやGoogle Chrome)などでは挙動が違うみたいです。IEでは、ブラウザ・ウインドウが位置する場所に限らず、つまり、メインモニター上に存在しようが、サブモニター上に存在しようが、あくまでもメインモニターで使用されているモニターの解像度を表示します。

一方、FirefoxやGoogle Chromeなどの場合は、そのブラウザ・ウインドウが存在するモニターの解像度です。両モニターにまたがって存在する場合は、「だいたい」どちらのウインドウに比重が大きくかかっているかで、どちらのモニターの解像度を表示するかを決まているみたいです。IEの挙動はOSと一体化したブラウザであることが影響しているのかもしれません。

また、Aパターン・Bパターン、どちらのパターンが多いかというと、Bパターンが1.5倍ぐらい多かったです。つまり、メインモニターが左側にあり、右のサブモニターにブラウザ・ウインドウがある場合「など」です。「など」としているのは、いろいろな理由で、物理的に右か左かは本当のところはわからないためです。

▼上記JavaScriptコードの限界点
・上記コードは、デュアルモニターであったとしても、普通に、メインのモニターにウインドウを表示させている限り、検出不可能です。しかし、私が調べたところ、上記コードでも約4%はデュアルモニターであることは確実という結果になりました。ですから、実際はそれ以上なのでしょう。これはかなり意外でした、私としては。

▼応用編
デュアルモニターの存在を考えた場合、JavaScriptのwindow.openもwindow.screenLeftやwindow.screenXを考慮した方が良いことになります。そうでないと、サブのモニターに表示したブラウザ・ウインドウのリンクをクリックしたのに、メインのモニターにサブウインドウが表示されるみたいなことが起こります。

Yahoo! Japan(デュアルモニターの存在を一切考慮しない、一般的なJavaScript・window.open)

Yahoo! Japan(デュアルモニターかどうかを考慮したJavaScript・window.open)

上記コードで、サブモニターに親ウインドウが存在する場合は、サブモニターに子ウインドウが表示されますが、サブモニターの(0,0)の座標に表示されるとは限らないようなので、もう少し改良しないといけないみたいです。

| | コメント (0) | トラックバック (0)

« 2012年6月 | トップページ | 2012年10月 »