VB8(VB2005)から追加された新しい機能の一つにMy名前空間があります。 この名前空間には、様々な機能を持ったクラスへのエイリアスが含まれていて、一つのメソッド呼び出しで簡単にそれらの機能にアクセスできるようになっています。 これらの機能はC#など.NET Frameworkの他の言語からも使用することができるようになっていますが、VBでは言語の機能として組み込まれているため非常に簡単に扱えるようになっています。
My名前空間という名称が与えられていますが、特殊な意味を持つ名前空間というよりは一種のユーティリティクラスといったものであるため、ソースコード内で論理的な構造を構成する名前空間の機能と混同しないようにしてください。 また、My
に類似したキーワードにインスタンス自身を参照するMeやMyBaseなどがありますが、これらも役割の異なるキーワードである点にも注意してください。
My名前空間の機能の例
VB.NETでWAVEファイルを再生するにはSoundPlayerクラスやAPI関数のPlaySoundを使う方法がありますが、このほかにもMy名前空間のMy.Computer.Audio.Play
メソッドを使う方法があります。 このメソッドを使うとインスタンスの作成やAPI宣言などを記述することなくメソッド呼び出し1行でWAVEファイルの再生を行うことができます。
この例のように、今までなら多くのコードを書いたりAPIを使わなければ実現できなかった機能が、My名前空間のオブジェクトを使うことにより簡単に実現できるようになっています。 My名前空間の機能にアクセスするにはMy
キーワードを使い、続けてComputer
やApplication
など操作対象となるオブジェクトを参照してメソッドを呼び出します。 WAVEファイルの再生以外にも、My名前空間にはさまざまなカテゴリの機能が用意されています。
VB以外の言語とMy名前空間
C#などVB以外の言語からもMy名前空間の機能にアクセスすることはできます。 例えばC#でMy名前空間の機能を使ってWAVEファイルを再生する場合は次のようになります。
Microsoft.VisualBasic.dllを参照に追加することでMy名前空間の機能を使うことはできますが、C#にはmy
などのキーワードは用意されておらずMy名前空間の機能はサポートされないので、この例のように機能に該当するクラスをインスタンス化してからメソッドを呼び出す必要があります。
My.Computer.FileSystem
My.Computer.FileSystem
には、名前の通りファイルシステムに関する機能が存在します。 このうち、 SpecialDirectoriesプロパティには特殊フォルダのパスを簡単に取得できるメンバが用意されています。 CurrentDirectoryプロパティではカレントディレクトリを取得できます。
Drivesプロパティはシステムに存在する全てのドライブの情報を格納したDriveInfoクラスの読み取り専用コレクションになっています。 このコレクションを列挙して個々のDriveInfoを参照することにより、ドライブに関する情報、例えばファイルシステムや空き容量、ドライブの種類などを取得することができます。 このほかDriveInfoクラスの使い方についてはファイル・ディレクトリの操作 §.DriveInfoクラスで詳しく解説しています。
なお、System.IO.DriveInfo.GetDrivesメソッドを呼び出すことでもMy.Computer.FileSystem.Drivesプロパティと同じくすべてのドライブのDriveInfoを取得することができます。
このほかにも、My.Computer.FileSystem
にはファイルシステムに関する様々なメソッドが用意されています。 そのうちのいくつかを抜粋します。 いずれも名前から機能と動作が容易に想像できるようになっています。
- ドライブ関連
- My.Computer.FileSystem.GetDriveInfo()
- ディレクトリ関連
- My.Computer.FileSystem.CreateDirectory()
- My.Computer.FileSystem.CopyDirectory()
- My.Computer.FileSystem.CreateDirectory()
- My.Computer.FileSystem.DeleteDirectory()
- My.Computer.FileSystem.DirectoryExists()
- My.Computer.FileSystem.GetDirectories()
- My.Computer.FileSystem.GetDirectoryInfo()
- My.Computer.FileSystem.MoveDirectory()
- My.Computer.FileSystem.RenameDirectory()
- ファイル関連
- My.Computer.FileSystem.CopyFile()
- My.Computer.FileSystem.DeleteFile()
- My.Computer.FileSystem.FileExists()
- My.Computer.FileSystem.GetFileInfo()
- My.Computer.FileSystem.GetFiles()
- My.Computer.FileSystem.MoveFile()
- My.Computer.FileSystem.RenameFile()
- ファイルIO関連
- My.Computer.FileSystem.OpenTextFieldParser()
- My.Computer.FileSystem.OpenTextFileReader()
- My.Computer.FileSystem.OpenTextFileWriter()
- My.Computer.FileSystem.ReadAllBytes()
- My.Computer.FileSystem.ReadAllText()
- My.Computer.FileSystem.WriteAllBytes()
- My.Computer.FileSystem.WriteAllText()
- パス関連
- My.Computer.FileSystem.CombinePath()
- My.Computer.FileSystem.GetParentPath()
- My.Computer.FileSystem.GetRelativePath()
このように、System.IO名前空間のクラスを使わなくても簡単にファイル操作が行えるようなメソッドが多数用意されています。
My.Computer.Info
My.Computer.Info
からは現在アプリケーションを実行しているマシンに関する情報を取得することが出来ます。 取得できるのはOSに関する情報、使用可能メモリなどです。
My.Computer.Info.OSFullName
でOSの名前を取得できるようになっているので、OSPlatform
とOSVersion
の組み合わせからOS名を判別するといった煩雑な処理を記述する必要はありません。
My.Computer.Clock
My.Computer.Clock
からは時刻に関する情報を取得することが出来ます。
My.Computer.Audio
My.Computer.Audio
にはWAVEファイルを再生する機能が用意されています。 My.Computer.Audio
でサポートされるオーディオファイルはWAVE形式のみです。
このほかにも、Byte型配列を引数にとるバージョンのPlayメソッドもあるので、プログラム中で動的にWAVEを作成して再生する、といったことにも使えます。
また、自分で用意したWAVEファイルではなくシステム標準の効果音を鳴らす場合には、PlaySystemSoundメソッドを使用します。 なお、PlaySystemSoundメソッドの引数で指定するSystemSounds列挙型はSystem.Media名前空間に含まれます。
PlaySystemSoundメソッドはPlayメソッドのように同期的に再生することができないため、この例では途中にThread.Sleepを挟んで一定時間待機しています。
その他のMy名前空間のオブジェクト
ここで紹介した以外にも、My名前空間には様々なオブジェクトが用意されています。 ここではそのうちよく使われそうなものをいくつか紹介します。
- My.Application
- 実行しているアプリケーションに関する情報を取得したりできます
また、DoEvents, RunなどのメソッドやStartup, Shutdownといったイベントも提供されています - My.Application.Info
- アプリケーションのバージョン情報や製品名などのアセンブリ情報、スタックトレースなどを取得できます
- My.Application.Log
- ログの書き込みなどを行うメソッドが提供されています
- My.Computer.Clipboard
- クリップボードに対する操作を行うメソッドが提供されています
- My.Computer.Network
- ネットワーク関連のプロパティや、アップロード・ダウンロードを行うメソッドが提供されています
- My.Computer.Registry
- レジストリを操作するためのメソッドが提供されています
- My.Settings
- アプリケーション設定を保存したりするメソッドが提供されています