VB2010について

タグの編集
投稿者 刈谷勇  (社会人) 投稿日時 2009/5/8 20:09:43
VB2010の話題が盛り上がりそうだったので、別スレを立てました。

2008までのVBでちょっと不便に思っていることがあります。
というのは、コードを書いているうちに変数・Const・コンストラクタ・イベント・メソッド・プロパティがごちゃごちゃになってしまい、目的の場所を探すのに苦労しています。
ある程度、クラスが出来た段階でRegionを使って自分で整理していますが皆さんはどうしていますか?
投稿者   (社会人) 投稿日時 2009/5/8 21:25:20
こんにちは。

自分も刈谷勇さんと一緒で、ある程度クラスができてきてから
Regionで整理するようにしています。

後は、以前@ITで紹介されていた「Source Code Outliner PowerToy」が結構便利ですかね。
ソースファイル単体でメンバ表示できたりするので多少探すのも楽になるかもしれません。

@IT NET TIPS
Visual StudioのIDEでソース・ファイル内のメンバをツリー表示するには?[VS 2005、VS 2008]
http://www.atmarkit.co.jp/fdotnet/dotnettips/851srcoutliner/srcoutliner.html
投稿者 るきお  (社会人) 投稿日時 2009/5/8 21:39:25
こんにちは。

>コードを書いているうちに変数・Const・コンストラクタ・イベント・メソッド・プロパティがごちゃごちゃになってしまい、目的の場所を探すのに苦労しています。

私はこれで困ったことはあまりないです。
作っているクラスのボリュームが大きすぎるということはないでしょうか?

私も常にきれいに整理されている状態というわけではありませんが、
検索ボックスで一発ジャンプもできるし、クラスビューで探すこともできるので、
苦労というところまではいっていないです。
右クリックで「定義へ移動」もよく使います。
コード編集画面の右上にあるメソッド名等が表示されるコンボボックスもよく使います。


>後は、以前@ITで紹介されていた「Source Code Outliner PowerToy」が結構便利ですかね。
>ソースファイル単体でメンバ表示できたりするので多少探すのも楽になるかもしれません。
私は使っていませんが便利そうに見えますね。
投稿者 brv  (中学生) 投稿日時 2009/5/9 02:35:57
>ある程度、クラスが出来た段階でRegionを使って自分で整理していますが皆さんはどうしていますか?
Windows APIの関数とかを定義するときはRegionを使っていますが、Regionを使いすぎると使う前以上にぐちゃぐちゃになってくることがあるので、あまり普段は使いません。

>コードを書いているうちに変数・Const・コンストラクタ・イベント・メソッド・プロパティがごちゃごちゃになってしまい、目的の場所を探すのに苦労しています。
そこまで困ったことはあまりないです。たぶん、つくっているプログラムの規模がすごく小さいからですね。
とにかく、2010が出るのを楽しみにしています。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/5/9 03:59:00
> VB2010の話題が盛り上がりそうだったので、別スレを立てました。
でも、こっちのスレッドは VB2010 (VB10)の話になっていないような。(^_^;)

自動プロパティ以外の新機能としては、複数行ラムダ式が追加されたとか、
行継続文字( _)を省略できるようになったという話とか、Excel 等を参照設定した時、
必要最小限の定義のみを EXE に埋め込む事で、配布するファイルを減らせるという点とか。


VB2010 の新機能紹介。
http://blogs.msdn.com/dd_jpn/archive/2009/03/26/9510577.aspx
http://code.msdn.microsoft.com/vbfuture/Release/ProjectReleases.aspx?ReleaseId=1699


