連載:VB研公開ゼミ議事録

第6回 VB開発者が最新.NET Frameworkを効率よく習得する方法

デジタルアドバンテージ 一色 政彦
2008/07/08
Page1 Page2

 2008年6月28日(土曜日)、オフライン・セミナー「第6回 VB研(VB業務アプリケーション開発研究室)公開ゼミ」がベルサール神保町で開催され、約60人を超える参加者が集まった。

第6回 VB研 公開ゼミ会場の様子

 今回は「VB開発者のための.NET Framework 3.5の基礎」と題し、マイクロソフトで.NET Frameworkの普及促進を担当する新村 剛史 氏を基調講演「早わかり .NET Framework のメカニズム」の講師に迎え、VB開発者向けに.NET Frameworkの基礎について解説していただいた。

 続くパネル・ディスカッション「VB開発者が最新.NET Frameworkを効率よく習得する方法」では、.NET Frameworkの実行エンジン(CLR:Common Language Runtime)やクラス・ライブラリに詳しいパネラーを迎え、基調講演の内容をベースに、.NET Frameworkの実行エンジンや.NET Frameworkのクラス・ライブラリについて、VB開発者の視点で議論が交わされた。

パネル・ディスカッションの様子

 参加したパネラーは以下のとおりだ。

パネリスト

新村 剛史 氏(マイクロソフト)
福岡 寿和 氏(富士通ソーシアルサイエンスラボラトリ)
八巻 雄哉 氏(グレープシティ)

モデレータ 小川 誉久(@IT/Windows Server Insiderフォーラム編集長)

 本稿では、このパネル・ディスカッションの内容を要約してお伝えする(以下、敬称略)。

 アプリケーションは「アプリ」と略す。また、.NET Frameworkは単に「.NET」と略す。

小川 今回は前半を「ランタイム編」としてCLRについて深く掘り下げ、後半を「言語&フレームワーク編」としてVB言語の機能やクラス・ライブラリについて議論していきたいと思います。

【ランタイム編】

1. CLRの知識は本当に必要か? 特に重要な知識とは?

小川 先ほどの基調講演で説明された.NETの実行エンジンであるCLRですが、GAC(グローバル・アセンブリ・キャッシュ)やCAS(コード・アクセス・セキュリティ)など、何やら難しい概念がたくさん登場しました。そもそもこのような知識が実際の開発現場で本当に必要とされるのでしょうか?

マイクロソフト株式会社
デベロッパー&プラットフォーム統括本部
シニアプロダクトマネージャ
新村 剛史

新村 確かにCLRの仕組みを知らなくても.NETの開発は行えます。必要最小限の.NETの基礎知識でも開発が行えるように、マイクロソフトはVisual Studioというツールでさまざまな工夫をしています。しかしながら、.NETが提供する多様な機能には特性があり、それに起因する制限があります。

 例えばClickOnce(=プログラムを容易に配布する技術)では、CLRに基づくセキュリティ・ゾーンやCASが活用されており、セキュリティが制御され、安全が確保されています。このようにCLRの技術を活用する場面では、CLRへの理解度によって、実際の開発効率や運用時の問題回避などで差が出てきます。.NET開発者が、初心者から抜け出して一歩先をゆくためには、CLRについての知識は必須だと考えます。

福岡 わたしもやはり、業務アプリを組む人はCLRについて必ず知っておかなければいけない点があると思います。それはCLRの配置に関しての知識、例えば.NETのアプリが.DLLファイルをロードする仕組みや、厳密名による署名がどういう場合に必要かなどであり、これらをよく知っておかなければ、実際の運用段階でトラブルが起こったときなど、早期の原因究明ができません。

八巻 わたしも配置の知識は特に重要だと思います。グレープシティでも.NETが製品として世に出てきた当初は、「従来あったレジストリ登録は必要ないのか?」「どの場所に配置するのが適切なのか?」など、配置に関するサポートへの質問がとても多かったと記憶しています。ここ最近ではCLRの仕組みも浸透してきたようで、そういった配置のトラブルは少なくなってきてはいますが。

 ソフトウェアの挙動に関するユーザーの質問に答える場合にもCLRの知識は必要です。例えば「起動が遅い」などといった質問はありがちですが、CLRの知識がなければ、顧客にきちんと理由を説明できないでしょう。

小川 .NETのCLRには高度なセキュリティ機能が搭載されるなど非常に優れた点が多いと思うのですが、顧客はそういう目に見えない部分よりも「.NETだと遅いね」など直接体感するデメリットに反応してしまうことが多いのではないかと想像します。実際のところはどうなのでしょうか?

福岡 .NETで作ったアプリを初めて動かす場合、アプリの起動というよりも、その前に走るCLR自体のロードに非常に時間がかかることが問題になります。VB6であればスプラッシュ・スクリーンを出して、アプリの起動時間で生まれるユーザーのストレスを軽減させるというアイデアがよく使われましたが、.NETは取りあえずCLRがロードされるまでは、すべての処理は待つしかないため、そのアイデアが使えません。

 そこでわたしの場合は、システムのスタートアップ時に画面が表示されない小さな.NETアプリを起動して、目的の業務アプリが実行される前にCLRをいったんロードしておくというテクニックを使い、.NETアプリ起動時のパフォーマンスの問題を回避しています。これだけでユーザーの体感も大幅に改善されると思います。ちなみに.NETの動作パフォーマンスが原因で、アプリの処理速度が遅いなどのクレームがお客様からあがったことは一度もないですね。

