バージョン管理ソフトは便利!

ご存知の通り、なでしこのコミッタになったのでバージョン管理ソフトとしてTortoiseSVNを入れて使っているわけですが、すごく便利です。便利なので、大きめのプログラムからサイト管理まで、色んな所にローカルリポジトリを作って利用するようになりました。

HTML+JavaScript:canvas要素

くじらぶろぐDで紹介されていたクジラさんのアナログ時計を作るAIR記事読んで新発見。<canvas>タグなるものが存在するらしい!

アナログ時計の作り方でWebを検索すると、FlashやJavaアプレットを使って作る方法がいろいろ出てくることでしょう。しかし、HTMLとJavaScriptの技術を使うことで、もっと気軽にアナログ時計を作ることができます。(これには、最近実装された<canvas>タグの機能を使います。)

引用元:【ハウツー】AIR自作工房 - Adobe AIRで創るアナログ時計 (1) 身近なアナログ時計をAIRでつくろう

JavaScriptを勉強し始めた頃に四苦八苦しながらアナログ時計を自作したscripterとしては、これは聞き捨てならない。なにせ当時中学生だった U D がアナログ時計実装のために最も苦労したのが、もちろんまだ知る由のない三角関数と、やはり手段の見当が皆目つかなかった描画方法の2つである。そしてその描画機構HTML+JavaScriptだけで実現されているというのだ。

ちなみにその時、TagIndexの掲示板で「時計を作りたいんです」と質問して、返ってきた答えはFlashとかFlashとかその他JavaScript以外のものばかり。どうしてもJavaScriptだけで実現したかった U D は「違う違う、そんなんじゃなくて」と粘ってご迷惑をおかけした、というむかーしむかしの話です。今から考えれば質問の仕方が見るからに房な聞き方だったんだろうと思いますが(ホント苦笑)。結局、助けもあってXHTML+VML+JavaScriptで実現することができたわけです。(XHTMLVMLも要はXML。それを分かってる今だからこそXHTML+VML+JavaScriptと書きますが、昔ならきっとHTML+JS+VMLと表現したんだろうな・・・)

で、この未知の要素canvasについて簡単に調べてみたところ、やはり元々はsafariブラウザの独自拡張らしく、後から他のブラウザも追って実装したということのよう。うーん、複雑な心境。確かに、そういう要素を実装することでVMLの助けを借りずにHTML+JavaScriptだけで高度な描画機構を提供できるのは素晴らしいことだ。AIRという観点から見ても、きっと必要なものだろう。

だが、だがやはり、こういうブラウザの独自拡張が過去にどのような影響を及ぼしてきたのか考えると、少し受け入れ難いものがあるし、そもそもHTML仕様外非論理要素であるのも明らか。そう、昔ならば「HTML+JSだけで実現できる!」と喜んだだろう。しかし今喜ぶには余りに多くを知り過ぎたという所。今もしアナログ時計を作るなら、最初に「なでしこ」は当然として、次に「XHTML+SVG+JavaScript」を選ぶ。canvasではHTMLの仕様に引っかかり心許ないが、VMLの後継ぎであるSVGならXMLベースでしかもW3C勧告つきと心強いからだ。

と、まぁ色々話したが、VML(SVG)にもcanvasにも大して詳しいわけでもなし、ただ単に感想を述べているだけなので、悪しからず。ツッコミ歓迎。

JavaScript:クロージャ@MDC

JavaScriptのクロージャ(closure)は、今まで漠然としか知らなかったのですが、今日たまたまMDCクロージャの解説(邦訳)が目にとまったので読んでみました。

で、あまりに自分にその辺りの知識がなさ過ぎて、「何で今まで知らなかったの!?」という感じでもう逆に感動したと言っても過言ではないです。いわゆる無名関数だとか、そのような書き方ができるのは名高いJavaScripter各位の書いたソースを見て知っていたのですが、それが普通の書き方と違って何が利点なのかとか、全く知らなかったので、今日はそこのもやもやも晴れ一つ良いことを学びました。もうホントなんで今までこんな重要かつ便利なもの、知らずにいたんでしょう、という感じ。

サイトでJavaScriptを動かす予定は今の所なく書く機会がないので、余り今後のスキル向上は望めませんが、 U D が初めてプログラムをしたのがJavaScriptということもあり、また崇拝している言語のひとつでもあるので、ずっとJavaScripterでありたいなと思っています。