Insider's Eye

Web Matrix日本語版開発秘話

マイクロソフト株式会社
デベロッパーマーケティング本部
鈴木 祐巳氏

聞き手、文責:デジタルアドバンテージ
2004/10/02

Page1 Page2

 

 

鈴木: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の英語版は日本語を扱えなかったのでしょうか?

 

鈴木:厳しいご質問ですね(苦笑)。1つめの理由は、アフター5プロジェクトであったということです。通常の製品であれば、国際化されているかどうかのチェックが厳しく行われますので、英語版ソフトウェアであっても日本語が利用できます。正確に申し上げれば、日本語が利用できる英語版は、インターナショナル版であり、たまたまユーザー・インターフェイスが英語になっているというようにお考えいただけると理解しやすいと思います。

 そういった点で、特に最初のリリースのWebMatrixはインターナショナル版ではなく英語版でした。最初のリリースであるWebMatrixバージョン0.3が完成したのは2002年6月だったのですが、そのバージョンでは、たとえ英語版OSであったとしても(コントロール・パネルの)[地域と言語のオプション]の設定によってはWebMatrixで作業中にエラーが発生してしまい、場合によっては記述したソース・コードも破壊していました。

 .NET Framework 1.1の後にリリースしたWebMatrixバージョン0.6(英語版)は、.NET Framework 1.1サポート、Accessサポート、J#サポートを実現すると同時に、バージョン0.3で起こっていた[地域と言語のオプション]設定によるエラーは解消されていました。

 しかし、エディタ内で全角文字を使った場合にソース・コードの表示に見掛け上の問題があるという点が残っていました。WebMatrixのソースコード・エディタでは、固定フォントのみを使用し、フォント・サイズの計算などを省いているように見えたので、実は、これを直してもらおうとWebMatrix開発担当に直接交渉したのですが、逆に「なぜ、日本語の固定フォントのサイズは、英語フォントのように固定ではないんだ」と文句を言われてしまいました(日本語の固定フォントには、半角サイズと全角サイズがある)。

 それで、米国でアフター5プロダクトとしてWebMatrixをリリースしたのであれば、日本でWebMatrixの日本語対応を行ってやろうと考えました。とりあえず、前述の表示の問題を回避するには、英語の固定フォントと同じ仕様の日本語フォントを利用すればWebMatrixを日本語に対応させられるのではないかと思ったわけです。そこで、日本語のフォントの半角部分を全角サイズに変えた独自のフォント「Thoma乱筆フォント」を作り個人的に公開しました。

Thoma乱筆フォントを使ったWebMatrixのIDE画面

 このThoma乱筆フォントにより日本語の扱いにも問題がなくなり、また、バージョン0.6からは、WebMatrixを取り上げた日本語の書籍が出版されたり、各種定期刊行物やWebサイトで取り上げていただいたりしたことで、日本での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ベータということになります。

Visual Web Developer 2005 ExpressベータのIDE画面
Visual Web Developer 2005 Expressの価格には、すでに報道されているとおり、100ドル以下で提供される予定。「価格については、皆様のご期待を裏切らないように配慮しているところです」と、鈴木氏からコメントがあった。

―― それは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日本語版とともに使ってみてください。End of Article

 
 

 INDEX
  Insider's Eye
  Web Matrix日本語版開発秘話
    1.Web Matrixが誕生した経緯
  2.Web Matrix日本語版の開発秘話
 
 Insider's Eye


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間