特集:実践! VB便利機能活用ガイド Part I

Visual Basic 2008のMy機能を使いこなそう

デジタルアドバンテージ 一色 政彦
2008/06/11

 My機能は、膨大な.NETクラス・ライブラリの中で迷子になりやすいVisual Basic開発者(以降、VB開発者)を救うためにVisual Basic 2005以降で追加されたもので、VB開発者がよく使う機能へのショートカットを提供してくれる(詳しくは「Visual Basic 2005 ここが便利! 第1回 “My”はクラスの海からVBプログラマを救う!?」を参照してほしい)。

 例えば、

  わたし(My)の(.)コンピュータ(Computer)の(.)名前(Name)

を取得したい場合には、次のように記述をすればよい。

  My.Computer.Name

 このように、My機能を使えば、各種機能にアクセスするコードを非常に直感的に記述できるわけである。だからといって、My機能の全体像を把握していなければ、My機能の中に目的のものがあるかどうかを判別できず、やはりヘルプ・ドキュメントなどで目的の機能を探さなければならなくなってしまう。「そんなことをするぐらいなら最初から使わない方がいいかも……」とMy機能を捨ててしまうのは簡単だが、せっかく利便性のために用意されているのにもったいない話だ。

 そこで本稿では、VB開発者がMy機能をもっと使いこなせるように、My機能の全体像を一望し、My機能にはどのような機能がるのかをできるだけ簡潔にまとめてみたい。どのような分類があり、それぞれの分類にどのような機能が収まっているのかを一度でもチェックしておけば、My機能をもっと活用できるようになるのではないだろうか。

 それではさっそく、My機能が持つ10個の大分類から押さえていこう(なお、本稿では「アプリケーション」は「アプリ」と略す)。

My機能が持つ10大カテゴリ

 My機能では、最初に10の大分類となるカテゴリが用意されている。その10個は以下の表のとおりだ。

大分類 取り扱い機能 Con Win Web 注意事項
My.Computer コンピュータ情報
Webでは一部使えないプロパティがある
My.User ユーザー情報
 