2. CLRのセキュリティ機能は本当に有用か?

小川 CLRでは強力なセキュリティ機能が搭載されていますが、業務アプリに限っていえば、セキュリティはどれくらい重要視されているんでしょうか?

富士通ソーシアルサイエンスラボラトリ
第二産業流通ビジネス本部
主任
福岡 寿和
Microsoft MVP for Visual Basic

福岡 セキュリティ機能はどうしても利便性とのトレードオフになるので、ユーザーには歓迎されません。ただ時代に後押しされてセキュリティの向上に対する意識は高まってきているとは思います。とはいっても「セキュリティ向上のために.NETを採用する」というようなお客さまを担当した経験はまだいないですね。

八巻 確かにCLRはプログラムの改ざんを防ぐようなセキュリティ機能を持っていますが、そんな危機が一般の業務アプリに訪れるのかというと「ちょっとありそうにないな」と感じています。実際に、これまでにグレープシティが受けたセキュリティ関連のサポートへの質問といえば、「ネットワークからアセンブリをダウンロードして直接実行するノータッチ・デプロイメントという機能を使用する際のCASの設定について教えてほしい」のようなものでした。ClickOnceになりデフォルトではセキュリティ設定が行われなくなってからは、セキュリティに関する質問はほとんどありません。

会場 CAS(コード・アクセス・セキュリティ)に対してわたしは不満があるのですが、例えばプログラムに細かく「どの機能の実行を認めるか」というアクセス許可を設定しても、プログラムのバージョン・アップで機能が増えて新しい機能を使うようになれば、さらにアクセス許可を増やさなければなりません。そんな面倒があるのなら最初から「完全信頼(Full Trust:すべての機能が実行できる状態)」に設定しておいた方が後々のメンテナンスが楽なのでよいと思うのですが。

新村 セキュリティ上の脅威やメンテナンスの容易性といったさまざまなトレードオフを考慮したうえで、「完全信頼があなたのセキュリティ・ポリシー」というのならそれで構わないと思います。また、ほかにもSystem Centerなどセキュリティ・ポリシーを広範囲に適用する便利なツールはいろいろとあるので、これらを活用しながら状況に合わせてセキュリティ機能を適切に使いこなしていただけたらと思います。

3. .NET自体のインストールは簡単なのか?

会場 .NET自体のインストールに関して質問させてください。Windows Vistaには.NET 3.0*1が初めからインストールされていますが、.NET自体のインストールは不要で、.NET 2.0で構築したアプリならそのまま動作するのでしょうか? また、それ以前のバージョン、例えば.NET 1.1で動作するアプリを動かすには、どうすればよいのでしょうか?

*1 正確には「.NET Framework 3.0」

新村 基調講演でも話したように、.NET 3.0と.NET 3.5には.NET 2.0のCLRとクラス・ライブラリが内包されていますので、.NET 2.0や.NET 3.0のアプリはそのまま動作します。.NET 1.xの場合は、通常どおり、そのバージョンの.NETをインストールする必要があります。

.NET Frameworkのバージョンの遷移(新村氏の基調講演資料より)
.NET 3.0や.NET 3.5には.NET 2.0のCLRとクラス・ライブラリが内包されている。.NET 1.xのCLRは.NET 2.0のCLRと共存が可能。

八巻 ユーザーの中には、.NETをインストールすることに対して抵抗を感じる人もいるのではないでしょうか? とにかく.NET自体のサイズがかなり大きいので、「もっと小さくなれば気軽にインストールしてもらえるのではないか?」という気がします。

福岡 「アプリを作ってXCopy(=単純なコピー)したらすぐに動きますよ」という情報が独り歩きしているので、そこで「なぜ.NET自体をインストールする必要があるの? インストール不要だといっていたじゃないか」という話をよく聞きます。そして「じゃあ仕方ないからインストールするよ」となったとき、インターネットからダウンロードしようとして「サイズが大きくてすごく時間がかかる」というクレームが出ます。だからいまは、ダブル・パンチなんですね(笑)。

 ですから.NET自体のサイズを小さくしてもらえると助かります。でもWindows Vistaなら.NETが最初から入っているので、今後は新しいOSが普及していくにつれて、そのような問題もなくなっていくのかなという気もします。

新村 まもなく.NET 3.5 SP1をリリースする予定ですが、恐らくそれと同時期ぐらいに「.NET Framework 3.5 SP1 Client Profile」(以降、Client Profile)というものを提供することになります。

 Client Profileは.NET 3.5が持つクライアント・サイドのテクノロジのみを切り出して集めたもので、Windows XPのみに対応しています(※クライアント用なのでWindows Serverなどには提供しない)。これなら、サイズが非常に小さくなる予定ですので、ユーザーのクライアント環境へ配布しやすいと思います。


 INDEX
  VB研公開ゼミ議事録
  第6回 VB開発者が最新.NET Frameworkを効率よく習得する方法
  1..NET Frameworkの基礎(ランタイム編)
    2..NET Frameworkの基礎(言語&フレームワーク編)

インデックス・ページヘ  「VB研公開ゼミ議事録」


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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH