2007/01/26

S2Unit.NET

S2Unit.NET。概要を読んだけどとても好印象。
何よりテストデータをExcelで扱える所がよい。

dbUnit(for Java)はExcelに定義したテストデータをDBに登録したり出力したりが可能らしく、N*ツールにもそういったものがないかなと探していた所。実際、NUnitとNDbUnitでユニットテストを実装したがテストデータの扱いが面倒だなと感じていた。

体験してみる必要ありだぁ。

Seasar2.NETにおけるDIの方法

やっと理解できたのでメモ。
DIコンテナに登録されているオブジェクトの初期化を
どこで行うかというお話だった。

■コンストラクタインジェクション
 →コンストラクタにて初期化を行う
■プロパティインジェクション
 →DIコンテナにてインスタンスが作成された後、プロパティにて初期化を行う。
■メソッドインジェクション
 →DIコンテナにてインスタンスが作成された後、メソッドにて初期化を行う

ちなみにdiconファイルの命名はDIContainerの略称らしい。

ASP.NET AJAX 1.0

「ASP.NET AJAX 1.0 正式版」がリリースされたそうな。
MicrosoftのWebサイトから無償でダウンロードできる。

「ASP.NET AJAX 1.0」はASP.NET 2.0上で動作するAjaxフレームワークで、Visual Studio 2005などに組み込んで使用するらしい。

これだけ騒がれているAjaxだけど未だ実用しているプロジェクトをみた事ないな。
地方にはまだなのか。それともニーズがないのか。そのうちくるかな。
数年前に軽く触った程度でその後の進化を全然知らない。情報をObserveするか。

2007/01/22

TracWikiでリビジョンDIFFにリンク

どうやらTracのver0.10以降らしい。
All-In-One-Tracは0.9.5なので残念。

チケットにリビジョンのDIFFがリンク貼れると超いい感じなんだけど。

バージョンアップに期待するか。

TracでインストールされたSubversionリポジトリへのアクセス

All-In-One-TracでインストールされたSubversionのリポジトリにアクセスする場合、
以下のURLでリポジトリブラウザからアクセス。
http://localhost:8000/svn/<プロジェクトID>

ついついTracのリポジトリブラウザのURLへアクセスしてしまうが違う。
Apacheのhttpd.confを見ると「svn_repo/projects」フォルダに
「/svn」というエイリアスが設定してある。

よりによって2回も同じ事でつまづいた・・・。

ちなみに。
SvnのExportってリビジョンを取得するだけなのかな。
Checkoutはワーキングコピーを作成してくれる。

Seasar2.NET

DIとAOPにほんと軽く触れてみた。DIよりもAOPに感動。いいですね。
次はMockを使ってみよう。Mockを使うとDIに感動するかな。

Log4netも使って見ねば。
あとS2ADO.NETも。

うーむ。やる事盛りだくさん。

2007/01/19

パフォーマンス

Windowsのコンパネにあるパフォーマンス。
2ヶ月ぐらい前に使ったのに使い方忘れてた・・・。

ログの採取は『パフォーマンス ログと警告』の『カウンタ ログ』で採取。
活動状況の表示は『システムモニタ』で行う。

2007/01/18

遅延バインディング

型指定しないキャストの事を指すのかな。

2007/01/17

ペルソナ法

ペルソナ法とは、実際の利用者の生活パターンや要望・要求を反映した仮想のユーザー(ペルソナ)を設定し、製品の開発に活かすというもの。

ネットで見つけたのでメモメモ。

ユーザーの立場になってシステムを開発する事が簡単そうで難しい。
どういうケースでこのような感じになるのかちょっと考えてみた。
1.コスト的にユーザー要求を満たせない(実装する事で精一杯)
2.技術者とか開発者という資質がテクノロジーを先行さてしまう
3.開発者が若年層

どうすればよいか。
要求定義・設計段階からペルソナ法を適用した時に効果がでるかもしれない。

設計段階ではユーザー(人)というよりもそのロールに対して設計を行く、ユーザーの生活パターン等を考慮する事はなかなかしない。しかしソフトウェアはユーザーの生活パターンの一部に存在する訳で、そうするとそこに適したソフトウェアの形が見えてくるかもしれない。

また、若年層の開発者はエンドユーザーの存在をもしならないまま開発しているケースが多く、自分達が実装したソフトウェアをどういった人が使用して、どれぐらいの対価を支払ってくれるのかを知らない。結果、品質の低下等を招いてしまう可能性があり、そこにはペルソナ法適用の価値があるのではないかと思う。

2007/01/16

TODO

仕事がそこそこ忙しくて勉強がおろそかになってる。3流は勉強しなければいけない事が山積みだ。昔、代々木ゼミに行ってた時に見かけた『日々是勉強』という文字が頭をよぎる。しかも勉強すべき事が頭の中で整理つかなくなってきたという最悪の事態。GTDツールを導入するか・・・。
という事でBlogにて整理。こうやって整理すると勉強足りないなぁ~と実感すると共に、自分が欲張りしすぎてる事に気づく。きっと自分の方向性が見えてないという事なのだろう。

