Insider's Eye
|
鈴木:WebMatrixはすべてマネージ・コード、つまり、MSILによるアプリケーションです。それにしては、パフォーマンスがよいと思いませんか? |
―― そうですね。多少、起動には時間がかかるような印象もありますが、通常のWindowsアプリケーションと比較して特に遅いような印象はありませんね。
鈴木:WebMatrixはMSILベース、つまり「中間言語」ベースのアプリケーションです(.NETの「MSIL」は「中間言語」)。もしVBユーザーの方で、VBにネイティブ・コンパイラが導入されたときに、「VB中間言語ベースのアプリケーション」と「ネイティブ・コンパイルされたVBアプリケーション」の実行速度の差に驚愕した体験がある方は、「中間言語」という言葉、つまりMSILに否定的なイメージがあるかもしれません。 しかし実際には、MSILベースのアプリケーションは、その実行時にJITコンパイラによってネイティブ・コードへコンパイルが行われています。要するに、確かにMSILコードは中間言語なのですが、実際にアプリケーションが実行されるときのコードは、ネイティブ・コードということです。ゆえに、.NETアプリケーションはVB中間言語ベースのアプリケーションのように遅くはありません。 最近、@IT/Insider.NETフォーラムでMSILとJITコンパイラの記事(「熱血VBプログラマ応援団」の「第8回 Visual Basic .NETは遅いのか!?」)をご掲載いただきましたが、WebMatrixをご利用いただくことで、.NETのMSILは決して遅くないということをサンプルコードではなく、アプリケーションとして体験していただけるのではないかと思います。 確かに、「最適化されたネイティブ・コードのアプリケーションの方が、MSILベースのアプリケーションよりも高速で動作する」ということは議論の余地はないと思います。しかし、豊富なコントロール、メモリ・リークの発生しにくいプログラミング言語、XML Webサービス対応など.NET Frameworkを使うことで得られる高い開発生産性、およびJITコンパイラによるネイティブ・コード変換から得られる高いパフォーマンスという2つのメリットを、Visual Basic 6.0(以降、VB 6.0)やVisual C++ 6.0(以降、VC++ 6.0)とWin32 APIを使う場合と比較してみてください。 もちろん、特定分野のアプリケーション(例えば、ミリ秒単位でリアルタイム処理を行うようなアプリケーションなど)では、C++アプリケーションによるネイティブ・コードの非常に高度なパフォーマンスが要求されることがあります。しかし一般的な分野のアプリケーション(例えば、ショッピング・サイトや会計ソフトなど)では、MSILベースのアプリケーションのパフォーマンスでも十分なことがほとんどです。 よって一般的なアプリケーションであれば、VB 6.0やVC++ 6.0によるアプリケーション開発のメリットよりも、.NETによるアプリケーション開発のメリットの方が上回ると思います。特に、(機械が使うレベルではなく)人間が使うレベルで快適なパフォーマンスを満たせれば問題のないことが多いWebアプリケーションならば、.NETによるアプリケーション開発がベストの選択だと思います。 |
―― WebMatrixは、機能やパフォーマンスなど点で、開発ツールとしてもかなりレベルが高いように思います。これだけの開発ツールを作るのには、どのような苦労があったのでしょうか?
鈴木:WebMatrix自体の開発で最も苦労したのは、ネーミングだそうです(笑)。「Web Studio」(2000年末ごろ)→「Mongoose」→「Project Saturn」→「Tahiti Project」→「Web Matrix」へと名前(コードネーム)が変わりました。 余談ですが、WebMatrixやVisual Studio 2005(以降、VS 2005)でも採用されているASP.NET検証用のローカルWebサーバ(Microsoft ASP.NET Web Matrix Server)の原型は、www.asp.net上では、「Cassini Sample Web Server」という名前でソース・コードも含めて公開されています(VS 2005では「Visual Web Developer Web Server」と呼ばれている)。ちなみに「Cassini」という名称は、アメリカ航空宇宙局「NASA(National Aeronautics and Space Administration)」が打ち上げた土星(=Saturn)探査機の名称と同じで、WebMatrixの名称変遷の途中にある「Project Saturn」と呼ばれていたころに名付けられたことが容易に想像できると思います。 |
―― そのWebMatrixですが、日本語版リリースが遅れたのには何か理由があるのでしょうか? 最近のマイクロソフトの製品は、国際化が進んでいて、英語版ソフトウェアであっても、日本語を利用できるものが多いと思いますが、なぜ、WebMatrixの英語版は日本語を扱えなかったのでしょうか?
―― WebMatrix自体は、どういった形で日本語対応されたのでしょうか?
鈴木:本来であれば、WebMatrixを最初に国際化して、その後にユーザー・インターフェイスを日本語化するというのが正しい順序です。エディタでの表示の問題であれば、各文字のフォント幅を取得したうえでそれをハンドリングして正しく表示するように補正するのが本来の姿なのですが、WebMatrix日本語版の場合、日本語固定(fixed)フォントであれば、全角文字1文字のサイズと半角文字2文字のサイズが同一ですので、その規則を前提としたうえでの変更をWebMatrixに加えています。 それ以外には、Unicodeハンドリング周りで、ASCII文字だけを利用していれば発生せず、日本語文字列を使ったときのみに起こる問題の修正を数カ所追加しています。それ以外に、IDEのユーザー・インターフェイスを日本語表示にしました。 |
―― 修正は日本で行われたのですか?
鈴木:はい。すべて日本で行いました。残念ながら、日本で加えた修正は、中国語や韓国語など、ほかのダブルバイト文字を利用する国では有効でないようで、日本で加えた修正だけでは、中国語や韓国語では、問題点は修正されないようです。その点は少々残念に感じています。 |
―― ところで、Visual Web Developer Expressベータが公開されましたが、Webアプリケーション開発にフォーカスしているという点で、WebMatrixと共通点が多いのですが、この両者はどういった関係なのでしょうか?
鈴木:WebMatrixとVisual Web Developer 2005 Expressのターゲットはほぼ同じです。使い分けとしては、現在のASP.NETの最新バージョンである1.1をサポートするWebアプリケーションの開発であれば「WebMatrix」もしくは「VS.NET 2003」を利用してください。ASP.NET 2.0を試用するのであれば、Visual Web Developer 2005 Expressベータということになります。
|
―― それはWebMatrixが、ASP.NET 2.0には対応しないということでしょうか?
鈴木:いまのところ、WebMatrixのASP.NET 2.0対応は未定です。明確な指針を示せずにご迷惑をおかけしますが、この件についてはもう少しお時間をください。 |
―― ASP.NET 2.0は、1.1から大幅に機能拡張されているようですが、これからASP.NETを始める場合、ASP.NET 2.0を選ぶ方がよいのでしょうか?
鈴木:残念ながら、現在のASP.NET 2.0ベータ1では、(使用許諾上)実用途にご利用いただくことができません。よって、開発したWebアプリケーションを、今すぐに実際に運用するのであれば、ASP.NET 1.1で開発していただかなければなりません。 確かに1.1から2.0への変更において、数多くのサーバ・コントロールが追加され、また、各コントロールの機能も向上しています。しかし、プログラミング・スタイルには変更はありませんので、ASP.NET 1.1の知識は、ASP.NET 2.0になっても活用可能ですし、.NET Frameworkの特徴であるサイド・バイ・サイドで、ASP.NET 2.0とASP.NET 1.1のアプリケーションの共存も可能です。 よって、現段階ではASP.NET 1.1で開発していただいた資産はASP.NET 2.0でもそのまま活用していけるので、ASP.NET 1.1による開発が無駄になることはありません。 また、現行のASP.NET 1.1/ASP/PHP/JSP&サーブレット(Java)など、ほかのWebアプリケーション開発技術と比較しても、開発容易性やパフォーマンスなどにおいてASP.NET 1.1は最も優れていると自負しております。 ASP.NET 2.0の正式リリースを待つのではなく、ぜひ、現行バージョンASP.NET 1.1をWebMatrix日本語版とともに使ってみてください。 |
INDEX | ||
Insider's Eye | ||
Web Matrix日本語版開発秘話 | ||
1.Web Matrixが誕生した経緯 | ||
2.Web Matrix日本語版の開発秘話 | ||
Insider's Eye |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|