|  | 
| 特集:実践! VB便利機能活用ガイド Part IVisual 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プロパティを使って、現在の日時を取得するには次のようなコードを記述すればよい。
| 
 | |
| My機能を使って現在の日時を取得するコード | 
| 【コラム】プロジェクトの種類によって異なるMy.Computerオブジェクトの機能 | 
■「ユーザー情報」を扱う「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)のインスタンスが自動的に作成される。
| 
 | |
| 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のコード・スニペットの活用方法について紹介する。
|  | 
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|  | |
| 
 | |
|  | 

 







