BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

Visual Basic からランタイムライブラリがなくなる

| 作者: Jonathan Allen フォローする 655 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2011年1月16日. 推定読書時間: 2 分 |

原文(投稿日:2011/01/13)へのリンク

最近まで Visual Basic には,コアフレームワークにはない機能の多くを備えた,独立したランタイムライブラリが必要だった。以前からの機能,無統一ではあるが便利なユーティリティ機能などに加えて,遅延バインディングや変換演算子などといった VB の重要な機能も,このライブラリのサポートによるものだ。(C# 4 にもこれと同じような,遅延バインディングを提供するランタイムライブラリがある。) ところが残念なことに,XBox 360/XNA など多くのプラットフォームの設計者たちが,共通言語ランタイム (Common Language Runtime/CLR) を完全には実装しない,という判断を下したため,Visual Basic のランタイムライブラリに必要ないくつかのオペコードが,これらのプラットフォームに存在しないことになってしまった。

2008 年になって,Visual Basic コンパイラに代替ランタイムライブラリを使用する機能が追加された。これでプラットフォーム開発者は,オプション機能や旧機能に悩まされることなく,独自バージョンの VB ランタイムが提供可能になると期待されたのだが,Windows Phone 7 以外ではそれは実現しなかった。カスタム実装を作成する作業があまりにも膨大であったためだ。

この問題に対処すべく,VB 10 SP 1 から 新しいコンパイラオプション が導入されている。独自のランタイムを構築する代わりに,既存ランタイムを部分的にアプリケーションに組み込む,という方法だ。ただし提供される機能は,変換処理や VB 固有のアトリビュートなどの必須機能に限定されている。次のような機能は対象外となった。

  • 旧 VB 関数 - Left,Mid など
  • 旧式の Like 演算子
  • 古い VB スタイルの “On Error Goto Error” 処理
  • 遅延バインディング
  • My 機能の大部分

遅延バインディングがサポートされないことが驚きであるなら,このコンパイラオプションが必要なプラットフォーム上では,C# にも遅延バインディングがない点に注目する必要がある。要は動的言語ランタイム (Dynamic Language Runtime) を持たないプラットフォームである,ということなのだ。もっとも VB に遅延バインディング機能がなくなったのは今回が始めてではなく,.NET Compact Framework 用にコンパイルされた場合でも同じである。

Microsoft は,一般の開発者がこのフラグを使用するとは考えていない。それよりも,ターゲットプラットフォームに Microsoft.VisualBasc.dll がすでに存在していない場合に,プロジェクトテンプレートに自動的に設定するような方法が採用されるだろう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT