マイクロソフトが2008年1月21日に開催したイベント「Visual Studio 2008 Ready Day」に合わせて米MicrosoftのScott Guthrie氏(写真1)が来日し,日経ソフトウエア誌の記者のインタビューに答えた。Guthrie氏は,Microsoftで.Net Developer PlatformのGeneral Managerとして,統合開発ツール「Visual Studio 2008(VS 2008)」のほか,「Silverlight」,「ASP.NET」,「ASP.NET AJAX」,「Windows Presentation Foundation(WPF)」などの開発を統括している。
2007年末にVisual Studio 2008の出荷が始まりました。米国での顧客の反応はいかがですか。
すばらしいの一言ですね。出荷直後から好意的な反応がたくさん返ってきました。こんなに反応が返ってきたのは.NET Frameworkの歴史でも初めてだと思います。アプリケーションの実行性能が素晴らしいという点,たくさんの新機能,そして.NET Framework 3.5だけでなく,3.0,そして2.0にまで対応できるので,移行が容易だという点を評価してくれています。
製品出荷前からベータ版を配布するなど,顧客と一緒に新版のテストを続けられてきましたね。その成果はいかがですか。
2007年の4月に最初のベータ版を,7月にはベータ2版を公開し,11月に製品を出荷したわけですが,その間に「LINQ(Language Integrated Query)」や「ASP.NET AJAX」といった新機能について顧客と意見を交換することができ,その声を製品作りに生かすことができました。そして,早くから使ってもらうことで,こういった新機能に慣れてもらえました。
すでに10万人ほどの開発者が,日常使う開発ツールをVisual Studio 2008と.NET Framework 3.5に移行しています。しかも正式発表の数週間前からです。そして,今も移行はどんどん進んでいます。顧客からの反応も極めて好意的なものがほとんどです。
日本の開発者はやや保守的な傾向がありますが,受け入れられるでしょうか。
それは日本に限ったことではないですね。いろいろな国があり,いろいろな会社があります。アメリカでも,すぐに移行する会社がある一方で,移行に慎重な会社もあります。しかし,先ほどお話ししたように,ベータ・テストの段階から,かつてないほどの好意的な反応を得ています。これはよい兆候だととらえています。
.NET Frameworkは,バージョン2.0の次に,3.0,3.5と急激に進化してきた印象がありますが,新しいバージョンを作るときに,どのようなコンセプトを意識されていましたか。
「継続性」が大切だと思っていました。新しいAPI,新しい機能を追加しても,プログラミング・モデルが一変するとか,従来とはやり方がまったく変わってしまうということが極力ないようにしました。
そして,「完璧であること」も大切です。必要十分な機能をすべて盛り込むことです。.NET Frameworkで多くの機能を提供すれば,プログラマが同じコードを繰り返し書いたり,コピーしてきたりということが減ります。そして生産性が上がります。
開発者にとって,Visual Studio 2008を使う利点はどんなところにありますか。
Web開発者なら,ASP.NET AJAX,Cascading Style Sheets(CSS)の編集機能,そしてLINQなどが挙げられます。クライアント・アプリケーション開発者なら,Windows Presentation Foundation(WPF),LINQ,ClickOnce,Officeアプリケーション開発機能が挙げられるでしょう。そして,企業の情報システムの開発者には,Team Foundation Server(TFS)の新機能,例えばビルドに関する機能を大幅に改善しました。すべての開発者が得られる利点としては,Visual BasicとC#の言語仕様の改良ですね。
開発者は,場合に応じた最適なアプリケーション開発機能を利用できます。インタラクティブなWebアプリケーションの作成にはASP.NET AJAXが役立ちます。Officeの機能が必要なときは,Professional Edition以上の製品に組み込んだVisual Studio Tools for Officeが役に立つでしょう。そして,シンプルなWindowsフォーム・アプリケーション,表現力豊かなWPFアプリケーションも作成できます。
基調講演であなたがC#のプログラムでLINQを使ってデータベースにアクセスする方法を見せてくれたときにちょっと驚きました。LINQの式はもっと関数型言語に近いものだったと思っていたのですが,基調講演であなたが見せたLINQの式はまるでSQLのようでした。
私たちはLINQの式の書法として2種類用意しました。一つ目は私がお見せしたようにSQLに近いものです。.NET Frameworkアプリケーションの開発者の多くがこのやり方を好むと思ったからです。大体の場合,こちらの方が分かりやすいでしょう。
var products = from p in db.Products where p.categoryId == 2 select p;
もう一つの方法がラムダ式を利用する方法です。ちょっと分かりにくいかもしれませんが,こちらの方がより簡潔にクエリ式を記述できます。上のクエリ式と同じことを,以下のように短く表現できます(写真2)。
var products = db.Products.where (p => p.CategoryId == 2);
C#だけでなく,Visual Basicでもこれら二つの方式を利用できます。コンパイラはこれら二つの式を同じように解釈し,中間コードを生成します。
ラムダ式のサンプルを見ましたが,私にはちょっと難しそうです。
数学を理解しなければいけないと考えてしまうかもしれませんが,実際はそんな必要はありません。私のブログで,ラムダ式の使い方を簡単に解説していますので,是非読んでみて下さい(2007年4月8日の記事)。
Visual Studio 2008の機能で印象に残っているのがJavaScript関連の機能です。デバッガやIntelliSense,型推論など,とても役に立ちそうだと感じました。JavaScript関連で,さらに追加したいと思っている機能はありませんか。
もっと,コードの記述に役立つ機能を追加したいですね。例えばコード・スニペットなどを考えています。ほかにも,私たちのチームはJavaScript関連の機能についてはもっとできることがあると考えています。
Firefoxを開発しているMozilla Foundationは,JavaScriptの次世代版について話し合っており,Firefox 3に実装する予定としています。JavaScriptの次世代版についてはどのように見ていますか。
今は,ECMAScriptとして標準化の作業が進んでいるから,その様子を見ているところです。たとえFirefoxが先行して実装しても,Firefoxでしか使えないのでは意味がありません。もちろん,業界標準と認められれば,私たちも対応します。