Microsoft の採用した TypeScript というプログラム言語が,JavaScript コミュニティで話題を呼んでいる。レドモンドのこの最新作は,タイプセーフな独自の言語を解釈して JavaScript を生成することで,JavaScript 自体をマスタしなくても JavaScript の機能を利用可能にするものだ。新たな言語の出現に対するソフトウェアコミュニティの反応はさまざまだ。JavaScript をタイプセーフに記述する手段として評価するものもあれば, JavaScript 生成言語というジャンル自体の存在を疑問視する意見もある。
TypeScript のリリースは最初,DevProConnections など .Net 派のニュースソースによって鳴り物入りで伝えられた。DevProConnections の常連寄稿者である Michael K. Campbell 氏は TypeScript の将来性 について,公平性を保ちながらも肯定的な立場を取っている。このようなアプリケーション開発のスタイルは JavaScript の理論的な成熟を表している,というのが氏の考えだ。その上で氏は TypeScript について,ブラウザからデスクトップ,あるいはバックエンドサービスへという JavaScript の受け継ぎが無事に終了したことの正式な発表として見るべきである,と結論付けている。
TypeScript の輝かしい未来に疑問の余地はないでしょう。Microsoft の ASP.NET Web API フレームワークのように API を提供する Web サーバでの開発の主流は,動的ページ内のレンダリング手段として JavaScript を多用するアーキテクチャへとますます移行しています。この事実を考えると特に,TypeScript のような言語の将来に期待せずにはいられません。
多大な時間的投資の必要なく JavaScript を活用したいと願う技術者にとって,TypeScript の採用にはタイプセーフであることとは別に,それ以上の理由がある。TypeScript の提供するクラスベースのオブジェクト指向プログラミングモデルが,C# や Java といったスタイルの言語を使う開発者の関心を引いているのだ。英国 Cheshire でソフトウェア開発に従事する Danny Tuppeny 氏は,TypeScript のこの機能のおかげで,プロトタイプベースのオブジェクト指向言語を基礎からマスタする必要なく JavaScript が活用できている,と言う。
アセンブリや IL の難しいことはよく分かりません。その種の知識がもっとあった方が有利な状況もあるかも知れませんが,それよりも毎日使用している C# その他のスキル向上に時間を費やした方が,ずっと価値があるのではないでしょうか?
JavaScript でサブクラスプロトタイプを組み上げるのに,ひとつひとつ調べなければコードを書けないとしても,TypeScript が代わりにやってくれるのならば大した問題ではないのではないでしょうか? そうですよね。では,生成されたコードが理解できることは役に立つでしょうか? そのとおり。では,それは必須でしょうか? そうではないでしょう。動作方法と制限さえ分かっていれば十分なはずです。C# を書くときに,生成される IL を 100% 理解する必要がないのと同じことです。
しかし TypeScript は,JavaScript にコンパイルされる (compile-to-JavaScript) 開発言語というジャンルへの最新の参入者であるに過ぎない。JavaScript の欠点を回避する手段として 昨年登場した Dart は,より堅牢で生産性の高い開発エクスペリエンスを Web で実現している。どちらの言語も JavaScript よりも堅牢なプログラム構文とタイプセーフ性を備えている点で共通性は持っているが,どちらかが一方のクローンであると主張するには遙かに及ばない。
Microsoft で Web 開発ツールのアーキテクトを務める Scott Hanselman 氏は,言語として TypeScript をプロモートする一方で,Dart との比較の必要性には疑問を呈している。2つの言語は異なった方法で開発されている上に,コアのレベルから根本的に違うものだ,と氏は指摘する。
TypeScript と Dart を比較するのは車のキャブレタとリンゴを比べるようなものです。TypeScript は JavaScript 上に構築されていますから,JS との相互運用性には問題ありません。一方の Dart は,スクラッチから書かれたネイティブな仮想マシンです。Dart は JavaScript と相互運用可能です ... しかし JS ではありません。例えば JavaScript の数値型なども使用していないのです。
Dart チームの開発者である Shannon -jj Behrens 氏は, TypeScript を JavaScript コンパイル言語の一員として歓迎する ことで,2つの言語が違うものであると強調している。Dart チームでは TypeScript について,旧式でバグの多い技術を採用している,という見方をしている。JavaScript という,彼らが遠からず乗り越えようとしている競合技術に依存しているからだ。彼らが Microsoft に対して,JavaScript コードベースを中心としたビルドの継続を奨めるのは,このような理由からなのかも知れない。
私たち Dart チームは今回 TypeScript に出会ったことで, TypeScript チームを隣人として歓迎したいと思います。Visual Studio を使用した大規模な JavaScript コードベースをすでに所有しているならば,TypeScript はそのプロジェクトにとって絶好の追加機能になるでしょう。
しかし誰もが JavaScript を置き換えたり,別の言語を通じて生成したりするアイデアを支持している訳ではない。 NCZonline.net にブログを持つ Web ソフトウェア技術者の Nicholas C. Zakas 氏は,JavaScript コンパイル言語が果たして習得に値するものなのか,という疑問を持っている。JavaScript に同じ程度の時間を投資しても同じ結果を得られるのではないか,と思うからだ。
JavaScript コンパイル言語は,目標に対する障害ではないかと思うのです。JavaScript を書かなくて済むような選択肢を増やすよりも,JavaScript を学ぶように人々に奨めるのが本筋ではないでしょうか。代替手段の開発に時間やエネルギー,人材,資金を費やしているチームや企業が,そのリソースを JavaScript やその教育に費やすようにしたらどうだろうか,と考えることがよくあります。
Yahoo のシニア UI プロトタイパである Marco van Hylckama 氏が共感を覚えるのは,JavaScript 開発を JavaScript 言語そのもので行うという,既存技術を重視する努力をあえて選択する多くの JavaScript 開発者たちの方だ。氏は Twitter アカウントを通じて TypeScript の必要性に疑問を唱える とともに,JavaScript コンパイル言語というカテゴリそれ自体にも懐疑の目を向ける。
まったくもう ... http://www.typescriptlang.org/ 何だって JavaScript にコンパイルするために,別の言語でコードを書かなければいけないのですか?やれやれ。
この問題に対する別の角度からのアプローチとして,ロンドンに拠点を置く UI 開発会社である Neave Interactive の公式 Twitter アカウントでは,他言語への置き換えを認めるほど JavaScript を難しいままにしておくか,あるいは JavaScript コンパイル言語を通じて抽象化すべきか,という選択を問いかけている。
JavaScript はそんなに大変なのでしょうか? CoffeeScript,Dart,そして今度は TypeScript typescriptlang.org @TypeScriptLang と増えています。
支持する者,反対する者,競合相手,すべてが意見を述べている。しかし否定できないのは,TypeScript がソフトウェア開発において,さらに人気の高い位置に達したことだ。JavaScript は今やフロントエンドの Web エクスペリエンスだけでなく,デスクトップアプリケーション構築や,信頼性の高いサーバサイド製品においても現実的なソリューションと考えられるようになった。OSS Watch の著者 Mark Johnson 氏は,この JavaScript の機会拡張は JavaScript 開発者のニーズをさらに大きくするだろう,と指摘する。さらに,ニーズの増加に伴って TypeScript や Dart のような言語の採用も増えていくだろう,というのが氏の意見だ。
JavaScript でクロスプラットフォームのゲームやアプリケーションを開発するツールの過剰なほどの増加。Windows 8 や Open WebOS のようにデスクトップで Web 技術を活用するプラットフォーム。これらによって,TypeScript の提供する機能への要求は増加する一方でしょう。