ITサポート

セミナー

会員特典

その他

過去のコラム等

Twitter

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■第15回 .NETになって変わったこと(前編) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  前回、VisualBasic6.0から.NET化することで、過去の資産を活かそうという  お話をしました。  しかし、VisualBasic4.0~6.0は長い間使われてきたため、いきなり開発手  法を変えろと言われても抵抗がある人もいると思います。  そこで、今回はもう少し突っ込んで、.NETになると何が変わるのかを説明し  ようと思います。  読者の皆さんの中には、.NETに関係の無い仕事をされている方も多いと思い  ますが、軽く読んでいただいて「へえ~、.NETってこういう風になってるん  だ」と感じていただければと思います。 ●MSILとJITコンパイラ  .NETでコーディングされたプログラムをコンパイルすると、MSIL(Mirosoft  Intermediate Language)という中間コードに変換されます。  中間コードにコンパイルされるという仕組みはVisualBasic6.0でも同じなの  ですが、.NETでは実行時にコードが必要になったとき、さらにマシン語に変  換して実行します。  この中間コードをマシン語に変換するものが、JITコンパイラです。  変換処理は実行時に行われるので、当然のことながら変換処理が行われてい  る際は遅くなりますが、2回目からはコンパイルは不要で実行のみとなるた  め、全体を通して考えると驚くほど高速で動作します。 ●アセンブリ  .NETアプリケーションの構成単位であり、配置やバージョン管理もアセンブ  リ単位で行います。  アセンブリは1つ以上のファイル(DLL、EXE、リソース)で構成されます。  さらに、DLLやEXEは、MSILとメタデータから構成されています。  メタデータには、アプリケーションに関する情報が含まれています。  .NET以前は、アプリケーションに関する情報を管理するためにレジストリを  使用していましたが、.NETではレジストリが不要になります。  レジストリが不要になったことで、VisualBasic4.0~6.0で作成されたアプ  リケーションにありがちだった、DLLをバージョンアップしたら動かなくな  ったという現象が起こらなくなりました。 ●マネージコード  共通ランタイム(Common Language Runtime:CLR)上で実行されるコードを  マネージコードと言います。  共通言語仕様により、様々な.NET言語間でメソッドを相互的に利用すること  ができるようになりました。  CLS準拠の言語は、20種類以上あるそうです。  一方で、CLSに関係なく作成されたコードを、アンマネージコードと言いま  す。  VisualBasic6.0や、VisualC++6.0で作成されたコードは、アンマネージコー  ドです。他にも、Win32APIもアンマネージです。  基本的に、全てをマネージコードにするのが望ましいのですが、旧資産を活  かすとなると、そう簡単にはいきません。  例えば、昔作成したCOMを使いたいということがあると思います。  そのような場合のために、CCW(COM Callable Wrapper)や、RCW(Runtime  Callable Wrapper)という仕組みが用意されており、.NET上からCOMを呼び  出すことができるのですが、動作コストが高いので検討が必要でしょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━