いきなり来ましたね。Ajax。ブレイクスルーになる予感がしますよね。MSDNのXmlHttpRequestやAppleのXmlHttpRequestはベーシックな情報があります。
私が一番最初にjavascript+XmlHttpRequestに遭遇したのはObjectGraph Dictionaryです。これを見たときの衝撃といったら、もうすごいものでした。ただただ感動。ページ移動なしにサーバを叩くなどという芸当は正に驚きでした。
そしてGoogle Maps。ついにここまで来ちゃったのね、って感じで、とりあえずGoogle Mapsはソースコードを覗き見させてもらおうと思ったら、通常の1ページのボリュームを考えたら、あまりの大きさにひっくり返りました。でも逆に言えば、たったあれだけでこんなにもインタラクティブなことが出来るのであれば、小さいのかもしれませんね。
そんなこんなでXmlHttpRequestで遊びましたけど、楽しい!何か色々出来そうな予感。myjavaserverにアカウントを取ってから、何も手を入れていないので、ぼちぼち入れていこうかしら。さしあたり、javascript+XmlHttpRequestで何かやりたいところですね。
日々刻々と変わる世界ですけど、確かに着実に前進していますね。この前進を理解することが可能なデベロッパでよかったなぁと思いました。何だかハッピーな気分だ。。。
February 2005アーカイブ
早速読ませていただきました。非常に参考になりました。DBMagazine向けということでDB色の濃い内容で読み応えアリでした。はてなの裏側というよりも、MySQLの利点・欠点がよく分かりました。これだけオープンに出来るはてなさんの自信を垣間見た瞬間でした。勢いのある企業は違うなぁ。ところでこの記事は、以前れいこんさんの日記で伊藤さんが雑誌への寄稿
と書かれていましたけど、この記事のことを指していたのでしょうかね。
DBMagazine 4月号にはてなのDB運用記事
それから、特集記事でXML DBに関しても掲載されていましたので、読みました。XML DBのメリットは何かが未だによく分かっていないのですが、この記事を読んでもXML DBのメリットは理解できませんでした。確かにXPathによるアクセスは魅力的ですけれども、・・・う~んどうなんでしょう。適用範囲がまだまだ見えてこないです。RDBだと2次元なので浅い階層構造は表現できるけれどもXMLほど深い階層は扱えない。そこで深い階層でXML形式のデータが保存できるようにXML DBを利用する。こういうことなのでしょうね。でも、OracleなどはRDBをwrapしたXML形式での出力ということもあるようなので、レスポンスなどが気がかりですね。いやはや、私はもう少し勉強が必要なようです。
では。
「成果主義の導入が競争力や業務効率などに役立っているか」という質問では(中略)特に技術者が成果主義に対して低い評価を下した。「どちらかといえば違う」「まったく違う」と回答した割合は(中略)技術者だけが40%程度と高い水準になった。
技術力を比較することはとても難しい。しかし、営業は受注件数で比較可能、企画は出願件数または実現件数、製造は製造台数など定量的な判断が出来るような気がする。しかしソフトウェア業界は実は定量化が難しい分野の一つだと思う。ソースコードを1万行書くことがすごいわけではない。最小限のソースコード、最大限の効率の良さを求められる。これらは個人の能力によって様々であり、一様になりえない。成果を何の尺度を用いて計測するか、という点においてソフトウェア業界はまだまだ模索している。その点からすればソフトウェア業界は未成熟の業界であり、そういうことだからこそ、ソフトウェア開発プロジェクトが予定通りに運営されないのだと思う。
track feedを設置してからしばらく経つが、私のように細々とサイトを開いている人間にとってアクセス解析はあまり意味がない。とは言いながらも、実は誰かからリンクしてもらいたい気持ちがあったりもする。そんな中で、お手軽にリンク情報を受け取ることが出来るのがtrack feedの良さだ。日常のようにRSSリーダを開くと、そこにリンクされたことが通知されている。(実際はRSSリーダが見に行っているのだが。) ちょっとした楽しみです。
今回はこんなリンクが。
BIGLOBEサーチ Attayo:“ダストブラザーズ”での検.. (http://cgi.search.biglobe.ne.jp/cgi-bin/search2-b)
えっ?!オレ、ダストブラザーズなんて書いたっけ?あぁそうだGarbageの4th Al.のエントリで書いたわ。検索エンジンは思いもよらないキーワードでリンクを張ってくるんですね。面白いなぁ。
このサイトで2度ほど紹介していましたけど、GarbageのBleed Like Meが4/13(UK)リリースとのこと。4/17がJapanかな。
@Tower.JPたぶん日本版
@Tower.JPたぶん輸入版
1/25の小生のエントリでGarbage本家のサイトから引用した曲名たちですが、どうなっているんでしょうね。楽しみになってきました。4月。もうすぐそこだ!
短期決戦型リーダーに必要なのは、研ぎ澄まされた「決断力」、タフな「交渉力」、グイグイ引っ張る「牽引力」、失敗してもすぐに回復する「復元力」という4大資質
同感。というか理解できるというか。
でも、最近は、短絡的なのか、二値で求めたがる人が増えていると感じる。「xxという問題を抱えているんです・・・」「それならこれしかありません!」と断言。こういう解決が世の中にあふれているような気がします。受ける側も答えを考えるのさえ面倒なのか、受け売りになりやすいですね。即断即決
は非常に重要なのですが、一つの答えだけを追うのではなく、可能な限りのあらゆる選択肢の中から、コレ!というものを選択するというようにしたいものです。そこで重要なことが、周囲とのネゴを取ることばかりに囚われずに、情報収集速度や情報選別能力の向上が必要条件で、さらにこれだ!と納得させるだけの説明力と包容力が必要なのではないでしょうか。決断は早いに越したことはありませんが、そのプロセスが重要です。
このブログにアクセスしてくる人の多くは、Google検索を経由して訪れてくる人だ。いらっしゃいませ!
検索キーワードで多いのは、log4netやtomcat5といったところ。今日もtrack feedのリンク情報はlog4netだった。.NETでのログ出力ライブラリが少ないから、私のように細々とブログを書いているところにもやってきてくれるのですね。ありがとうございます。
log4netに関しては、難しいことはありません。log4netはダウンロードして、付属のサンプルを参照してみてください。それでうまく出力されますよ。
そうだ、そういえば一個解決していない問題がありました。それを書いておきます。(失敗について書いておくことも重要ですからね)
Windows2000環境で、.NET Framework 1.1上で動作するアプリにlog4net_1_1_1を入れたところ、Windows XP Proでは動いたんだけど、Windows2000ではどうやってもログファイルが出力されませんでした。謎のまま、log4netの導入を諦めたという経験があります。
もしうまくいった方がいらっしゃいましたら、コメントでも頂けると幸いです。
ではこの辺で。
ライブドアとフジテレビの攻防に関して、どうも関係ない人の口出しが多すぎて、それらが的を射ていないような気がして、今朝もニュースでorzになってしまった。プロ野球のときもそうだったけど、どうしてオジサマ方はこうも保守的なのだろうか。。。
経済界の大御所たちは、
奥田氏は、(中略)「単なる金もうけなのか、フジサンケイグループをよくする狙いなのか、動機を説明すべきだ」と堀江氏にも注文をつけた(via ライブドア批判に苦言 奥田会長「時代の流れ、対策を」)といっている。しかし、
ニッポン放送はフジテレビジョン株式の約22.5%を保有しており、フジサンケイグループの中枢。グループ全体との事業シナジーを考えられる(via ITmediaニュース:堀江社長「ライブドア+ニッポン放送」でYahoo!追撃)とライブドアは方向性を述べている。オジサマ方はホリエモンの話を聞いているのだろうか。ライブドアは世界一の企業になりたいという目標があり、それに向けてメディア事業に手を出すことが手っ取り早いと考えていることが、事業シナジーという言葉で表現されている。どうもホリエモンということだけで、批判の対象となってしまうことが気の毒だ。確かに株式取得に関して正攻法ではなかったかもしれないけれども、それが許されることなのだとしたら、それは戦略の一つであり、責められることではないと思う。
ライブドアはコングロマリットなのだ。インターネット事業を柱として、あらゆる事業を飲み込んで巨大企業にしているのだ。そういうことを理解すれば、今ライブドアがやっていることはライブドアの企業方針に沿っているものであり、ギャーギャーいうことではないような気がする。米国ではずっと以前からコングロマリットは存在した。やっと日本がその時代を体現するときが来たということだけである。奥田会長が言うように
(買収は)時代の流れであり、マスメディアも例外ではない。対策を考えて実行していくのは経営者の責任です。ちゃんと分かっているのに、ねぇ。。。
確かに経験者・有識者が「今の若者は・・・」と意見したいのはよく分かります。でも論理的な意見、体系的な意見が欲しいなぁというのが私の思いです。「理屈じゃないんだ!いいからやれ!」というやり方で人の動かせるような時代ではないし、その一言で人を動かすには、それ相応のカリスマを持っていると思います。カリスマが感じられない以上は、論理的な意見をして納得感が得られるようにしてもらいたいです。もうあまり外野がギャーギャー言うのは止めようよ。
via Microsoft セキュリティ ガイダンス センターなんですけど、Microsoft製品に特化していなくても概念として十分に価値がありそうな記事を独断で選んでみた。その他のセキュリティ記事ももちろん充実している。読み応えがある。じっくりと腰を据えてセキュリティの理解をしたいと思う。
米Sun、Java画像処理ツールとAPIを開発者向けサイトで公開(via Nekkei ITPro)
既にJAIは、(米航空宇宙局の火星探査機) Mars Exploration Roverの(遠隔操作用Javaソフトウエア・システムである)Science Activity Plannerなどに実装されている。おおっ!以前、ITMediaなどのニュースでも取り上げられたあの探査機ですか!そこで使われたと言われると気になりますね。
JAIとJAI Image I/Oをjava.netで公開することで、両ツールの発展にJava開発者コミュニティの力を借りられる。とはいえ、まだまだ未完ということか・・・。
久しぶりにJavaWorldのサイトへ行ってみたら、あらびっくり。JavaWorld Onlineとして生まれ変わっているではありませんか。O'ReillyのONJava.comのように記事がどんどん充実していくと良いですね。ちょっと前では@ITの一人勝ちかなぁと思っていましたけど、最近では軒並み参考になるサイトが増えましたね。雑誌としては抜きん出ていたJavaWorldですが、ウェブ上でも同様に濃い内容を期待しています。
あ、サイト全体を見て気がついたのですが、IDG社の雑誌が皆jpドメインとなったんですね。なるほどぉ。雑誌だけでなく、出版業界はこれからますますウェブコンテンツとの戦いが激化しそうな予感ですね。私はTips系はウェブから吸収して、概念的なものは書籍から吸収します。雑誌は付録CDと記事の充実度で購入を検討します。(ISDN回線なので何がしかのAPIライブラリがあるととても助かる)
技術系雑誌に求められるのはネタがタイムリであること、雑誌を保存する価値があることだと思います。(JavaWorld2003年12月号は今でもときどき読み返します。)
マンスリー記事などはときに薄くなってしまうので、そういう場合はまとめて書籍で出版された方が読み手が増えるのではないかとも思ってしまいます。ともあれ、JavaWorld Onlineでは、過去に掲載されたコンテンツだけではなく、JavaWorld並のウェブのみの記事が出てくると良いですね。期待しています。
余談ですけど、LinuxMagazineが2005年3月号で休刊になるそうです。
Linuxが「当たり前」になった今、語られるべきはオープンソースで構築されるシステム全体であり、あるいはソリューション総体であり、OS単独にフォーカスした弊誌は、すでにその役割を果たし終えたと言うべきかもしれませんだそうです。納得。でも、最近、これからのテクノロジを開拓するにあたり、とても重要だと感じることはアルファギークの存在でしょう。Linuxはその結晶ではないでしょうか。昨今ブログ界も賑わいを見せ、SixApartが日立製作所と協力して企業内ブログ(イントラブログ)をやるとか、Ask Jeevesが日本に来たり、何ともIT=ブログなんじゃないか?ってくらいな展開ですよね。それもまた(アルファギークという言葉をも生み出した)ブログを作ったアルファギークの存在があったからでしょう。Linuxではもうアルファとは言えないのかもしれませんが、これから、いやもしかしたら既に芽が出ているかもしれない、スッゲー楽しそうな何かにフォーカスした雑誌をASCIIさんに期待します。
何か、惰性で色々書いてしまった。
ここまで読んでくれてありがとう。
My DocumentsやTempフォルダなど特殊なフォルダへのアクセスには、System.Environment.SpecialFolder列挙体を使用する。
Windowsのシステム・フォルダのパスを取得するには?がよく書かれています。(余談:この記事の例を見ると、foreachのすばらしさが実感できますね)
チェック項目9:3ページ目に上記の記載がありました。時間制限を設けることって考えたことがなかったです。確かに夜中は作業をしないと思われますので、誰もログインできないようにすることは必要なことかもしれませんね。不審者は誰もいない頃合いを見計らって侵入してくるわけですから。アプリケーションのセキュリティと考えたときに、パスワードの漏洩やデータの改ざんやセキュリティホールといったところばかりに目がいってしまいますが、現実のセキュリティと照合しながら、可能な限り”守る”ということが必要なのでしょうね。
データベースにログインできる時間帯を制限しているか
可能な限りというのは、資産には重要度・優先度があるわけで、コストバランスなどを見ながら、検討すべきということです。時間制限の実装のために高いコストがかかるとした場合に、その他のセキュリティ事項を満たすことによって資産が求めるセキュアな状態を確保できるのであれば、あえて時間制限の実装をする必要はないということになります。(Oracleはログオントリガーがあるようですので、さほど手間ではなさそうですが。)
エンジニアは服には金をかけない
見出しが笑えた。でも、笑えないというか、共感している部分があって、私も数年前の写真を見ているときに、正に今着ている洋服が一緒だったりすることが、よくあります。新しい服は妻に買ってもらったものばかり。orz。
「1回の飲み会で使う金額」は5500円いやいや、どん兵衛で1000円くらいを置いていく程度です。w
(終電が気になって長居できず)
どうもプログラマ指向なのか、ページ仕様(拡張子page)をあまり活用せずに、HTMLテンプレート(拡張子html)にjwcのformalまたはinformalなパラメータをタグの属性に書いてしまいます。こんな感じで。
<form jwcid="@Form" listener="ognl:listeners.formSubmit">
</form>
でも、このようにはせずに、ページ仕様の中で、
<component id="form" type="Form">
<binding name="listener" expression="listeners.formSubmit"/>
</component>
と書くべきですね。
先ほどのHTMLテンプレートに関しては
<form jwcid="Form">
</form>
となりますので、よりビジネスロジックとデザインの分離が高まるわけです。確かにHTMLテンプレートにjwcのパラメータを記述する方が楽なのですが、コンポーネントが持つformalまたはinformalのパラメータをプレゼンテーション側で保有することになるため、あまり分離する意味がぼやけますね。とにかくモックとなるHTMLテンプレートが出来上がったら、jwcid属性だけを付加するように心がけて、jwcのパラメータはページ仕様に記述すべきですね。
とは言いながら、AタグによるリンクはHTMLテンプレートでも十分に動きを見れますが、inputタグのSubmitボタンなどは動きが表現しにくいです。
その場合、私は次のようにしてページ移動などをしています。TapestryのFormコンポーネントがaction属性を上書きしてくれますから、表に出ないコードになります。
<form jwcid="form" action="javascript:location.href='Next.html'">
</form>
Tapestryの力がだんだん見えてきました。静的なサイト(モック/HTMLテンプレート)を先に作成して、ある程度フローの動きが見えたところで、動的なデータに関してはjwcid属性を割り当てていく。非常に楽になりそうな予感。
記念の100エントリ目。
JDKにあるsrc.zipをjavadocで一括出力しようとしたらjava.lang.OutOfMemoryError:メモリを増やしてください。
。つまりスペックが足りないのね。orz。やっぱりAPIdocもダウンロードしなきゃダメかねぇ。。。テキストエディタぢゃなくてEclipse使えって?ごもっともです、はい・・・。
コマンドラインから。
javadoc -d doc -subpackages *
antで。
<?xml version="1.0"?>
<project default="doc">
<target name="doc">
<javadoc sourcepath="src" destdir="doc" packagenames="*" />
</target>
</project>
TechNet スクリプトセンター
Microsoftってこういうこともしているんだ!スクリプトの需要は特にSIerに多く見受けられると思うんだけど、例を多く掲載してくれているので、困ったときや何かを構築したいときに役に立ちそうですね。「アレを自動化できないものかなぁ・・・」とか「こういうツールを作ると工数がかかりそうだし、我慢するか」なんていう悩みを解決してくれるかもしれませんね。
Microsoft、グッジョブ!
最新 データベース選びのポイント
SQL Serverを用いた構築事例が掲載されています。第1回はDBアプリの構築方法。開発手順書もついているので、ちょっとした参考書を買うくらいなら、こちらを一読してから参考書の購入を検討した方がよいでしょう。第2回は簡単なクラスタリングの説明とSQL Serverでのクラスタリング構築例。いずれも参考書の一章分に値するレベルのものが無料でダウンロードできます。
January 27, 2005のエントリでリッチ UI 開発の早道 ~ Visual Studio ~を紹介したわけですけど、Microsoftも結構良い資料を提供してくれています。導入を検討しているデベロッパにとっては非常にありがたいのではないでしょうか。MSDNを色々と探してみると良いドキュメントに出会えるかもしれませんね。
私が尊敬する先輩トッティ氏(仮)は素晴らしいエンジニアだ。あるユーザのプログラム開発において、GUIのフレームワークを構築されたので、「トッティさんすごいですね。この技術は特許ものですよ!」と言ったら「ソフトウェアにおいて特許を取ろうと思わない。会社で特許が取れそうな技術を挙げるように言われているけど、断っている。それはソフトウェアは誰かが作ったものの上にあるものであり、自分がすごいわけではないので。」と。あぁ、またしても感動・尊敬・リスペクトなわけです。そんな話は5~6年前の話でして、それが今、このように浮上してきたことはちょっと驚きでした。
そんな訴訟の翌日、朝日新聞には松下が特許侵害でジャストシステムを訴えた記事の横にはIBMやSunが特許公開へ踏み切るなんていう記事が掲載されていました。何とも対照的な印象でした。
私もソフトウェアに関して特許を申請する気持ちはありません。ソフトウェアはゼロから構築されたわけではなく、過去の資産を積み上げた成果だと思っています。私が作るプログラムは過去の偉人の成果の上に成り立っており、また将来は私の上に誰かが乗っかってくることでしょう。
音楽も同じような流れにあると思います。バッハにリスペクトしたビートルズがあり、ビートルズの上にレディオヘッドがあり、なんていう図式は目に浮かびます。それを端的に表現したのが、サンプリングによる楽曲だと思います。サンプリングしたフレーズに対する知的財産権の訴訟問題もありますけど、それは引用が過ぎた結果であって、やはり何かに影響された、その上に成り立っているのだと思います。それはそれでよいのではないでしょうかね。
特許性のあるソフトウェアはある固有のアルゴリズムだけだと私は考えます。GUI操作などユーザにとってプラスになることは、むしろ公開して推奨してユーザへの還元をしていきたいものですね。PCが当たり前になってきた昨今ですけど、いつまでもユーザの教育に時間を費やすことになります。誰もが理解できるインターフェースはユニバーサルデザインとして生かしていく、啓蒙していく方向が社会貢献のような気がします。
Standing on the shoulder of giants
誰もがそうだと思います。
なんかすっきりした記事。(CNETばかりですいません)
くだらないエントリですけど、ゲーム伝説を買った。ディグダグだった。懐かしいです。パネルの色が変えられるとか、画面を最大化表示できるとか、多少のUIへの配慮が垣間見えます。とはいえ、アナログ感がよく出ている印象です。PSとかでも再生できれば面白いですね。
Tapestryについて構造の理解が出来たような気がするのでエントリしてみる。
Tapestryは1サーブレットとして存在する形となる。(シーケンス図)つまりTomcatなどのサーブレットコンテナさえあれば動作可能というわけである。Tapestryを使うことは、web.xmlに記述することになる。
<servlet>
<servlet-name>workbench</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>workbench</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
これはTapestryに付属しているサンプルアプリケーション
workbenchの例であるが、普通のサーブレットベースのアプリケーションと同じだと思う。
以降はTapestry独自の形式になる。Tapestryにページを登録することになる。これはsample.applicationという拡張子
applicationのファイルにページやサービスを記述していく。この辺りはAppendix C. Tapestry Specification DTDsを参照すると良い。
各ページは、ページ仕様(拡張子:page)、HTMLテンプレート(拡張子:html)、アプリケーションクラス(拡張子:class)となる。アプリケーションクラスはjavaで記述されるビジネスロジックと考えてよい。HTMLテンプレートは、ビジネスロジックが埋め込まれる雛型になるHTMLファイルである。タグの属性にjwcid(Java Web Component IDの略)を付加することで、動的な処理の埋め込みが可能となる。そしてそのjwcidの振る舞いを記述するのがページ仕様となる。ページはそれぞれ最大で3つのファイルから成立することになるが、その関係は以下の図の通りである。

Strutsがスタンダードになりつつあり、Tapestryは影になっているような気がするが、Tapestryの利点として、HTMLで雛形を作成しておくと、ページフローが非常に分かりやすい。デザイナとデベロッパの分離が明確になるし、イメージも伝わりやすい。jspでも同様のことは可能であるが、Tapestryでは拡張子もhtmlだし、直感性に優れていると思う。まだまだどの辺りがオーバヘッドになるかなど分析できていないが、この構造さえ理解できてしまえば、結構Tapestryを扱いやすくなるのではないかと思う。
では、本日はこのくらいで。またTapestryについて、アップしますね。
今、Tapestryを使っています。まだ使い始めて2~3日目。よく分からない状態が続いています。Tapestryに関してはいずれまとめたいと思うのですが、それはそうとページテンプレート(e.g. Home.html)をちょっと修正しただけでも、Tomcatを再起動しなければならないのはいかがなものかと思っていました。
Tapestry/Tips キャッシュを無効にするやConfiguration Search Pathを見ても、
-Dorg.apache.tapestry.disable-caching=trueとするように、って書いてあるけれども、Windows版Tomcatで、JVMの引数をどこで設定するのか分からなかった。Tomcatのワーカの手引きとか見ちゃったりして、$TOMCAT_HOME/conf/worker.propertiesやworker2.propertiesに手を入れたりしてみたけど、うまくいかなくてなんだかなぁと思っていたら、tomcat5w.exeのjavaタブに
Java Options:っていうのがあるじゃない!ここに上記のJVMの引数をセットすれば良いんだね。あぁ、これで少し楽に開発できる。
ちなみにTapestryを使うならEclipseプラグインのspindleを使うのがベターなようですけど、私、テキストエディタを駆使して、手書きッス。だってマシンが遅いから・・・orz
track feed は、あなたのHPにリンクが貼られると、瞬時に RSS でリンクが張られたことをお知らせします。
やってみる。
しかし、RSSは最早、当初想定していた形にはなっていないのではないでしょうね。でもそれが良い方向で動いていると思います。SOAなどでXML Web サービスが話題になっていますが、こういうところから具現化したり、限界が見えたりするのでしょうね。SNS、草の根パワー恐るべし。
On December 23rd Spurl.net passed the 1 million spurl mark.1 million! 世界規模で、ということですけど、でもミリオンですからね。素晴らしい。この快挙のウラにはやはり単なるブックマークサイトだけではない魅力にあふれているからですよね~。ブックマークをRSS配信するなんて誰が考えようか!例えば、Firefoxのライブブックマークを使えば一度登録するだけでサマリが見れるわけですから、それをブログコンテンツではなく、ブックマークとして扱えば、ローカルにあるブックマークリンクが増えずにすむ!しかもネットワーク上にあるからどこからでも参照できる!なんということか!友人と自分のサマリをまとめて、共有リンクを作ることだって可能じゃないか!そしたら、情報共有も可能ではないか!あぁ、SNSの魅力に取りつかれてしまった。。。あわわ。
Garbage 3年振り4作目のアルバムが到着!(via HMV)
プロデューサーにはダストブラザーズのジョン・キングを起用、そしてアルバムのオープニング・トラックとなる"バッド・ボーイフレンド"にはデイヴ・グロールがドラムで参加しています!デイブ・クロール!マジで?!プロデューサはブッチ・ヴィグじゃないの?!何か期待しちゃうなぁ。
マイケル・A・クスマノ氏の1996年の著書。もう9年前になるんですね。先日、ソフトウエア企業の競争戦略を読み、非常に面白かったので、過去の作品にも触れてみました。ソフトウエア企業の競争戦略の「4章 開発のベストプラクティス」で書かれていることを掘り下げた感じでした。マイクロソフトは仕様が綿密に練られ、計画通りに線形に開発を進めているのかと思いきや、Extreme Programmingに代表されるようなテストファーストやペアプログラミングといった概念に近い形で開発されていることを知り驚いたと同時に、今、私が最も関心を寄せているデイリービルドによる製品の早期安定化と自動テストなどにも触れられており、それらが物語として成り立っているので、プログラマならば割とテンポ良く読めるのではないでしょうか。本書で、マイクロソフトの抱える問題点として(当時は)開発プロセスが未成熟の面が見受けられること、また社内で活用したオリジナルツールを製品化してしまうこともある、といったことが書かれていましたが、それが結集したのが、Visual Studio 2005 Team Systemなのでしょうね。Microsoft ProjectとVisual Studioとの連携は、同製品を活用している企業にとっては非常に面白い組み合わせです。巨人がまたしても挑戦してきましたね。
本書のサブタイトルは、勝ち続ける驚異の経営
です。勝ち続けるためには挑戦し続けることであるという考え方には非常に共感が持てます。私も頑張ります。基本的には、Standing on the shoulder of giantsですけど。w
日本経済新聞社 (1996/01)
売り上げランキング: 354,163
在庫切れ
ココナッツボーイズでC-C-Bなんだよなぁ。懐かしい。小学生のときによく聴いたっけ。そのころはラジカセの時代だったからカセットで僕たちno-no-no-を買いました。あの頃は髪を染めたい衝動に駆られたものです。どれも名曲ばかり。オススメです。
Control.WndProcメソッド
Windowsフォームを用いてGUIを実装する場合に、想定していないオペレーションが実施されて強制終了してしまうケースがある。またそういったオペレーションは手順を覚えていない場合が多く、再現が困難であることがある。log4netなどを用いて、WndProc内でハンドリングしてあげればオペレーションを再現することができる。
protected override void WndProc(ref Message m)
{
log.Debug(System.Windows.Forms.Control.FromHandle(m.LParam) + " // " + m.ToString());
base.WndProc (ref m);
}
ちなみに
すべてのメッセージは、 PreProcessMessage メソッドを通じてフィルタ処理された後に WndProc メソッドに送られます。
となっていたけど私が実験したプログラムではPreProcessMessageメソッドは通過しなかったなぁ。これはやり方の問題かもしれない。
それから上記のコードでは、MenuItemをハンドリングできません。いや厳密にはできているんだけど、MenuItemはSystem.Windows.Forms.Controlの派生ではないので、FormHandleメソッドでハンドルが取れません。なので、MenuItem関係については、それぞれのイベント(OnClickなど)の中でログ出力するように記述してあげるとよいのでしょう。
ユーザテストなどにおいて、Visual StudioなどのIDEでのデバッグ環境が構築できない場合において、有用な手段だと思います。製品版とは異なる位置づけになりますが、検査版の場合に導入するとよいでしょう。
マッピー:(C)1983 2004 NAMCO LTD.,ALL RIGHTS RESERVED.待ってたよ!ドルアーガの塔をゲットしたいです。
ディグダグ:(C)1982 1985 2004 NAMCO LTD.,ALL RIGHTS RESERVED.
ドルアーガの塔:(C)1984 2004 NAMCO LTD.,ALL RIGHTS RESERVED.
グロブダー:(C)1984 2004 NAMCO LTD.,ALL RIGHTS RESERVED.
モトス:(C)1985 2004 NAMCO LTD.,ALL RIGHTS RESERVED.
インターネット上の情報発信ツール「Yahoo!ブログ」、ベータ版の提供を開始
ついに、という感じですね。これでブログ人口が爆発的に増加するとなったとき、フィードに広告を入れるなどといった、新たなビジネス展開が期待されることでしょう。動向が楽しみです。
@IT:.NET Tools : NUnit入門 Test Firstのススメ [NUnit 2.0対応版]でもNUnitの解説がありますが、2.0と2.2ではメソッドの名前がちょっと変わったようですね。なので、備忘録。
例えばVisualStudioを使用したときに、nunit.frameworkを参照先に設定することや、テストクラスの属性に[TestFixture]、メソッドの属性に[Test]を付けることは基本的には同じ。
但し、@ITのサイトでは
となっていますが、2.2では
Assertion.AssertEquals( "recorder.Point", 0, recorder.Point );
Assertion.Assert( "!recorder.IsHighest(1233)", !recorder.IsHighest(1233) );
となります。Assertionクラスではなく、Assertクラスを使用します。また評価対象を先に記述して、メッセージを後に書くようなスタイルになっています。
Assert.AreEqual(0, recorder.Point, "recorder.Point");
Assert.IsFalse(recorder.IsHighest(1233), "!recorder.IsHighest(1233)");
[Test]
[Category("UC001")]
private void SampleMethod()
{
}
のようにCategory分けをすることでNUnit-GUIでカテゴリごとの実行も可能です。
それから[Suite]属性をつけることで、まとめて実行可能ですね。
public class AllTests
{
[Suite]
public static TestSuite Suite
{
get
{
TestSuite suite = new TestSuite("All Tests");
suite.Add(new OneTestCase());
return suite;
}
}
}
NUnit-GUIで見ると変な安心感に抱かれるので、ちゃんとテスト方針を立てて、テストケースを実装することが良いと思います。

