エントリー

Top > Programmingとか > VB / VB.NET > VB小ネタ

2007年09月17日

情報いろいろメモ

ようやく出稼ぎ終了後のばたばたが落ち着いた感じになってきましたので、貯め込んでいた情報をぼちぼち整理。
メジャーなテクノロジーにベクトルが向かないのは、相変わらずのへそ曲がりっぷりってことでひとつ。

  • Excel 2007 XLL SDK リリース!

元ネタはMicrosoft Excel blogの"Title: Excel 2007 XLL SDK is released!"。

今年5月、札幌の「Community Launch Team イベント」(2007/5/2)でお話ししたOffice制御テクノロジ(資料はこちらからどぞ)で口頭でのみ紹介、図表には挙げなかったExcel XLL

技術資料がもう何世代分も提供されず、てっきりもう過去の技術として廃れていくもんだと思っていたんですが、あっとびっくり

2007用最新SDKが堂々リリース。

確かにタイトな制御をスピーディにこなしたい時には第一候補となるアーキテクチャなんですが、こいつぁもともと.NETも何も関係ないべたべたなC向けAPIのはずなので、イマドキの時流じゃあないんですが、やっぱ根強いニーズがあるのねぇと。でもそんなニーズが現場で出たことを見たことがないんですが。

いったいどこがどんな目的で使っているのかなぁ。

  • XML to Schema Tool for Visual Basic 2008

VB2008用の、XMLを気軽に使えるようになるテンプレート(なのかなー)。XMLファイルを取り込むとIntelliSenseで参照ができるようになり、LINQ書いたりする時に便利でしょ?とか説明されているような感じなんですけれども。

元ネタはTheVisual Basic Team blogの"XML to Schema Tool for Visual Basic 2008 (Beth Massi)"、ダウンロードとウォークスルーはこちら

  • 消えたSnippet Editor

けっこう重宝しているCode Snippet Editor for Visual Basic 2005。これはMSDNのDeveloper Centerで提供されているわけですが、そのバージョンは1.0.0.0。
たしか開発ワークスペースであるGotDotNetでは提供開始後も修正を続け、1.4.0.0までになっていたはず。しかもソースまで提供されていたはず。この一般公開されたソースを基にVBUGの皆さんは日本語版をリリースしたはず。

ところがどっこい、GotDotNetが2007/6/19にワークスペースの提供を終了しちゃったわけです。

Topページの"GotDotNet Phase-out Announcement"によると、ユーザーサンプルやワークスペースはCodePlexに引き継ぐとかなんとか言っているようなんですけれども、実際にはSnippetEditorは移行されていない(あるいは公開されていない)感じなんですね。

で、このへんの流れを受けて本家msdnForumに"Snippet Editor"ってスレッドが現在立っておりまして。

「goddotnetが終わっちゃった今、最新版の1.4.0.0は
どうやって手に入れればいいの?
msdnでは1.0.0.0しか提供してくれていないし。」

「えー、msdn Developer Centerから入手すればいんじゃね?」

「だーかーらー、私のほしいのは1.4.0.0なんだってば。
msdnのが1.0.0.0ってのは先に言ってんでしょうが。」

「僕はcodeplexに移されたんじゃないかーと思ったんだけど、
なんか見つかんないよねー。」

みたいな感じで絶賛やり取り中。

多分こんな話になっちゃうだろーなーと思い、私自身は6月に1.4.0.0のソースとバイナリの両方を手に入れといたのでとりあえずこのへんの喧騒には巻き込まれないで済んではいるんですが、まさか「ボク持ってるからあげるよー」ってなわけにもいきませんしね。

どっかにきちんと移行されているのかなー。
それともいずれforVB2005/2008みたいな感じで新装お目見えでもするんでしょうか。

2007年09月15日

VB2005用LineコントロールとShapeコントロール

全然知らんかったんですけど、「Microsoft Visual Basic 2005 Power Packs」ってのが出てたんですね。

で、そいつが9/6に「2.0」にバージョンアップと。

今回の目玉は、

"The new Line and Shape controls included in this version"

なんだそうで、地味ながら多くのVB6経験者には待望かもしれません。

その他

"PrintForm component, and Printer Compatibility Library"

と旧バージョンから提供されていた機能のアップグレード版も同梱、みたいな感じで。


結局、VBに求められているものは「使いやすい、作りやすい」なのだと思うのですよ。

「コードで線引けるからいいじゃん」、ではなく、やはりデザイナ上で引きたいと。
たとえそれがリソース食いになろうとも作業の簡略化を選択する、

それがVB魂。(^^;)

つことで、ダウンロードはこちら
ReadMe.htmのダウンロードはこちら

2007年08月12日

Visual Studio 2008 β2日本語版 提供開始

最近なかなかまとまった時間が取れないさるべーじですこんばんは。

先月からちょいと名古屋の方に出稼ぎに来ておりまして。
これはこれでなかなかためになったり大変だったりもーいろいろで。

そんな感じで私が自分の人生にじたばたしているうちに、ついに提供が開始されました。

Visual Studio 2008 Beta2 日本語版

これ、Orcasってコードネームで何年も前から話には漏れ聞こえていた、Visual Studio2005の後継バージョンです。こいつが正式名称Visual Studio 2008となったわけですね。

英語版とかいろいろ今までにもOrcasβはちらちらと出たりしていたわけですが、とうにようやく誰もが手に入れることのできる日本語版、って状態での提供が開始されました。これは嬉しい。

でもって今回は、このへんの感想とか情報交換を目的としたフォーラムがmsdnフォーラムに特設されています。

Visual Studio 2008 ベータ フォーラム

一言物申したいという方は、こちらの方にアクティブに参加されると楽しいかもしれません。


ちなみに、今Visual Studioを核とした開発環境を理解しようとするのであれば、VS2008のほかにAjaxやSilverlight、Expressionを含めたトータルな視野が必要となります。

今回は学ぶのがかなり大変そうではあります。

その気のある方は、がんばってください。
私もがんばりまーす。

2007年07月13日

Paulおじさんの語るVB

マイクロソフトサイトの中に、Ask The Experts!ってコーナーがありまして。

これ、Microsoftの製品やテクノロジを実際に作っている人たちにビデオインタビューでいろいろ聞いちゃえーという企画なんですね。
似たような試みに米国MicrosoftがやっているChannel9というビデオサイトがあるんですが、トークが全部英語なわけです。

