TOPシステム開発> あらためて、「.NET」を考える
.NET
.NETが目指したものは何か

第1回:あらためて「.NET」を考える
著者:マイクロソフト  松崎 剛   2007/2/20
前のページ  1  2  3  4
あらためて、「.NET」を考える

   では、「.NETとは何か」ということをあらためて整理しておきましょう。

   先の項で簡単に内部を見てきましたが、ここでは.NET Frameworkの仕組みについて理解していただきたいのではありません(ここでは「概念」しか説明していません。ご興味のある方は、仕組みについてより詳細に記述された専用の文献を参照してください)。ここでは、その実装系が、過去から学んだ多くの経験則を含んでいることを実感していただきたいために、その例をあげて説明しました。

   .NETとは、構想当初のキーワードである「つながるシステム」という言葉に加え、前述でみてきたように、モジュール性とポータビリティの確保、非ビジネスロジック実装のワークロードからの開発者の解放、堅牢なセキュリティの確保をも含んだ進化形の思想であり、その実行の基盤を根底から見直したまったく新しい実装系になっています。
   こうした視点で.NETの機能や技術の1つ1つを見ると、個々の機能に振り回されるのではなく、その意味や役割を体系的に把握することができるでしょう。ではもう一度、別の例でそれぞれを振り返っておきます。


モジュール性とポータビリティの確保

   例えば、ポータビリティの観点で見ると、従来はレジストリと呼ばれる領域が存在し、実行モジュールとは別の場所にアプリケーションに関する設定情報などを管理するという仕組みを多用していました。現にCOMを使用する場合にも、COMに関する情報は、必ずこのレジストリと呼ばれる領域にCOMのDLLとは別に登録する必要がありました。

   ところが.NETでは、この登録作業なしに、アセンブリや構成ファイル(アプリケーションの設定情報を記載したXML形式のファイル)のコピーによるポータブルなインストールが可能になっています(ただし、これは.NETでレジストリが扱えないという意味ではありません)。


非ビジネスロジック実装のワークロードからの開発者の解放

   また、非ビジネスロジック実装からの解放という観点では、.NETの処理のロジックコードとは別に、先に説明した「構成ファイル」や「属性」と呼ばれるプログラムコードとは分離したランタイム時の動作定義を行うことができるようになっています(注4)。

※注4: 「属性」は、.NETが組み込んでいるもの以外に、カスタム属性として独自に属性(およびその属性に付随する振る舞い)を追加することもできます。

   これにより、すでに.NETで開発されている皆さんは、トランザクション管理、セキュリティなどの難解で横断的な振る舞いをプログラムコードに混ぜて組み込む必要はなく、実はこの恩恵を多分に受けて開発することができているのです。

   .NETを使って、要件が厳格で規模の大きなプログラムなどを開発されたことがある方は、「.NETを使うと何となく今までよりも簡単に組むことができる」と実感されている方も多いと思います。これは開発ツールがコードを自動生成してくれているという恩恵以外に、こうした言語仕様そのものの根本的な思想のおかげであることも忘れてはなりません。


堅牢なセキュリティの確保

   セキュリティに関しても、タイプセーフな実装系になっています。従来であればchar*からchar**へのキャストなどをコードに含め、実行時にメモリバイオレーション(不正メモリによる動作エラー)などが発生するようなコードを実行することが可能でした。

   これにより、しばしば悪意ある開発者により不正な手続きを利用した悪意のあるプログラムが開発され、実行されてしまうという場合がありました。しかし.NETでは、こうした類の不正動作は、そもそもコンパイルできない仕組みになっています。

   加えて、セキュリティ機能の実装についても、ユーザ権限の範囲のみで何でもできてしまうような性善説に立ったセキュリティではなく、コードアクセスセキュリティと呼ばれる仕組みでコードの性質も加味したチェックが行える仕組みになっています。これは.NETの開発者の方であればすでにご存知のことと思います。


次回、.NETの方向性

   すなわち、「.NETで作る」ということは、単に新しいフレームワーク上で動作させるという意味以外に、モジュール性とポータビリティに配慮され、ビジネスロジックと非ビジネスロジックを分離し、セキュリティの側面でもより堅牢な、進んだ思想を持ったまったく別のフレームワーク上で実装するということを意味しているのです。

   よく.NET以前の環境(例えば、Visual Basic 6.0などで開発されたプログラムなど)の移行の必要性について質問をいただくことがあります。既存のプログラムの.NETへの移行を検討されている方は、単に、サポートの将来性という点以外に、こうした恩恵についても整理して理解した上で判断する必要があります。

   第1回では.NETの全体感を実行基盤という側面でみていきましたが、次回は、.NETをより深く理解するために、開発基盤としてみた.NETの側面について、同じく個々の機能ではなく全体的な方向性を踏まえながら捉えていきたいと思います。

前のページ  1  2  3  4


マイクロソフト株式会社 松崎 剛
著者プロフィール
マイクロソフト株式会社  松崎 剛
1969年生まれ。慶応義塾大学院数理科学専攻修士(博士前期)課程修了。1994年より、情報システム系技術者としてのシステム構築、ソフトウェアプロダクト開発、技術系コンサルティング(アドバイザー業務)などを複数企業で経験。マイクロソフトでは、デベロッパーエバンジェリストとして、開発者向けのセミナーなどを主体とした活動を実施。


INDEX
第1回:あらためて「.NET」を考える
  「.NET」がそもそも目指したもの
  フレームワーク(実装基盤)としてみた「.NET」
  開発効率を考慮した仕組み
あらためて、「.NET」を考える