.NETとHTML5とJavaScriptはうまく調和する

ツールから入る、モダンな.NET業務系HTML5/JavaScript開発」という記事を見て思ったことを書いてみる。

最近のASP.NETでは、ASP.NET MVC/Web APIが使われるようになり、クライアントに表示されるビューはHTML5/JavaScript/CSSで組み上げ、そこではjQueryをはじめとするオープンソースなライブラリを使うのが当たり前となってきている

そうですね、かなりオープンになってきています。VisualStudioにあるNuGetコンソールから「Install-Package jQuery」と打つと最新版のjQueryが自動的に入ってしまいます。また、Microsoftの新しい開発環境LightSwitchではjQueryの使用が半ば前提となっており、プロジェクトを作成すると最初からjQueryライブラリが入っています。またまたさらに、MicrosoftはTypeScriptというjavascriptへコンパイラできる言語を提供していますが、これはオープンソースプロジェクトとなっていて、たとえばnode.jsなどからも利用可能です。

こういった事実を聞くと、昔のVisualStudioしか知らない人たちはきっとびっくりするのではないでしょうか。

VSはHTML5/JavaScript/CSSエディターとしての完成度も高いし、IntelliSenseも賢く動作する

これもそうですね。VisualStudioはかなり良くなってきていると思います。EclipseとVisualStudio、どちらでも出来ることがあれば私は迷わずVisualStudioを選びます。

最後に、「VSは最強レベルに便利なのでもっと頼ろう」「拡張機能を入れればさらに最強になる」んだから「ゆとりでもいいじゃないか」とまとめた。マイクロソフトに対する厳しい言葉から始まったものの最後は「VSにどんどん頼ろう」と若干のツンデレ風味を残して基調講演は楽しく終了した。

ほんとそうです。正直、VSはクソだと思っていたのが数年前の私でしたが、VS2010あたりから急速に良くなってきたような気がします。細かいところを挙げれば、WPFのデザイナが頻繁にフリーズしたり、リファクタリングの機能が若干不足していたりなどと気に入らないところは多々あるのですが、それを差し引いても良いと思えます。

芝村 IEの10より下は邪魔をしています。(全てをHTML5で統一したいのだけれども)

―― 10より下ですか。IEは8以下が邪魔をしているとはよく聞きますが。

芝村 ファイルAPI周りなどの対応で、IE 9には中途半端な部分があるので。IE 10はWindows 7用も提供されているので、最低でもIE 10が欲しいところです。

これも本当そうですね。Windows 7以降ではIE10に強制アップデートされるくらいの仕組みが欲しいくらいです。まあ、個人の好みもあるので難しいところですが。でも、普通のWeb系技術者であれば、かなりの割合の人が古いIEは邪魔と思っているのではないでしょうか。

宮崎 よいところというか、現実的にお客さんの要望を満たすのに、HTML5を使わなければならない状況が発生するようになったのだと思っています。スマートフォン対応もそうですし、新しい操作性を求められた場合にはHTML5を使いたいことがあります。が、先ほども話が出ましたが、環境が問題になります。IE 6はさすがになくなりましたが、IE 8には対応してくれということがよくあります。HTML5対応という意味では、IE 10が最低でもほしいのですが、そうはなっていないのが足かせになっています。

―― IE 8縛りですか? ChromeやFirefoxもあるのに。

宮崎 そうですね。しっかりと環境の管理をされているところだと、FirefoxやChromeはいつの間にかバージョンが上がってしまうのを嫌うのではないでしょうか。「このバージョンだったら動きます」と検証するプロセスがあるので、小まめにバージョンが上がるものには追随しづらいというものはあります。

うーん、その通り、しか言ってないですけど、これもその通りですね。

結局、企業系システムでIE8対応してくれなどというのは、「バージョンで動きに差異があったら困る」と思っているからでしょう。理想論を言えば、W3Cを厳密に解釈した仕様でWebシステムを作るべきです。たとえ、ブラウザがそれを誤解釈して意図した動作をしていなくても、です。その様なときに修正しなくてはならないのは、W3Cの仕様を実現できていないブラウザの方でしょう。

が、そんなこと言ってもMSが都度修正してくれるわけではないので現実的にはIE8対応で、とお客さんは一言言ってそれでおしまい、となるケースが多いのだと思います。Windows 7はまだまだ息の長いOSですから、もうちょっと何とかならんのかな、次期OSまでIE10以下に対応させるのはしんどいな、と思うのです。

IE 11には「エンタープライズモード」があること。以前のドキュメントモードは古いブラウザーのレンダリングルールでレンダリングの真似をするだけでしたが、エンタープライズモードではIE 8をエミュレートしてくれます。

そうなんですが、これを提案してお客さんが了承してくれたケースというのを知らないですね。結局ソフトを作らない人たちは実装の部分なんて関係ないと思っているんでしょう。それが悪いという訳ではないですが。

まず、.NETはHTML5と対立するものではありません。クライアントサイドを書くものとしてHTML5、サーバーサイドを書くものとして.NET。従って、残るか残らないかでいえば、.NETは当然残るでしょう。

その通りだと思います。サーバ側で利用できる数少ない静的型付け方式のプログラミング言語です。C#はJavaに比べてずっとモダンな言語仕様になってますから、積極的に使いたいですね。正直、いまさらラムダ式すらない言語げ組むのは苦痛です。Java 8ではProject Lambdaが実装されましたが、それがWebシステムで利用できるのはいったいいつになるんでしょう。

芝村 .NET Frameworkが誕生したのが2002年で、今年で12年。今もASP.NET vNext、C#の言語仕様、.NETランタイム、新コンパイラのRoslynなど、新しいものに投資をして、これから先も他のプラットフォームと戦えるだけの改良が行われています。マイクロソフトの開発の体質もクローズドなものから、オープンソースな文化を取り入れつつ開発が進むようになっています。それが簡単になくなるとは考えられません。投資を続けて損をすることはないと思います。

うーん、その通りですね。私も.NETはまだまだ無くならないと思います。何よりもオープンソース文化を取り入れているというのが強いと思います。細かい.NET周辺のライブラリは消えていくものもあると思いますが。

―― 最後に「Visual Studioエンジニアは.NETとHTML5のどちらに賭けるべきか」の答えを教えていただけますか。

物江 どっちもです! 孤独のグルメという番組を知っていますか。井之頭五郎という男がご飯を食べるだけのドラマですが、彼は迷うんです。「どっちを食べようかな?」と。そこで、よいことを言います。「迷ったら2つだ!」 そうです。どちらも勉強しておけば間違いない。どちらも大事です。

これもその通りだと思います。.NETとHTML5のどちらか、という選択肢は無いでしょう。どっちも必要になるでしょう。MSがオープン文化に傾倒していくならばHTML5を勉強しなければMS製品は使いにくくなると思います。現に、LightSwitchではちょっと細かいことをしようとするとJavaScriptとjQueryの知識が必須になります。

一方で.NETも重要でしょう。ブラウザ上でいろんなことが出来るようになっていますが、それでも限界はあります。セキュリティの問題がありますから、技術的に可能であったとしても無制限に機能拡張していくとはできません。HTML5やブラウザの外にある世界に触れたい場合は、HTML5やブラウザの外の世界にある技術を知っておく必要があると思います。

 

まとめ

今回の記事では「うーんその通りですね」しか言っていないのですが、だって、本当にその通りなんだもん。

最近のMSは凄く良くなっていると思います。わくわくする技術がたくさんあります。昔、MSが嫌いだった技術者の方々にこそ、最近のMS発技術に触れてみてほしいです。きっとびっくりすると思います。