■全般
・ソフトウェア構成管理のキホンを抑える
 →「パターンによるソフトウェア構成管理」を一読する
・開発プロセス標準化
■Agile
・Agile開発のキホンを抑える
・ツールのキホンを抑える
 →ツール単体評価(NAnt、Nunit、Ncover、Ndoc)
 →CruiseControl.NETとのツール連携
・XPの適用
 →2つのプラクティス(テスト、継続的インテグレーション)をプロジェクトに適用
■.NET
・DIコンテナのキホンを抑える
・.NETFramework2.0のキホンを抑える
 →.NETFramework2.0に触れる
 →VisualStudio2005に触れる
 →TeamFoundationServerに触れる
■XML
・XMLのキホンを抑える
■UML
・UMTP-L2合格以来、サボっているので再勉強

2007/01/13

OpenSourceWebTemplate

WebデザインをGPL等ライセンスで配布しているサイト。
OpenSourceWebTemplate

SEという職業柄どうしても実装するシステムの中身に目がいってしまうのだが、どんなに素晴らしいプログラミングされているシステムでも、ビジュアル性にかけてしまってはエンドユーザーから見たらイマイチ感が否めない。ビジュアルクォリティーはとても重要なのだ。(再認識)

かといってWebデザイナーの領域まで勉強するのはちょっと辛い。なので、このサイトのように優れたデザインをテンプレート化しておく事により再利用化をしていけば一定のクオリティーを提供できるのではないかと思う。プロジェクトではテンプレートに少し修正を加えて適用すればよい。

Webデザインフレームワーク。
うちのようなシステム会社には必要なのかもしれない。

2007/01/11

ODP.NETでのSQLバインドで発見したTips

問題が解決したのでメモメモ。
ODP.NETのバインド方法について。

OracleCommandにBindByNameというプロパティがある。
FalseはOracleParameterCollectionにAddされた順番でのバインドをサポート。
Trueはバインド変数名でのバインドをサポート。
デフォルトはFalse。

BindByNameがFalseの場合、バインド変数名を使用してもあくまでOracleParameterCollectionにAddされた順番でしかバインドしてくれない。しかもこれがエラーにならないから困り者。。。

今のソースはバインド変数を使ってるけど、SQLのバインド変数の出現順がParameter#Addの順序と一致していた為、奇跡的に動いているみたい。条件によりパラメータが1つ増える処理を流した時に結果が意図したものにならないからおかしいなと思ったけど。トラックしてて、はまった・・・。

教訓。
バインド変数を使用してSQLバインドする場合、OracleCommand#BindByNameは必ずTrueを指定するようにする。

リッチクライアントのデプロイメント

スマートクライアントに引き続き整理。今まで.NETではASP.NETしかやってないので、この辺の内容をしっかり体系化しとく必要があるなぁ。(書いたはいいが使った事ないのでイマイチ理解が完璧でない・・・)

■ノータッチデプロイメント
 概要:.NETFrameworkが持つWebからダウンロードしたアセンブリを直接実行可能な機能。
     Webサーバーに配置されたアプリケーション(exe)を、ブラウザよりそのリンクを
     クリックする事により Windows上のWebキャッシュ領域で実行される方式。
     (他のexeファイル等をブラウザからダウンロードして使用するのと同じ事だが、
      アプリがCLR上で動作するのが違い?)
     アプリケーションの実行時、実行ファイル以外にDLLファイルが必要な場合、
     それらも自動的にダウンロードしてくれる。
     .NETFramework1.1より「コードアクセスセキュリティ」という仕組みが存在し、
     2つの実行モード(部分信頼モード、完全信頼モード)が存在する。
     ノータッチデプロイメントで配布されるアプリケーションは「部分信頼モード」で実行される為、
     ローカルリソースアクセス等のセキュリティ制約がかかる。
     (アプリケーションも部分信頼モードを許可するコードを書く必要あり)
 欠点:.NETFrameworkの事前インストールが必須である事。
     InternetExplorerを必要とする事。
     セキュリティ制限がかかる事。
     ローカルインストールされないので、スタートメニューへのショートカット作成が不可。

■UAB(Updater Application Block)
 概要:配布するアプリケーションにライブラリを追加し、そのライブラリを利用して
     アプリケーション自身が構成ファイルの更新管理(ダウンロード管理)を行う。
     UABはローカルアプリケーションとして実行可能な為
     (ローカルインストールされる)、面倒なセキュリティ設定は不要であり、
     通常のWindowsアプリケーション同様「スタート」→「メニュー」にプログラムを
     追加する事も可能。またオフラインでの実行も可能。
 欠点:UABの運用・設定に関する高い知識ハードルが必要。
     セキュリティ制限かかからない分、逆にセキュリティ設定が弱点となる。

