VB.NETの研修が終了

2007/03/16 (金)  カテゴリー/VB.NET

 ふー、本日5日間の研修が終了いたしました。ここ2ヶ月程開発していた業務も一通り落ち着いたので今日で一段落といったところでしょうかね。
 ここ2ヶ月程残業続きで身重な奥さんにかなりの負担を強いていましたので今週末からは罪滅ぼしができそうです。出産の準備もいろいろせねばなりませんしね。ベビーカーとかまた準備しなきゃ。
 さて今週一杯がんばっていた研修ですがなかなかためになりました。いままでVB.NETはオンラインヘルプとネット上のTipsサイトを見ながらなんとなーく使っていたのですがやはり研修等で体系的に勉強すると自分の中での理解度がグンと増します。お高い研修でしたが会社から費用が出ているのでその点はありがたい限りです。これでまた一段と洗練されたアプリケーションが作れることでしょう(たぶん)。
 私が勉強していたのはGlobalKnowledge(http://www.globalknowledge.co.jp/)というところです。担当の講師のOさんもなかなかおもしろくて楽しかったのですが、おしむらくは私の業務が少々忙しくて講義後に即帰らねばならなかったことでしょうか。後は一緒に講義を受けている人とあんまり仲良くなれなかったのが残念でした(´・ω・`)ガッカリ・・・ 他の会社の方となんの脈絡もなく知り合いになれるなんて機会はあんまりないので名刺の交換ぐらいすればよかったかなあと思っております。
 今回の研修内容で会社の業務と全く関係のないASP.NETが密かな楽しみだったのですがいやー、すごいっすねえ。数年前では考えられません。ちまちまお手製XMLで遊んでいたのが夢のようです。そりゃーみんなIIS使いたがるよねえといった感じです。去年借りっぱなしでまったく活用していない.NET対応の無料レンタルサーバがあるのですが活用してみようかなあという気になってしまいました。あんな簡単にDB連携のWEBアプリが作れるなんて驚きです。是非とも個人的に遊べるWEBアプリを開発しようと思います(w
 今後は研修で知った知識を実践し身につけていかねばですね。そうやってつんだ経験でこのブログのVB.NETのTipsも充実していけたらと思います。

テーマ : プログラミング - ジャンル : コンピュータ

DLL内で呼び出し元実行ファイルがあるフォルダパスを取得

2006/09/11 (月)  カテゴリー/VB.NET

 VB.NETで実行ファイルがあるフォルダパスを取得するには「Application.StartupPath()」ってもんを使います。この中にはアプリケーションの実行ファイル名を含まないパスが入っています。

Dim MyPath As String
MyPath = Application.StartupPath()

 いたって簡単、ごく普通の使い方ですね。さてここで問題が発生。前回のエントリで紹介したDLLDLL内ではStartupPathが見れません。DLL内でDLLを利用している実行ファイルのパスが知りたい場合はどうすればいいのでしょうか? この場合にはDLL内のメソッドを呼び出したアプリケーションを知る方法が準備されていますのでそちらを利用します。

 アプリケーションを表すクラスは「Assembly」クラスです。メソッド内で呼び出しもとAssemblyを知るためにGetCallingAssemblyというメソッドが準備されています。VB.NETのマニュアルにも使用方法がありますが、私が利用した際に使ったコードは以下のとおり。

Dim PathText As String
PathText = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetCallingAssembly().Location)

 AssemblyクラスのLocationプロパティには対象Assemblyの実行ファイルパスが入っているのでGetDirectoryNameをつかってフォルダ名に変更します。これでDLLの呼び出し元実行ファイルが入っているフォルダパスが取得できます。

 もっと簡単な方法があると思われますが、まあこんなんでどうでしょうか?

ちなみにこちらのページも参考になりますよ
実行中のプログラムのパスを取得する

テーマ : プログラミング - ジャンル : コンピュータ

タグ : VB DLL

C言語の誘惑、と言いながらVBでビルドしたDLLの利用法

2006/08/22 (火)  カテゴリー/VB.NET

 職業なんちゃってプログラマーな私ですが実はいままでC言語なんてものを全然触ったことがありませんでした。学生時代にちょっとやっただけで完全に忘却のかなたへと飛び立っております。まあそういったわけで先日C言語をちょっと触ってみようと思い本を一冊読んだのですが、

「へぇー、こんな言語なんだ」

 と、改めて思った次第。それなりにプログラムというものの知識を積み重ねてきた甲斐があったのかなかったのか、自分なりになんとなくC言語の雰囲気は感じとれたかなあと思っております。なんといっても文字列が数字として扱われている点が興味深かったです。日本語の扱い方などはまだ読んだ本には掲載されていなかったのですが、こういった仕組みなのであれば、知り合いのC言語な人がアスキー文字列を全てバイナリーコードで打ち込んでいるのを見ても納得です。嫌でも頭に入っちゃうだろうなあと思われます。まあそもそも何故いまさらC言語の勉強をやったのかといえば、今度やることになった案件で、

「言語はなんでもいいよ(≧∇≦)b 」

 と言われたのがきっかけ。それならC++でも使ってみようかなあと思ったのですがC言語自体が記憶にありません。それなら簡単な本を一冊ということで読書するにいたった次第です。そこで出た率直な感想としては、

「あえて手間がかかることはやめよう」

 ということでした。まあ今回のお話はVBのインターフェイスにちょっと別な機能を加えて欲しいということだったのですが操作するデータの種類や、やり取りの方法や開発期間などを加味すると、

「やっぱり物には向き不向きがあって、簡単に実現できるならば簡単な方向へとシフトするべきだ」

 と思った次第です。まあでも全然触ったことのないC言語への憧れはやっぱりあるのでそのうち挑戦しようと思います。

 さて、さっそくVBのインターフェイスに機能を実装しました。当然ソースはVBです(・∀・)いぇーい。 しかしここで問題が発生。

VBのソースにモジュールとして追加するぶんにはいいんだけど、他の人が簡単に使えるようにDLLみたいにできないの?」

 ということ。どうやらVBのプロジェクトを作成する際に「コントロールライブラリ」ってのを選択してビルドするとDLLができるようなのですが、他のプログラムからの利用方法がいまいちわかりません。しょうがないのでためしにC++でDLLを作ってみたのですがそちらは資料も充実しておりバッチリ使えることが判明。しかーし、VBでビルドしたDLLを使う方法がいまいちわかりません。ソースがVBならあえてDLLにしなくてもいいじゃんという声が聞こえますがまあそこはそこ。すでに作ってしまったVBのソースがもったいないのでいまさらC++で作り直しなんて嫌なこったいです。速度も特に問題なさそうですしね。
 さっそくネットで情報を検索。ところが「インターフェイスがどうのこうの」「ファンクションのエクスポートがどうのこうの」というお話ししかでてきません。MSDNのページで「VB DLL」で検索してみてもなんだか古臭い資料しか出てこないじゃありませんか。そこでさらに頑張って調べた結果、

「プロジェクトの参照設定に入ってるクラスライブラリを使って.NETはいろいろやってるんだよん」

 という記述。なるほど。VBで作ったDLLもクラスライブラリなんだからプロジェクトの参照設定に入れちゃえばいいのかなあということで実践。

 DLLを使いたいプロジェクトの「参照設定」を右クリックして「参照の追加」を選択。表示されたダイアログの右上にある「参照(B)」をクリックしてVBでビルドしたDLLを直接指定します。うーん、見事に追加されました。
 参照設定を設定したらあとは簡単です。使いたいDLL内のクラスを使いたいソースファイルの「import」文に参照設定で指定したDLLの名前(名前空間)を入れます。名前がわからないときは参照設定の項目をダブルクリック。オブジェクトブラウザでオブジェクトの構成が見れるのでもうばっちりですね。あとはクラスオブジェクトをNewで作って使うだけです。

「おぉー、ばっちり使えるじゃん( ゜д゜)ビンゴー」

 参照の追加ダイアログを見るとわかるのですが参照設定に加えるのはDLLじゃなくてEXEでもいいので他のアプリケーションのクラスが使いたかったらEXEファイルを参照設定に加えれば出来ちゃうんだろうなあ。まだ未検証ですがたぶんそうだと思います。ちなみにこうやって参照設定に加えたDLLはプロジェクトをビルドするとそのプロジェクトのEXEファイルと同じ場所に書き出されます。DLLを呼び出すEXEファイルと同じ場所に置く(プライベートDLLという考え方らしい)のが基本らしいのでそうしたほうがいいでしょう。そうそう、DLLの内容を更新した場合は、参照設定を一度削除して再度設定しないとうまく認識してくれないっぽいです。まあオブジェクトブラウザなどIDE側で認識してないだけで実際は更新されているのかもしれませんが念の為DLLを更新したら参照設定を一度削除して再設定したほうが無難だと思います。

 以上、今回試した内容の備忘録でございました。なお、この方法を試して「間違ってるぞ!」「変になっちまったよ!」などの自体に陥ったとしても悪しからず。

テーマ : プログラミング - ジャンル : コンピュータ

タグ : VB DLL

あわせて読みたい