メイン

2007年12月13日

KB942840の更新でJScript.DLLが高速になった(IE6/WindowsXP)

Windows XP 用の更新プログラム (KB942840) で、JScriptエンジンのガベージコレクション(GC)のアルゴリズムが変更されて、 Ajaxをゴリゴリ使っているWebサイトでIE6の体感速度がかなり改善された(JavaScript実行途中で固まることがなくなった)模様。

KB942840

Windows Server 2003 ベースのコンピュータまたは Windows XP ベースのコンピュータで Internet Explorer 6 の JScript を使用する Web ページを表示すると、パフォーマンスの Web ブラウザ低下が発生することがあります。
原因
スクリプトが多くの変数を同時に作成すると、この問題は、発生することがあります。 また、この問題が同じ時刻で解析される一意の多くの値がスクリプトに含まれる場合、発生することがあります。 この問題は JScript エンジンがガベージ コレクションを実行する方法が原因で発生します。

ガベージ コレクション アルゴリズムは、次の値を監視します。• スクリプトでの変数割り当ての番号
・ スクリプトで使用されたリテラル値の数
・ スクリプトで割り当てられた文字列値の合計サイズ
これらの値の閾値が超えられるとき、ガベージ コレクションが発生します。 ガベージ コレクション プロセスは、実行されているスクリプトに割り込みます。 したがって、スクリプトを実行しているそれがガベージ コレクションが完了するまで、中断されます。

KB942840の更新で、C:\WINDOWS\system32\jscript.dll が 5.6.0.8831→ 8834 のバージョンに置き換わりました。

jscript-dll-5608834.png

ということで、更新前と更新後でベンチマークを取ってみました。まず一番目。

(1) JavaScript Speed Test 4.0 - The Real World

Before
Time Difference (seconds): 2.781
After
Time Difference (seconds): 2.703

約3%の微妙な差です。ちなみにこの数値はベンチマークを10回実行したときの最小値を計測結果としています。

(2) Javascript Speed Test 2007 (Celtic Kane)

次にid:ZIGOROuさんから教えてもらったJSベンチマークなのですが、IE6ではそのまま動かないので、XHRの関数を一度ブックマークレット経由で定義するなどしてから実行ボタンを押す必要がありました。

javascript:function XMLHttpRequest(){return new ActiveXObject("Microsoft.XMLHTTP");}
Before After
更新前 更新後

またこれも微妙な差です。

(3) JavaScript speed test (jorendorff.com)

JavaScriptの構文毎に詳しいベンチマークが取れるのですが、IEで実行すると「スクリプトタイムアウトの確認」のポップアップが表示されてしまうため、 以下の方法を使うなどして一時的に警告の確認画面が出ないようにしてあげる必要がありました。

余談: [HOWTO] スクリプトのタイムアウトを設定する方法

レジストリエディタ(Regedt32.exeなど)で、以下のキーを作って値をdword:ffffffffにするとスクリプトタイムアウトの確認ポップアップ表示を無効にすることができるようです。

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Styles]
"MaxScriptStatements"=dword:ffffffff
regedt32
このキーはデフォルトでは存在しません。キーが追加されていない場合、Internet Explorer 4.0 以降ではデフォルト値 5,000,000 がセットされている状態になります。なおこの値は Internet Explorer の内部処理で扱われる値であり、スクリプトのステートメント数とは異なります。

実行結果ですが、どれも微妙な差。スクリプトの実行エンジン自体は変わっていないようで、多量のGCが発生しないベンチマークではあまり差はでませんでした。

結論

今回試してみたベンチマークでは、数値として差はあまりでませんでしたが、 voxやLDRやGmailなどの実サービスでIE6を使った場合、 JavaScript実行途中に変に固まることがなくなって、 今までより体感速度が上がっているようでした。

ちなみに、自分が動作確認に使った環境は IE6 on WindowsXP SP2 / DELL Optiplex GX620 / Pentium4 3.40GHz / 1GB Memory です。

2007年11月06日

出張 Shibuya.js 24 動画アーカイブ公開