■ClickOnce
 概要:UAB同様ローカルインストールされるが(ノータッチデプロイメントの配置オプションも可能)、
     UAB最大の欠点だったセキュリティ問題を解決。
     オンライン/オフラインの状態を自動認識して、オンライン時のみにアプリケーションの
     更新を行う。UABではアプリケーションコードの変更が必要だったが、
     ノータッチデプロイメント同様、アプリケーションコードの変更は必要ない。
     ClickOnceでは.NETFramework2.0が必要になるが、ClickOnceアプリケーションの
     実行時に、.NETFramework2.0の有無を検査し、インストールされてなければ
     .NETFrameworkランタイムのサーバーからダウンロードとインストールを
     実行するよう設定する事も可能。
     ClickOnceの実装は、VisualStudio2005に統合されている。

■参考
特集:第1回 スタートアップ.NET――基礎から始める.NET (6/8)http://www.itmedia.co.jp/enterprise/articles/0406/30/news038_6.html

第3回 アプリケーション配布問題を解決する最新テクノロジClickOnce
http://www.atmarkit.co.jp/fwin2k/dnitpro/whatisdt03/whatisdt03_01.html

第1回 ClickOnceの基本動作を見てみようhttp://www.atmarkit.co.jp/fdotnet/clickonce/clickonce01/clickonce01_01.html

スマートクライアント

スマートクライアントについては、今までぼんやりとしたイメージしかなかったので、ここで一旦なんぞやを整理。

■スマートクライアント
 概要:シンクライアントでは実現不可なリッチなユーザーインターフェースを実現可能。
     ファットクライアントとの違いはそのサポート範囲で、スマートクライアントのサポート範囲は
     「UI」と「UIプロセス」となり、ビジネスロジック以降は通常「Webサービス」にて実現される。
     オフラインで利用される事も考慮した実装が必要。(クライアント側にデータ保持)
     サポート範囲が狭い為軽量である上、Webアプリと違いオフラインでも利用可能。
     ゆえに「スマート(利口な、賢い)」なクライアント。
 特徴:リッチインターフェースである事。軽量である事。オフラインでも利用可能である事。
 備考:ファットクライアント・・・ファット(=fat:太った)。C/Sアプリケーション。
     シンクライアント・・・シン(=Thin:薄い、軽量な)。Webアプリケーション。

■参考URL
スマートなクライアント
http://www.plaza.netchef.or.jp/netarc/netarc003.html

スマートクライアント
http://japan.internet.com/public/technology/20041006/4.html

2007/01/09

NCoverでTestFixture単位のカバレッジ計測

NCover-consoleではTextFixtureを指定したカバレッジ計測ができないみたい。
以下のように指定してみたが、"Unrecognized command line option"となった。

"C:\Program Files\NCover\NCover.Console.exe" /w "ワーキングDir" /c "C:\Program Files\NUnit 2.2\bin\nunit-console.exe" "/fixture:テストフィクサー テストアセンブリ"

いろいろ調べてるとNCoverExplorerなるものを発見。
・NCoverの分析結果をわかりやすく表示
・NCoverの実行設定を簡素化(NCover Runner)
をしてくれるアドインツールらしい。NCoverRunnerに至っては、実行設定をMsBuild,NAnt,Command-Lineのパターンで出力してくれるという便利者。

早速使ってみた。結論、TextFixture単位でカバレッジ可能。
「path to application to profile」にNUnit-console.exeを指定して、「Application arguments」に「/fixture:テストフィクサー テストアセンブリ」を指定。

やってる事はNCover-consoleでやった事と同じなんだけど・・・。
NCoverRunnerで実行設定をCommand-Lineパターンで出力すると、上でNCover-Consoleに渡してたパラメータと同一。
ならばと思いCommandLineパターンの出力結果をDos-プロンプトから実行したけどダメ。なんなんだ・・・。

なんとなく結論でたので、もっかい目的と情報を整理せねば。3流SEは日々勉強なり。

2007年スタート

2007年が明けてしまった。今年もいろいろあるけど頑張っていこう。
その一環としてBLOGを再開。複数のPortalSiteやSNSのBLOGを書いてきたけど、全て途中で断念。
なんでだろうと自己分析してみた所。
・知人に見られてる(本音が書けない)
・記事の投稿が面倒

しかし今回は目的があるので頑張って続けてみようと思う。
・文章能力の向上!
・自分のアイデアや発想のメモ
・普通に勉強した事のメモ

頑張ってみよう。

ちなみに今年の目標を考えてみた。
・.NET関連のプロダクツについての知識体系化
・開発プロセス標準化策定
・経営学について触れてみる
・50~60人月ぐらいの仕事をまわす
・国外旅行(to Hawai)

仕事の目標ばっかりだけど、何故か今仕事がおもしろい。昔以上におもしくなっている。