Visual Basic 初級講座 |
Visual Basic 中学校 > 初級講座 >
プログラム画面には色とりどりのたくさんのアイコンが並んでいます。メニューをクリックすると無数のメニューが表示されます。この中にはあなたが気づいていない便利な機能が眠っているかもしれません。今回は開発環境からすぐにでも利用できる9つの機能を紹介します。
概要 ・コードスニペットを使うと、分類されたたくさんのサンプルコードから選んで自分のプログラムに挿入することができる。 ・ブックマークを使うとプログラムに目印を付けて自在にジャンプできる。 ・「名前の変更」を使うと、該当する変数やメソッド名を連動して一挙に変更することができる。 ・その他開発環境の機能の紹介 |
ふと見ると一度も使ったことのないアイコンやメニューがあったりしませんか?ひょっとすると便利な機能があるのにあなたは気づいていないのかも。
複数の人でチームを組んでプログラムしているれば周りの人の様子がわかって今まで使ったことがなかった機能やツールのことを知る機会もありますが独学でVBを使っているとどうしても気が付かない部分がでてきてしまいます。
今回はこういったVBに用意されている機能のうち代表的な9個の機能を紹介します。
VBのバージョンによって機能が少し違いますからはじめに今回取り上げる機能を表にしておきましょう。
VB.NET2002 | VB.NET2003 | VB2005 Express Edition | VB2005 (その他のエディション) | |
コードスニペット | × | × | ○ | ○ |
ブックマーク | ○ | ○ | ○ | ○ |
名前の変更 | × | × | ○ | ○ |
オブジェクトブラウザ | ○ | ○ | ○ | ○ |
検索・置換 | ○ | ○ | ○ | ○ |
VB6コードのアップグレード | ○ | ○ | ○ | ○ |
エラー一覧 | ○ | ○ | ○ | ○ |
ソリューションエクスプローラ | ○ | ○ | ○ | ○ |
クラスビュー | ○ | ○ | × | ○ |
■表1
データベースやデバッグ、大規模開発向けの機能を除けば今回紹介する9個の機能を抑えておけば十分です。データベース・デバッグ向けの機能については別の機会に紹介します。
VB.NET 2002 | × |
VB.NET 2003 | × |
VB2005 Express Edition | ○ |
VB2005 (その他のエディション) | ○ |
コードスニペットはVB2005から新しく導入された機能の一つで、あらかじめ登録してあるコードを簡単に呼び出してプログラムの中に貼り付けてくれる機能です。最初の状態で既にたくさんのコードが登録されているので初心者の方には本当にありがたい機能です。マイクロソフトはプログラマが入力するコードの量を減らすことを目標としており、このコードスニペットはありがちな安易な方法ではありますがまさにその目標を直接的に達成するためのものです。
たとえば、ファイルをコピーするコードは自分でプログラムしなくてもコードスニペットを利用して簡単に取り込むことができます。
実際に使用するにはプログラム画面でマウスを右クリックして「スニペットの挿入」を選択するだけです。スニペットは大量に登録できるようにカテゴリ分けされていますので、マウスまたはキーボードでカテゴリを選択して目的のコードを探します。
■画像1:コードスニペットの一覧
ファイルをコピーするコードを挿入するには、「ディスク、フォルダおよびファイルを処理中」 - 「ファイルのコピー」を選択します。ファイルのコピーのようなスニペットの場合は、どのファイルをどこにコピーするかはプログラマが指定しなければなりませんので、それを促すような表示と説明もちゃんとでてきてくれます。
■画像2:コードスニペットを挿入したところ
コードスニペットの面白いところは初めから登録されている大量のスニペットに加えて独自にスニペットを作成したり、他人が作成したスニペットを取り込んだりできる点です。
たとえば、Webサイトなどで公開されているスニペットを取り込むこともできますし、自分用のカスタマイズされたスニペットを用意することもできます。自分用のスニペットを作る方法は少し難しいのでここでは説明しませんが興味のある方はMSDNライブラリを参照してください。
コードスニペットの管理のためにコードスニペットマネージャというツールも用意されています。このツールはVBの[ツール]メニューから起動できますが、あまりたいした機能はありません。
VB.NET 2002 | ○ | 同じファイル内のみジャンプ可能 |
VB.NET 2003 | ○ | 同じファイル内のみジャンプ可能 |
VB2005 Express Edition | ○ | |
VB2005 (その他のエディション) | ○ |
ブックマークはコードに目印をつけておく機能です。長いプログラムになるとあっちを作り、こっちを修正し、といった具合にあっちこっち画面を切り替えたりスクロールさせたりして作業することになりますが、そんなときにブックマークでコードにしるしをつけておくと目的の部分がすぐに探し出せて便利です。
■画像3:ブックマーク
独学でプログラムをやっている方はこの機能に気づいていない場合があるようです。
ブックマークをつけるには [テキストエディタ]ツールバーにあるブックマークボタンをクリックします。[テキストエディタ]ツールバーが表示さていない場合は[表示]メニューの[ツールバー] - [テキストエディタ]をクリックして表示させてください。
■画像4:テキストエディタツールバー(VB2005 Express Edition)
ブックマークボタンをクリックすると現在の行にブックマークがつけられます。ブックマークをはずすときも同じボタンをクリックします。ブックマークはいくつでもつけることができます。
便利なことにブックマークにジャンプする機能もあって、前のブックマークや次のブックマークにボタン1つでジャンプすることができます。要所要所にブックマークをつけておけば長いプログラムをスクロールして目的の個所を探す苦労が随分と軽減されます。
ただし、どういうわけかVB.NET2002とVB.NET2003では同じファイル内でしかこのジャンプ機能が使えません。VB2005ではファイルを超えて次のブックマークへ、次のブックマークへとどんどんジャンプしていくことができます。
なお、ツールバーの一番右にあるブックマークをクリアするボタンはすべてのブックマークをクリアしてしまうので注意してください。現在の行のブックマークだけ削除する ボタンはブックマークをつけるボタンと同じです。
検索のところも説明しますが、検索するときに該当する全ての行にブックマークをつける機能もあります。
VB2005の小さな差別 VB2005ではStandard以上のエディションだとExpress Editionよりさらに強化されたブックマーク機能を使うことができるようです。 まず、すべてのブックマークを一覧表示して好きな場所にジャンプできるブックマークウィンドウはとても魅力的です。また、テキストエディタツールバーにもボタンが増えていて、同じドキュメント内の次のブックマークにジャンプすることもできます。 ドキュメント内でのブックマークの移動はExress Editionでも[表示] - [ツールバー] - [ユーザー設定]を使って追加することができます。 Express Editionはこの他にもところどころ機能が削られている個所があります。 |
VB.NET 2002 | × |
VB.NET 2003 | × |
VB2005 Express Edition | ○ |
VB2005 (その他のエディション) | ○ |
「名前の変更」はVB2005から導入された地味な機能です。この機能はプログラム上で一旦つけた変数名やメソッド名などを後から変更したい場合に簡単に変更してくれる機能です。
「そんなことで困ったことはないから、こんな機能はいらない」という声が聞こえてきそうですね。また「万一、変更する場合でも置換を使えばよいから困らない」という声もありそうです。
おっしゃる通りの場合もありましょうが、新しく導入された「名前の変更」機能がどういうものだか知っておいて損はありません。実際使える機能です。
次のコードを見てください。
Const FolderName As String = "C:\Backup" |
Private Sub
Button1_Click(ByVal sender
As System.Object, ByVal
e As System.EventArgs)
Handles Button1.Click Dim FileName As String FileName = InputBox("ファイルを指定してください。") End Sub |
'Nameで指定されたファイルをバックアップフォルダにコピーする。 Private Sub Backup(ByVal Name As String) Dim BodyName As String BodyName = IO.Path.GetFileName(Name) End Sub |
■リスト1
このコードで、Backupメソッドの引数の名前をNameからFileNameに変更したい場合、置換では実現することはできません。万一置換で「Name」を「FileName」に置換するように指定してしまうとBodyNameがBodyFileNameに置換されてしまいますし、FolderNameも置換されてしまいます。
こんなときVB2005の「名前の変更」機能が役に立ちます。変数(または引数)Nameを右クリックして「名前の変更」を選択してください。そして新しい名前として「FileName」を指定するとちゃんと2ヶ所あるNameだけがFileNameに変換されます。
また、Backupメソッドの名前をBackupFileメソッドに変更したい場合には、「Backup」の上で右クリックし、「名前の変更」で新しい名前に「BackupFile」を指定すると宣言の部分と呼び出している全ての部分が自動的に変更されます。
このようにコードの意味を変えないでコードを整形することをリファクタリングと呼びます。この「名前の変更」は本当に地味で小さな機能ですがVBにはじめて搭載されたリファクタリング機能の一つなのです。
VB.NET 2002 | ○ |
VB.NET 2003 | ○ |
VB2005 Express Edition | ○ |
VB2005 (その他のエディション) | ○ |
オブジェクトブラウザはクラスや構造体の情報を検索・表示する機能です。[表示]メニューの[オブジェクトブラウザ]をクリックすると表示されます。
オブジェクトブラウザにはいくつかの便利な使い方があります。
1つはお手軽なMSDNライブラリとして使用する方法です。クラスや構造体にどのようなメンバがあってどのように使用するのか調べるときに使うと便利です。
ここでは例としてArrayListの内容を配列に変換するメソッドまたはプロパティがあるかどうか調べる方法を説明しましょう。
まず、左の領域からSystem.Collectionsを展開し、ArrayListをクリックします。そうすると右の領域にArrayListのメンバの一覧が表示されます。メンバをクリックすると下にそのメンバの使用方法と説明が表示されます(VB.NET2002とVB.NET2003の場合は[System] - [System.Collections] - [ArrayList])。
ArrayListがSystem.Collectionsに属していることがわからない場合は検索を利用することもできます。
後は1つずつメンバを見て目的の機能を持つメンバを探します。実際には名前で見当を付けて怪しそうなメンバを真っ先に調べます。どの名前が怪しいかは経験によるしかありませんが、今回はToArrayが正解です。
■画像5:オブジェクトブラウザでSystem.Collections.ArrayList.ToArrayメソッドの情報を表示したところ。
画面はVB2005 Express Editionのものです。VB.NET2002、VB.NET2003では少し表示が異なります。
これらの情報はMSDNライブラリを使って調べることもできます。詳細な情報が必要なときはMSDNライブラリを使うべきでしょう。
他の便利な使用方法としては簡単な検索機能があります。たとえば、DoEventsというメソッドを使いたい場合に、このメソッドが一体どのクラスまたは構造体のメソッドなのか調べることができます。もちろん、MSDNライブラリを使って調べることもできます。
以上がオブジェクトブラウザの基本的な用法です。
ところで、実のところこのオブジェクトブラウザが本当の威力を発揮するのはMSDNライブラリやその他のヘルプに載っていないオブジェクトを使用するときなのです。通常のクラスや構造体はオブジェクトブラウザを使わなくてもMSDNライブラリを見れば必要な情報は得られます。
ところが、世の中にはWebでダウンロードしてきたオブジェクトや、詳細情報が非公開または公開されているのがどこだかわからないオブジェクト、それに、誰か知らない人が作ったオブジェクトなどMSDNライブラリに載っていないオブジェクトが無数にあります。
こんなときでもオブジェクトブラウザの目をごまかすことはできません。オブジェクトブラウザはこのような未知のオブジェクトの情報もちゃんと表示してくれるのです。もちろん作り手がいい加減だと日本語による説明は表示されない場合もありますが、メンバの一覧や引数・戻り値の型、クラス・構造体の名前などは見ることができます。
VB.NET 2002 | ○ |
VB.NET 2003 | ○ |
VB2005 Express Edition | ○ |
VB2005 (その他のエディション) | ○ |
VBにおける検索と置換は意外と機能が豊富です。たかが検索と置換と侮らずにどういうことが可能なのか一度は知っておいた方が良いでしょう。
プログラムの中から文字列を探し出す検索は2種類あります。便宜上「クイック検索」と「フォルダ検索」と呼ぶことにしますがどちらもたいした違いはありません。なお、この名前は正式な呼称ではありませんから他の人には通用しない可能性がありますので注意してください。
どのバージョンのVBでも[Ctrl] + [F]を押すとクイック検索ウィンドウが表示されます。[Ctrl] + [Shift] + [F]を押すとフォルダ検索ウィンドウが表示されます。この他に、検索コンボボックスを使うと検索ウィンドウを使用しないですばやく検索を行うこともできます。
まず、これらの検索の表示方法から説明しましょう。基本的なところは次の表の通りです。
検索方法 | 簡単な表示方法 | VB.NET2002 VB.NET2003では |
VB2005では |
検索コンボボックス | |||
クイック検索ウィンドウ | [Ctrl] + [F] | [編集] - [検索と置換] - [検索] | [編集] - [クイック検索] |
フォルダ検索ウィンドウ | [Ctrl] + [Shift] + [F] | [編集] - [検索と置換] - [ファイル内の検索] |
■表2
検索コンボボックスはVB2005 Express Edition以外はツールバー上に初めから表示されています。
■画像6:検索コンボボックス
VB2005 Express Editionでも検索コンボボックスを使用することはできますが、通常のクイック検索でも同じようなことができるので無理に使用しなくても良いでしょう。念のためにVB2005 Express Editionで検索コンボボックスを使用できるようにする方法を囲み記事で紹介しておきます。
VB2005 Express
Editionで検索コンボボックスを使用する VB2005 Express Editionの場合は、検索コンボボックスを表示させるのは少々面倒です。まず、[表示] - [ツールバー] - [ユーザー設定]を選択して表示されるウィンドウでコマンドタブの左側にある分類から「編集」を選択し、右側から「検索コンボボックス」を探し出します。項目数が多いのでなかなか検索コンボボックスが見つからないかもしれませんから次の画像のスクロールバーの位置を参考にしてください。
■画像7:検索コンボボックスの追加 検索コンボボックスが見つかったらこれをツールバー上の好きな位置にドラッグ&ドロップします。そうするとその位置に検索コンボボックスが追加されます。ついでに「フォルダを指定して検索」をこのコンボボックスの左にドラッグ&ドロップすると他のVBと似たようなツールバーが完成します。 「フォルダを指定して検索]ボタンを利用するとワンクリックでフォルダ検索ウィンドウが呼び出せます。 |
フォルダ検索ウィンドウもVB2005 Express Editionではちょっと表示しにくいです。[Ctrl] + [Shift] + [F]を押せば表示できますが、そうでない場合はクイック検索ウィンドウの左上のオプションで「フォルダを指定して検索」を選択すると画面がフォルダ検索ウィンドウに切り替わります。
どうしてVB2005はできるだけシンプルな画面構成を採用していますので、このように通常では表示されていない機能がいろいろあります。
さて、単純にプログラム中から該当の文字列を探したい場合は検索コンボボックスを使用すると便利です。ツールバー上の検索コンボボックスに文字列を入力して[Enter]キーを押すだけで検索が可能です。
続けて[Enter]を押すと次の候補へどんどんジャンプすることができます。
同じようなことはクイック検索でも可能です。「次を検索」を押していくことでどんどん次の候補にジャンプできます。このあたりはワープロやテキストエディタなどいろいろなソフトで採用されている検索方法と変りません。
クイック検索の特徴を挙げてみます。
クイック検索の特徴 |
検索範囲が指定できる。 |
ワイルドカード・正規表現が使用できる。 |
すべての該当個所にブックマークをつけることができる。 |
初期設定では折りたたまれているコードは検索できない。 |
検索範囲の指定ではドキュメント全体を検索対象とするのか、現在のプロシージャのみを検索対象とするのかなどいくつかの範囲を選ぶことができます。特にプロシージャ単位での検索は通常のワープロやテキストエディタにはできない専門的な検索で重宝します。
正規表現やワイルドカードによる検索は、クイック検索ウィンドウで条件をチェックしたときにだけ有効になります。ワイルドカードは有名ですから特に説明する必要はないかもしれません。ワイルドカードを使用すると、たとえば、検索する文字列に「str*」と入力するだけで「str」から始まるすべての単語を検索できます。
正規表現はワイルドカードと同じようなものなのですがさらに細かくいろいろな条件を指定できます。たとえば、検索する文字列に「Exists\((File)*Name」と指定すると、Exists(FileNameと書いてある部分と、Exists(Nameと書いてある部分の両方にヒットします。
正規表現は便利な分複雑で、使いこなすにはそれなりの知識が必要です。
検索の結果複数の結果がヒットすることが予想できるときはすべての個所にブックマークをつけると便利です。VB2005では「すべてブックマーク」ボタンでブックマークをつけることができます。VB.NET2002とVB.NET2003では「すべてマーク」ボタンです。
ブックマークをつけておけば検索ウィンドウを閉じた後でも次のブックマークや前のブックマークに自在にジャンプできるのでなかなか便利です。
ところで、通常のクイック検索では折りたたまれている部分のプログラムは対象外となってしまいますので注意してください。具体的に言うと#Region 〜 #End Regionで囲まれている部分はエディタ上でマウスをクリックすると折りたたんだり開いたりできるのですが、折りたたまれている状態では検索の対象外となってしまいます。
折りたたまれている部分も含めて検索するにはクイック検索ウィンドウで「非表示のテキストを検索」をチェックする必要があります。
最後にフォルダ検索ですが基本的にはクイック検索とあまり違いはありません。フォルダ検索はフォルダやファイルを横断して検索するような範囲の広い検索を想定したもののようです。こちらではプロシージャ単位の検索はできません。
クイック検索と異なる点と言えば、検索対象のファイルを指定できる点です。拡張子がvbのファイルを検索するとか、拡張子がaspxのファイルを検索するといった指定が可能です。
最大の違いは検索結果が一覧表示される点です。もちろん一覧をダブルクリックすると該当行にジャンプすることもできます。この機能はプロジェクトの規模が大きくなるほど便利です。
置換も検索と同じようにクイック置換とフォルダ置換に分かれています。この名前も私が便宜上呼んでいる名前ですので他の人には通用しない可能性がありますから注意してください。
置換のテクニックとして便利なのは選択範囲のみの置換です。コードの一部分を対象に置換を実行したい場合に該当部分を選択状態にしてから置換ウィンドウを表示すると選択範囲のみの置換が指定できるようになります。これも覚えておくと便利です。
VB.NET 2002 | ○ |
VB.NET 2003 | ○ |
VB2005 Express Edition | ○ |
VB2005 (その他のエディション) | ○ |
VB6の時代からVBを使っている人のためにVB6のコードを簡単にVB.NET(またはVB2005)に翻訳する機能があります。VB6のプロジェクトをまるごとVB.NET(またはVB2005)に変換するアップグレードウィザードの方は盛んに宣伝されていたせいで知っている方も多いようですが、単純にコードを翻訳するコードのアップグレードは気づいていない人もいるようです。
使い方は簡単で、[ツール]メニューから[Visual Basic 6 コードのアップグレード]をクリックして、VB6のコードを入力し、アップグレードボタンを押すだけです。
■画像8:Visual Basic 6 コードのアップグレード
この画像の例として入力してあるコードは例として作成した何の意味のないコードです。このコードは次のように変換されました。
Dim
i As
Short System.Windows.Forms.Application.DoEvents() |
■リスト2
もちろん自動的にアップグレードできない場合もありますが、「あれ、VB2005ではどう書くのかな?」というような場合に利用すると便利です。
VB.NET 2002 | ○ | タスク一覧に含まれる。 |
VB.NET 2003 | ○ | タスク一覧に含まれる。 |
VB2005 Express Edition | ○ | |
VB2005 (その他のエディション) | ○ |
エラー一覧は 文字通りエラーの一覧を表示する機能です。VB.NET2002およびVB.NET2003ではこの機能は「タスク一覧」の機能に含まれていて独立した機能ではありません。
この一覧にはビルドエラーと警告が表示されます。ビルドエラーがある状態でプログラムを実行しようとすると自動的にこの一覧が表示されますが、[表示]メニューの[エラー一覧]をクリックするいつでも見ることができます(VB.NET2002, VB.NET2003では[表示] - [その他のウィンドウ] - [タスク一覧])。
■画像9:エラー一覧。警告が表示されている。
大き目のプログラムになると、この一覧を見ながらエラーや警告を減らしていくことを目標にプログラムしていくという場合もあります。
VB.NET 2002 | ○ |
VB.NET 2003 | ○ |
VB2005 Express Edition | ○ |
VB2005 (その他のエディション) | ○ |
ソリューションエクスプローラはいまさら説明するまでもなく、プロジェクトやソリューションを構成しているファイルをまとめて表示してくれるツールです。プロジェクトにフォームやクラスを追加するときもソリューションエクスプローラから追加操作を行うことができます。
ここでは「すべてのファイルを表示」ボタンについて説明します。
実は通常のソリューションエクスプローラにはプログラマが必要とするだろうとマイクロソフトが判断したファイルが表示されているだけでプロジェクトの一員であるにもかかわらず表示されていないファイルがあるのです。
「すべてのファイルを表示」ボタンをクリックするとこのようなファイルを含めてプロジェクトのフォルダ内にあるすべてのファイルがソリューションエクスプローラに表示されます。
下の画像はVB2005のソリューションエクスプローラでの通常の表示と、「すべてのファイルを表示」させた時の表示です。
■画像10:通常の状態 | ■画像11:すべてのファイルを表示 |
時にはこのような隠されているファイルを編集する必要がある場合もあります。
VB.NET 2002 | ○ |
VB.NET 2003 | ○ |
VB2005 Express Edition | × |
VB2005 (その他のエディション) | ○ |
クラスビューはソリューションエクスプローラと同じような情報を表示しますが、ソリューションエクスプローラが情報をファイル視点で表示するのに対して、クラスビューはクラス視点で表示します。
クラス視点での表示は一般の方が直接使用するアプリケーションをプログラムする際にはあまり必要ありませんが、独自のクラスライブラリやコントロール集などを作成しているときには便利です。
クラスビューではクラスのメソッドやプロパティなどのメンバまでを表示できて、メンバをクリックすることで該当のコードにジャンプする機能がありますから、クラスを設計・プログラムしている方には重宝でしょう。
クラスビューは元々はVisual C++に装備されていたツールなのですが、VB.NET2002がリリースされたときにVBからも利用可能となりました。そのためVB6時代からVBを使用されている方には馴染みの薄いツールで、存在は知っていてもほとんど利用しないという方が多いようです。