空前の技術系イベント動画公開ブーム到来、ということで、 2007年9月15日(土) に開催された 出張 Shibuya.js 24(Mozilla 24 ~ Worldwide Continuous Event ~) の動画アーカイブが公開されました。

お待たせいたしました!9月15日~16日に開催されたMozilla 24 の各セッションアーカイブを公開しました。日本語、英語の両方が用意されています。 当日は日本国内だけでも四つの会場で同時並行で行われていたため、見られなかったセッションもあるかと思います。ぜひこれを機会にサイトを訪れていただければと思います。 アーカイブ公開は、約半年間、2008年4月末まで行われる予定です。この機会をお見逃し無く。。。

Shibuya.JS内の 全セッションが一つの動画(約1時間50分)にまとまっているので、 各セッションの開始時刻を記載しておきました。

出張 Shibuya.JS 24 (00:00:00~)

  • INSIDE Gecko (資料)
    • gyuque (00:01:00~)
  • AutoPagerize (資料)
    • swdyh (00:18:40~)
  • 新世代ブラウザのクロス開発まとめ (資料)
    • id:amachang (00:38:00~)
  • JSの JSによる JSのための マルチスレッド (資料)
    • D.Maki (00:55:53~)

Lightning Talks (01:13:39~)

  • ECMAScript4 リファレンス実装 (資料)
    • Yu Kobayashi (01:14:30~)
  • 5分でわかる Photoshop の正しい使いかた (資料)
    • cho45 (01:18:54~)
  • jQueryつまみぐい(資料)
    • send (01:24:00~)
  • SHA-1の高速化tips (資料)
    • へるみ (1:29:09~)
  • Facebook.JS (資料)
    • kawa.net (1:34:44~)
  • JavaScript.GIF (資料)
    • id:TAKESAKO (01:39:31~)
  • ustream で JSONP Loader (資料)
    • mala (01:43:48~)
  • closing 挨拶
    • nagayama (01:49:12~)

どうぞご利用ください。

2007年11月05日

Shibuya.JS Digest (for John Resig) 発表資料公開しました

The Future of JavaScript -presented by Mozilla & Shibuya.JS- で、ゲストの John Resig 向けに Shibuya.JS Digest の発表をさせていただきました。

当日のustream中継は約200名ぐらいの方が視聴されていたと聞いています。 画面が小さくてすみませんでした。当日の録画アーカイブもustream上で見れるようになっています。

John Resig と記念撮影

John Resig & Shibuya.JS speakers

筆談(主にamachang と John Resig と kawaさんの会話)

code reading

ohn Resig - Speaking in Tokyoによると、

As a side note: Shibuya.JS is the only JavaScript user group that I know about - really anywhere in the world.
だそうです。

Boston.JS に期待しています。

2007年09月19日

Shibuya.js 24 - JavaScript.GIF x LiveConnect 発表資料公開しました

出張Shibuya.js 24 の Lightining Talks で発表した資料を slideshareで公開しました。

ちなみに、LiveConnectでUSBミサイルランチャーを制御するデモは、先日のJapan Linux Conference 2007 で行なったものと同じなのですが、ストリーミング中継と録画に失敗していたため、急遽リベンジすることにしました。

Google Video / YouTube 動画アーカイブ

Mozilla24 / 出張Shibuya.js 24 各発表の動画が公開されています。

Shibuya.js 24 - Google Video Shibuya.js 24 - Google Video

