<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>エスキュービズム ラボ Blog</title>
	<atom:link href="http://labs.s-cubism.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://labs.s-cubism.com/blog</link>
	<description>エンジニアの活動報告などなど</description>
	<pubDate>Fri, 21 Nov 2008 02:06:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>ja</language>
			<item>
		<title>オープンソースライセンスについて</title>
		<link>http://labs.s-cubism.com/blog/2008/11/21/56/</link>
		<comments>http://labs.s-cubism.com/blog/2008/11/21/56/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 02:06:14 +0000</pubDate>
		<dc:creator>goto</dc:creator>
		
		<category><![CDATA[告知]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=56</guid>
		<description><![CDATA[弊社でもオープンソースのソフトウェアであるEC-CUBEのカスタマイズを手がけているわけですが、
オープンソース　＝　ソースコードが公開されている　＝　何でもやっていい
というわけではありません。
オープンソースのソフトウェアには、それぞれライセンスが設定されており、使用・改変・再配布などについては、この制限を受けるわけです。
「制限」と聞いて、「え！？」と驚いた方もいるかもしれませんが、多くのオープンソース・ライセンスにおいては、

著作権表示を維持すること
無保証

の2点と、他いくつかの規制があるだけです。
当たり前ですけど、「ソースコードの改変不可」なんて制限はついていないのでご安心を。
以下、主要なものをいくつか紹介。

■MIT License (X11 License)
上記2点のみの、非常に緩いライセンス。X Window Systemで使用されている。
■BSDライセンス
これも上記2点のみの緩いライセンス。
できた当初は「宣伝条項」という、派生物の広告に初期開発者を表示することが条件として組み込まれていたが、現在は修正され、この条項は削除されている。
■GNU General Public License (GPL)
非常に多くのソフトで使われているライセンス。
カスタマイズした派生物を配布する際にもGPLを適用しなければならない。
弊社のカスタマイズしているEC-CUBEもこれ。
■Apache Software License
ソフトウェアに Apache License のコードが使われていることを知らせる文言を入れなければならない。
■PHP License
・派生物の名称に「PHP」という名称を含めないこと
・PHPが含まれている、という旨の表示を含むこと
SNSサイトを構築できるOpenPNEはこれです。
他にも色々あるので、興味のある方は調べてみてください。
で、結構扱いに注意しなければならないのが、「GPL」です。
これは、派生物に関しても、必ずGPLにしなければならないので、カスタマイズしたものを配布・販売する際に、独自のライセンスを設定してはいけません。
なので、仮に販売することになった場合、必ずソースコードをセットで販売する必要があるわけです。
また、Webサービスを公開する場合は、自らの所有する特定のサーバに実行ファイルを置き、ユーザはそこにアクセスして使用しているだけなので、「配布」にはあたらず、特にソースコードを公開する必要はないとのこと。
ただ、GPLのソフトを改変したものを組み込んだハードを販売した場合、ライセンスに違反することになり、ソースコードを公開しなければならないので、注意が必要なようです。
詳しいFAQが本家のサイトにあるので、気になる方は参照してみてください。
http://www.gnu.org/licenses/gpl-faq.ja.html
]]></description>
			<content:encoded><![CDATA[<p>弊社でもオープンソースのソフトウェアであるEC-CUBEのカスタマイズを手がけているわけですが、</p>
<p>オープンソース　＝　ソースコードが公開されている　＝　何でもやっていい</p>
<p>というわけではありません。<br />
オープンソースのソフトウェアには、それぞれライセンスが設定されており、使用・改変・再配布などについては、この制限を受けるわけです。<br />
「制限」と聞いて、「え！？」と驚いた方もいるかもしれませんが、多くのオープンソース・ライセンスにおいては、</p>
<ul>
<li>著作権表示を維持すること</li>
<li>無保証</li>
</ul>
<p>の2点と、他いくつかの規制があるだけです。<br />
当たり前ですけど、「ソースコードの改変不可」なんて制限はついていないのでご安心を。</p>
<p>以下、主要なものをいくつか紹介。<br />
<span id="more-56"></span></p>
<p>■MIT License (X11 License)<br />
上記2点のみの、非常に緩いライセンス。X Window Systemで使用されている。</p>
<p>■BSDライセンス<br />
これも上記2点のみの緩いライセンス。<br />
できた当初は「宣伝条項」という、派生物の広告に初期開発者を表示することが条件として組み込まれていたが、現在は修正され、この条項は削除されている。</p>
<p>■GNU General Public License (GPL)<br />
非常に多くのソフトで使われているライセンス。<br />
カスタマイズした派生物を配布する際にもGPLを適用しなければならない。<br />
弊社のカスタマイズしているEC-CUBEもこれ。</p>
<p>■Apache Software License<br />
ソフトウェアに Apache License のコードが使われていることを知らせる文言を入れなければならない。</p>
<p>■PHP License<br />
・派生物の名称に「PHP」という名称を含めないこと<br />
・PHPが含まれている、という旨の表示を含むこと<br />
SNSサイトを構築できるOpenPNEはこれです。</p>
<p>他にも色々あるので、興味のある方は調べてみてください。</p>
<p>で、結構扱いに注意しなければならないのが、「GPL」です。<br />
これは、派生物に関しても、必ずGPLにしなければならないので、カスタマイズしたものを配布・販売する際に、独自のライセンスを設定してはいけません。<br />
なので、仮に販売することになった場合、必ずソースコードをセットで販売する必要があるわけです。<br />
また、Webサービスを公開する場合は、自らの所有する特定のサーバに実行ファイルを置き、ユーザはそこにアクセスして使用しているだけなので、「配布」にはあたらず、特にソースコードを公開する必要はないとのこと。</p>
<p>ただ、GPLのソフトを改変したものを組み込んだハードを販売した場合、ライセンスに違反することになり、ソースコードを公開しなければならないので、注意が必要なようです。</p>
<p>詳しいFAQが本家のサイトにあるので、気になる方は参照してみてください。<br />
<a href="http://www.gnu.org/licenses/gpl-faq.ja.html">http://www.gnu.org/licenses/gpl-faq.ja.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/11/21/56/feed/</wfw:commentRss>
		</item>
		<item>
		<title>uamobileを使ってみた</title>
		<link>http://labs.s-cubism.com/blog/2008/11/17/55/</link>
		<comments>http://labs.s-cubism.com/blog/2008/11/17/55/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 11:58:40 +0000</pubDate>
		<dc:creator>ishii</dc:creator>
		
		<category><![CDATA[プログラミング]]></category>

		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=55</guid>
		<description><![CDATA[突然ですが、Pythonライブラリのuamobileを使ってみました。
記事) http://d.hatena.ne.jp/perezvon/20081117/
DL) http://pypi.python.org/pypi/uamobile/
マニュアル的記事) http://labs.unoh.net/2007/08/python_3.html
Django上でこんな風↓に動作確認

# views.py に追加
def mbtest(request):
    from uamobile import detect
    d = detect({'HTTP_USER_AGENT': request.META['HTTP_USER_AGENT']})
    return HttpResponse(
        &#8221;&#8217;&#60;html&#62;&#8221;&#8217;
        &#8221;&#8217;&#60;body&#62;&#8221;&#8217;
        &#8221;&#8217;&#60;p&#62;user_agent: %s&#60;/p&#62;&#8221;&#8217;
     [...]]]></description>
			<content:encoded><![CDATA[<p>突然ですが、Pythonライブラリのuamobileを使ってみました。</p>
<p>記事) http://d.hatena.ne.jp/perezvon/20081117/<br />
DL) http://pypi.python.org/pypi/uamobile/<br />
マニュアル的記事) http://labs.unoh.net/2007/08/python_3.html</p>
<p>Django上でこんな風↓に動作確認<br />
<code><br />
# views.py に追加<br />
def mbtest(request):<br />
    from uamobile import detect<br />
    d = detect({'HTTP_USER_AGENT': request.META['HTTP_USER_AGENT']})<br />
    return HttpResponse(<br />
        &#8221;&#8217;&lt;html&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;body&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;p&gt;user_agent: %s&lt;/p&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;p&gt;is_docomo: %s&lt;/p&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;p&gt;is_ezweb: %s&lt;/p&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;p&gt;is_softbank: %s&lt;/p&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;p&gt;is_nonmobile: %s&lt;/p&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;p&gt;model: %s&lt;/p&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;/body&gt;&#8221;&#8217;<br />
        &#8221;&#8217;&lt;/html&gt;&#8221;&#8217; % (d, d.is_docomo(), d.is_ezweb(), d.is_softbank(), d.is_nonmobile(), d.model)<br />
    )<br />