これはつらい。

文章で書かれていてもWeb翻訳とかで粗訳かけてから必死に解読しなければ英語なんてわかんないよーなレベルの私に、ノーマルテンポでのヒアリングなど到底できません。
しかし。Ask The Experts!では英語圏の開発者へのインタビューを日本語字幕付きで公開してくれているわけです。

これはありがたい。

それでも発言に理解が追い付かず、字幕を全部書き写してじっくり考えながら読み解かないばならないんですが、それでも望めば届くレベルまでほしい情報が降りてきてくれるのはむっちゃくちゃありがたいわけです。


さてそんなAsk The Experts!なわけですが。

先日、ついにVB開発のキーパーソンであるのPual Vick氏のインタビューが公開されました。

VBの過去/現在/未来について、非常に穏やかに語ってくれています。
あまりエキセントリックにあおったり、インパクトのあるハッタリをかますようなタイプではないので…まあエキサイティングなカリスマというよりは癒し系の親分のような感じですが、そーいぅ方なんだと思います。

VBはMicrosoft製言語の中では比較的人を選ばない言語仕様なのですが、その分考慮しなければならない範囲がむちゃくちゃに広く、なかなか大変そうだなあと思いました。

その間口の広さが、私なんかはさまざまな立場の人と情報を共有できる楽しさもあり、好ましいと思うんですけれども。
でもまあ考えてみれば、そんなもん作る方はエラいこったなあとも思います。

VBを作る人たちが何をどう考えてきたのか、今の(2005/Ver8)/次の(2008/Orcas/Ver9)VBはどうなのか、興味のある方は一度ご覧になってみてください。その次(Ver10)のVBについてもちらっと語ってくれていますよ。


少し前にインタビューは予告されており、Pualさんへの質問を募集しておりました。私もひとつ質問を投げさせていただき、実際にPualさんに答えてもらえました。
納得のできる回答だったと思います。が、やはりもう少し前向きに解決していただきたいなーと思いますので、今後も折にふれアピールしていきたいなあとも思います。

どの質問だと思いますか?(^-^)

2007年07月02日

2007年度MVPについてご報告とお礼

MSMVP(VB)をもう1年いただけることとなりました。

  ご指導/ご協力くださった皆様、
  励ましてくださった皆様、
  一緒に遊んでくださった皆様、
  blogや書籍をご覧下さった皆様、

本当にありがとうございました。

受賞は今回で3年目になります。
1年目は物見遊山、2年目は少し落ち着いて地味にいろいろ動いてみました。
少しでも何かしらのお役に立てたのであれば幸いです。

今年はWindows Vista / 2007 Office Systemの提供が開始されました。AJAXやWPF、Silverlight / Moonlightなど、Web回りの関連技術も追い切れないほど豊富に提供され始めました。また、来年にはVisual Basic 2008(Orcas - Ver.9)の提供も予定されています。

これらの状況の中で現場の開発者やホビーユーザーの方々が有用な成果を上げていくためには、メーカー主導の情報だけではなく、個人レベル / 草の根レベルでの情報提供 / 交換がますます重要になっていくように思います。

ほそぼそとWebサイトを立ち上げてVB / VBAの情報を提供し続け、もう9年以上になります。MVP受賞の有無に関わらず、このスタンスは今後もあまり変わらないないように思います。
しかし、MVPをいただき、さまざまな人物や情報に触れるチャンスが増えるということは、「気づき」のチャンスが増えるということです。気づける、学べる機会が増えることは、私のような地方末端の技術屋にとって何よりも得難い幸運です。

blogは相変わらずのペースでうんちくを語っていきます。また、書店やセッション会場でお目に触れることもあるかもしれません。どこかでお会いできましたら、どうかお気軽にお声をおかけください。

ではまた、何らかの機会にでも。(^^)ノ

願わくは、パソコンが人々を少しでも幸せにする機械であらんことを
今村 丈史 / さるべーじ salvage@nifty.com

2007年04月20日

Visual Studio 2005 Tips

★検索ダイアログは正規表現をサポートしている
[検索と置換]ダイアログの[検索オプション]を展開し、[条件]チェックボックスにチェックを付ける。これで検索文字列に正規表現を使うことができるようになる。
正規表現が使用可能になると[検索する文字列]コンボボックスの右横にある[▶]ボタンが押せるようになり、正規表現用演算子の一覧が表示されるのでけっこうわかりやすい。

ちなみに[条件]チェックボックス下のコンボボックスを[正規表現]から[ワイルドカード]に変更すると、[▶]ボタンで表示される演算子一覧もワイルドカード用に変化する。

Coding Horror: The Visual Studio IDE and Regular Expressions

★ SlickEdit® Gadgets for Microsoft® Visual Studio® 2005
カレント行へのルーラ、ネスト合わせ用の縦ライン、コードウィンドウ背景画像の設定、操作コマンドとショートカットの対比一覧ダイアログ、ドキュメントウィンド領域へのエクスプローラ表示、データオブジェクトアナライザ(ごめん、これよくわからない)、コードのコード/スペース/コメント比率のグラフ表示と、役に立つんだか受け狙いなんだかな機能満載のガジェットアドイン。

★ Microsoft製VS IDEガジェットあれこれ
Code Snippet Editor for Visual Basic 2005
※ VBUG製日本語版もある。別エントリにURL張っておいたはず。
Refactor! for Visual Basic 2005
Outlook Add-in Snippets for VSTO

★ 米国msdnForumにはVisual Basic IDEフォーラムがある

★ vs.Eco
jameslau-MSさんのVSSDK blog。あなどれん。

★ "F#"ってなんだ。
http://research.microsoft.com/fsharp/fsharp.aspx
http://blogs.msdn.com/dsyme/

★ VB←→C# "New" Code Converter(β)
以前猿頁で特集やった後に出てきたおニューアルゴリズム搭載?
実力や制限は未知数。

★ Microsoft Visual Studio Extensibility Portal
VS拡張機能ポータル。devx.com内。深ぇ。

★ help.net
.NET周りをこぅいろいろヘルプ。つぅかユニークな情報満載。

★ SmartOutline for VS2005
コードウィンドウ内の任意のコード範囲をたたみ込めるアウトライン機能拡張。
アドインではなくVSIP?インストールするとアドインマネージャではなくバージョン情報ダイアログの中に表示される。