My.Application アプリケーション
×
(Webでは利用不可
Winではすべてが利用できるが、Conでは一部が利用できない
My.Settings アプリケーション設定
×
(Webでは利用不可*1
My.Resources リソース
×
(Webでは利用不可*1
My.WebServices XML Web サービス
×
(Webでは利用不可*1
My.Forms Windowsフォーム
×
×
(Win専用)
My.Log ログ出力
×
×
(Web専用)*2
My.Request HTTPリクエスト
×
×
(Web専用)*2
My.Response HTTPレスポンス
×
×
(Web専用)*2
My機能が持つ10大カテゴリ
「○」は利用可能であること、「×」は利用できないことを示す。
列見出しにある「Con」「Win」「Web」は、大体の目安として、My機能が活用できるプロジェクトの種類(厳密にはコードの種類)を表している。それぞれが示すプロジェクトは次のとおり。
「Con」は、具体的には「コンソール・アプリ」「クラス・ライブラリ」「Windowsサービス」を示す。
「Win」は、具体的には「Windowsフォーム・アプリ」「Windowsフォーム・コントロール・ライブラリ」を示す。
「Web」は、具体的には「Webサイト」を示す。
*1 ただし、「Webコントロール・ライブラリ」は利用可能。
*2 ただし、「Webコントロール・ライブラリ」は利用不可

 それでは各カテゴリの内容について説明していこう。

 なお本稿では基本的に、IntelliSenseの[よく使われる候補]に表示されるもののみを紹介する。

IntelliSenseの[よく使われる候補]

「コンピュータ情報」を扱う「My.Computer」

 My.Computerオブジェクトは、コンピュータ情報を取り扱う。

 コンピュータ情報といっても、Windows OS上で動作するWindowsアプリやコンソール・アプリでは、クライアント・コンピュータの情報(例えば、オーディオ、キーボード、マウスなど)を操作することがあるのに対し、Webサーバ(IIS)上で動作するWebアプリ(Webサイト)の場合はサーバ・コンピュータに関する情報(例えば、時計など)にアクセスするだけで十分だろう。例えば、WebサーバOS上で現在押されているキーの情報を取り扱うことなどは到底考えられない。

 このような理由から「Webサイト」(のプロジェクト)の場合では、My.Computerオブジェクトの一部のプロパティが利用できない(※ただし、試してみた結果、「ASP.NET Web アプリケーション」のプロジェクトでは利用できるようだ)。

 My.Computerオブジェクトが持つプロパティを次の表にまとめた。後半の黄色の部分が、Webサイトで利用できないプロパティである。

プロパティ 説明
Clock 時計情報(日時やシステム・タイマ)の取得
FileSystem ドライブ、ファイル、ディレクトリの操作
Info OSバージョン、メモリの空き容量などの取得
Name コンピュータ名の取得
Network ネットワークへの接続状態の取得
ファイルのアップロードやダウンロード
Registry レジストリの操作。
Audio サウンドの再生
Clipbord クリップボードの操作
Keybord キーボード情報(押されているキーなど)の取得
キー・ストローク(押下)の送信
Mouse マウス情報の取得
Ports シリアル・ポートへのアクセス
Screen プライマリ・ディスプレイの画面情報の取得
My.Computerオブジェクトが持つプロパティ

 プロパティの呼び出し方を説明する必要はないだろうが、念のため、1例だけ示しておく。例えばMy.ComputerオブジェクトのClockプロパティを使って、現在の日時を取得するには次のようなコードを記述すればよい。

Dim a As String = My.Computer.Clock.LocalTime.ToString()
My機能を使って現在の日時を取得するコード

【コラム】プロジェクトの種類によって異なるMy.Computerオブジェクトの機能
本稿では覚えやすさを大切にするため、厳密な部分には触れていないが、実際には「My.Computer」と入力したときに使われるクラス自体が、Webサイトとそれ以外では異なる。WebサイトではMy.Computerオブジェクトの内部でServerComputerクラスが使われるのに対し、それ以外のプロジェクトではComputerクラス(ServerComputerクラスの機能も内包)が使われる。このようにMy機能は、プロジェクトの種類によって動作が切り替わる。
なお、冒頭の表で示したように、プロジェクトの種類は「Con」「Win」「Web」に大別でき(詳細は表の説明欄を参照)、My機能の動作の違いも大体この分類に沿っているようである。

「ユーザー情報」を扱う「My.User」

 My.Userオブジェクトは、ユーザー情報を取り扱う。このオブジェクトが持つプロパティとメソッドを次の表にまとめた。

プロパティやメソッド 説明
Name 現在のユーザー名の取得
IsAuthenticated ユーザーが認証されているかどうかを取得
IsInRole() ユーザーが指定されたロールに属するかどうかをチェック
My.Userオブジェクトが持つプロパティとメソッド
名前の最後に「()」が付いているものはメソッドであることを示している。

「アプリケーション」を扱う「My.Application」

 My.Applicationオブジェクトは、Windowsアプリやコンソール・アプリに関連する情報や機能(例えば、スプラッシュ・スクリーンなど)を取り扱う。

 My.ApplicationオブジェクトはWebサイトでは利用できない。また、Windowsアプリのプロジェクトではすべてのプロパティ(およびメソッド)が利用できるが、コンソール・アプリのプロジェクトでは一部が利用できない。

 My. Applicationオブジェクトが持つプロパティとメソッドは次のとおりだ。後半の青色の部分が、コンソール・アプリのプロジェクトで利用できないプロパティである。

プロパティやメソッド 説明
GetEnvironmentVariable() 環境変数の取得
CommandLineArgs コマンドライン引数の取得
Info アプリのバージョン、説明などの取得
Log イベントや例外などのログの出力(出力先はデフォルトでは[イミディエイト ウィンドウ]になる)
なおWebアプリでもログ出力は必要なため、後述の「My.Logオブジェクト」が代替として提供されている(機能は同じ)
IsNetworkDeployed ClickOnceで配置されたアプリかどうかを取得
Deployment ClickOnceのApplicationDeploymentオブジェクトの取得
Culture 現在のスレッドのカルチャ(=言語や地域の設定)の取得
UICulture 現在のスレッドでUIカルチャ(=Windowsフォームなどのリソース関連のカルチャ)の取得
ChangeCulture() カルチャを変更する
ChangeUICulture() UIカルチャを変更する
ApplicationContext Windowsアプリの現在のスレッドに対応するApplicationContextオブジェクトの取得(ApplicationContextオブジェクトは主にApplication.Runメソッドの引数として使う)
SplashScreen スプラッシュ・スクリーンの設定
MinimumSplashScreenDisplayTime スプラッシュ・スクリーンを表示する最小時間の設定(ミリ秒単位)
SaveMySettingsOnExit アプリ終了時にアプリケーション設定を保存するか(=「My.Settings.Save()」)どうかの指定
OpenForms アプリケーションが開いている全フォームのコレクションの取得
My.Applicationオブジェクトが持つプロパティとメソッド
名前の最後に「()」が付いているものはメソッドであることを示している。

 以上のMy機能は固定でプロパティやメソッドが用意されている。一方、以降のMy機能は開発者が入力した設定内容によってプロパティ内容やメソッド内容が決まるものである。

「アプリケーション設定」を扱う「My.Settings」

 My.Settingsオブジェクトは、アプリケーション設定(=Windowsアプリケーション自体やコンソール・アプリケーション自体に関する設定情報)を取り扱う。

 Webサイトでは利用できない。

 アプリケーション設定は開発者が自由に登録できるので、それに合わせてMy.Settingsオブジェクトのプロパティ内容も変化する(詳しくは「連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門 第3回 VB 2005の“My”の便利さに脱帽!」を参照)。メソッドについては次の2つがある。

メソッド 説明
Save() アプリケーション設定を保存する
Reload() アプリケーション設定を再読み込みする
My.Settingsオブジェクトが持つプロパティとメソッド
名前の最後に「()」が付いているものはメソッドであることを示している。

「リソース」を扱う「My.Resources」

 My.Resourcesオブジェクトは、文字列やイメージ(画像)などのリソースを取り扱う。

 Webサイトでは利用できない。

 リソースも開発者が自由に登録できるので、それに合わせてMy.Resourcesオブジェクトのプロパティ内容は変化する(詳しくは「.NET TIPS:文字列リソースを活用するには?」を参照)。

「XML Web サービス」を扱う「My.WebServices」

 My.WebServicesオブジェクトは、XML Webサービスを取り扱う。

 Webサイトでは利用できない。

 ここでいうXML Webサービスとは、プロジェクトに追加されたXML Webサービスのことである(XML Webサービスの追加は、[ソリューション エクスプローラ]のプロジェクト項目をクリックして[サービス参照の追加]を選択し、表示される[サービス参照の追加]ダイアログから行う)。従ってこれも、その追加内容に合わせてプロパティ内容やメソッド内容が変化する。

「Windowsフォーム」を扱う「My.Forms」

 My.Formsオブジェクトは、複数のWindowsフォームを取り扱う。

 当然ながら、コンソール・アプリやWebサイトでは利用できない。

 IntelliSenseでは、プロジェクト内に定義されているすべてのフォームが「My.Forms」の配下に表示される。

 例えば次のようにして使う。My.FormsオブジェクトでWindowsフォーム(例えばForm2)にアクセスすると、そのフォーム(Form2)のインスタンスが自動的に作成される。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  My.Forms.Form2.Text = "My機能活用"
  My.Forms.Form2.ShowDialog()
End Sub
My.Formsオブジェクトを使って別のフォームを操作するコード

 残る3つのMy機能は、これまでのものとは少し次元が違うMy機能だ。例えば、最初に紹介したMy.Computerオブジェクトの「Computer」は(基本的に)カテゴリを意味し、そのカテゴリの配下で、さまざまな機能を持つオブジェクトをプロパティ経由で提供するというスタイルである。

 一方、以下の3つのMy機能は、(カテゴリではなく)いきなりオブジェクトそのものである。例えばMy.Logオブジェクトの「Log」はオブジェクトである。前述したように、これと同じ機能を提供するものとしてMy.Application.Logプロパティを紹介したが、この場合、「Application」はカテゴリで、「Log」はオブジェクトである。

「ログ出力」を扱う「My.Log」

 My.Logオブジェクトは、ログ出力を取り扱う。

 Webサイトでのみ利用できる。

 前述のとおり、Windowsアプリやコンソール・アプリで使われるMy.Application.LogオブジェクトのWebサイト版である。

 具体的な中身は、Logクラス(Microsoft.VisualBasic.Logging名前空間)のオブジェクトである。

「HTTPリクエスト」を扱う「My.Request」

 MyRequestオブジェクトは、HTTPリクエストを取り扱う。

 Webサイトでのみ利用できる。

 具体的な中身は、HttpRequestクラス(System.Web名前空間)のオブジェクトである。

「HTTPレスポンス」を扱う「My.Response」

 My.Responseオブジェクトは、HTTPレスポンスを取り扱う。

 Webサイトでのみ利用できる。

 具体的な中身は、HttpResponseクラス(System.Web名前空間)のオブジェクトである。

 次回Part IIでは、Visual Basic 2008のコード・スニペットの活用方法について紹介する。End of Article



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