JavaScriptの最近のブログ記事

いってきました。

 Lightweight Language Future
  http://ll.jus.or.jp/2008/program

午前中は
 - Larry Wall の基調講演と、今回のテーマ「未来」に関するパネルディスカッション。
   - LarryさんはPerl6でBNFっぽい記法をそのままかけるようになる的な話。
   - パネルはLarryさんとMatzさんが同席するという期待のパネル。(その分パネルを束ねるひとは大変だったと思います。)

昼に今回初参加の人と一緒に飯を食べた。
「100年後の定義をもうちょっとはっきりした方が議論がおもしろくなったかも」
という意見で一致した。

午後は、
- Processingとかビジュアル系の話(デモがおもしろかった。)
- フレームワークの話(ひがさんと瀧内さんが隣り合わせに座っていたのでもっと絡んでほしかった)
- コードGolf の 話、すばらしいグループプレゼンテーション。

この辺で、家から電話がかかってきて帰宅・・・。
そういえばランゲージアップデートがなかったんですね。
あれ、去年もなかったっけ・・・。

主催運営の皆さん、発表者、参加者のみなさん、お疲れ様でした。

3大ブラウザ、Flash、Google が合意する形でECMAScript 3.1 (4ではない)がリリースされるようだ。Flash の ActionScript 3 は ECMAScript 4ベースで、ブラウザ系のECMAScript3にたいして多くの言語機能を拡張しているが、3.1はもう少し穏健なものになるとのこと。それがいいことなのかどうかはよくわからないが、確実に3よりはよい、という機能拡張になっている感じがする。

amachangがまとめている仕様とそのコメント欄での会話から、さらに自分メモ。


  • インタフェース定義方法: Getter/Setter, プロパティ・ディスクリプタ

  • プロトタイプ継承方法の拡充

  • Arrayオブジェクトのメソッド拡充: forEach, map, filter, ...

  • ブロック内に限定される変数スコープ

  • prototype.js の bind

  • JSONオブジェクト: JSONを便利に使うための

  • arguments: 引数オブジェクトが配列として扱える

  • const: 定数 = 書き換えできない変数

  • Decimal: 精度の高い数値を扱うのではないか?DBやC#のDecimalのように。

  • ObjectLiteral の最後の , が仕様に入った (列挙する時に最後に余分なカンマが入っていてもエラーにならない)

個人的には、Rubyに「いいな」と感じたところが多く取り込まれている気がします(originはきっと他にあるのだと思いますが)。LL全体の流れに沿っているということなんじゃなないかなと。

- - -

参考

次の JavaScript の仕様はこうなる! ECMAScript 3.0 から 3.1 への変更点まとめ - IT戦記
http://d.hatena.ne.jp/amachang/20080821/1219302804

JavaScript 2.0はECMAScript 3.1ベースに、ECMAScript 4は譲歩 | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2008/08/18/027/

JavaScript++かも日記: 【仕様】JavaScriptの未来はとりあえず ECMAScript 3.1へ、でもそれってASとの分裂?
http://jsgt.org/mt/archives/01/002201.html

LL魂のオライリー直販で日本語版ゲット(10%OFF)。
原著を半分くらい読んだところで和書をゲットしたので、残りの部分は日本語で一気に読みました。

良著です。

Railの基礎から、Prototype.js, Script.aculo.us, RJS と順に紹介されていて、その後に、セキュリティや高速性への考慮の話も入っています。
Railsの概略を理解した人には、間違いなく、この本を勧めます。

Ajax on Rails
Ajax on Rails
posted with amazlet on 07.08.09
Scott Raymond 牧野 聡
オライリー・ジャパン (2007/07/24)
売り上げランキング: 16099

原著: Ajax on Rails

MovableTypeへのはてなスターのつけかたがわかりません。しょぼぼん。

賛成。

てっく煮ブログ - Google Gears の使い道

では、Google Gears は不要な技術なのでしょうか。 いいえ、実は超絶に魅力的です。

AJAX方面で、よくつかわれているJSONというデータ記述形式がある。

 JavaScript Object Notation - Wikipedia
  http://ja.wikipedia.org/wiki/JavaScript_Object_Notation

3年前に、FlashとWebサーバを通信させようとしてるときに存在は知っていたのだけれど、そのときはXML-RPCを選択した。JSONのWebサイトでいまいち使いかたを理解するまで行かなかったというのと、そのプロジェクトで使うには、知るのが遅すぎた。

で、ここのところ JavaScript をわりとじっくり触っていて、JSONの有用性をやっと理解してきた。なんじゃこりゃすげーなばっきゃろー。

 ・JSONは、JavaScriptの文法に即している。
 ・JSONでかかれたデータ構造は、JavaScriptパーサがそのまま変数として利用できる。
 ・動的にテキストをソースとして読み込む eval 関数を使えば、JSONテキスト形式がそのままJavaScriptのネイティブのデータ構造として変数にセットされる(こともできる)。
 ・JavaScriptは、ハッシュ(Object型)、配列、およびプリミティブな型(数値、文字列、日付とか)を持っているので、JSONはそれを表せる(プリミティブ型の静的型付は明示的にはできない・・・そんなのしたくもないけど)。

JavaScriptがJSONを読み込むこと自体は、通常のJavaScriptソース解析なので、標準的についている機能である。動的言語なので、ランタイムについている。しつこいけど、JSONのデシリアライズは標準で言語機能として実装されているのである。シリアライズはついてないので書くかライブラリを使う必要がある。自明だけど、シリアライズの方がコーディングはくらべものにならないぐらい楽だ。

- - -

さて、JSONの使いかたについて、JavaScriptソースで例をあげとく(お茶を濁す程度ですみません)。


var myJSONdata = {
"apple" : 1,
"gorilla" : 2,
"rapper" : 3
};

という感じで変数を作ると、

myJSONdata.apple    => 1
myJSONdata.gorilla   => 2
myJSONdata.rapper    => 3

という感じでアクセスできる。

ってことで最初のソースを、XMLHttpRequestでとってきて、文字列Aにいれて、


eval(A);

とすると、2番のソースのようなアクセスが出来るようになる。

あと、HTMLの script タグをつかって、外部JavaScriptとして最初のソースを読み込むこともできる(この場合同一サイトでないサイトのJavaScriptも読み込める = セキュリティには注意)。

で、最近のウインドウズ(2000以降)にはWindowsScriptingHost(WSH)という、JavaScriptも読み込めるデスクトップ言語ランタイムが入っているので、ここでもJSONは使える。

RubyやPerl方面には、YAMLというマークアップ言語仕様があり、JSONはほぼそのままYAMLとして読み込めるようだ。

CSVの各行の両端に括弧[]、行末にカンマをいれ、全体を括弧[]で囲うと JSONデータになりそうな感じである(完全かどうかわからない。例外あるかも)。

これは便利だ。

きっとなにも新しくない道具なんだと思うけれど、かえってそれがすごいな、と感じる。
「XML開発者の日」とか「XML専業ベンダー」とか「高速XMLパーサ」というのはあるけれど、JSONは当り前すぎてそういうのが発生しそうにない気がする。

- - -

ちなみに文字コードはJavaScriptが読み込めればなんでもよいと思われるが、UTF-8が常識的っぽい。まあ、流通させなければ好きにしたらいいという気もする。

2008年9月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

アーカイブ