Mozilla24 / 出張 Shibuya.js 24 関連の感想リンク集

  1. TAKESAKO @ Yet another Cybozu Labs: Mozilla24リアルタイム中継(shibuya.jsもあるよ)
  2. 兼雑記 - 2007-09-15
  3. 出張Shibuya.js 24の発表資料 (mitsunari@cybozu labs)
  4. Piece of a Puzzle - Weblog - Shibuya.JS の Mozilla 24 出張イベント行ってきた。
  5. Mozilla24 on Flickr - Photo Sharing!
  6. Mozilla 24にスタッフとして参加 // 起業家・Webデザイナー・SE→CIOを目指しつつの大学生のアレ
  7. Mi manca qualche giovedi`? - Shibuya.JS in Mozilla24 行ってきた
  8. 404 Blog Not Found:LiveCodingに学ぶプログラミングの三原則
  9. Mozilla24 - A・Fool・O
  10. はこべにっき# - Mozilla24でLiveCodingしてきました
  11. snsn9panの日記 - mozilla24のLive coding#4に参加してきたよ。
  12. Moziila24 行ってきた C-Shirts、Shibuya.js、LiveCoding - AUSGANG SOFT
  13. 最速チュパカブラ研究会 - 出張 Shibuya.js 24の資料
  14. ネットランダム - 出張 Shibuya.js 24に参加した
  15. littlestarlingの日記 - [Mozilla][JavaScript]Mozilla24に行ってきた
  16. o0^~o0~''~0o~^0o: o0 Mozilla24 出張 Shibuya.js 0o
  17. Sep 15 2007 :: 出張 Shibuya.js 24 「正しい Photoshop の使い方」 / nulog, NULL::something : out of the washer
  18. blog.8-p.info: Mozilla 24
  19. Gen Kanai weblog: Firefox Celica
  20. 煤 - Note : mozilla 24 (Shibuya.js)行った
  21. Google を Yahoo! に - A・Fool・O
  22. 出張Shibuya.JSいっていました - blog.katsuma.tv
  23. まさにっき(使えないプログラマーの記録) - mozilla24 行ってきたよ
  24. Nothing ventured, nothing gained. - Mozilla24終了
  25. 野人観察日誌: 出張Shibuya.js24
  26. 就職活動日記 * YTPD - Shibuya.js 24 行ってきました。
  27. mukakenの日記 - Mozilla24に参加してきました
  28. I am Cruby! - Shibuya.jsに行ったよ
  29. カラクレナイ - 出張 Shibuya.js
  30. カサヒラボ - インターネットのこれからを語る24時間連続イベント「Mozilla 24」が開催中
  31. A Better Project@はてなダイアリー - DocFest M24 参加レポ
  32. とりあえずなんですけどね - 2007-09-15
  33. lambda {|diary| lambda { diary = 1 } }.call(hatena) - Mozilla24 参加中 出張 Shibuya.js 24に行ってきた
  34. 文殊堂 - Mozilla 24 出張 Shibuya.js 24行ってきた
  35. SWDYH - 出張 Shibuya.js 24 AutoPagerize 発表資料
  36. うらもじら24
  37. Twitter / 哀 (i)/Hiro Kanai: 『Shibuya.js 24』と『ブラポロリ』は企業や...
  38. 出張 Shibuya.JS 24『Facebook.JS』発表資料(2007年9月15日)
  39. ECMAScript 4 » SlideShare
  40. ネットランダム - 出張 Shibuya.js 24に参加したの続き
  41. Taken SPC : 出張 Shibuya.js 24 Lightning Talk ビデオのプレイリスト作った
  42. ◆F99a.q8oVEの日記 - mozilla 24 の個人的まとめ
  43. エモーショナル昆虫 - 出張shibuya.jsに行ってきた
  44. jiroの日記 - 出張 Shibuya.js 24に行ってきた
  45. becomingの日記 - 出張Shibuya.js24
  46. slw/brd-s on htn_00oo00_ - 三連休でした
  47. IT戦記 - Shibuya.JS の資料「The next genaration of browsers」公開
  48. Mozilla24 / Shibuya.JS Lightning Talks by ma.la
  49. 日記/2007-9-18 - W4M: Wiki for me - 俺のためのWiki
  50. 【Mozilla 24】IEやFirefoxなどブラウザベンダーがユーザーを交えてディスカッション
  51. 出張 Shibuya.JS 24(Mozilla 24)に参加してきました Kawa.netブログ(川崎有亮)/ウェブリブログ
  52. porori24.txt
  53. Mozilla24行ってきた : fublog - 2007-09-18
  54. Mozilla24 出張Shibuya.jsでjQueryの話をしました。
  55. 最速インターフェース研究会 :: Mozilla24でしゃべってきました
  56. Latest topics > Mozilla 24オワタ! - outsider reflex
  57. 最速チュパカブラ研究会 - Shibuya.js 24関係のビデオ
  58. とりあえずなんですけどね - 2007-09-18
  59. 徒然 SBS - TUREZURE SBS: Mozilla24 イベント打ち合わせ
  60. エンジニアにも黄色い声援を(Live Coding #4) - テクノロジー解放日記 [ITmedia オルタナティブ・ブログ]
  61. the time ship - 「出張 Shibuya.js 24」に行ってきました

2007年09月15日

Mozilla24リアルタイム中継(shibuya.jsもあるよ)

既に申し込みを締め切ったMozilla24のshibuya.jsイベントですが、今回ウタゴエさんによるリアルタイム動画配信がオフィシャルに行なわれているようです。いつもありがとうございます。

Mozilla24 オンラインで参加

OceanGrid はMozilla 24 後援企業であるウタゴエ株式会社によって開発された P2P 技術を応用したグリッド型ライブストリーミング配信システムです。グリッド型ライブストリーミングとは、同じライブ中継を視聴する視聴者間で直接ライブストリーミングのデータをリレー送信することで大規模なライブ中継を実現するためのシステムです。

OceanGrid + Windows Media Player ベルサール九段 日本語音声

12時半頃、自宅のネットワークからアクセスしたところ、安定してストリーミングを視聴することができました。

この調子でずっと見れるといいですね。あと、チャットルーム(IRC)もあるみたいです。

2007年08月24日

出張 Shibuya.js 24 参加登録開始

2007年9月15日(土)18:30~20:30 出張 Shibuya.js 24 を開催します。

定員は250名で、本日の夕方より参加登録を受け付けております。

2007/9/4: 事前登録者数が定員を越えたため、申し込みは締め切りました。たくさんのお申し込みありがとうございました。

参加申し込みは(少し手順がややこしいのですが)、Mozilla 24 公式サイトプログラムの参加申し込みページよりユーザID登録後(メールが送られてきます)、イベントの参加登録をお願いします。

Mozilla 24 ユーザ専用ページ

プログラムのお申込のプルダウンメニューから参加申込したいプログラムを選択し、申込ボタンをクリックしてください。

会場
ベルサール九段:イベントホール
プログラム
B2:出張 Shibuya.js 24

私もLTで発表する予定で、LL魂の発表のときにあまり詳しく語らなかった <script src="JavaScript.GIF"> についてお話しする予定です。

あと、時間のある方は Shibuya.js の次の時間に開催されるイベント パネルディスカッション 「ドキッ! 丸ごとウェブ!! ブラウザだらけの討論大会 ~Chatでユーザのポロリもあるよ~」 にも参加しても面白いかもしれません。 そのあとは、夜中も同会場が開放されていて、軽食とともに(ただしアルコール類は用意されないようです)ゆるりとした時間を過ごすこともできるようになっています。

関連リンク

2007年06月06日

サイボウズ・ロボ戦記

新しくid:amachangの職場ブログが出来たようです。

サイボウズ・ロボ戦記

果たして JavaScript や ActionScript の話題がメインになるのか、それとも Mac OS X や CSS の話になるのか。

次回更新が楽しみです。

2007年06月05日

Operaでも非同期リクエストが並列処理できる img-JSONP

先日金床さんに教えてもらったOperaで非同期並列JSONPを実行させる方法を実際に試してみたら意外とすんなり動いてしまったので報告します。

最速インターフェース研究会 :: OperaでJSONPを非同期リクエストするより

JSONP が Opera だと非同期処理できない http://d.hatena.ne.jp/secondlife/20060906/1157515075 に書かれているとおりOperaだとscript要素を足した瞬間にJavaScriptの実行が止まって、ロード完了まで後続のスクリプトが実行されなくなります。

サンプルコード

改善前(普通のJSONP)
Operaはスクリプトを追加するとタイマーが止まる(サンプルページ)
http://la.ma.la/misc/js/opera_jsonp_test.html
function test(){ 
        var s = document.createElement("script"); 
        var url = "http://del.icio.us/feeds/json/ma.la?"; 
        var now = new Date-0; 
        url += "callback=c._"+now; 
        c["_"+now]=function(obj){$("result").innerHTML=formatter(obj)}; 
        s.type = "text/javascript"; 
        s.charset = "utf-8"; 
        s.src = url; 
        document.body.appendChild(s); 
} 
改善後(img + JSONP)
Opera img + JSONP(サンプルページ)
http://namazu.org/~takesako/opera/img_jsonp.html
function test(){ 
        var url = "http://del.icio.us/feeds/json/ma.la?"; 
        var now = new Date-0; 
        url += "callback=c._"+now; 
        c["_"+now]=function(obj){$("result").innerHTML=formatter(obj)}; 

        var img = document.createElement("img"); 
        img.onerror = function(e){ 
                var s = document.createElement("script"); 
                s.type = "text/javascript"; 
                s.charset = "utf-8"; 
                s.src = url; 
                document.body.appendChild(s); 
        }; 
        img.width = 0; 
        img.height = 0; 
        img.src = url; 
        document.body.appendChild(img); 
}

↑ ma.laさんのコードをそのままコピペしてここだけ修正しています。

■ 動作原理

IMGとして取得させキャッシュに入れる方法(金床さんのコメント)より:

JSONPのリソースを一度IMGタグから取得させてブラウザのキャッシュに入れておき、その後SCRIPTの要素として同じURLを再取得する、という方法が使えるかもしれません。

1.JSONPのリソースをIMGタグの追加などで取得する(このとき、あらかじめエラーハンドラを別の関数に設定しておく)
2.画像ではないのでエラーになる
3.エラーのイベントハンドラが呼び出されたらSCRIPTタグの追加で再度同じリソースを取得する
4.このときレスポンスは既にキャッシュに入っているため、一瞬で取得が終わる(限りなく非同期ぽい同期処理)

JSONPのレスポンスヘッダにPragma: no-cacheなどの指定があると動かない可能性が高いです。

非同期リクエストをimgタグで飛ばして、結果をonerrorハンドラで受けとって、ブラウザのキャッシュを再利用するという方法。

各ブラウザでの動作

HTTP Proxy を間に入れて、img + JSONP のHTTPリクエストを観測してみました。

続きを読む "Operaでも非同期リクエストが並列処理できる img-JSONP" »

2007年05月23日

Wiiリモコンの値をJavaScriptで取得する方法(Wiiインターネットチャンネル)

任天堂のQ&Aサイトで、Wiiリモコンの値を取得する方法が公開されていることを知人から教えてもらいました。

インターネットチャンネル向けのウェブページを作りたいのですが…。 : Q&A - Wii

インターネットチャンネルの拡張機能について知りたい
Wiiインターネットチャンネルでは特別な JavaScript を用いる事でWiiリモコンのひねりや テレビとの距離、複数のコントローラの状態を取得する事ができます。

手元にWii本体の実機がないので(Wiiリモコンはある^^)まだ試していませんが、こんな感じでJavaScriptからWiiリモコンの値が取れるっぽいですね。

if (window.opera && window.opera.wiiremote) {
  var num = 0; // wiiremote number 0,1,2,3
  var pad = window.opera.wiiremote.update(num);
  if (pad.isEnabled && pad.isDataValid) {
    // 
    var x = null;
    var y = null;
    if (pad.dpdValidity > 0) {
       x = pad.dpdX;
       y = pad.dpdY;
    }
    // 
    // if (!pad.isBrowsing) { var hold = pad.hold; }
    var button_left  = (pad.hold & 1);
    var button_right = (pad.hold & 2);
    var button_up    = (pad.hold & 4);
    var button_down  = (pad.hold & 8);
    var button_plus  = (pad.hold & 16);
    var button_2     = (pad.hold & 256);
    var button_1     = (pad.hold & 512);
    var button_B     = (pad.hold & 1024);
    var button_A     = (pad.hold & 2048);
    var button_minus = (pad.hold & 4096);
    // 
    var distance = pad.dpdDistance;
    var roll_angle = Math.atan2(pad.dpdRollY, pad.dpdRollX) * 180.0 / Math.PI;
    // 
    // hogehoge
  }
}

numの値を変えれば、2本目以降のリモコンの値も取れるみたいです。

画面からの距離(dpdDistance)やリモコンの傾き(dpdRollY, dpdRollX)の情報が取れるのは面白いですね。 Wiiリモコンを用いたインタフェースの研究開発とかを個人の家庭用ゲーム機で実現できるので、hackしがいがあるかも。

拡張機能アツすぎます。

実際に動いたー!っていう人がいればぜひ教えてください。

2007年04月02日

Shibuya.esの動画公開

先日開催されたShibuya.js Technical Talk #3 - Shibuya.es録画アーカイブが公開されました。

犬ビームメソッド

犬ビームメソッドが見れるのはShibuya.esだけ!

ちなみに、講演者の承諾がとれている発表枠のみの公開となっております。

Shibuya.es録画アーカイブ

  • amachangさん: JSer のための AS3 ![動画]
  • abuiさん: Cycal - オンラインスプレッドシート[動画]
  • cho34さん: えへへ、うふふ E4X[動画]
  • sendさん: Firebug[動画]
  • omoさん: はじめての ABC[動画]
  • Yu Kobayashiさん: Narcissus - ナルシスト、自分を愛した美少年JavaScript[動画]
  • takesakoさん: SWF Binary Hacks ~evalのいばら道~[動画]
  • kusigahamaさん: fcwrap を使わないありあわせAS開発環境[動画]
  • secondlifeさん: fcwrap を使ったAS3オールドタイプ開発[動画]
  • nazokingさん: WiiでSAGOOL[動画]
  • torusさん: haXeを試してみる[動画]

IIJ/i-revoさん、どうもありがとうございました。

2007年03月24日

Shibuya.es発表資料 - SWF Binary Hacks ~evalのいばら道~

Shibuya.js Technical Talk #3 - Shibuya.esで発表してきました。 とりいそぎ発表資料(修正バージョン)を公開したいと思います。

Flash Player 9 以降ではもう使えない技

今回は急遽発表者の欠員が出たので、その埋め合わせで私がLTで発表することになりました。なので、発表ネタはラボの掲示板で1週間前にやりとりしたときの話をベースにしました。 当日資料を作り始めたので、ちょっと荒削りな内容になっています。すみません。

他の人の発表も結構最新の話題があったりして面白かったですねー。

二次会での名刺交換の様子

こちらの写真はいぬビームさんの名刺交換の様子を撮影したものです。これは新しい!

2007年03月23日

Shibuya.esネット中継(Shibuya.js Technical Talk #3)

本日開催の Shibuya.js Technical Talk #3 - Shibuya.esですが、 IIJ/i-revoさん、ウタゴエさん、デジハリさんのご協力により、ネット中継を行なう運びとなりました。 いつもありがとうございます。

今回もイベントの告知・募集開始から数時間で定員に達してしまったみたいで、 残念ながら申し込みできなかった方、サンフランシスコや奄美大島のような遠方・国外に在住していて行けない方はこちらのネット中継でお楽しみ下さい。試聴のためのリンクは直前に Shibuya.esカンファレンス中継のご案内ページに掲載される予定です。


ちなみにshibuya.esドメインは大変悪質なフィッシングサイトですので、間違ってこちらの偽者のイベントに行かないようお願い申し上げます。

正規のドメインは shibuyajs.org になります。

2007年03月14日

JavaScriptでフォント名一覧を取得する3つの方法

先月今月と新しいメンバーが加わったサイボウズ・ラボですが、いま社内でfont-familyが密かなブームです。 ということで、ブラウザで使用できるフォント名一覧をJavaScriptで取得する方法について調べてみました。


■ 1. IE の Dialog Helper Object を利用してフォント名一覧を取得する

IE の Dialog Helper Object を利用して フォント名の一覧を取得する方法がよく知られています。

まず、HTMLの中に以下のOBJECTタグを定義して、

<OBJECT id="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px">
</OBJECT>

JavaScriptから以下のコードを実行すると、現在の環境で利用できるフォント名の一覧を取得することができます。

function getAllFontsByDialogHelper() { 
  var fontslist = '';
  try {
    for (var i = 1; i < dlgHelper.fonts.count; i++) {
      fontslist += dlgHelper.fonts(i) + '\n';
    }
  }
  catch(e) { 
    fontslist = 'sorry, could not get fonts list.'; 
  } 
  return fontslist;
}

非常にシンプルですが、動作するブラウザが Internet Explorer に激しく限定されてしまうのが難点です。

▼サンプル実行

※IE限定

参考リンク

動作デモ


■ 2. Flash の TextField.getFontList() を JavaScript から呼び出す

Flash には TextField.getFontList() というそのものズバリなメソッドがありますので、 TextField.getFontList() を実行する SWFファイルを作って、 フォント名一覧を取得する方法を考えてみます。

この方法は IE に限らず Flash Player のインストールされているブラウザで動作することが期待できますので、幅広いプラットフォームで実行可能な方法です。

奥さん情報によると、 これは英語圏では既に試されている方がいらっしゃるようでした。

▼汎用的なサンプル(3/14 16:00追記)

参考リンク

動作デモ


■ 3. LiveConnect を使って Javaアプレットの getAllFonts() を呼び出す

IE も使ってないし、Flash Player もインストールされていないブラウザで、フォント名一覧を取得したい場合はどうすればいいの? ということで、LiveConnect を使う方法を実験してみました。

試してみたJavaScriptのコードは以下の通りです。

function getAllFontsByLiveConnect() {
  var fontslist = '';
  try {
    var fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
    for (var i = 0; i < fonts.length; i++) {
      fontslist += fonts[i].getFontName() + '\n';
    }
  }
  catch(e) {
    fontslist = 'sorry, could not get fonts list.';
  }
  return fontslist;
}

LiveConnect は Javaアプレットの動作が有効になっている Netscape3以降, Firefox, Opera のブラウザで動作します。

Javaアプレットには、インスタンスを生成できない abstract メソッドとして java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts() がありますので、 これを呼び出すとjava.awt.Fontオブジェクトが配列で返ります。 これらのオブジェクトに対して Font.getFontName() を呼べばフォント名を取得できます。

▼サンプル実行

※IEでは動作しません

※Javaアプレットが1回起動するので、若干重たいです。

意外と知られていない LiveConnect ですが、 最初は Netspcape Navigator 3.0 の JavaScript 1.1 の頃からデフォルトで使えるようになっている機能で、 JavaScriptからJavaアプレットのオブジェクトを操作できるので(その逆も)、 使い方によっては面白いこともできそうです。 私もつい最近金床さんにLiveConnectの最新の活用事例を教えてもらいました。なんとjava.net.Socketクラスも利用できるそうです。これは便利!?

参考リンク

2007年03月09日

今度のShibuya.jsTT#3 は Shibuya.es

Shibuya.js Technical Talk #3 - Shibuya.es
http://shibuyajs.org/articles/2007/03/09/shibuya-js-technical-talk-3-shibuya-es
Shibuya.js Technical Talk #3 - Shibuya.es を2007年3月23日にデジタルハリウッド大学秋葉原セカンドキャンパスにて開催します。 今回は JavaScript だけでなく、ActionScript やその他スクリプト言語など、様々な ECMAScript に関するテクニカルトークを行います。es は ECMAScript の es です。

今回はECMAScript特集だそうです。楽しみ。

開催日時
 2007年 3月23日 (金曜日)
 18:30 開場 19:00~21:00 予定

開催場所
 デジタルハリウッド大学 秋葉原セカンドキャンパス
 http://www.dhw.ac.jp/access/index.html

料金
 無料

事前登録
 130名 (申し込みフォームより申し込み下さい。 定員に達しましたので、登録は終了しました)

私も申し込みました。セーフ。

■ 追記 3/9 14:32

事前登録 130名 (定員に達しましたので、登録は終了しました)

2006年07月24日

ニンテンドーDSブラウザー

届きました

鶴岡さんに借りた Nintendo DS Lite

FYI

- 開発陣に聞くニンテンドーDSブラウザーのコンセプト (2006年07月18日)
- ニンテンドーDSブラウザーを体験してきた (2006年07月18日)
- ニンテンドーDSブラウザーのブラウザ機能をチェック (2006年07月24日)

甲斐さんGJ!

2006年07月19日

AJAJA - Yet Another Server Side JavaScript

Shibuya.js#2で言っていたAJAJA プロジェクトのページを公開しました。

AJAJA - Trac

当日の発表スライドも(若干修正して)あわせて公開しています。
Shibuya.js Technical Talk #2「Server Side JavaScript の歴史と未来」 (PPT)


AJAJA: Asynchronous JavaScript and JavaScript/ASP

AJAJA は「ブラウザだけでなくサーバサイドでも JavaScript を使おう!」というプロジェクトです

できること
- JavaScript を埋め込んだ ASP ファイルを処理する
- JavaScript から SQLite などのシステムライブラリを呼び出す
- JSAN のライブラリをサーバサイドで利用する
- Server Side JavaScript の実行処理系 asp_js を提供しています

asp_js の特徴
- IIS の ASP/JavaScirpt の記法をそのまま処理することができます
- Mozilla の C の JavaScript 処理系 SpiderMonkey を組み込んでいます
- SQLite を標準サポート、拡張も容易です

メインの開発者はOpenCOBOL/Gonzuiなどで有名な西田さん。ものすごく仕事が速いです。
奥さんや鶴岡さん達と一緒にいろいろアイディアを出し合ってプロジェクトを進めています。
まだまだできないことだらけですが、裏を返せば楽しいハックがまだ残っているということ。
共同開発者募集中ですので、興味のある方はぜひメーリングリストに参加してみてください。

2006年07月03日

Shibuya.js Technical Talk #2 感想リンク集

Shibuya.js Technical Talk #2 に参加してきました。

20060630 Shibuya.JS Technical Talk #2 (28 images)

とりあえず Plagger で収集した Shibuya.js の感想・反応リンク集をここに置いていきます。
(気が向いたときにまた更新するかもしれません)

続きを読む "Shibuya.js Technical Talk #2 感想リンク集" »

2006年06月15日

Shibuya.js Technical Talk #2 事前登録開始

Shibuya.js 第二回目のイベント、Shibuya.js Technical Talk #2 を開催します。

開催日時:2006年 6月30日(金) 18:00開場 18:30~21:00 予定
開催場所:株式会社インターネットイニシアティブ (IIJ) 大会議室
事前登録:登録フォームで申し込んでください (先着80 + 40, 合計120名)
     40名は後日、6/17土曜日12:00 より追加募集予定です。

今回は前回の反省を踏まえて、2回に分けて参加募集を行ないます。
どうぞご参加ください。

2006年04月17日

Shibuya.js Technical Talk #1で発表してきた

はてなよりシャープでしょ → 目の付けどころが scriptaculous.js

私の発表資料は封印します

以上

2006年03月28日

Shibuya.js Technical Talk #1本当にやるみたいです

2006年 4月14日(金)に Shibuya.js 初のイベント、Shibuya.js Technical Takl #1 を開催します。

開催日時: 2006年 4月14日(金) 18:00開場 18:30~21:00 予定 開催場所: デジハリ御茶ノ水校 事前登録: ページ下の登録フォームで申し込んでください (先着110名)

ってことで、定員があるみたいですので、行きたい方は早速申し込みましょう

3/28追記:申し訳ありません。定員に達しました。

2005年12月23日

オブLOVE夜会第2弾「イマドキのJavaScript」に飛び込み参加

dotさんのお誘いにより、オブLOVE夜会第2弾「イマドキのJavaScript」に飛び入り参加してきました。
セッションの中でAjaxとかWeb2.0っていうキーワードが頻繁に出てきていたので、最後の10分をいただいて「Web2.0時代のJavaScriptセキュリティ」というネタで乱入ライトニングトーク。突然失礼しました。内容はというと、第4回セキュリティもみじで発表したネタの使い回しで、ゴルゴ13の薀蓄についてしゃべってきました。(謎)

→このことについてあとで書く

http://d.hatena.ne.jp/nskj77/20051222#1135268297

オブジェクト倶楽部の催しには始めて参加したのですが、今回はid:secondlife現在無職のgorouさんに謎の俺様JavaScriptフレームワークGiza(inspired by しょこたん)について聞くことができて大変興味深かったです。ギザテラスゴス(w

その後の懇親会ではppencodeネタも含めていろんな方とお話できて楽しかったです。
参加された皆さん、お疲れ様でした&ありがとうございました。