あと、これは VB の話ではないですけど、Visual Studio 2010 では「F#」が標準搭載されるそうです。
(私は関数型言語が苦手なので、F# にはあまり手を出さないかも知れませんが)


> 目的の場所を探すのに苦労しています。
う~ん、私は特に苦労した記憶は思い当たりません。

コードエディタ上部のコンボボックス、IntelliSentse、インクリメンタルサーチ、
定義位置へのジャンプ、クラス図、オブジェクト ブラウザ等で、十分に探し出せています。


ただ、VB ではなく C# を用いた場合は、多少迷ってしまう事はありますね。
VB では、WithEvents/Handles のお陰もあって、イベントのみを探すのも楽ですが、
C# だと、イベントハンドラがメソッドの一部として扱われてしまいますし、
コンストラクタの名前がクラス毎に異なるので、ちょっと面倒。


> Regionを使って自分で整理していますが
以前は使っていましたが、今は VB の #Region はさほど使っていません。
C# の #region は今でも時々使いますが、使用頻度はさほど高く無いですね。
(VB の #Region は、メソッドの中では使用できないんですよね)
投稿者 neptune  (社会人) 投稿日時 2009/5/9 07:46:39
こんにちは

>クラスが出来た段階でRegionを使って自分で整理していますが皆さんはどうしていますか?
私もそうしてます。でも配置はしてもあまり使いません。

でも、探すのは魔界の仮面弁士さんも書かれているように
>コードエディタ上部のコンボボックス、IntelliSentse、インクリメンタルサーチ、
>定義位置へのジャンプ、クラス図、オブジェクト ブラウザ等で、十分に探し出せています。
で、探します。後、クラスビューも便利でいいです。
(VBにもありましたよね。今はC#@苦戦中なので)

インクリメンタルサーチって知らなかったので調べたんですが、逐次検索の事らしいですね。
IDEで言うと、普通に使ってる、入力候補の検索機能の事ですか?

私は素人なんで、開発効率はあまり関係ないですから、バージョンアップもO/Sに対応できる程度で
充分です。
もうバージョンアップには愛想が尽きてまして、ホントは生C,C++ + SDK で行きたいんですが、
それはそれで大幅なスキル不足 + ものすごく面倒 + 資料が英語必須なんで。。。
という辺りです。

でも、2005,2008のように無償バージョンが出ると、導入するでしょうね。良い時代になりました。

所で、VS6にはSPY++ってのが付属してましたけど、MSでframework用のフリーの奴はないんですかね?
手元にSPY++があるので、不自由はしてませんけど、新しいのがあれば進化してそうなので。
投稿者 (削除されました)  () 投稿日時 2009/5/9 08:03:04
(削除されました)
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/5/9 08:14:51
> インクリメンタルサーチって知らなかったので調べたんですが、逐次検索の事らしいですね。

検索ダイアログを使う手間を省けますので、ちょっとした検索には便利ですよ。


インクリメンタルサーチ(インクリメント検索)は Ctrl+I で起動します。(変更も可能です)

その後に続けて、検索したい語、たとえば「Private」などの単語を入力すると、
各文字を入力するごとに一致する箇所を選択してくれます。

一致する単語が複数ある場合、さらに Ctrl+I で次を検索、Ctrl+Shift+I で前検索となります。
検索完了は Escape キーです。 

なお、大文字/小文字の判定条件は、検索ダイアログで指定することになります。



ただし、検索語が短かったり、一致する場所が多いような検索には向きません。
そのような場合は、[フォルダを指定して検索]画面を使って、該当する箇所を
検索結果ウィンドウに一覧表示するのが便利かと。


> VS6にはSPY++ってのが付属してましたけど、MSでframework用のフリーの奴はないんですかね?

Managed Spy とか。
http://msdn.microsoft.com/en-us/magazine/cc163617.aspx
投稿者 Dora  (中学生) 投稿日時 2009/5/9 17:43:34
あの~、簡単な質問なんですけど、Regionってまず何なんですか?それと…魔界の仮面弁士さん、#FっていうMSが作った言語があるんですか?全然知りませんでした…

それにしても、VB2010楽しみですね
投稿者 nakaP  (社会人) 投稿日時 2009/5/9 19:55:44
>Regionってまず何なんですか?
こちらの3を見れば分かるかと思います。
http://homepage1.nifty.com/rucio/VBNyumon/BEGIN10.htm
イメージとしてはコードをTreeViewみたいにまとめれるという感じかな?

>VB では、WithEvents/Handles のお陰もあって、イベントのみを探すのも楽ですが、
>C# だと、イベントハンドラがメソッドの一部として扱われてしまいますし、
この部分は僕もVBの方が好きですね。明確にイベントと分かりますし。

>コンストラクタの名前がクラス毎に異なるので、ちょっと面倒。
何が面倒かが少し不明ですが、僕はクラスの先頭に書くので探すのも簡単だし、
コーディングする際もコードスニペットがあるのでさほど気になりません。

>(VB の #Region は、メソッドの中では使用できないんですよね) 
これは知りませんでした。たまに使いたくなるんですけど、ちょっと不便ですねー。
投稿者 刈谷勇  (社会人) 投稿日時 2009/5/9 20:25:55
みなさん、回答ありがとうございます。

>みなさん
すみません、VB2010に入れてほしい機能という内容で話題にしようと思っていたのですが、感じなことを書いていませんでした。m(_ _)m

「目的の場所を探すのに苦労しています。」という表現は、ちょっと正しくなかったかも知れません。
すみません。どちらかというと、生理的なほうが大きいのかもしれません。VB6の時も保存するときに全てのウィンドウを閉じてから保存しないと次に開くときに気持ち悪いほうですし。
(本人の基本的な性格は大雑把なのですが・・・(^_^;))


>鍵さん
「Source Code Outliner PowerToy」使ってみます。
ただ、記事内にVS2005・VS2008となっているので自分の環境(Express Edition)で使えるかな?
試してみたいと思います。


>るきおさん
>クラスのボリュームが大きすぎるということはないでしょうか?
クラス自体は、そんなに大きくはないと思うのですが、定義へ移動はよく使っているのですがクラスビュー等の機能を使いこなせていないのでそう感じているのかも知れません。
あと、コードエディタ上部のコンボボックスが自分のマシンのスペックが低いせいか、コンボボックス内をスクロールさせるとめちゃくちゃ遅かったので、使わなくなってしまいました。
(って今やったら、普通に動いた・・・???)


>brvさん
>Regionを使いすぎると使う前以上にぐちゃぐちゃになってくることがあるので
そうですね。私も、イベントとか変数郡とかという大きなまとまりでしか使ってないです。
あと、削除予定のメッソドを注釈行にしておくという使い方しかしてないです。


>魔界の仮面弁士さん
>でも、こっちのスレッドは VB2010 (VB10)の話になっていないような。(^_^;)
すみません、m(__)m
VB2010に入れてほしい機能という形で話題にしようかと思ったら、肝心の部分が抜けてました。

>行継続文字( _)を省略できるようになったという
私も、この記事とoptionの指定がC#で出来るという記事を見てなんかVBとC#がお互いに歩みよっているのかなと思いました。

>ただ、VB ではなく C# を用いた場合は、多少迷ってしまう事はありますね。
>VB では、WithEvents/Handles のお陰もあって、イベントのみを探すのも楽ですが、
>C# だと、イベントハンドラがメソッドの一部として扱われてしまいますし、
>コンストラクタの名前がクラス毎に異なるので、ちょっと面倒。

私もC#使っているのでその部分とごっちゃになっているのかもしれません。
(まだ勉強し始めたところですが)


>neptuneさん
インクリメンタルサーチは私も知りませんでした。
この機能は結構好きかも(^^


>Doraさん
>Regionってまず何なんですか?
#Regionと#End Regionでくくった部分を折りたたみ可能にしてくれる機能です。
このような感じで使います。(コード事態に意味はないです)
Public Class Form1

#Region "変数"
    Dim s As String
#End Region

#Region "イベント"
    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
#End Region
End Class



みなさん、表現のミスとかあり申し訳ありませんでした。
でも、この掲示板の人たちはみな優しく迎えてくれてうれしいです。
これからも、初心者にやさしい掲示板であってくれればと思います。
(機能別の某有名掲示板で効きたいことが合って初めて投稿したら、同じスレがあるだろう的な発言があってへこんでいたもので・・・)
投稿者 neptune  (社会人) 投稿日時 2009/5/9 20:40:06
こんにちは

>インクリメンタルサーチ(インクリメント検索)は Ctrl+I で起動します。(変更も可能です)
使ってみました。これは便利ですねぇ。ありがとうございます。

Managed Spy ダウンロードしてみました。
日本語のページもありましたんで、張っておきます。
https://www.microsoft.com/japan/msdn/msdnmag/issues/06/04/ManagedSpy/default.aspx
読んでから、試してみるつもりです。


>僕はクラスの先頭に書くので探すのも簡単だし、
私も同じ事やってます。デストラクタはその下に書きます。
なので探さなくて良いです。
投稿者 (削除されました)  () 投稿日時 2009/5/10 05:01:51
(削除されました)
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/5/10 05:16:26
> #FっていうMSが作った言語があるんですか?全然知りませんでした…
#F ではなく、F# です。2008 用もダウンロード可能です。

http://msdn.microsoft.com/ja-jp/magazine/cc164244.aspx
http://ja.wikipedia.org/wiki/F_Sharp


>>コンストラクタの名前がクラス毎に異なるので、ちょっと面倒。
> 何が面倒かが少し不明ですが、
VB 2008 のコード エディタでは、左上のコンボボックス(クラス名ボックス)から
該当するクラスを選ぶと、右上のコンボボックス(メソッド名ボックス)には
最初にコンストラクタ(New)が表示されますよね。

Class ZZZ
    Sub aaa()   'aaa メソッド 
    End Sub

    Sub New()   'コンストラクタ 
    End Sub

    Sub [New]() 'New メソッド 
    End Sub

    Sub bbb()   'bbb メソッド 
    End Sub
End Class


たとえこのように書いたとしても、右上のコンボボックスには、
コンストラクタ(とファイナライザ)が最初に表示され、その後に
メソッドがアルファベット順に aaa, bbb, New と表示されます。

コンストラクタは自動的に先頭に表示されるため、容易に見つけ出せます。
(たとえ New メソッドがあったとしても、それと混同すること無く見つけ出せます)


ところが C# のエディタはそうではなく、右上のコンボボックスは、
すべてアルファベット順に表示される仕様です。しかもコンストラクタの名前は、
VB では "New" 固定ですが、C# ではクラスごとに異なる名前になっているため、
右上のコンボボックスるから探すのは (VB よりも)少しだけ面倒なのです。


> 僕はクラスの先頭に書くので探すのも簡単だし、
通常は 1ファイルに1クラスなので、それで十分探せるのですが、
クラス内にさらに private class を保有している場合のように、
1 ファイルに複数のクラスが宣言されていると、その宣言箇所を探すために
コード上部の 2 つのコンボボックスに頼ることになります。

ところが、左上だけではクラスの宣言部にジャンプしてくれませんし、
右上のコンボボックスは、先述の理由により、VB 版よりも使い勝手に
劣るため、コンストラクタの位置を見つけ出しにくくなっているのです。

その点で、「ちょっとだけ」C# 版は使いにくいな…と思っています。ついでに言えば
Partial Class を利用した場合の動作も、VB 版の方が分かりやすいと思います。

そのかわり C# では、[表示]-[コード定義ウィンドウ] という強力な機能が
使えるのですけれどね。(VB では、このウィンドウを開いても何も表示されません)


> VB2010に入れてほしい機能という内容で
それは無理だと思いますよ。

修正量が少なく、かつ、実装効果の高い機能ならば反映されるかもしれませんが、
VS10 の機能はほぼ確定しているので、クリティカルな修正でない限り、基本的には
大きな変更や追加機能は、2010 には入らないでしょう。たとえば下記もその一つです。
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=431200

しかしその次の VS11 であれば、今ならまだ要望が入り込む余地があるかと思います。
実装予定の機能はすでに幾つか候補が挙げられていますが、こちらはまだ検討段階ですし。
(もしくはその次の VS12 ですかね)


でもまぁ、個人的に将来的に採り入れて欲しい機能は幾つかあります。

たとえば、"Option Strict" のブロック版とか。
たとえば、普段は Option Strict On にして開発したいけれど、一時的に
レイトバインドで記述したいような時に、「Strict~End Strict」で囲まれた
ブロックの間でのみ、レイトバインドを許可するようにするとか。

あと、C# にはあるけれど VB には未実装の機能の中で羨ましいのが、
複数行コメント、逐次的文字列リテラル、yield とか。

VB の掲示板なのに、C# 話を持ち出してしまってすみません。


>(VBにもありましたよね。今はC#@苦戦中なので)
> 私もC#使っているのでその部分とごっちゃになっているのかもしれません。
C# を使うと、VB との違いに悩まされる事もしばしばありますね。
(個人的には、特に LINQ 構文の違いに悩まされたりします)
投稿者 刈谷勇  (社会人) 投稿日時 2009/5/12 00:01:13
nakaPさん、neptuneさん、魔界の仮面弁士さん、ありがとうございます。

>nakaPさん、neptuneさん
前回の回答を必死に書いていた為、投稿が入れ子になってしまい、前回のときにお返事できなくてすみませんでした。

>>僕はクラスの先頭に書くので探すのも簡単だし、
>私も同じ事やってます。デストラクタはその下に書きます。
>なので探さなくて良いです。 

自分は変数やConst等の後ろに書いているのですが、わざわざ画面をスクロールするのが面倒だなと思いまして・・・(^^;



>魔界の仮面弁士さん

>それは無理だと思いますよ。
やっぱり無理ですよね。
VS11以降で期待します。

>あと、C# にはあるけれど VB には未実装の機能の中で羨ましいのが、
>複数行コメント、逐次的文字列リテラル、yield とか。
昨今のVBとC#の歩み寄りを見ると、VS11には実装されるような気が・・・

>(個人的には、特に LINQ 構文の違いに悩まされたりします) 
自分はVB、C#ともに未修得なので今後習得するときには注意します。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/5/12 00:45:51
> VS11以降で期待します。

期待している、思っているだけでは改善されませんので、実際に要望を挙げてください。

何か強い要望があれば、connect.microsoft.com なり、forums.microsoft.com なりにフィードバックをお願いします。
あるいは、このスレッドにでも書いて頂ければ、私から開発チームの方々に伝えておきますよ。
投稿者 刈谷勇  (社会人) 投稿日時 2009/5/12 22:48:44
魔界の仮面弁士さん、何度もありがとうございます。

>期待している、思っているだけでは改善されませんので、実際に要望を挙げてください。
>何か強い要望があれば、connect.microsoft.com なり、forums.microsoft.com なりにフィードバックをお願いします。

両サイトとも使ったことがないのですが、書き込みに際して何か特別な手続きをしないといけないのでしょうか?


>あるいは、このスレッドにでも書いて頂ければ、私から開発チームの方々に伝えておきますよ。 
ありがとうございます。でも毎回、毎回魔界の仮面弁士さんのお手を煩わせるわけにもいきませんので、上記のサイトへの投稿方法を教えていただければと思います。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/5/13 01:06:44
> 書き込みに際して何か特別な手続きをしないといけないのでしょうか?
少なくとも Windows Live ID が必要です。詳細は、各サイトを訪れて確認してみてください。


まず、フィードバックのための公式な窓口は、http://connect.microsoft.com/ です。
バグおよび提案といった意見を、製品開発チームに直接伝える事ができる場所です。
また、マイクロソフト開発チームからの修正計画も含めた回答を得られる場合もあります。

Connect では主に、CTP やベータ版の製品、Windows Live などのサービスについてのフィードバックを
行えるようになっています。たとえば、現行バージョンの Visual Studio や .NET Framework、
あるいは次期 Visual Studio 2010 (の CTP 版)へのフィードバックは下記からで行えます。
既に数多くのフィードバックが挙げられていますので、一度ご覧になってみてください。
他の方の提案に対する投票(Vote)を行えるようになっています。

https://connect.microsoft.com/VisualStudioJapan/
https://connect.microsoft.com/VisualStudio

ただし、Connect では対象となっていない製品もありますし、製品開発チーム等からの招待が
必要な場合もあるため、あらゆるフィードバックを行えるという類の物ではありません。


そのため、現行製品に対する不具合など、緊急性を伴う内容をフィードバックする場合には、
マイクロソフトの有料サポート窓口や、パートナー窓口などを利用してください。
こちらは回答を確実に得ることができますし、対応策の提示を受ける事もできます。
http://support.microsoft.com/select/?target=assistance


もう一つ、Microsoft のコミュニティを使う方法もあります。
(現在は forums.microsoft.com ではなく、social.*.microsoft.com のようです)
主に Q&A をする場所ではありますが、たとえば下記のように、
製品別のフィードバックを行えるフォーラムが用意されている場所もあります。
http://social.msdn.microsoft.com/forums/ja-JP/categories/
http://social.technet.microsoft.com/Forums/ja-JP/categories

ただしこちらは、コミュニティとして運営されているサイトですので、
Microsoft 社員の投稿があったとしても、それは公式な発言とは看做されません。
(公式な回答を望む場合には、先述の有料サポート窓口などを利用することになります)


あるいは関東近郊など、都市部にお住まいの方であれば、Microsoft 主催のイベントや
Microsoft 社員を迎えての勉強会などに参加して、直接声を伝えるという選択肢もあるかと思います。
投稿者 刈谷勇  (社会人) 投稿日時 2009/5/13 01:37:24
魔界の仮面弁士さん、貴重な情報ありがとうございます。

これから、教えていただいたリンク先を見てみます。

>製品開発チーム等からの招待が必要な場合もあるため
がんばって、製品開発チームから招待されるようになれればと思います。