日記始めました ― 2010年04月01日 09時39分
このブログを始めた当初は趣味やら愚痴やら何でも書くつもりだったのですが、技術系のネタが多勢を占めるにつれ、それ以外のことが書きづらくなってきました。そうした、Web なりプログラミングなりと関係ないことについて、これからは別に日記を設け、そこに書きとめておくことにします。
そのための場所としてはてなを考えていたのですが、悲しむべきことに、いつの間にか日記ではなくブログサービスになっていました。しかし、はてなダイアリーを使わなければいけない理由もできてしまったので、そのあたりには目をつむることにします。
というわけで、今後非技術系の話は日記 Ways on the Moon でやっていきます。JavaScript や Mozilla に関しては引き続きここ、Days on the Moon に書くつもりなので、よろしくお願いいたします。
改名します ― 2009年04月01日 00時18分
私は普段テキストエディタに Emacs (正確には Meadow) を使っているのですが、nanto_vi という名前のせいか vi 使いに間違えられることが多く、先日も人に挨拶しようと思ったら「僕は Emacs 派なんで」と握手を拒否されてしまいました。ただ静かにエディタを使っていたいだけなのに、このようないわれなき差別を受けるのはもうこりごりです。争いのない平和な世界のためにいいエディタはないかと探していたところ、TeraPad というエディタの存在を思い出しました。
TeraPad は何よりもアイコンが優れており、今でこそやや古さを感じさせるものの、Windows 2000 のころには一番 Windows にマッチするアイコンのエディタといっても過言ではありませんでした。GUI アプリケーションにとってアートワークは命であり、アイコンが漢字一文字だったりした日にはどれだけ機能に秀でていようと使いたくなくなります。以後 vi 派と Emacs 派の宗教論争という古き時代から決別し、グラフィカルな未来へと邁進するという意志をこめ、名前を nanto_terapad と改めます。名前は変わってもブログの更新頻度は変わらないと思うので、今後とも気長にお付き合いしていただければ幸いです。
なんか仲直りできたっぽいんでやっぱ改名はなしで。
JS オタが非オタの彼女に JavaScript 世界を軽く紹介するための 10 実装 ― 2008年08月03日 20時00分
アニオタが非オタの彼女にアニメ世界を軽く紹介するための 10 本が流行っているようで (◯◯オタが非オタの彼女に◯◯世界を紹介するための 10 本まとめ)。えっ、もうブームは去った? まあそんなこと気にせず勝手にいっちゃいます。
軽く紹介するための 10 本
まあ、どのくらいの数の JS オタがそういう彼女をゲットできるかは別にして、「オタではまったくないんだが、しかし自分のオタ趣味を肯定的に黙認してくれて、その上で全く知らない JavaScript の世界とはなんなのか、ちょっとだけ好奇心持ってる」ような、ヲタの都合のいい妄想の中に出てきそうな彼女に、JavaScript のことを紹介するために見せるべき 10 実装を選んでみたいのだけれど。(要は「脱オタクファッションガイド」の正反対版だな。彼女に JavaScript を布教するのではなく相互のコミュニケーションの入口として)
あくまで「入口」なので、時間的に過大な負担を伴う SML、PHP 製の実装は避けたい。できればオブジェクト指向言語、手続き型でも C 言語製にとどめたい。あと、いくら JavaScript 的に基礎といっても古びを感じすぎるものは避けたい。ブラウザ好きが『Mosaic』は外せないと言っても、それはちょっとさすがになあ、と思う。そういう感じ。
彼女の設定は
- JavaScript 知識はいわゆる「Java」と混同してるのを除けば、うざいポップアップ程度は見ている
- ギーク度も低いが、頭はけっこう良い
という条件で。
まずは俺的に。出した順番は実質的には意味がない。
SpiderMonkey (Mozilla Foundation)
まあ、いきなりここかよとも思うけれど、「JSRef 以前」を濃縮しきっていて、「JSRef 以後」を決定づけたという点では外せないんだよなあ。実装言語も C 言語だし。
ただ、ここでオタトーク全開にしてしまうと、彼女との関係が崩れるかも。この派生過多な実装について、どれだけさらりと、嫌味にならず濃すぎず、それでいて必要最小限の情報を彼女に伝えられるかということは、オタ側の「真のコミュニケーション能力」の試験としてはいいタスクだろうと思う。
DMonkey (Project DMonkey)、ExtendScript (Adobe Systems)
アレって典型的な「オタクが考える一般人に受け入れられそうな実装 (そうオタクが思い込んでいるだけ。実際は全然受け入れられない)」そのものという意見には半分賛成・半分反対なのだけれど、それを彼女にぶつけて確かめてみるには一番よさそうな素材なんじゃないのかな。
「JS オタとしてはこの二つは“マクロ言語”としていいと思うんだけど、率直に言ってどう?」って。
JE (Father Chrysostomos)
ある種の軽量言語オタが持ってる Perl への憧憬と、XS いらずのオタ的な Pure-Perl へのこだわりを彼女に紹介するという意味ではいいなと思うのと、それに加えていかにも CPAN な
- 「コンバート的なださカッコよさ」を体現する Perl/JS オブジェクトの相互変換
- 「ストリーム的に好みなデータ」を体現する直列化可能性
の二つをはじめとして、オタ好きのする機能を世界にちりばめているのが、紹介してみたい理由。
Narcissus (Brendan Eich)
たぶんこれを見た彼女は「ナルシストだよね」と言ってくれるかもしれないが、そこが狙いといえば狙い。
この系譜の実装がその後続いていないこと、これがアメリカでは大人気になったこと、日本ならオレオレ言語ブームになって、それがブラウザ上で動かされてもおかしくはなさそうなのに、ブラウザ上で動くこういうのがつくられないこと、なんかを非オタ彼女と話してみたいかな、という妄想的願望。
futhark (Opera Software)
「やっぱり JavaScript はブラウザのためのものだよね」という話になったときに、そこで選ぶのは『InScript』でもいいのだけれど、そこでこっちを選んだのは、この実装にかけるテッちゃんの思いが好きだから。
断腸の思いで磨きに磨いた『linear_b』をそれでも捨てる、っていう判断が、どうしても俺の心をつかんでしまうのは、その「捨てる」ということへの諦めのよさがいかにもオタ的だなあと思えてしまうから。
linear_b の速度を俺自身は遅いとは思わないし、もう速くできないだろうとは思うけれど、一方でこれが Geoffrey Garen や Brendan Eich だったらきっちりスピードアップしてしまうだろうとも思う。
なのに、各所に頭下げて迷惑かけて新しいスクリプトエンジンを作ってしまう、というあたり、どうしても「はじめからやり直したい症候群のオタク」としては、たとえテッちゃんがそういうキャラでなかったとしても、親近感を禁じ得ない。実装自体の高評価と合わせて、そんなことを彼女に話してみたい。
Rhino (Mozilla Foundation)
今の若年層で Javagator 見たことのある人はそんなにいないと思うのだけれど、だから紹介してみたい。
JSR 223 よりも前の段階で、Java からの呼び出しとか LiveConnect とかはこの実装で頂点に達していたとも言えて、こういうクオリティの実装が Java でこの時代に書かれていたんだよ、というのは、別に俺自身がなんらそこに貢献してなくとも、なんとなく JavaScript 好きとしては不思議に誇らしいし、いわゆるアプレットでしか Java を知らない彼女には見せてあげたいなと思う。
JavaScriptCore (WebKit Project)
SquirrelFish の「レジスタ」あるいは「ダイレクトディスパッチ」をオタとして教えたい、というお節介焼きから見せる、ということではなくて。「終わらない速度競争を毎日生きる」的な感覚がオタには共通してあるのかなということを感じていて、だからこそ Tracing 版『Tamarin』仮想マシンは JIT 以外ではあり得なかったとも思う。
「高速化した日常を生きる」というオタの感覚が今日さらに強まっているとするなら、その「オタクの気分」の源は『KJS』にあったんじゃないか、という、そんな理屈はかけらも口にせずに、単純に楽しんでもらえるかどうかを見てみたい。
JScript (Microsoft)
これは地雷だよなあ。地雷が火を噴くか否か、そこのスリルを味わってみたいなあ。
こういう微妙に非互換風味の言語をこういうかたちで Active Script 化して、それが非オタに受け入れられるか気持ち悪さを誘発するか、というのを見てみたい。
長門有希 (涼宮ハルヒの憂鬱)
9 本まではあっさり決まったんだけど 10 本目は空白でもいいかな、などと思いつつ、便宜的に長門を選んだ。SpiderMonkey から始まって長門で終わるのもそれなりに収まりはいいだろうし、SQL や C++ も使えるみたいだし、紹介する価値はあるのだろうけど、もっと他にいい実装がありそうな気もする。
というわけで、俺のこういう意図にそって、もっといい 10 本目はこんなのどうよ、というのがあったら教えてください。
「駄目だこのオタク未満は。俺がちゃんとしたリストを作ってやる」というのは大歓迎。こういう試みそのものに関する意見も聞けたら嬉しい。
参考文献
本気でやるなら黙読は避けて朗読すべき ― 2008年05月18日 17時40分
「読書百遍義自ら見る」という言葉があります。難解な書物であっても 100 回も読めば自然と意味がわかるようになるという、熟読の大切さを説いた句です。しかし、これは本当のことなのでしょうか? 2000 年もたてば社会も常識もまったく変わってきます。昔の人の言ったことが今も正しいとは限りません。
疑問があれば解明したくなるのが人の性というもの。実際に「読書百遍義自ら見る」は正しいか、確かめて紀要にまとめてくださった方がいます。それによると、女子大生にデカルトの「方法序説」を 30 回読んでもらったところ、ほとんどが内容を理解するにいたったとのこと。この言葉の正しさが見事に証明されたのです。
ただし、一点注意することがあり、それは黙読ではなく朗読するということ。人間は活字を使いだしたのはたかだかこの5千年程度のことであるが、音声を使った情報のやりとりは動物の時代から行ってきたことである
という由緒正しい理由によるものです。
さて、前置きが長くなりましたが、近頃 JavaScript を本気でやるなら何を避けて何をすべきか考えるのが流行っているようです (例 1、例 2、例 3)。ここまでお読みいただいた方にはもうお分かりでしょう。そう、避けるべきは黙読で、すべきは朗読です。文書は声に出して読まなければ身につきません。とはいっても、ソースコードまで音読していたらそれはそれで間抜けです。ソースコードは音読ではなく書き写す、すなわち写経するのがいいでしょう。
では手始めに JavaScript の母体にして標準仕様である ECMAScript Language Specification (HTML 版、日本語版) を朗読し、JavaScript で書かれた JavaScript 実装である Narcissus のソースコードを写経してみましょう。分量を恐れることはありません。前者は中高生でも手軽に読めるライトノベル 1 冊分の約 6 分の 1 のページ数、後者にいたっては 2HD フロッピーディスク 0.047 枚分という驚きの軽さです。30 回も繰り返せば自ずから JavaScript を理解していることでしょう。
それでも分量が多い、とにかく最速コースをという方には Core JavaScript 1.5 ガイドを、こんなのあっという間、もっと書物をという方には、古典として Effective JavaScript と JavaScript 深層 (両者ともインターネットアーカイブより) をお勧めします。
なお、以上はあくまで言語としての JavaScript を本気でやりたいという場合に関してです。クライアントサイドスクリプティングを本気でやりたいのなら、これらに加えてJavaScript 第 5 版、Prototype.js のソースコード、jQuery のソースコードなどはいかがでしょうか。読経と写経の繰り返しが、あなたを JavaScript の悟りの境地へといざなってくれるでしょう。
「本気でやる」ためにはどうすればいいか、はっきりとわかりましたね。この方法にひとつだけ欠点があるとすれば、こんな方法を「本気でや」った人など筆者自身も含めて一人も存在しないであろうことだけです。それでは皆さん功徳を積んで解脱を目指していきましょう。
「あの生徒が使ったあの『あれ』は……」 ― 2006年12月08日 01時36分
WebKit の Bugzilla では検索結果一覧のページに今日の一言みたいな感じで何かしらのフレーズが出てくるのだが、その中に She, where he had had 'had', had had 'had had'. 'Had had' had had the approval of the examiner.
というものがあった。"The teacher said that that 'that' that that student used was incorrect." みたいなものか。文をまたいで had が実に 11 連続。意味が取れない。
最近のコメント