目次

よくわかんない動機

MSOL限定環境でSMTPも無いのにメールを送りたいためだけに、JavaパチもんのC#に手を出してみることにしてみました。いかすけないVisual Studio2005も各言語限定で無料版(Express)があるようなので、唯一許せたIDEのeclipseに比べてどのぐらい書く気がわくもんなのかを確認してみる意味で、書いてみる方向です。

私のように eclipseでjavaってた人がC#に手を出してみる際の足しになればってところです。

コメントのそこかしこが偏見に起因する否定的な感じを醸し出してると思いますが、理由はわかると思うwので、そこは許してください。 orz

xxxは何所?w

eclipseで使っていたもので、引き続き使いたいものを探してみた。

log4jは何所?w

JUnit以外に順当にlog4jもlog4netってことであった。rebuildにはNAntというこれまたAntを.NET向けにportしたものを使えばrebuildできるが、zipにdllは入っているので、これをそのまま使うと思いきや、NUnitを入れた際に.NET Frameworkにlog4netも爽やかに同梱されていた。

JUnitは何処?w

eclipseで書いていたので、テストするためのi/fにはJUnitが欲しいところです。それはIDEがVisual Studioに変わっても当然欲しいので、ぐーぐる君に聞いてみると、NUnitとやらがあるとのこと。順当?に.NET 2.0対応ということなので、recommendの2.4.6を突っ込んでみました。

msiで入れるとdesktopにiconができて、テストのためのGUIが表示されます。

4th steop(続きのためにw)

Java+eclipseな人向けの入門としてメモを残そうてことで、続きは普段 free softを拾って落としている時計の差し替え品を作ってみることにした。render絡みはまだ触りたくないので、ありがちな背景透過xclockが目的地。

C#って言うよりはVisual Studioの触り方になりそうなヤカン。xcodeって言うか interface builderのi/fにもMSお得意の技を適用して欲しいと思う今日この頃。

3rd step(なにつくったか)

ほしいものは予定通り24時間以内に作り終ったのだが、メモはメモでのこしておこぅ。

欲しかったのは1枚のHTMLに複数のTableがあって、それぞれ定期更新されるFIFOなtblになっているので これを1日1回ぐらい巡回して、差分があれば差分だけをmailで通知すると言うもの。 大人の事情でメール送信にはMAPI(と言うかMSOL2003限定)を使う必要があったので、 以下のような構成で作ってみた。 (制約さえなけれればJavaで終了してたんだがw)

  • C#
    • batファイル実行と結果のSTDOUTをparse、更新があればHTMLメール送信
  • Java
    • HTML取得、更新差分チェック、送信HTMLメールの本文とSubject作成

C#もJavaもbatで実行すると言う Windows門外漢wなので、ちまちまとWindows用applicationとして 作り替えて行く過程は別ページでそのうちw記載する予定。monitor対象を明らかにするのはびみょぃwので、 ここに記載するためのmonitor先を見つけたら、実装込みで記載予定です。(でき上がってるので書くのが・・・orz)

  • 実装済
  • 1st release(Console Application)
  • 2nd release(Form Application)
    • 実行時にconsole windowが出るのを消す(=task bar常駐型(window)applicationにする)
      • Form Appにして、Formをnewする前に必要な処理を終えて、System.Environment.Exit()にして終了した
      • Java起動箇所が System.Diagnostics.Processクラスを使った結果、Javaコマンド起動の際にcmd.exeの画面が出るのは不可避な模様
    • 設定保持(email recipientとかの設定)
      • Properties.Settings.Defaultで (exe名).configという名のXMLで保持することにした
  • 改修予定
    • log4net導入
    • NUnit導入
    • Javaな部分をC#化(=一晩見てみて諦めたMSHTML)

2nd step(ideの雰囲気)

とりあえず書いてみると、Ctrl+Spaceでコード補完しつつ、helpも小さく出る。eclipseとかXcodeっぽぃ雰囲気だが、比較的軽いのはいい感じ。なんかこれでいっかという気がしてきたが、 なんかeclipseで書いてるときの爽快感?みたいのがない。

なにが無いか考えてみたところ、エラーに対するQuick Fix機能が無いところだとわかった。 eclipseで書いてていい感じなのは、エラーに対するQuick Fixをやっていけば サクサク形が出来ていくとこにあると思っているのだが、そういえばXcodeでもこの機能が 無いのが不満だった気がする。ちょっと使う分ではそのような機能はVSには無いみたい。。。

Visual Studio 2005を使っていたのだが、2008/2005を改めて使いなおしたら爽やかに欲しかった補完機能が存在していた。ぱっと見てみるとこんな感じ。

  • 存在しないmethodのskeltonを作ってくれる
  • 存在しないclassに対して、classのskeltonはつくってくれない
  • 存在しないfieldは作ることが修正候補に載らない(そもそもただのエラーでしかない)
  • 存在しないusingを code assistで自動補完する

無いよりははるかにマシで、機能として存在することになれば、今後のenhancedで追加される可能性もあるって感じかな。

これに伴い、buildのタイミングと言うか、incrimental buildの動きが微妙に感じてきた。eclipseの場合はjavacのincrimental compile機能をそのまま使ってるんだろうが、MSのC# compilerもその辺を考慮して欲しい。

1st step (installと使い初め)

最初は当然開発環境が必要なので、MSからdownloadです。VB,VC#,VC++が無料提供されている(registもインストール後に登録して、登録キーをいれるだけ)ので、使ってみます。VC#単体+MDSN help、MS SQL等を入れるのに560MBぐらい(2008-03-12現在)ありました。

installして最初の罠wはツール->オプションでの設定が、window下部のすべての設定を表示checkboxをチェックしてないと出ないこと。ソースファイル表示の際に行番号が出てないと困るのですが、この設定すら先のcheckboxをチェックしてないと出てません。

さらにイカんのが、プロジェクトのデフォルト位置の設定が表示されていない。こっちはチェックしてないとメニューにすら載ってません。チェックするとプロジェクトおよびソリューション->全般で設定できます。ただで配っているIDEとは言え、こんなお節介な機能は無い方がいいと思います。更にどうかと思うのが、問うこともなく My Document配下にVisual Studio 2008フォルダを掘って、この下にprojectをしまうのがデフォルト設定にしてるところです。初回起動時にフォルダだけ作って、プロジェクト保存の際にデフォルト場所を出してくるので一応聞いてくるのですが、事後承諾にしないで、eclipseみたいに初回起動時に「project保存ディレクトリのベースディレクトリはxxxでいいかぃ?」って聞くのが筋かと思います。この辺は文化?なのでしょうか。


Last-modified: 2008-05-07 18:40:43