■なんとなく僕も
入門Ajax便乗企画。
いちおう貼っときます。まだ買えてないんですが。
■このあいだと旧友との飲み会で「JavaScriptが〜」というような話をしてたら友人のacicくん(えーと、仕事ではサーバサイドJavaとかやってるひと)に「JavaScriptなんか使うほうが間違ってるっていう認識だけど」と返されて、うーん、まだそうなのかも。まだ
汚名は返上されてないかも。と思ったところ。
ところでわれをひるがえってみるに、なんで今のAjax環境にわりとすんなり適応できてるかというと、よく考えてみると過去3年くらいでJavaScriptでいろんなものを作ってみていて、しかもいろんな(いわば)変態環境をとっかえひっかえするのに慣れていたので、「JavaScript(/JScript/ActionScript/などのECMAスクリプト系)はなんでもあり」というイメージがあったからではないかと思った。
なので、JavaScriptでなにができるか/なにを作ったかを、ここらで棚おろししてみます。
JavaScript+DHTML(Ajax)
■そもそもどのへんでJavaScriptをどっぷり使いはじめたかというと、じつはprocessingを使う前にJavaScript+DHTMLでプログラミングの授業をやってみた年があって(HTMLはある程度理解できるから、そのステップアップとしてなじみやすいんでは? という意図でした。結果的には挫折の道でしたが…)、そのへんじゃないかな。つまり3年前ですね。Ajaxより3年早かった! といえよう。早すぎた。当時はまだMacOS9の環境だったので悪名高いMacIEでいろいろしなきゃいけなくて、大変でした。
あとこの授業で使う画像素材をPhotoShopで加工するときに、アクションで無理なとこをJavaScriptでできるなーとかillustratorでも使えるんだーとか、そんなこともしてました。
BulletSurf/StickyWeb
■で、その授業のあとの夏休みで勢いでgenekistiScope(後述)のスクリプトを作って、そのあと作ったのがBulletSurf/StickyWebかな。「弾幕を避けながらアイテムをとりにいく感覚でポインタの動きを妨害するブラウザがあるといいんじゃないかなー」みたいなぼんやりしたアイデアをまんま作ってみた。内容的には
ABAさんの
BulletMLアプレットソース(.java)からのポーティングですな。あほなことしたもんだ。ちなみに当時よくわかってなくてBulletMLのxmlパースを自前(というか
xparseっていうライブラリ)でやってたんだけど、いま考えるとMSXMLとかでふつうにDOMを操作すりゃよかったのかな。
当時得た教訓としては
- イベントの互換性が超めんどい
- DHTMLの座標操作が超めんどい
- ブラウザによって動作速度が天と地ほど違う
- でも実は、かなりなんでもできるかも
といったところだった(なので最近のJavaScriptライブラリは泣くほど便利でうれしいので、積極的に使っている。もう戻れない)。
当時はこの辺を参考にしていた。
kaiwarecotonoha / Calki ver.002 / Piccy
このへんは省略。
Photoshop / illustrator スクリプト
■あんまりやってるひとを(webで)見かけませんが、PhotoshopやillustratorなどAdobeのソフトはJavaScriptで制御できます。APIちゃんとそろってるし、デバッガもあるし、わりと使いでがあります。
Photoshopスクリプト
たとえばゲームなんかで使うキャラクタの回転パターンをPhotoshopで作るとして、レイヤーをコピーして単位角度で回転…というアクションを作って何回も実行すると画像が劣化して大変なことになったりします。なのでこれをするためのMakeRotImageというスクリプトを作ったりしました。
あとPhotoshopCS以前はレイヤーを別々にファイルに書き出すことができなかったんで、こういうふうに作った画像を保存するためのスクリプト(savaeEachLayers.js)なども作りました。それはまあいいか公開は。
illustratorスクリプト
illustratorスクリプトは、オープンキャンパスのワークショップで使った驚き盤のテンプレートを書くのを作ったりしましたな。illustratorのスクリプトは描画はほぼすべて制御できるのでかなり楽しいですよ。
GA的驚き盤作成スクリプト GenekistiScope(aiスクリプト版)
■で、驚き盤を作ってるうちに、自分は絵がかけないからなんか自動生成できないかなーと思って「ランダムに初期生成した驚き盤のパターンを選択して、Genetic Algorithmで適応進化させるスクリプト」というアイデアを考えて、illustratorのスクリプトを作った。これが2003年の夏。
レイヤーにパターンを複数生成して、illustratorのレイヤーの表示/非表示をスクリプトで判定して次世代パターンの適応に用いるという、なんというかillustratorのインターフェイスのハック的な利用がけっこう気に入ってました。おんなじように「export flash」という文字のレイヤーを表示してからスクリプトを起動すると、illustartorのSWFエクスポートを使って驚き盤がアニメーションするSWFが生成できたりもします。
Flash ActionScript
■で、順番的にいうと、JavaScriptをしこたま使ったあとにFlashのActionScriptを触りました。うわイベント設定とか座標指定が楽〜、でもタイムラインとシンボルがうぜー、あとスクリプトの動作遅くない? みたいな。
GA的驚き盤作成ツール GenekistiScope(flash版)
とりあえずillustratorのスクリプトなんかだれも使ってくれないので(プログラマーはillustrator持ってないし、デザイナーはスクリプトなんかに興味を持たないので)、flashに移植してみたのがこれ。かなりらくちんに移植できた覚えがあります。Flashがベジェ曲線を持ってなかったから自前で書いたりしたのがめんどかったくらいだったような。
flashはほかにもいろいろつくってますが省略。
WindowsScriptingHost(WSH)
Windowsは組み込みのJScriptでファイル操作したりCOMを利用してアプリケーションを制御できたりして、これはこれで使いでがあります。こういうのもけっこうやってる。
iTunes COM Interface
iTunesのCOMインターフェイスは充実しててSDKも公開されてるので、この辺をさわり始めたんじゃなかったかな。ようするにデジオ関係と、recommuni関係。
Amazonからアートワークを追加.js
調べたらADODB.Streamでwebでとってきたデータをローカルにファイル保存したりもできるってことで、アートワーク追加とかも作りました。
自分で作ったのはこの辺かな。けっきょくJavaScriptの開発であんまりテキストは買ってなくて、基本的にはwebのリソースを参考にしながら書いたという感じですね。だからだめなんだけど。
まだやってないけど - GraceMonkey / XUL / Konfabulator(Dashboard,GoogleDesktop)
■このへんもさわってみたいなーと思ってるんですが、上を見てもらえばわかるとおり、「これは誰もやってないだろう、しかも誰もやらないだろう」というアイデアが思いつかないと動かないので、まあそういうのが思いつけばーという感じですな。そのうち。
ほかにもあったら教えてくだされ。こう並べてみて思うのは、インターフェイスにちかいレイヤーを制御するのにJavaScriptは使われがちなんですな。
萌ディタ
■あとこれだな。JavaScriptで制御したりプラグインを作れるエディタ。こないだma.laさんが「最強。カーソル位置制御とかがバグっててエディタとしてはどうかと思うけど」っていってたよ。でもアルファギークがアルファなエディタを使わないでどうするという気もするので、むしろ使っていきたい! 僕はやだけど。
macautoto