VBコードでもOK、C#でアウトラインを中止しなくてもOK。
たたみ込み範囲に名前をつけられるのもありがたい。
(名前を付けなくてもいいオプションがほしかった/名前は表示のみ用で、一覧表されるわけでも検索/ジャンプできるわけでもないところがいまいち惜しすぎるT"T)クーッ

たたみ込み情報は(プロジェクト名).sodataファイルにxmlで保存され、次回起動時に復元される。これだけでももー標準のアウトライン機能よりすばらしい。

もぅちょい機能が充実(上記"惜しい!"の解決+ネストによるアウトラインの自動生成機能あたりで)するとデフォルトのアウトライン機能を切って完全に乗り換えられそうな気がする。

2007年03月14日

Refactor!

えー、VS.NET2003~VS2005βのあたりでさんざん騒がれ、最近は全然騒がれることも少なくなってしまったRefactor!というソフトがありまして。

これが何をするモノかってぇますと、VBとかで書いたソースコードをきれいにまとめる時にラクになるってぇもんでして、VSへのアドインとして提供されているわけですね。

しかしこれが意外と重くてデメリットを感じてしまったり、ひと頃私はVB2005 Express Editionメインで仕事していたりしたもんで(Exp.Edはアドイン機能やマクロ機能がなく、機能拡張がまったくできない製品なわけです)、けっこうご無沙汰してしまっておりました。

で。現在携わっているプロジェクトのコーディング規約がこのへんのお行儀にウルサく、そーいえばそのへんさくさくイジれるソフトがあったよなーと久々に引っ張り出して使ってみました。

私の手持ちはPro2.0.4(売り物版)で。日本語版は発売されていないので英語版をどうにかこうにか使っているんですが、ぃゃなかなかこーいぅ状況の中では使いものになって楽しいなぁと。しかしやっぱ英語版はつらいなぁと。

そんな感じで泣きながら、ふと思い出したのがProのつかないVB専用無償提供版。
あれ確か1.0.33くらいの時に日本語対応したんではなかったかしら。とりあえずあっちの日本語メッセージで慣れといてからProに戻ればも少し使いこなせるようになるかしらと。

たしかダウンロード先リンクはRefactor! for Visual Basic 2005 Beta 2でメモっといたはず。開発元のDeveloper Express Inc.のページへ行けばいいんだ。って、

バージョンが2.1.3に上がってますよ!

人知れずDeveloper Expressはガンバっていた!ちゃんとPro版と同じバージョンに上げ続けれくれていたんだ!

正直ひと頃あんなに持ち上げていたマイクロソフト日本サイトではすさまじいほどにリンク切れを起こしていまして、もー紹介しない気満々なのがありありと。米国ご本家サイトでもRefactor!の紹介記事中のリンクが既に切れていまして、マイクロソフト側からたどり着こうとするとだんだん涙が出そうになってくるんですが。

でもってこの無償提供版2.1.3、ふつーにインストールするだけできちんと日本語版として動作します。ヘルプも簡略版ながらちゃんと日本語ですし。

ちなみに無償提供版とPro版を比較してみると。

リファクタリング機能がPro19種類、無償版18種類。Functionの出入りの信頼性を確保するテンプレート1つだけが外れているようです。

ビジュアル効果は、無償版ではビルボードヒントやパラメータセレクタ、ダイアログ系の統計表示機能がカットされています。またスマートタグが無償版ではVSスタンダードなアイコンでちょっとしょぼめ。

で、最大の違いはオプションダイアログ。
Pro版ではキー割り付けやビジュアル効果などをかなり細かい部分までカスタマイズできるんですが、無償版はダイアログなし。インストールデフォルトで使うことしかできません。
もともと効率の向上が主目的のひとつ(もうひとつは修正デグレ回避→信頼性の確保)なソフトですから、自分の使いやすいようにどこまでカスタマイズできるかがひとつのキモで。ここは日本語化されていないので、自分で調べるのにけっこう骨が折れそうなんですけど、たぶんここが一番オイシいところなので、そのうち何とかしてみたいと思っています。

つことでしばらく無償提供版使用、専門用語の日本語訳を頭に叩き込んでから英語版Pro!に戻ろうと思います。

…って、あー、SubScriptionの契約期間終了してたんだった。Pro版を2.1.3に上げられないよーとか。
でも先日広告メールだけは来てて、2007Officeそっくりの左上ボタン(Officeボタン…とは呼べないよなぁ、なんて言えばいいんだアレ)とリボンを実装できるコントロールを作りました!とかいろいろおもしろそうなことをやってくれる企業ではあるんですよ。

どーしよーかなー。

2007年01月13日

あけましておめでとうございます2007

はっと気づくとすでに1月も第2週を終ろうとしていることに歳喰ってからの時の流れの速さに気づいてぼーぜんとしているさるべーじですこんばんは、ではなくあけましておめでとうございます旧年は各位に大変お世話になりました本年もよろしくお願いいたします。

って年頭初っ端の文章がここまでぐずぐずなのもいかがなものか、と、すでに本年初反省だったりもするんですが。

まーなんだか今年もこんな感じで行くことになってしまうんだと思いますのでそこらへんも含めてよろしくお願いいたします。


さて、ご挨拶だけではちょっと寂しいので、ここは一発新春お年玉を用意してみました。

Visual Studio 2005 VBコードスニペットのリストです。

実はコードスニペットは、msdnライブラリその他マイクロソフトの公式情報として「何が提供されているか」の具体的な一覧がないんです。

でもって、コードスニペットは

コンテキストメニュー→[スニペットの挿入]→リスト選択

というのとは別に

ショートカット記述→Tab

という挿入のしかたもあるんですが、なんというショートカットでどのスニペットが挿入されるのかの情報もないんです。

せっかく用意されている機能ですのでやはりトータルに把握してサクサク使いたい、というところで、SnippetIndex.xmlと各.snippetファイルの中身を調べて一覧表にしてみたってのがこの資料なわけですね。

Editionによって提供されているスニペットは違いまして、Expressで233本、Team Suiteで398本の提供になっています。
Expressで提供されているスニペットは、すべてTeam Suiteでも提供されています。+Office、WindowsCE、セキュリティ、OS回りのが増えている形です。
Express版にないものについてはTeam Suite版のリストで背景色をつけてあります。

またExpressの方がTeam Suiteよりも提供時期が早かったせいか、Express版の記述ミスが直っていたり、カテゴリが変更になっているものもあります。
とは言っても、Team Suite版でも記述ミスはあちこちに見受けられるんですが、直すのも面倒なので基本的にそのまままとめてあります。

他のEditionについては手元にありませんので、確認していません。

また、このリストはExcell2007で作成し、互換モードxlsで保存しましたので、旧バージョンのExcelで見ると色合いが変かもしれません。


本リストはVSの中のスニペットファイルから各種情報をかっぱいでまとめたリストですので、事前にマイクロソフトから提供の許可をもらってあります。

つことで本資料の著作権はマイクロソフトにありますのでそのへんお気を付け。

ちなみに、スニペットファイルからの情報の引き抜きにはVisual Basic Snippet Editorのvbug日本語版を使いました。SnippetIndex.xmlは秀丸で直読みしましたが、VSのXMLエディタかXML Notepad 2007を使った方が楽かもしれません。

Visual Basic Snippet EditorはVBスニペット専用ですので、もしC#用スニペットリストを作りたいのであれば、Snippyって手があります。
VBではどっちも使えますが、使い勝手はSnippet Editorの方がちょっといい感じかも。


実はこのリスト、昨年CLR/HでやったVS2005コミュニティローンチでセッションをやった時に既にExpress版は作ってあったのでした。

そーいえば、CLR/Hでは今年の2/17に、今度はVista & .NET Framework 3.0コミュニティローンチを行います。
今回もおもしろいセッションが組まれていますので、札幌近辺の方はぜひ。

でもって、昨年出させていただいた拙著これからはじめるVisual Basic2005入門編に入れようとしたんですが、他の部分と説明の深度が合わず泣く泣くカットしたという経緯もあります。

今回の提供に当たり、手持ちのTeam Suite版リストも合わせて起こしてみました。


では、VB学習の一助にならんことを願って。

SnippetIndexVB.zip

2006年12月20日

VB6:デバッグ実行時のカレントパス

私が新規でVB6プログラムを作る時の手順は、

  1. VB6 IDEを起動
  2. 標準EXEを選択
  3. .frmと.vbpをソースフォルダに保存
  4. 作成開始

って感じです。
作りかけでIDEを終了させた場合は、2回目からはソースフォルダ内.vbpファイルダブルクリック起動なわけですね。

で、ソースフォルダにデータファイルとか置いて参照しようとすると、読めなくてびっくり。

実はVB6 IDEから起動すると、カレントパスがVB6.EXEの存在パスになります。
.vbpダブルクリックで起動した場合は、その.vbpの存在パスで。

ふつー実行ファイルと同じフォルダに置いたデータファイルを読む時にはApp.Pathからフルパスを生成するんですけど、今回参加しているプロジェクトのセオリーが ".\(ファイル名)"ってなんでこんな記述にしているのかよくわからないリテラルなので、IDEの起動操作手順がもろに影響してしまっていたのでした。

それにしても".\"、意味なさすぎ。ただファイル名だけなのとまったく変わりません。
なんのつもりでこんなセオリーが普及定着しちゃってんだろう。

あーびっくりした。

2006年12月18日

VS2005:SP1登場!

えー、ご報告がちょい遅くなりましたが、2006.12.14、VisualStudio2005のServicePack1が提供開始されました。

ExpressEditionのはこちら
Express以外のEdtion用なのはこちら

でもってSPの内容やら制限事項やらのリリースノートはこちら。せっかくの和訳ですが機械翻訳だもんでいろいろ意味が通らなかったり変な文字に置き換えられていたりでわかりにくいから原文とつき合わせたいよーという場合はこちらもどうぞ。

ちなみにSP1 Update for Vistaは別で、12.18現在未だComing soonとなっています。上記のSP1はVistaにも対応しているとの記述がありますので、どうもVistaの場合にはこのSP1を当ててからさらにSP1 Update for Vistaも当てる必要があるような感じです。

さらにちなみに.NET Framework3.0はこれらとはぜんぜん別系統(のはず)なので要注意。

ちょっとややこしいんですが、このへん上手に当て分けてください。
ではっ。

2006年09月17日

VB2005:Dialogを表示するとIMEが無効になる

ことがあることになることもある(T-T)。


えーとこれちょっとややこしいので、まず再現手順から。

  1. 「新しいプロジェクト」で「Windowsアプリケーション」を作成。
  2. Form1にTextBox×1、OpenFileDialog×1を載せる。
  3. TextBoxにフォーカスがある状態でOpenFileDialogを表示するようなロジックを組む。
  4. デバッグ実行。
  5. 半角/全角キーとかなんかそのへんでTextBoxを「ひらかな」入力状態に。
  6. OpenFileDialogを表示させて閉じる。
  7. TextBoxの入力状態が無効になる。
うわー、Dialogを表示するとIMEが無効になっちゃうんだー。

とりあえずその場しのぎでなんとかしようと思い。
TextBoxのImeModeChangedイベントでImeMode拾っといて、Dialog表示後に書き戻してやればいいかなーと。

ってImeModeChangedイベントが発生しねぇ!

そもそも半角/全角キーを切り替えてもTextBoxのImeModeが変化しねぇ!
どーいじってもNoControlのままじゃぁありませんか。

…んー、NoControl?

試しにTextBoxのImeModeの初期設定をOffにしてみると、無事ImeModeが実行時の操作に合わせて変化するように!ImeModeChangedイベントも発生するように!

あー、NoControlとOffの違いって、こーいぅところにあったわけですね。

てことは、DialogでIMEが無効になっちゃうのも、このへんが原因なのかもしれません。
では、TextBoxのImeModeをOffに設定し直して再チャレンジ。

  1. OpenFileDialogを表示させて閉じる。
  2. TextBoxの入力状態は「ひらかな」状態を保持。

おお、いい感じ。

  1. もう一度OpenFileDialogを表示させて閉じる。
  2. 以降、何度操作してもTextBoxの入力状態は無効になる。

…だめじゃん。

第一、Dialogが表示されたときにIMEがOffになっているのが気に食いません。
呼び出し元のTextBoxがHirakanaになってるんであれば、そこから呼ばれるDialogの初期状態もHirakanaになっていてほしいわけで。

いやいやいやちょっと待て。
どうしてDialogが「呼び出し元はTextBox」と判断すると決めてかかっているのだ私は。
どんなイベントからDialogを呼び出してもかまわないわけだから、TextBoxにフォーカスがあろうがなかろうがDialog側では気にしないよなー。

てことは、DialogはDialogの親コンテナからIMEの状態を引き継ぐのではないかと。
ってことは元凶はTextBoxではなくFormのImeModeなのではないかと。

確認してみたら確かにForm1のImeModeがNoControlに。

ここかっ!

Form1のImeModeをOffにして実行したら、確かにImeの状態が保持されっぱなしに!DialLogもForm1のIME状態を引き継いで!Dialogを閉じても元のIME状態のままで!

くそー、ここらへんの関係がわかってなかっただけだったんだー。

ちなみに、TextBoxとかのImeModeは親コンテナからのアンビエントプロパティなので、初期設定のままいじらないでおくと、動作中は親コンテナ(ふつーはForm)のImeModeをそのまま引き継ぎながら動作します。つか、そのウィンドウでIMEの状態が保持されるってことですね。数値オンリーで強制的にIMEをDisableにしたいコントロールだけ別途設定するような使い方っすね。
一度個別設定したコントロールのImeModeを再び親コンテナと同期するように戻したい場合は、親コンテナと同じ設定にするのではなく、右クリックして「リセット」します。
親コンテナと同じ設定にしてもImeModeプロパティは太字のままで、これは「たまたま親コンテナと同じ設定が選択されているかもしれないけど、これはおいらのオリジナル設定なんだよー」と主張しているわけです。「リセット」すると太字が解除されて、コントロールを載せた時の初期値に戻るわけです。ImeModeはアンビエントプロパティなので、その初期値は「親コンテナの設定を引き継ぎ続ける」ってことになります。上記の例で言えば、実行時にTextBoxのImeModeを手動で変更すると、実際に変更されるのはFormであり、TextBoxはその瞬間瞬間のFormのImeModeに影響される、ってこってすね。

Formやコントロールの作成時初期値がNoControlなのがややこしくなっている原因ですが、IMEを積極的に使わない国のことも考えると、まぁ「影響されない」NoControlであることは妥当かなぁという気もします。

つことで今回の結論は、

  • IMEの制御は原則Formで。

  • IMEを考慮するなら作成時初期値はNoControlではなくOffで。
ってことでひとつ。

2006年08月30日

VB2005:DragDropが発生しない

固定長データがびっしり入っているデータファイルをとっかえひっかえ閲覧して、中のデータをチェックとかしなければならないハメになりました。

今の仕事はVB6でのPg開発なんですけれども、一度VB2005の楽ちんっぷりになじんでしまうともー昔には戻れない。つことで、納品するPgがVB6であれ、作業用の「ちょろっとPg」はついついVB2005で作ってしまう今日この頃です。

いや慣れるとほんっと楽ちんっす。
オブジェクト指向プログラミングの理解必須とか変な誤解があるので食わず嫌い王な方もいらっしゃるかもしれませんが、まぁいいから一度喰ってみれと。クラスライブラリも派生とか継承とかコ難しいことはいいからまずは便利なライブラリとして使ってみれと。
ほぼVB6と同じプログラミングセンスで、IDEの使い勝手の向上とあいまって、作業効率が一気に3倍に!体感速度的に。つか気分的に。

さてそんなこんなでVB2005で固定長ファイルビューア作ってしこしこデータ検証作業とかやっていたわけですが。ファイルの選択もOpenFileDialogを貼り付けただけで使い物になっちゃうので簡単に作れていたりしたわけですが。

いくつものフォルダに格納され分けたいくつものフォルダをひっかえとっかえ開いているうちに、いちいち「ファイルを開く」ダイアログでフォルダ間移動をするのがめんどくさくなってきました。

ここはやはり、エクスプローラからのドラッグ一発で済ませたい。

てことで、ひさしぶりにDrag & Drop機能の実装に手を出してみました。

対象のControlのAllowDragプロパティをTrueにして、DragDropイベントを追加。って、

DragDropイベントが発生しねぇ。
あれー?

あわててあちこち調べてみると、DragEnterイベントあたりでe.Effectに DragDropEffects.Copyとかなんとか設定しておかなければ、DragDropイベント自体が発生しないということがわかりました。

こんな感じで。

Private Sub TextBox1_DragEnter(...) Handles TextBox1.DragEnter
e.Effect = DragDropEffects.Copy
End Sub

Private Sub TextBox1_DragDrop(...) Handles TextBox1.DragDrop
For Each strWk As String _
In CType(e.Data.GetData(DataFormats.FileDrop), String())
TextBox1.Text = strWk
Next
End Sub
このパラメータ「e」がなんなのか、どーもいまいち納得できなかったりします。
イベントプロシージャのパラメータは、そのプロシージャの終了が寿命なんだと思っていたんですが、DragEnterイベントのe.Effectの設定でDragDropイベントが発生する/しない自体を制御できてしまうってのはどうなんでしょう。

などと思いつつも、そーいぅセオリーなんであればしかたがない。飲み込むまでです。



以下、一応作成手順ってゅうか考え方ってゅうかのメモ。

まず、ドラッグ先のControlとかFormとかにマウスカーソルが乗ったタイミングでDragEnterが発生するんですが、ここで「ドラッグされてきたモノを受け付けていいかどうか」のチェックをするセオリーとなっています。

まぁファイルのフルパスをドラッグしてほしいところに日記の文章とか画像データとかドラッグされても困っちゃうわけですし。

で、チェックした結果で「受け付けてもいいよー」とか「やだよー」とかをどっかにセットしてやんなきゃならんわけですね。それがパラメータeのEffectプロパティ。
こいつにDragDropEffects列挙体からそれっぽい項目を選んで代入してやればいいんですね。

e.Effectの初期値は「DragDropEffects.None」でして、この値だとそもそもマウスを乗せた時にマウスカーソル自体が行き止まりマーク(「ここにはドラッグできませんぜ旦那ー」マーク)のままとなります。で、この状態でマウスのボタンから手を離しても、DragDropイベントは発生自体しません。

で、たとえばe.EffectをDragDropEffects.Copyに設定してやると、マウスカーソルが「矢印+[+]」マーク(「ここにドラッグするとコピー扱いになりますぜ旦那ー」マーク)に変化します & DragDropイベントが発生するようになります。
どうもDragDropイベント自体はe.EffectがNoneでなければなんでもいいみたいな感じで、DragDropEffects列挙体にたくさん種類があるのはマウスカーソルの形状変更だけの違いのような気もしますがそこまでは検証していませんすいません。

MSDN Libraryでは、忘れがちなポイントとしてAllowDragプロパティには言及していますが、e.Effectについてはサンプルコードの中でさらっと流してしまっています。しかもこれエラーチェックコードの最後にさりげなく入っているので、単にマウスカーソル形状の変更を目的としたコードに見えてしまって読み飛ばしかねませんってゅうか私読み飛ばしてエラいハマりました。

旧VBだとマウスカーソル形状の変更とドラッグ操作自体は別もんだったような気がします。ドラッグ操作は実装するもののマウスカーソル形状へ変更されないとかなかなか不親切なPgが出来上がりやすかったので、いっそマウスカーソル形状の変更をDragDropイベント発生の条件にしてしまえば嫌でも形状変更するだろう→作り込み忘れがなくなるだろう、って発想はおもしろいんですけどね。

そんな連携機能を実装するなら、その旨MSDN Libあたりでもっとしっかり説明しておいてほしいよなーと思うのは私だけでしょうか。あるいは旧VBの頃からそんな実装になっており、単に私がもーそのあたりを忘れてしまっているだけでしょうか。

以上、結論としては

Drag & Drop機能を実装する際のポイントは、ドラッグされるオブジェクトの
  • AllowDragプロパティ
  • DragEnterイベントのe.Effect
の2点。
つこってすね。

2006年08月25日

VB2005:ShortcutsEnabled=TrueでもCtrl+Aが効かない

VB2005でTextBoxのShortcutsEnabledはMSDN Library上、Ctrl+Z/E/C/Y/X/BackSpace/V/Del/A/L/R・Shift+Del/Insの有効/無効を切り分けるプロパティだという説明になっているわけですが、実際にはCtrl+Aとか効かないわけです。

CodeGuru Forums - "The TextBox control does not support shortcut keys"

とかで質問者がもー怒ってるんだか涙ぐんでるんだかな口調で叫んでいるのがいっそほほえましく。

であちこち探してみると、本家版オンラインMSDN LibraryのShortcutsEnabledのページで、

Note:The TextBox control does not support shortcut keys.
なんてのを発見。

えええええ、TextBoxではショートカットに対応しない!?

いやでもCtrl+CとはVとかは効きますし。ちゃんとShortcutsEnabledをFalseにしたら効かなくなりますし。

どうもこのへん記述が信用ならんような気がしてなりません。

でまぁ解決策としては、ShortcutsEnabledをTrueにしといて以下のコードを追加ですよ。

Private Sub txtDetail_KeyDown(...) Handles txtDetail.KeyDown

Select Case e.KeyCode
Case Keys.A
If e.Control Then
txtDetail.SelectAll()
End If
End Select

End Sub

いやまじで単にCtrl+Aに対応していないだけなんだと思うんですが。
なんで「対応している」って言ってみたり、十把一絡げで「対応していない」と言い捨ててしまってみたりしているんでしょうか。

おじさんは納得いきません。むー。

2006年08月20日

VS2005:MSDN Libraryの動作を速くする

IDEでちまちま作業していてヘルプ(MSDN Licbrary)を参照したくなり、F1とか押した時。
毎回「オンラインヘルプを読み込み中...」とか出てきて表示までに非常に時間がかかるわけです。いらいらするわけです。

ってなんのことはない、Document Explorer(MSDN Library)のメニューから[ツール]-[オプション]でオプションダイアログを表示させ、左側ツリービューから[ヘルプ]-[オンライン]で「ヘルプコンテンツを読み込む時」の設定を「オンラインではなくローカルのみで実行」にしておけば、昔のMSDN Library並みの反応速度になるんですね。なぁんだ。

正直、プログラム組んでてちょろっと確認したい時なんかは別にWeb上の最新情報までは必要なく、多少の誤記があってもかまわないので自分のマシンにインストールしてあるローカルの記述で十分なんですよ。
また、MSDNフォーラムとかそのへんのリンクされているコミュニティも、もって回った言い回しでヒントだけとか「当然前提となる知識は持っているよね?」とばかりのマイナーな専門用語までぶんぶん振り回した省略だらけの回答をデカい態度で書き込んでいるものも多く、現時点ではあまり解決策を求める役には立たなくなってしまっているんですよね。だったら最初からMSDN Libraryだけに絞って抽出検索かけた方が速いし正解にヒットする可能性が高いってもんです。デカい態度にむかつかなくて済むだけでも精神衛生にいいし。

もしMSDN Libraryで用が足りなかったら、Document Explorerではなく自分の使い慣れた & 検索しやすいようにカスタマイズしまくったWebブラウザで検索した方が効率高いす。わざわざDocument Explorer経由で検索する必要はないす。

つことで、IDEから呼び出すヘルプはローカル専用にしてしまいましたよ。うーむ、快適ー。

2006年07月04日

2006年度MVPについてご報告とお礼

MSMVP(VB)をもう1年いただけることとなりました。

  ご指導くださった皆様、
  励ましてくださった皆様、
  一緒に遊んでくださった皆様、

本当にありがとうございました。
もうあと1年、よろしくお願いいたします。

今回は地道にガンバってみたいと思います。

2006年06月29日

VB6が終わるのはJAVAのせい

正確には、

VB6の提供が2006.06.30で終わるのは、SUNとの和解合意の特例に基づいて、その中に含まれるJAVA VMの提供を終了させる必要があるため
だったのね。初めて知りました。

  Visual Basic 6.0のダウンロード終了直前

てっきり、マイクロソフト製品のライフサイクルにのっとっての製品提供なのかと思っていましたよ。の割にはメインストリームフェーズが終了してもMSDNサブスクライバで提供をやめてみたり復活してみたりで不思議な感じはしていたんですが。

  Visual Basic 6.0 ファミリ製品のライフ サイクル ガイドライン

でもって、VB6ランタイムはWinVistaに同梱提供されるらしいです。

  Windows® Vista™ における Visual Basic 6.0 のサポートについて

てことで、VB6IDE(開発環境)はVB6ライフサイクルにのっとってメインストリームフェーズは2005.03.31に終了済、延長フェーズは2008.03.31まで。

VB6ランタイムは、WinVistaでの話に限ってVistaの一部とみなされるので、Vistaのライフサイクルにのっとって、Vistaの発売開始後メインストリームフェーズが5年間、延長フェーズがさらにそれから5年間。
仮にVistaが2007.01.01に発売開始されたとすると、2011.12.31/2016.12.31のサポート期間になるわけですね。

上述の北川さんの話では、どうもJAVA VM抜きのセットを作ってVB6の提供継続を検討してくれそうな雰囲気です。もし実現したら、一度手に入れてみたいと思います。
VB6はPro版を購入して持ってますし、SP5も6もVBマガジン付録CDを保管してあるんですけど。でも手に入れてみたいと思います。

2006年05月12日

Channel9日本版発進!

Channel9 日本版 ファンサイト

マイクロソフトの大西さんという方が、米国本家で大人気なChannel9の日本版を立ち上げるべく動き始めました。(Moooさん情報ありがとうm(_ _)m)

これ、Microsoftの中の人や外の人へのインタビュービデオログをメインとした情報発信サイトなんですが、提供されるものの機能や仕様の裏側の「俺たちはこんなこと考えてんだぜー」みたいな生の意見が聞けるのがむちゃくちゃ貴重なんですよ。

本サイトでblogのコンテンツを邦訳させていただいているSara Fordさんのログもあります。
(名誉のために申し上げますが、ご本人はあのビデオより20倍くらいきれいな方です。)

で、私も最近知ったんですが、どうも日本マイクロソフトの開発部隊も、別に日本語へのローカライズだけを担当しているわけではないらしいです。どう分担協力しているのかは知りませんが、先日MVPのクローズドイベントで「このソフトのここんとこは俺が作ってるんだぜー」と語ってくださった方がいて、それがむちゃくちゃおもしろかったんですよ。

このおもしろさ、興味深さがChannel9日本版でみんなで見られるようになる!と思う!

放送開始はもう少し先になりそうですが、今日ファンサイトが立ち上がりました。ここに感想を書く、応援を書く、リクエストを書く、と盛り上げていくことでいろんな方のおもしろい話がちょっぴり聞けるかたくさん聞けるかが変わってしまうかもしれません。

とりあえず「あの人のあんな話を聞いてみたい」「あれ作った人の話を聞いてみたい」方はファンサイトにゴーだっ!そして応援とか何とかなんかそのへんを書くんだ!

ただし、ご利用は紳士的にね。

2006年05月09日

Channel9日本語版も!!

先日Coding4Fun日本語版が来たぞーやっほー!などと舞い上がってみたわけですが。

今度はあのChannel9が!

Akira Onishi's weblog:予告: Channel 9日本版の試験放送

まだ試験放送の準備段階中のようですが、備忘録としてメモ。
日本語版は独自コンテンツで行くようですが…本家からの翻訳記事、字幕動画もぜひぜひ。期待しております。

ASP++のMooさんに教えていただきました。ありがとうございますー。

2006年04月27日

VBA→VSTOマイグレーション

VBA/VSTO/VBSA周りの状況を調べた時のメモ。
きちんとまとめてから書こうと思ったんですが、なんかこのまま埋もれてしまいそうな勢いなので、とりあえずここまででいったん提示しときます。

どうもVBA→VSTOのマイグレーションの元はArtinSoftのJLCA(またはJLCAのテクノロジー)が大きく関わっているらしい。
Dale Obergさんの名前をキーワードに検索かけて情報を編み上げると、このへんのおもしろい流れがたどっていけそうです。



---
VisualBasic アップグレードウィザード
---
Java Language Conversion Assistant(JLCA)

 2002年2月5日にβ1 が公開された,Java 開発者が .NET 開発環境にスムーズに移行できるようにするツール。 ArtinSoft の移行技術を用い,Java で記述したソースコードの大部分が C# に自動変換される。 JLCA は現在 Microsoft の Web サイトで公開されており,Visual Studio .NET にも同機能が搭載される。

JLCA EE
 JLCA の法人向けバージョンで,JLCA のスーパーセット版らしい。

ArtinSoft
 エンタープライズ版 JLCA の開発を進めている,コスタリカ San Pedro。
サイト:
---
Excel VBA ソリューションの Visual Studio 2005 Tools for Office へのマイグレーション

Visual Studio 2005 Tools for Office への移行における VBA から Visual Basic .NET へのコード変換

2006年04月26日

よし来たSQLServerExp-AS

SQLServerExp-AS(SQL Server Express Edition with Advanced Services)日本語版(なのかなぁ)の公開開始。

Microsoft SQL Server 2005 Service Pack 1のページから。

SQL Server 2005 Express Edition with Advanced Services は、SQL Server Express の新しい無償のバージョンで、通常のExpress Editionの機能に加え、SQL Server Management Studio Express (SSMSE)、フルテキスト カタログのサポート、レポート サーバーを介したレポート表示のサポートなど、いくつかの追加コンポーネントが提供されます。
って、従来のExp.Edで使いにくい部分や困っていた部分が大幅に改善!されているのではないかと。

いやまだ私ほとんど触っていないので実感はないんですが。
とりあえずメモといぅことでひとつ。

2006年04月24日

Japan MVP Summitに参加してきました

えーと。
Microsoftでは市井の技術者とかなんかそのへんに対して送るMicrosoft MVPというアワードがありまして。どんなもんなのかについてはこのへんをご覧いただくとして。

このアワードの特典のひとつとして、MVPだけが参加できるクローズドイベントJapan MVP Summitってのがありまして。
このイベントがどんなものかってのは、公式には2005年2003年に開催された時のレポートを読んでいただくとイメージが湧くかなぁという気もしますが、私としては

Microsoftの中の人といろいろとしゃべっちゃえー
他のMVPな人とお友だちになっちゃえー
という催しなんだと思っているわけです。

という催しに、4/22参加してきました。

私は今回、主にUX(ユーザーエクスペリエンス)回りをテーマにいろいろ話を聞くことにしました。つか自分自身のテーマがずっと「エンドユーザに使いやすいフロントエンドマシン」ですのでそんな切り口になるのではないかと。
となると、気になるのは「Expression Interactive Designer」と「Office2007」あたりなのでそのへんを中心に。



まずEID(Expression Interactive Designer:元Sparkle)回りなんですが。

製品として具体的に提示されているために私はEIDにばっかり着目していたんですが、どぅもコアの考え方はWinFX→WPF(Windows Presentation Foundation:元"Avalon")とXAML(eXtensible Application Markup Language:ザムル)みたいですね。

WinFXから派生するサブシステムというかフレームワークというか技術というかなモノには他にWCF(Windows Communication Foundation:元Indigo:Web用)とWF(Windows Workflow Foundation:以前はWWFだったけど今はWFと略記)なんかもあったり。
WCFについてはこのへん(うーん、あまりサマリとしてはいい資料ではないかも)、WFについてはこのへんをご参照ください。
現時点での私はあまりWeb系に興味がないので、WCFについてはツッコみません。また、WFについては情報が少なすぎてよくイメージが結べないので、もう少しいろいろ出てきたところで評価してみたいと思っています。

で、WPF。

EIDについては、WinFXの描画機能をプレゼンテーション機能として実装したらこうなっちゃった、みたいな雰囲気で今のところ捉えています。根底の技術が違うので、Flashキラーというイメージではあんまりないんですけど。うーん、対象となる技術者(デザイナー寄り)やソリューションという意味では同じパイになってしまうかもしれませんね。

最初に見せてもらった時にはVisualStudioとの連携という形だったので、私、次世代のWindowsFormデザイナのようなイメージで捉えていて。いぇ確かにXAML経由で流用はできそうな感じなのであながち間違いではないのかもしれませんが。

VisualStudio側には"Orcas"(現行の2005の次のVisualStudio)でWPFに即したXAMLを書ける"Cider"って機能が搭載予定で、単に次世代WindowsFormの生成なのであればこれだけでよさそうな。
EIDはもぅ少しデザイナーの考え方に即したツールで、基本的にはVisualStudioとは違うシーンでの使い方になりそうな気がします。もちろん連携は可能ですので分散開発という用途にも使われていくでしょうが、基本的にはEIDでクローズできる開発/デザインプロセスのイメージで捉えておいた方がいいみたい。

まぁこの棲み分けは私の現時点までの情報での推測ですので、今後提供されていく情報や実際に提供されてからのユースケースなどによってどんな流れになっていくのかを少し注意してみていこうと思います。

XAMLは、XMLベース・WPFやWCF(もかな?)の実装ソースを書けるマークアップ言語ということらしいんですが。実際にはイメージバイナリやタイムチャートなども含むので、テキストエディタなどで見るとエラいことになる、とても手記述なんか無理でしょーレベルの言語と言えば言語だけどさぁみたいな代物になってます。

私のイメージではVBのFormファイルをテキストエディタで見た時のような感触ですね。ちょっとした修正くらいならテキストエディタでも何とかなりそうですが、1から起こすなら専用のエディタなりビルダなりのお世話にならなければやってらんねぇぜレベルの。

Expressionシリーズと次期VisualStudioで相互に融通できる共通フォーマットのような感じで捉えています。
将来的に例えばPowerPointでも取り扱える状態になるかもとかFlashもXAMLへのエクスポート/インポート機能を持つようになるとそれぞれがシェアできる範囲が広がっておもしろいぞ、とかも夢想しますが、既にそんな動きがあって私が知らないだけなのかもしれませんし、逆に各々のコンセプトなり仕様上なりからありえない話なのかもしれません。
このへんもちょっと「予測」レベルまで話を固めるには情報が少なすぎますね。

WinFXそのものはWinXP上での動作も考えられているみたいですし、CiderもOrcasを待たず現行のVS2005上で動作するβがすでに提供されているようです(かな?^^;)。
なかなかキモチイイ動作をしますので、今から追いかけてみるのも楽しいかもしれません。

Introducing "Longhorn" for Developers
MS、Vista対応ビジュアルデザインツール「Cider」のプレビュー版を初公開
Windows Vista デベロッパー センター > ベータ版ダウンロード
デザイナーと開発者の円滑な共同作業が事業機会を拡大する--Microsoft Expression
エバンジェリストグループ Blog:WinFX SDK が新しくなって
エバンジェリストグループ Blog:WinFX January CTP 開発環境を整える



Office2007について。

いつの間にか(つかけっこう前から)サーバ系もOfficeに分類されるものが多くなってきてまして、そこらへんがこれからの目玉になっていくような雰囲気もあったんですが。
フロントエンドマシン、もっと言えばインターネットやネットワーク抜きの1台のマシンで何ができるか、に興味の焦点がある私としては、あまり積極的に追っかけていきたいとは思っていません。

ので、あくまでもスタンドアロンで使うOfficeとしての使い勝手を中心に話を聞いてみました。といっても、特にNDA(内緒にしとく話)を聞いたわけではなく、Webの情報で知ってはいたものの実際に見せていただいて

おぉ、ほんとにキモチイイぞこれ
と実感してきました、ってところです。

このキモチヨサについては細かい点を四の五の言ってもよく伝わらないような気がしますので、興味のある方はもうすぐ開始されるβ2テストプログラムに参加しておいた方がいいですよ。
ホントはWinVistaとの組み合わせで評価した方がいろいろおもしろそうなんですが、Vistaのパブリックβって提供予定ありましたっけ?msdn契約をされている方にはFebCTPまでは提供されていると思いますが。

Microsoft Office の新しいユーザー インターフェイスについてよく寄せられる質問
A discussion of what's new in Access 12
Microsoft Excel 2007 (nee Excel 12)
Microsoft Office の未来 : 次期リリースに関するお知らせ



ちょっと不安なのは、WinFXにしてもOffice2007にしてもそうとう重そうだぞってところです。

CPUもさることながら、今回のスペックのキモはグラフィックカード(次点でメモリ量とHDDのI/O速度)になりそうですね。
なんぼ高スペックのグラフィックカードに差替えても、マザーボードとのI/Fがボトルネックになる可能性があり。そこらへんをなんとかしようとするとメモリやCPUまで込みでマザーボードの交換を視野に入れる必要があり。

お手持ちのマシンによっては全とっかえになってしまうかもしれません。私のマシンはなんかそんな感じになりそうで今からびくびくしていたりします。

じゃ今のうちに"Vista Ready"なマシンに取り替えとけばいいかというと、断言はできません。今流通している現物が全部βなので。

プログラム作ってるとよくあるんですが、主要機能の8~9割できあがって「よぅしいい感じだ」ってんで残りの1割とか主要じゃない何がしかを追加して製品として整えたとたんにパフォーマンスが激悪になったりするんです。
今回の一連も、製品版になるまでの過程のどこでいきなりどしっと重くなるか予断を許さないように思います。

まぁあせる必要もないので、VistaやOffice2007が正式にリリース