</code></p>
<p>地味だけど（失礼）、便利なライブラリですね。</p>
<p> * * *</p>
<p>時に、特にモバイル案件がある訳ではなかったのですが・・・</p>
<p>（起）DjangoでISO-2022-JPでメールが送信できない<br />
　↓<br />
（承）MS Outlookでもutf-8でメールが見れるじゃないか<br />
　↓<br />
（転）何か困ることあるの？<br />
　↓<br />
（転）携帯へのメール送信で困るよね<br />
　↓<br />
（転転転）<br />
　↓<br />
（結）今日、pypiに登録されたというuamobileでも使ってみよう</p>
<p>・・・と、このような理由らしき理由が無い理由から使ってみることになりました。<br />
今は試して良かったと思っています。<br />
月曜日の集中力の無さがなせる業とも言えますね！</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/11/17/55/feed/</wfw:commentRss>
		</item>
		<item>
		<title>無線LANの規格を再整理</title>
		<link>http://labs.s-cubism.com/blog/2008/11/11/54/</link>
		<comments>http://labs.s-cubism.com/blog/2008/11/11/54/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 01:40:36 +0000</pubDate>
		<dc:creator>みー</dc:creator>
		
		<category><![CDATA[告知]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=54</guid>
		<description><![CDATA[先日、ヤマダ電気のワゴンセールで無線LANルータを衝動買いしてしまった。
まあ、ネットの最安値よりも3000円安かったので良しとしよう。
ルータの箱にはデカデカと「スピード最大 300M」と書いてあるんだけど、「これって何だ？」と思ったのでこれを機会にザックリと無線LANの規格について調べてみた。
無線LANで知っておくべきことは大きく分けて2つ、「無線方式」と「暗号化方式」だろう。
【無線LANの方式】
いくつかの方式があるらしいが、IEEE 802.11シリーズが最も広く普及している。
また Wi-Fi と呼ばれる事もあるけど、これは別団体が認証している名称。
かなり乱暴に言ってしまえば一般的に

無線LANといえば、IEEE 802.11シリーズを指す
Wi-Fiというのは、無線LANの1種

と思って良いだろう。
IEEE 802.11シリーズには主に b、a、g、n の4つがある。
他には「無し」とか「i」とか「j」などもあるけど、市販製品ではほとんど見かけない。
これらの違いを理解するのは 【周波数帯】 と 【速度】 がポイントになる。

【周波数帯】

b,g    2.4GHz
a     5GHz
n     2.4GHzと5GHzの両方

【速度】

b     11Mbps
a     54Mbps
g     54Mbps
n     300Mbps

★ 電波干渉
なお、最も普及している無線LANの周波数帯は2.4GHzである。
これは電子レンジ（2.45GHz）と重なるので、電子レンジの影響を受けしまうので要注意。
例えば、無線LAN使用中に近くで電子レンジを使ったりすると、ネットワークが切断されたりする。
続いて、無線LANの暗号化方式を取り上げる前に、【SSID】について説明しておこう。
SSIDとは、カンタンに言ってしまえば無線LANを識別するための「名前」である。
無線LANでの接続はこの「名前」がわからないと接続できず、無線LAN（親機）の一般的な設定だと公開状態になっている。
（ワイヤレスネットワークが見つかりました、と一覧表示される例のヤツだ）
このSSIDを認証代わりに使えるかというと…
仮に非公開状態にしておいても、SSIDは暗号化されずにやり取りするので近くで誰かがつないでいるとカンタンにSSIDがバレてしまう。
つまりSSIDを非公開状態にしても本格的なセキュリティ上はあまり意味がない。
【無線LANの暗号化方式】
無線LANの暗号化方式は、3種類「WEP」「WPA」「WPA2」を知っておこう。
☆WEP

RC4という共有鍵暗号方式を利用
無線LAN初期の暗号化規格
先日、数秒で暗号解読可能な研究発表もあったが以前から脆弱性の指摘多数

☆WPA

TKIP暗号化方式を利用
TKIPというのはTemporal Key Integrity Protocolの頭文字で動的に鍵を変更する
非常に強固、だがこれまた数日前に暗号解読に成功したという発表があった

☆WPA2

AES暗号化方式を採用
WPAと機能面で大きな違いはない
標準化に時間がかかっていたのでWPAが先に発表され、より強固なWPA2が後から制定された

カンタンに言ってしまえば、WEPは昔からあって対応機器も豊富だが、セキュリティの問題があって勧められない。ところが任天堂の DS が実はWEPしか対応していないため、ルータによっては2つの認証が使えたりする。
セキュリティを高めるのであれば、SSIDを非公開状態にし、WPAを用いて、複雑なパスワードを設定しておくのが現在できうるベターな方法なようだ。
もちろん、無線LANの先につながるサーバやPCのファイアウォールなどもぬかりなく設定しておこう。
 
以下、参考までに無線LAN方式について補足説明。
（出典：Wikipedia）
【b】 対応機器の普及：1999年～
標準化直前、アップルが AirPort という無線LAN対応機器を100ドル以下で発表。市場に衝撃を与えて、一気に普及。
なお、日本では AirPort という商標を取られていたので、AirMacという名称が使われている。
【a】 対応機器の普及：2002年～
互換性にとらわれることなく最新技術を取り入れて高速化したもの。
bとは違い、5GHz帯を使うが…日本では移動体衛星通信システムに使われているのでイロイロと制限がある。
日本でも問題ない規格にしようよ、ということで IEEE 802.11j というものが新たに規定されている。
なお、jというのはJapanのjではなく、たまたまアルファベット順につけたらそうなったらしい。
【g】 対応機器の普及：2003年～
b を高速にしたもの。
広く普及している b と互換性があって、b用の機器であればbモードで機能する。
他の機器に干渉される可能性が高いので、実行速度は a に負けると言われている。
【n】 対応機器の普及：2005年～
n は 来年7月（9月に遅れるみたい）に策定予定の規格。
最大通信速度 300Mbps、実効速度で100Mbps以上を実現する。
アップル社は「前世代の 802.11g ワイヤレスネットワークの5倍のデータ転送速度と2倍の通信範囲」と解説している。IEEE 802.11aやIEEE 802.11b、IEEE 802.11gとの相互接続も可能。
2005年2月頃から、策定中ながらIEEE 802.11nに準拠する可能性があるような、MIMO技術を使用し実効速度100Mbpsを謳った製品が各社より発表されている。
]]></description>
			<content:encoded><![CDATA[<p>先日、ヤマダ電気のワゴンセールで無線LANルータを衝動買いしてしまった。<br />
まあ、ネットの最安値よりも3000円安かったので良しとしよう。</p>
<p>ルータの箱にはデカデカと「スピード最大 300M」と書いてあるんだけど、「これって何だ？」と思ったのでこれを機会にザックリと無線LANの規格について調べてみた。</p>
<p>無線LANで知っておくべきことは大きく分けて2つ、「無線方式」と「暗号化方式」だろう。</p>
<p><strong>【無線LANの方式】</strong></p>
<p>いくつかの方式があるらしいが、IEEE 802.11シリーズが最も広く普及している。<br />
また Wi-Fi と呼ばれる事もあるけど、これは別団体が認証している名称。</p>
<p>かなり乱暴に言ってしまえば一般的に</p>
<ul>
<li>無線LANといえば、IEEE 802.11シリーズを指す</li>
<li>Wi-Fiというのは、無線LANの1種</li>
</ul>
<p>と思って良いだろう。</p>
<p>IEEE 802.11シリーズには主に b、a、g、n の4つがある。<br />
他には「無し」とか「i」とか「j」などもあるけど、市販製品ではほとんど見かけない。</p>
<p>これらの違いを理解するのは 【周波数帯】 と 【速度】 がポイントになる。</p>
<p><span id="more-54"></span></p>
<p>【周波数帯】</p>
<ul>
<li>b,g    2.4GHz</li>
<li>a     5GHz</li>
<li>n     2.4GHzと5GHzの両方</li>
</ul>
<p>【速度】</p>
<ul>
<li>b     11Mbps</li>
<li>a     54Mbps</li>
<li>g     54Mbps</li>
<li>n     300Mbps</li>
</ul>
<p>★ 電波干渉<br />
なお、最も普及している無線LANの周波数帯は2.4GHzである。<br />
これは電子レンジ（2.45GHz）と重なるので、電子レンジの影響を受けしまうので要注意。<br />
例えば、無線LAN使用中に近くで電子レンジを使ったりすると、ネットワークが切断されたりする。</p>
<p>続いて、無線LANの暗号化方式を取り上げる前に、【SSID】について説明しておこう。</p>
<p>SSIDとは、カンタンに言ってしまえば無線LANを識別するための「名前」である。</p>
<p>無線LANでの接続はこの「名前」がわからないと接続できず、無線LAN（親機）の一般的な設定だと公開状態になっている。<br />
（ワイヤレスネットワークが見つかりました、と一覧表示される例のヤツだ）</p>
<p>このSSIDを認証代わりに使えるかというと…<br />
仮に非公開状態にしておいても、SSIDは暗号化されずにやり取りするので近くで誰かがつないでいるとカンタンにSSIDがバレてしまう。<br />
つまりSSIDを非公開状態にしても本格的なセキュリティ上はあまり意味がない。</p>
<p><strong>【無線LANの暗号化方式】</strong></p>
<p>無線LANの暗号化方式は、3種類「WEP」「WPA」「WPA2」を知っておこう。</p>
<p>☆WEP</p>
<ul>
<li>RC4という共有鍵暗号方式を利用</li>
<li>無線LAN初期の暗号化規格</li>
<li>先日、数秒で暗号解読可能な研究発表もあったが以前から脆弱性の指摘多数</li>
</ul>
<p>☆WPA</p>
<ul>
<li>TKIP暗号化方式を利用</li>
<li>TKIPというのはTemporal Key Integrity Protocolの頭文字で動的に鍵を変更する</li>
<li>非常に強固、だがこれまた数日前に暗号解読に成功したという発表があった</li>
</ul>
<p>☆WPA2</p>
<ul>
<li>AES暗号化方式を採用</li>
<li>WPAと機能面で大きな違いはない</li>
<li>標準化に時間がかかっていたのでWPAが先に発表され、より強固なWPA2が後から制定された</li>
</ul>
<p>カンタンに言ってしまえば、WEPは昔からあって対応機器も豊富だが、セキュリティの問題があって勧められない。ところが任天堂の DS が実はWEPしか対応していないため、ルータによっては2つの認証が使えたりする。</p>
<p>セキュリティを高めるのであれば、SSIDを非公開状態にし、WPAを用いて、複雑なパスワードを設定しておくのが現在できうるベターな方法なようだ。<br />
もちろん、無線LANの先につながるサーバやPCのファイアウォールなどもぬかりなく設定しておこう。</p>
<p> </p>
<p>以下、参考までに無線LAN方式について補足説明。</p>
<p>（出典：Wikipedia）</p>
<p>【b】 対応機器の普及：1999年～<br />
標準化直前、アップルが AirPort という無線LAN対応機器を100ドル以下で発表。市場に衝撃を与えて、一気に普及。<br />
なお、日本では AirPort という商標を取られていたので、AirMacという名称が使われている。</p>
<p>【a】 対応機器の普及：2002年～<br />
互換性にとらわれることなく最新技術を取り入れて高速化したもの。<br />
bとは違い、5GHz帯を使うが…日本では移動体衛星通信システムに使われているのでイロイロと制限がある。<br />
日本でも問題ない規格にしようよ、ということで IEEE 802.11j というものが新たに規定されている。<br />
なお、jというのはJapanのjではなく、たまたまアルファベット順につけたらそうなったらしい。</p>
<p>【g】 対応機器の普及：2003年～<br />
b を高速にしたもの。<br />
広く普及している b と互換性があって、b用の機器であればbモードで機能する。<br />
他の機器に干渉される可能性が高いので、実行速度は a に負けると言われている。</p>
<p>【n】 対応機器の普及：2005年～<br />
n は 来年7月（9月に遅れるみたい）に策定予定の規格。<br />
最大通信速度 300Mbps、実効速度で100Mbps以上を実現する。<br />
アップル社は「前世代の 802.11g ワイヤレスネットワークの5倍のデータ転送速度と2倍の通信範囲」と解説している。IEEE 802.11aやIEEE 802.11b、IEEE 802.11gとの相互接続も可能。</p>
<p>2005年2月頃から、策定中ながらIEEE 802.11nに準拠する可能性があるような、MIMO技術を使用し実効速度100Mbpsを謳った製品が各社より発表されている。</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/11/11/54/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQueryでもはまるクロスブラウザ問題まとめ</title>
		<link>http://labs.s-cubism.com/blog/2008/11/10/53/</link>
		<comments>http://labs.s-cubism.com/blog/2008/11/10/53/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 02:18:16 +0000</pubDate>
		<dc:creator>hosoda</dc:creator>
		
		<category><![CDATA[プログラミング]]></category>

		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=53</guid>
		<description><![CDATA[IEとfirefoxなどのブラウザ間でjavascriptの仕様が違うというクロスブラウザ問題。最近はjQueryなどのライブラリを用いることによって、その違いをライブラリが吸収し、開発が容易になっています。しかし、残念ながら、jQueryを使っても、結構、クロスブラウザ問題にはまってしまいます。以下、そのようなはまった点についてまとめみます。
１．連想配列の最後のカンマ。firefoxだと無視されますが、IEだとエラーになります(例)。分かっていても、ついやってしまいます。
２．width/heightの解釈の違い。前回のブログにも詳細が書いてあります。jQueryのwidth()/height()でもその違いは吸収できません。前回のブログにあるように、DOCTYPEをきちんと指定するしかないようです。
３．z-Indexの解釈の違い。firefoxではz-Indexが最優先なのに対し、IEではz-Indexがhtmlの構造に依存します（参考）。
４．jsonpのレスポンスヘッダ。IEだと&#8217;text/html&#8217;にすると受け付けません。サーバーサイドで、&#8217;application/json;charset=utf-8&#8242;などにする必要があります（参考）。
５．forEachやmapなどのjavascript1.6の新機能。基本的にはIEで使えません。IEで使うにはfirefoxのページで公開されてる互換性パッチ（例）をソースに組み込む必要があります。
６．Canvas。IE以外ではデフォルトで使用できますが、IEで使用するには、ExploreCanvasのようなライブラリを読み込む必要があります（参考）。ただし、ExploreCanvasでは多少の機能制限があります。
７．jQueryのeventhelpersにないイベントに注意。特にmouseenter/leaveです。jqueryでbind(&#8217;mouseenter&#8217;,fn)などで呼び出せますが、IEとfirefoxで違います。IEだとイベント発生のオリジナルの子要素が取得できません(参考)。IEでの子要素取得には、mouseenter/leaveを拡張したjQueryのmouseover/outによって可能ですが、mouseoverのイベントは子要素に入ったとき全てにおいて発動するので、もとのmouseenterと挙動が異なるので注意が必要です。
とりあえず以上です。あと、ライブラリにある関数は一通りチェックして、極力使用するようにしたほうがいいと思います。何かしらクロスブラウザ対応しているので。
]]></description>
			<content:encoded><![CDATA[<p>IEとfirefoxなどのブラウザ間でjavascriptの仕様が違うというクロスブラウザ問題。最近は<a href="http://semooh.jp/jquery/">jQuery</a>などのライブラリを用いることによって、その違いをライブラリが吸収し、開発が容易になっています。しかし、残念ながら、jQueryを使っても、結構、クロスブラウザ問題にはまってしまいます。以下、そのようなはまった点についてまとめみます。</p>
<p>１．連想配列の最後のカンマ。firefoxだと無視されますが、IEだとエラーになります(<a href="http://d.hatena.ne.jp/gratt/20080812/1218530670">例</a>)。分かっていても、ついやってしまいます。</p>
<p>２．width/heightの解釈の違い。<a href="http://labs.s-cubism.com/blog/2008/10/17/51/#more-51">前回のブログ</a>にも詳細が書いてあります。jQueryのwidth()/height()でもその違いは吸収できません。前回のブログにあるように、DOCTYPEをきちんと指定するしかないようです。</p>
<p>３．z-Indexの解釈の違い。firefoxではz-Indexが最優先なのに対し、IEではz-Indexがhtmlの構造に依存します（<a href="http://shirabemono.cocolog-nifty.com/blog/2008/02/iefirefoxzindex_f4bc.html">参考</a>）。</p>
<p>４．jsonpのレスポンスヘッダ。IEだと&#8217;text/html&#8217;にすると受け付けません。サーバーサイドで、&#8217;application/json;charset=utf-8&#8242;などにする必要があります（<a href="http://feedtailor.jp/oishi/2007/07/jquery_getjson_ajax_ie.html">参考</a>）。</p>
<p>５．forEachやmapなどのjavascript1.6の新機能。基本的にはIEで使えません。IEで使うにはfirefoxのページで公開されてる互換性パッチ（<a href="https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Array/forEach">例</a>）をソースに組み込む必要があります。</p>
<p>６．Canvas。IE以外ではデフォルトで使用できますが、IEで使用するには、<a href="http://excanvas.sourceforge.net/">ExploreCanvas</a>のようなライブラリを読み込む必要があります（<a href="http://phpspot.org/blog/archives/2007/04/iejavascriptcan.html">参考</a>）。ただし、ExploreCanvasでは多少の機能制限があります。</p>
<p>７．jQueryの<a href="http://semooh.jp/jquery/api/events/">eventhelpers</a>にないイベントに注意。特にmouseenter/leaveです。jqueryでbind(&#8217;mouseenter&#8217;,fn)などで呼び出せますが、IEとfirefoxで違います。IEだとイベント発生のオリジナルの子要素が取得できません(<a href="http://blog.livedoor.jp/lax34volvic/archives/826159.html">参考</a>)。IEでの子要素取得には、mouseenter/leaveを拡張したjQueryのmouseover/outによって可能ですが、mouseoverのイベントは子要素に入ったとき全てにおいて発動するので、もとのmouseenterと挙動が異なるので注意が必要です。</p>
<p>とりあえず以上です。あと、ライブラリにある関数は一通りチェックして、極力使用するようにしたほうがいいと思います。何かしらクロスブラウザ対応しているので。</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/11/10/53/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CSSとブラウザと</title>
		<link>http://labs.s-cubism.com/blog/2008/10/17/51/</link>
		<comments>http://labs.s-cubism.com/blog/2008/10/17/51/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 08:08:23 +0000</pubDate>
		<dc:creator>goto</dc:creator>
		
		<category><![CDATA[告知]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=51</guid>
		<description><![CDATA[ 
ブラウザといえば昔はIEの独壇場だったわけですが、
最近はFireFoxがシェアを伸ばし、GoogleからはChromなんてものも出て、
クロスブラウザなんて言葉を気にしなければならない時代になってきました。
今回はそんなお話です。

まずは、世の中で使われている主なブラウザとそのシェアから。
W3Counterの集計によると、最新の状況は以下の通り。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
IE7 28.8%
IE6 28.2%
Firefox2 18.7%
Firefox3 11.4%
Safari 2.5%
Opera 1.6%
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
結構IEがFirefoxにシェアを食われています。
ちなみに弊社運営のBB Planetだと、IEのシェアが80%弱、Firefoxが15%強と、IEがかなりがんばっています。
まだまだビジネスユーザはIEを使っている方が多いのでしょう。
で、このIEとFirefoxですが、CSSの解釈に結構大きな違いがあります。
有名なところを挙げると、
border/padding/width(height)の解釈の違いでしょうか。
例えば、CSSで
&#8212;&#8212;&#8212;&#8212;-
border:10px;
padding:10px;
width:100px;
&#8212;&#8212;&#8212;&#8212;-
と設定すると、

Firefoxでは左のようにきちんとと表示されるのに対して、
IEでは右のように、border+padding+widthで100pxになるようにレイアウトが組まれてしまいます。
これだとIEでぴったりになるように作ったのに、Firefoxだとはみ出したり、レイアウトが大きくずれてしまったり、ということが起こってしまいます。
このようなブラウザごとの独自の解釈を避けるために、最近のブラウザには「標準モード」と「互換モード」という2つのモードが搭載されており、これを切り替えることにより、ある程度CSSの解釈をコントロールすることが可能になります。
ちなみに、
標準モード&#8230;W3Cの勧告するCSS標準に基づいた解釈をするモード
互換モード&#8230;以前のバージョンとの互換性を持たせたモード
となっています。
IEはかなり独自の解釈をして動いているので、「互換モード」で動かすと、上記のような事態が発生するわけです。
ではどうやって標準モードで動かすのか。
実は、HTMLの一番最初に宣言する
&#60;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01//EN&#8221;"http://www.w3.org/TR/html4/strict.dtd&#8221;&#62;
この一文が、モード切替のスイッチになっています。
&#8220;-//W3C//DTD HTML 4.01//EN&#8221;
の部分を「公開識別子」と呼び、
この文法を記している文書の置き場を示した、
&#8220;http://www.w3.org/TR/html4/strict.dtd&#8221;
の部分を「システム識別子」と呼びます。
HTML4.01では公開識別子は、
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
HTML 4.01 Strict
HTML 4.01 Transitional
HTML 4.01 Frameset
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
の3種類が準備されており、システム識別子はそれぞれに1つずつ対応しているのですが、
宣言文に入れないことも可能です。
で、それぞれの宣言が、どのモードに対応しているのか、という表が以下。




ブラウザ


システム
識別子


IE6


IE7


Firefox2


Firefox3


Safari


Opera




HTML4.01
Strict


あり


標準


標準


標準


標準


標準


標準




なし


標準


標準


標準


標準


標準


標準




HTML4.01
Transitional


あり


標準


標準


標準


標準


標準


標準




なし


互換


互換


互換


互換


互換


互換




HTML4.01
Frameset


あり


標準


標準


標準


標準


標準


標準




なし


互換


互換


互換


互換


互換


互換




多くのブラウザが標準モードで動くように宣言するのがポイントです。
ただ、それでも細かい解釈の違いは色々と出てきますので、
結局のところは根気強い対処が必要になってきます。
クロスブラウザなサイト作りには根気が必要なようです。
ちなみにXHTMLになってくると少し話が変わってくるので、それはまたの機会に。。。
]]></description>
			<content:encoded><![CDATA[<p><!--[if gte mso 9]><xml> Normal   0      0   2                                                     MicrosoftInternetExplorer4 </xml><![endif]--> <!--[if gte mso 10]></p>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:標準の表;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0mm 5.4pt 0mm 5.4pt;
mso-para-margin:0mm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:Century;}
</style>
<p><![endif]--></p>
<p>ブラウザといえば昔はIEの独壇場だったわけですが、</p>
<p>最近はFireFoxがシェアを伸ばし、GoogleからはChromなんてものも出て、</p>
<p>クロスブラウザなんて言葉を気にしなければならない時代になってきました。</p>
<p>今回はそんなお話です。</p>
<p><span id="more-51"></span></p>
<p>まずは、世の中で使われている主なブラウザとそのシェアから。</p>
<p>W3Counterの集計によると、最新の状況は以下の通り。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>IE7 28.8%</p>
<p>IE6 28.2%</p>
<p>Firefox2 18.7%</p>
<p>Firefox3 11.4%</p>
<p>Safari 2.5%</p>
<p>Opera 1.6%</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>結構IEがFirefoxにシェアを食われています。</p>
<p>ちなみに弊社運営のBB Planetだと、IEのシェアが80%弱、Firefoxが15%強と、IEがかなりがんばっています。</p>
<p>まだまだビジネスユーザはIEを使っている方が多いのでしょう。</p>
<p>で、このIEとFirefoxですが、CSSの解釈に結構大きな違いがあります。</p>
<p>有名なところを挙げると、</p>
<p>border/padding/width(height)の解釈の違いでしょうか。</p>
<p>例えば、CSSで</p>
<p>&#8212;&#8212;&#8212;&#8212;-</p>
<p>border:10px;</p>
<p>padding:10px;</p>
<p>width:100px;</p>
<p>&#8212;&#8212;&#8212;&#8212;-</p>
<p>と設定すると、</p>
<p><a href="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/box.gif"><img class="alignnone size-full wp-image-52" title="box" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/box.gif" alt="" width="500" height="406" /></a></p>
<p>Firefoxでは左のようにきちんとと表示されるのに対して、</p>
<p>IEでは右のように、border+padding+widthで100pxになるようにレイアウトが組まれてしまいます。</p>
<p>これだとIEでぴったりになるように作ったのに、Firefoxだとはみ出したり、レイアウトが大きくずれてしまったり、ということが起こってしまいます。</p>
<p>このようなブラウザごとの独自の解釈を避けるために、最近のブラウザには「標準モード」と「互換モード」という2つのモードが搭載されており、これを切り替えることにより、ある程度CSSの解釈をコントロールすることが可能になります。</p>
<p>ちなみに、</p>
<p>標準モード&#8230;W3Cの勧告するCSS標準に基づいた解釈をするモード</p>
<p>互換モード&#8230;以前のバージョンとの互換性を持たせたモード</p>
<p>となっています。</p>
<p>IEはかなり独自の解釈をして動いているので、「互換モード」で動かすと、上記のような事態が発生するわけです。</p>
<p>ではどうやって標準モードで動かすのか。</p>
<p>実は、HTMLの一番最初に宣言する</p>
<p>&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01//EN&#8221;"http://www.w3.org/TR/html4/strict.dtd&#8221;&gt;</p>
<p>この一文が、モード切替のスイッチになっています。</p>
<p>&#8220;-//W3C//DTD HTML 4.01//EN&#8221;</p>
<p>の部分を「公開識別子」と呼び、</p>
<p>この文法を記している文書の置き場を示した、</p>
<p>&#8220;http://www.w3.org/TR/html4/strict.dtd&#8221;</p>
<p>の部分を「システム識別子」と呼びます。</p>
<p>HTML4.01では公開識別子は、</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>HTML 4.01 Strict</p>
<p>HTML 4.01 Transitional</p>
<p>HTML 4.01 Frameset</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>の3種類が準備されており、システム識別子はそれぞれに1つずつ対応しているのですが、</p>
<p>宣言文に入れないことも可能です。</p>
<p>で、それぞれの宣言が、どのモードに対応しているのか、という表が以下。</p>
<table border="1" cellspacing="0" cellpadding="0" width="541">
<tbody>
<tr>
<td width="68">
<p align="center">ブラウザ</p>
</td>
<td width="68">
<p align="center">システム</p>
<p align="center">識別子</p>
</td>
<td width="68">
<p align="center">IE6</p>
</td>
<td width="68">
<p align="center">IE7</p>
</td>
<td width="68">
<p align="center">Firefox2</p>
</td>
<td width="68">
<p align="center">Firefox3</p>
</td>
<td width="68">
<p align="center">Safari</p>
</td>
<td width="68">
<p align="center">Opera</p>
</td>
</tr>
<tr>
<td rowspan="2" width="68">
<p align="center">HTML4.01</p>
<p align="center">Strict</p>
</td>
<td width="68">
<p align="center">あり</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
</tr>
<tr>
<td width="68">
<p align="center">なし</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
</tr>
<tr>
<td rowspan="2" width="68">
<p align="center">HTML4.01</p>
<p align="center">Transitional</p>
</td>
<td width="68">
<p align="center">あり</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
</tr>
<tr>
<td width="68">
<p align="center">なし</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
</tr>
<tr>
<td rowspan="2" width="68">
<p align="center">HTML4.01</p>
<p align="center">Frameset</p>
</td>
<td width="68">
<p align="center">あり</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
<td width="68">
<p align="center">標準</p>
</td>
</tr>
<tr>
<td width="68">
<p align="center">なし</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
<td width="68">
<p align="center">互換</p>
</td>
</tr>
</tbody>
</table>
<p>多くのブラウザが標準モードで動くように宣言するのがポイントです。</p>
<p>ただ、それでも細かい解釈の違いは色々と出てきますので、</p>
<p>結局のところは根気強い対処が必要になってきます。</p>
<p>クロスブラウザなサイト作りには根気が必要なようです。</p>
<p>ちなみにXHTMLになってくると少し話が変わってくるので、それはまたの機会に。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/10/17/51/feed/</wfw:commentRss>
		</item>
		<item>
		<title>度忘れした時のためのCSS</title>
		<link>http://labs.s-cubism.com/blog/2008/10/03/47/</link>
		<comments>http://labs.s-cubism.com/blog/2008/10/03/47/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 04:05:14 +0000</pubDate>
		<dc:creator>tomizawa</dc:creator>
		
		<category><![CDATA[告知]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=47</guid>
		<description><![CDATA[たまに、デザイン組み込み時になどでうまくいかない時、バックエンドのプログラムばかり組み続けていると
CSSを度忘れしたときのための、基礎的なもの・・・・・
知っている人は知っていることです。
再度おさらい。
paddingやmarginやwidthの解説

繰り返し、同じ画像を使う際

左よせで使う際

気をつけなければいけない点

仮に3列の表を作る際、float：left;
すると、全て上にあがろうとするので、
&#60;div style=“clear　:　left&#8221;&#62;&#60;/div&#62;
を入れる。
プログラム上でかまわないと思われます。
誰かのお役にたてれば、幸い・・・・
]]></description>
			<content:encoded><![CDATA[<p>たまに、デザイン組み込み時になどでうまくいかない時、バックエンドのプログラムばかり組み続けていると</p>
<p>CSSを度忘れしたときのための、基礎的なもの・・・・・</p>
<p>知っている人は知っていることです。</p>
<p>再度おさらい。<span style="font-family: &quot;Times New Roman&quot;;" lang="EN-US"></span></p>
<p><span style="font-family: &quot;Times New Roman&quot;;" lang="EN-US">paddingや</span><span style="font-family: &quot;Times New Roman&quot;; font-size: 12pt;" lang="EN-US">marginやwidthの解説</span></p>
<p><a href="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/a1.jpg"><img class="alignnone size-medium wp-image-48" title="a1" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/a1-300x243.jpg" alt="" width="300" height="243" /></a></p>
<p>繰り返し、同じ画像を使う際</p>
<p><a href="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/a2.jpg"><img class="alignnone size-medium wp-image-49" title="a2" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/a2-300x201.jpg" alt="" width="300" height="201" /></a></p>
<p>左よせで使う際</p>
<p><a href="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/a3.jpg"><img class="alignnone size-medium wp-image-50" title="a3" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/10/a3-300x218.jpg" alt="" width="300" height="218" /></a></p>
<p>気をつけなければいけない点</p>
<div class="O"></div>
<p>仮に3列の表を作る際、float：left;<br />
すると、全て上にあがろうとするので、<br />
&lt;div style=“clear　:　left&#8221;&gt;&lt;/div&gt;<br />
を入れる。<br />
プログラム上でかまわないと思われます。</p>
<p>誰かのお役にたてれば、幸い・・・・</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/10/03/47/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Javascript の デバッグはやっぱり Firefox + Firebug</title>
		<link>http://labs.s-cubism.com/blog/2008/09/25/46/</link>
		<comments>http://labs.s-cubism.com/blog/2008/09/25/46/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 11:08:46 +0000</pubDate>
		<dc:creator>みー</dc:creator>
		
		<category><![CDATA[告知]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=46</guid>
		<description><![CDATA[google が Chrome を発表し、なんだか最近はブラウザのスピード競争がホットな話題になっている。
不思議というか、面白いのが「ブラウザの速度」=「Javascriptの処理速度」というのがいつの間にか当たり前のようになっていることだ。
個人的には Javascript の処理速度よりも、サクっと起動して、メモリ消費量が少なく、滅多に落ちない方が嬉しかったりするのだが…
とはいえ、Javascript（以下、js）の処理速度がそれこそ何十倍も早くなってくると、jsをバリバリと活用したサイトが増えてくるだろう。
jsはなんとも不思議な言語で、何しろ様々なブラウザ上で動作するために、逆に言えば同じコードでも「あっちでは動くけど、こっちでは動かない」といった事が多発する。
そのために、Prototype や jquery といったフレームワークという「枠」を越えて言語そのものを拡張してしまったかのようなライブラリも広く普及している。
こんな展開を見せている言語は他にない気がする。
そこでプログラミング（開発）には欠かせない、jsの「デバッグ」というテーマを取り上げてみよう。
かの有名な小飼弾さんが「まだまだ私にも落とすべき目の鱗がいくらでもあることを教えてくれた」と評していた Head First JavaScript の 11章 に載っているサンプルコードを使って、それぞれのブラウザがどんなエラーメッセージを表示するのか比較してみた。
◆参考図書：Head First JavaScript

サンプルコードは 25行目 に
else if average &#60; 50 {
というコードミスがあるものだ。正しくは
else if (average &#60; 50) {
である。ブラウザは全て WindowsXP 上で確認している。
◆Internet Explorer 6.0
似たようなメッセージを見たことがある人は多いだろう。
エラーがあったことはわかるが、それ以外は全く役に立たない…

◆Firefox 3.0.1
Firebugという有名なアドオンがあるが、ここではブラウザ標準機能を使っている。
エラーの箇所を正確に言い当て、エラーメッセージも英文だけどズバリ正解を指摘している。
さらにメッセージをクリックするとソースウィンドウが開き、エラーの箇所をハイライトしてくれる。

◆Opera 9.52
Firefox同様、エラーの箇所を正確に言い当て、エラーメッセージもぱっと見た感じはわかりにくいが正解だ。
おしいのは、Firefoxのようにソースウィンドウが開かないので、別にテキストエディタを使わないといけないことぐらい。

◆Chrome 0.2.149.30
唯一、ソースファイルの中にエラーメッセージを埋め込んで表示するタイプ。
エラーが起きている場所を正確に特定できる自信の表れだろうか？
メッセージ内容がわかりにくいが、おそらくまだ汎用的なメッセージしか用意されていないからだと思われる。

◆Safari 3.1.2
エラー箇所は正しく指摘してくれたが、エラー内容はイマイチわかりにくい。
メッセージをクリックするとソースが表示されるのは嬉しいけど、メッセージ一覧が消えてしまうので画面切り替えに少し手間がかかる。

今後に期待できそうなのが Chrome だけど、現状では Firefox が JS の開発環境としては一番良さそうだ。
たった1つのケースでの比較だけど、エラー内容の正確さだけではなく、開発者の使いやすさを考慮しても Firefox が一番である。
さらに、おそらく多くの人は Firefox に Firebug というアドオンを入れていると思う。
Firebug はさらに細かなデバッグまで可能なので、「なんだ、やっぱり」といった結論だけど、
Firefox ＋ Firebug
の構成が最強のようだ。
]]></description>
			<content:encoded><![CDATA[<p>google が Chrome を発表し、なんだか最近はブラウザのスピード競争がホットな話題になっている。</p>
<p>不思議というか、面白いのが「ブラウザの速度」=「Javascriptの処理速度」というのがいつの間にか当たり前のようになっていることだ。</p>
<p>個人的には Javascript の処理速度よりも、サクっと起動して、メモリ消費量が少なく、滅多に落ちない方が嬉しかったりするのだが…</p>
<p>とはいえ、Javascript（以下、js）の処理速度がそれこそ何十倍も早くなってくると、jsをバリバリと活用したサイトが増えてくるだろう。</p>
<p>jsはなんとも不思議な言語で、何しろ様々なブラウザ上で動作するために、逆に言えば同じコードでも「あっちでは動くけど、こっちでは動かない」といった事が多発する。</p>
<p>そのために、Prototype や jquery といったフレームワークという「枠」を越えて言語そのものを拡張してしまったかのようなライブラリも広く普及している。</p>
<p>こんな展開を見せている言語は他にない気がする。</p>
<p>そこでプログラミング（開発）には欠かせない、jsの「デバッグ」というテーマを取り上げてみよう。</p>
<p>かの有名な小飼弾さんが<a href="http://blog.livedoor.jp/dankogai/archives/51092934.html" target="_blank">「まだまだ私にも落とすべき目の鱗がいくらでもあることを教えてくれた」</a>と評していた Head First JavaScript の 11章 に載っているサンプルコードを使って、それぞれのブラウザがどんなエラーメッセージを表示するのか比較してみた。</p>
<p>◆参考図書：<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113733/scubism-22" target="_blank">Head First JavaScript</a></p>
<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113733/scubism-22" target="_blank"><img title="514mwrfwmll_sl500_aa240_" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/09/514mwrfwmll_sl500_aa240_.jpg" alt="" /></a></p>
<p>サンプルコードは 25行目 に</p>
<p><span style="color: #06060f; margin-right: 10px;">else if average &lt; 50 {</span></p>
<p>というコードミスがあるものだ。正しくは</p>
<p><span style="color: #06060f; margin-right: 10px;">else if (average &lt; 50) {</span></p>
<p>である。ブラウザは全て WindowsXP 上で確認している。<span id="more-46"></span></p>
<hr />◆Internet Explorer 6.0</p>
<p>似たようなメッセージを見たことがある人は多いだろう。</p>
<p>エラーがあったことはわかるが、それ以外は全く役に立たない…</p>
<p><img title="ie6" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/09/ie6-300x198.png" alt="" /></p>
<hr />◆Firefox 3.0.1</p>
<p>Firebugという有名なアドオンがあるが、ここではブラウザ標準機能を使っている。</p>
<p>エラーの箇所を正確に言い当て、エラーメッセージも英文だけどズバリ正解を指摘している。</p>
<p>さらにメッセージをクリックするとソースウィンドウが開き、エラーの箇所をハイライトしてくれる。</p>
<p><img title="firefox301" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/09/firefox301-300x199.png" alt="" /></p>
<hr />◆Opera 9.52</p>
<p>Firefox同様、エラーの箇所を正確に言い当て、エラーメッセージもぱっと見た感じはわかりにくいが正解だ。</p>
<p>おしいのは、Firefoxのようにソースウィンドウが開かないので、別にテキストエディタを使わないといけないことぐらい。</p>
<p><img title="opera" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/09/opera-300x262.png" alt="" /></p>
<hr />◆Chrome 0.2.149.30</p>
<p>唯一、ソースファイルの中にエラーメッセージを埋め込んで表示するタイプ。</p>
<p>エラーが起きている場所を正確に特定できる自信の表れだろうか？</p>
<p>メッセージ内容がわかりにくいが、おそらくまだ汎用的なメッセージしか用意されていないからだと思われる。</p>
<p><img title="chrome" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/09/chrome-300x200.png" alt="" /></p>
<hr />◆Safari 3.1.2</p>
<p>エラー箇所は正しく指摘してくれたが、エラー内容はイマイチわかりにくい。</p>
<p>メッセージをクリックするとソースが表示されるのは嬉しいけど、メッセージ一覧が消えてしまうので画面切り替えに少し手間がかかる。</p>
<p><img title="safari" src="http://labs.s-cubism.com/blog/wp-content/uploads/2008/09/safari-300x182.png" alt="" /></p>
<hr />今後に期待できそうなのが Chrome だけど、現状では Firefox が JS の開発環境としては一番良さそうだ。</p>
<p>たった1つのケースでの比較だけど、エラー内容の正確さだけではなく、開発者の使いやすさを考慮しても Firefox が一番である。</p>
<p>さらに、おそらく多くの人は Firefox に Firebug というアドオンを入れていると思う。</p>
<p>Firebug はさらに細かなデバッグまで可能なので、「なんだ、やっぱり」といった結論だけど、</p>
<div style="color:#f66;"><strong>Firefox ＋ Firebug</strong></div>
<p>の構成が最強のようだ。</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/09/25/46/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Javascript CSS benchmark</title>
		<link>http://labs.s-cubism.com/blog/2008/09/22/39/</link>
		<comments>http://labs.s-cubism.com/blog/2008/09/22/39/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 13:36:24 +0000</pubDate>
		<dc:creator>hosoda</dc:creator>
		
		<category><![CDATA[プログラミング]]></category>

		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=39</guid>
		<description><![CDATA[今、javascriptが熱いですね。特に、Google Chromeの登場で、javascriptの性能競争に拍車がかかっています。Chromeのjsエンジンv8では、JITコンパイラ方式を用いており、まさに次世代といった感じです。実際、使ってみるとその速さに驚きます。ブログ界隈をみると、そんなに速くなってない部分もあるようですが、実際どうなのでしょうか？開発中のクラウドマップは今はflashで作られているのですが、今後javascriptで書き換えることも考えています。ここでは、その際に必要になってくるDOM要素のアニメーションに関する性能をブラウザ毎に調べてみようと思います。
まず、簡単なベンチマークサイトを作ったので見てください。
こちら
ボタンをクリックすると多数のDOMが横一列に動きます。個々の要素をそれぞれ動かしてるのではなく、親要素のみを動かしています。アニメーションが終わると、経過時間が表示されます。
各要素は、シンプルなもの(primitive)と、ありがちなシチュエーションとして、各丸ボックスにしたもので評価しました。各丸ボックスはさらに、div要素を多数用いて表現するもの(div corners)、画像1枚で表現するもの(1 image)、4枚のコーナー画像を用いて表現するもの(4 images)で、評価しました。要素のCSS操作にはjQueryを用いています。
以下、いくつかのブラウザで各々評価した結果です。Bestは赤で、Worstは青で示してあります。
Firefox 3.0.1
1.3s (primitive)
12.0s (div corners)
1.3s (1 image)
5.5s (4 images)
Chrome 0.2.149.30
1.0s (primitive)
1.6s (div corners)
1.0s (1 image)
1.0s (4 images)
Internet Explore (IE) 8.0
1.6s (primitive)
4.3s (div corners)
1.6s (1 image)
1.7s (4 images)
Opera 9.51
1.6s (primitive)
2.3s (div corners)
1.6s (1 image)
1.6s (4 images)
（使用したマシンはdualcore 2.2GHz程度です。パラメタはベンチマークサイトにある初期値で設定したものです。ただし、ここでは厳密性はあまり求めていないので、数回の試行平均を取っただけの結果です。また、アニメーションの強制Delayがあるので、純粋な性能評価ではないです）
これを見ると、やはりChromeがダントツに速いです。
要素別で見ると、
primitive&#60;1image&#60;4images&#60;div corners
の順で全体的に速くなっています。
また、Firefoxが、要素の子にdiv要素が多数ある場合(div cornersと4images)に極端に遅くなるという結果になりました。primitiveや1imageではFireFoxのほうがIEやOperaより速いのに、div cornersや4imagesではその逆で、しかも圧倒的に悪いです。これはもう、Firefoxの次期バージョンのエンジン（tracemonkey）に期待するしかないのでしょうか…
]]></description>
			<content:encoded><![CDATA[<p>今、javascriptが熱いですね。特に、Google Chromeの登場で、javascriptの性能競争に拍車がかかっています。Chromeのjsエンジンv8では、<a href="http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A3%E3%82%B9%E3%83%88%E3%82%A4%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E6%96%B9%E5%BC%8F" target="_blank">JITコンパイラ方式</a>を用いており、まさに次世代といった感じです。実際、使ってみるとその速さに驚きます。ブログ界隈をみると、そんなに速くなってない部分もあるようですが、実際どうなのでしょうか？開発中の<a href="http://cloudmap.jp">クラウドマップ</a>は今はflashで作られているのですが、今後javascriptで書き換えることも考えています。ここでは、その際に必要になってくるDOM要素のアニメーションに関する性能をブラウザ毎に調べてみようと思います。</p>
<p>まず、簡単なベンチマークサイトを作ったので見てください。</p>
<p><a href="http://cloudmap.jp/tests/js_css_bench/" target="_blank">こちら</a></p>
<p>ボタンをクリックすると多数のDOMが横一列に動きます。個々の要素をそれぞれ動かしてるのではなく、親要素のみを動かしています。アニメーションが終わると、経過時間が表示されます。</p>
<p>各要素は、シンプルなもの(primitive)と、ありがちなシチュエーションとして、各丸ボックスにしたもので評価しました。各丸ボックスはさらに、div要素を多数用いて表現するもの(div corners)、画像1枚で表現するもの(1 image)、4枚のコーナー画像を用いて表現するもの(4 images)で、評価しました。要素のCSS操作にはjQueryを用いています。</p>
<p>以下、いくつかのブラウザで各々評価した結果です。Bestは<span style="color: #ff0000;">赤</span>で、Worstは<span style="color: #3366ff;">青</span>で示してあります。</p>
<p><strong>Firefox 3.0.1</strong><br />
1.3s (primitive)<br />
<span style="color: #3366ff;">12.0s</span> (div corners)<br />
1.3s (1 image)<br />
<span style="color: #3366ff;">5.5s</span> (4 images)</p>
<p><strong>Chrome 0.2.149.30</strong><br />
<span style="color: #ff0000;">1.0s</span> (primitive)<br />
<span style="color: #ff0000;">1.6s</span> (div corners)<br />
<span style="color: #ff0000;">1.0s</span> (1 image)<br />
<span style="color: #ff0000;">1.0s</span> (4 images)</p>
<p><strong>Internet Explore (IE) 8.0</strong><br />
1.6s (primitive)<br />
<span style="color: #3366ff;">4.3s</span> (div corners)<br />
1.6s (1 image)<br />
<span style="color: #3366ff;">1.7s</span> (4 images)</p>
<p><strong>Opera 9.51</strong><br />
1.6s (primitive)<br />
2.3s (div corners)<br />
1.6s (1 image)<br />
1.6s (4 images)</p>
<p>（使用したマシンはdualcore 2.2GHz程度です。パラメタはベンチマークサイトにある初期値で設定したものです。ただし、ここでは厳密性はあまり求めていないので、数回の試行平均を取っただけの結果です。また、アニメーションの強制Delayがあるので、純粋な性能評価ではないです）</p>
<p>これを見ると、やはりChromeがダントツに速いです。</p>
<p>要素別で見ると、</p>
<p>primitive&lt;1image&lt;4images&lt;div corners</p>
<p>の順で全体的に速くなっています。</p>
<p>また、Firefoxが、要素の子にdiv要素が多数ある場合(div cornersと4images)に極端に遅くなるという結果になりました。primitiveや1imageではFireFoxのほうがIEやOperaより速いのに、div cornersや4imagesではその逆で、しかも圧倒的に悪いです。これはもう、Firefoxの次期バージョンのエンジン（tracemonkey）に期待するしかないのでしょうか…</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/09/22/39/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ブックマークレットとは</title>
		<link>http://labs.s-cubism.com/blog/2008/09/12/38/</link>
		<comments>http://labs.s-cubism.com/blog/2008/09/12/38/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 02:34:18 +0000</pubDate>
		<dc:creator>ishii</dc:creator>
		
		<category><![CDATA[プログラミング]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=38</guid>
		<description><![CDATA[ECMAScript3.1標準化の動きやGoogle Chrome リリース等
更にJavaScriptableな世界になりつつある昨今、いかがお過ごしでしょうか？
　
そんな激流の中でも、基礎的な部分に関する知識が最も大事ということで
今回はブックマークレットの仕組みについてをまとめさせていただきました。
　
特に、ブックマークレットについて
・セキュリティ的に非常に危険なシステム
・いつブラウザ側の規制で無くなってもおかしくないシステム
このようなイメージを持っていない方は、読んでいただけるといいかなーと思います。
　
記事は以下のPukiWikiページ（外部）にまとめました。
→ ブックマークレットの解説
　
それでは See you arguments.callee!!
]]></description>
			<content:encoded><![CDATA[<p>ECMAScript3.1標準化の動きやGoogle Chrome リリース等</p>
<p>更にJavaScriptableな世界になりつつある昨今、いかがお過ごしでしょうか？</p>
<p>　</p>
<p>そんな激流の中でも、基礎的な部分に関する知識が最も大事ということで</p>
<p>今回はブックマークレットの仕組みについてをまとめさせていただきました。<br />
　</p>
<p>特に、ブックマークレットについて</p>
<p>・セキュリティ的に非常に危険なシステム</p>
<p>・いつブラウザ側の規制で無くなってもおかしくないシステム</p>
<p>このようなイメージを持っていない方は、読んでいただけるといいかなーと思います。<br />
　</p>
<p>記事は以下のPukiWikiページ（外部）にまとめました。</p>
<p>→ <a href="http://kjirou.sakura.ne.jp/wiki_mirror/index.php?a%2F%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AF%A5%EC%A5%C3%A5%C8%A4%CE%B2%F2%C0%E2" target="_blank">ブックマークレットの解説</a><br />
　</p>
<p>それでは See you arguments.callee!!</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/09/12/38/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ページランクの求め方</title>
		<link>http://labs.s-cubism.com/blog/2008/09/04/36/</link>
		<comments>http://labs.s-cubism.com/blog/2008/09/04/36/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 11:30:27 +0000</pubDate>
		<dc:creator>hosoda</dc:creator>
		
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">http://labs.s-cubism.com/blog/?p=36</guid>
		<description><![CDATA[SEO等でよく耳にするページランクですが、その理論を知っている人って意外と少ないのではないかと思って勉強会のネタに取り上げてみました。下は、とりあえずその数学的な面白さが分かってもらえるように作った資料です。


]]></description>
			<content:encoded><![CDATA[<p>SEO等でよく耳にするページランクですが、その理論を知っている人って意外と少ないのではないかと思って勉強会のネタに取り上げてみました。下は、とりあえずその数学的な面白さが分かってもらえるように作った資料です。<br />
<span id="more-36"></span></p>
<p><iframe src='http://docs.google.com/EmbedSlideshow?docid=d4kc7xg_40cnq526fn&amp;size=m' frameborder='0' width='555' height='451'></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.s-cubism.com/blog/2008/09/04/36/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
