MSのコンサルタント、赤間さんが「.NETエンタープライズWebアプリケーション開発技術大全」という本を執筆されました。
そして、書籍と連動して@ITで抜粋の連載が始まりました。要チェックです。
2004年4月22日木曜日
The Complete Guide To Developing .NET Enterprise Web Applications
2004年4月21日水曜日
Martin Fowler in Tokyo
月刊ソリューションIT主催「アーキテクトセミナー」と、MS主催「.NETアーキテクトセミナー」の両方に参加。
(4/23追記)プレゼン資料発見。
Martin Fowler氏の話は、両者ともほぼ同じ(ドメイン層におけるTransaction Script, Domain Model, Table Moduleについて)でしたが、MS主催の方は講演時間が20分ほど長かったためO/R Mappingのパターン(Table Data Gateway, Row Data Gateway, Active Record, Data Mapper)と分散システムのパターン(Remote Façade, Data Transfer Object)の話もできました(というか、ソリューションIT主催の方は、同通が丁寧に訳しすぎてそれがボトルネックになっていたような気がする。それぐらいなら、MS主催の方みたいに豪快な同通がいい)。そうそう、NEOの話も出ました。
質疑応答の時間もMS主催の方にだけありました。紙に記入した質疑を回収してMS萩原さんがピックアップして質問する、というスタイルでした。
簡単にメモ。不正確だとおもいますがご容赦ください。bliki_jaも参照のこと。
- Domain Modelはパフォーマンスが悪いのでは?
- インスタンス化にかかるコストやオブジェクト間のメッセージ送受信にかかるコストなんてのは問題にならない。一番問題になるのはデータベースへのアクセス。クエリの組み立て方によってはパフォーマンスが悪くなることもある。パフォーマンスについて語るときにはきちんと測定しなくてはいけない。それから、マルチユーザのシステムであれば、ロックによるパフォーマンス悪化もありえる。繰り返すが、インスタンス化にかかるコストやオブジェクト間のメッセージ送受信にかかるコストなんてのは問題にならない。
- SOAについてはどう考えるか。関連して、アプリケーションでプロセス内の呼び出しとプロセス間通信の両方を混在させることは問題になるのか。
- SOAについては皆違うことを言う。基本的な立場として分散システムは避けた方がいいと考えている。Webサービスは良い道具だと思うが、Webサービスを使うときには非同期呼び出しがよい。疎結合になる。Entarprise Integration Patternsの本(amazon.com)がお勧め。ただアプリケーションのレイヤ間通信にWebサービスを使うのは愚かしい失敗だ。Java Swingでクライアントを作って、サーバとWebサービスで通信するようにしたんだけど、XMLを組み立ててまた分解して、というのでパフォーマンスが悪かった。
- パターンやリファクタリングを技術者に根付かせるには?
- 両者は関連している。パターンとは構造を設計すること、そしてリファクタリングは構造を変えることだといえる。そしてイテレーションの中でそれらを実施するんだ。Joshua KerievskyがRefactoring To Patternsという本を執筆中だ。ぐぐってみて。
- テスティングフレームワークについて。Domain Modelはテストしやすいけれど、Transaction ScriptやTable Moduleはテストしにくいのでは。
- 3つともテスト可能にできる。テストについてルールは2つ。(1)データベースのスタブを作れ。(2)UIから可能な限りロジックを排除しろ。UIをテストするには画面を操作する必要があるから。今はリッチクライアントをテストしやすくすることについて考えている。
- JavaではAOPやDependency Injectionというキーワードが流行っているが、.NETでも有効か?
- JavaではEJBが嫌われていて、代替案としてオープンソースのプロジェクトが生まれてきたという背景がある。Pico ContainerやSpringといったライトウェイトコンテナだ。それらの考え方は.NETでも応用可能だと考えている。ロンドンのプロジェクトはC#の開発なんだけど、IoCの人たちが参加していた。ま、.NETはEJBの問題点を避けているように思えるけどね。
猪股の質問(AOPとかDependency Injectionは.NETでも有効と考えるか?)も選ばれました。
小ネタ1。Fowlerたんはイギリス式発音でした(イギリス出身だから当然か)。
小ネタ2。ユニシス尾島は自分のノートPCにFowlerたんのサインをお願いして断られた。曰く「僕の本にしかサインしないよ。」ということで猪股がP of EAAを尾島に渡し、無事サインしてもらいました。ちょっと見難いですが、"Martin Tokyo 4/04″と書いてあります。
2004年4月9日金曜日
IT Proで artonさんの連載が始まる
artonさんによる、「開発現場から時代を眺める」。
Java/J2EEのコーナーに書かれていますが、エンタープライズ・コンピューティングがテーマのようですから、.NETにおいても通じる話でしょう。
今後も楽しみにしています。
2004年4月8日木曜日
TestRunner for NUnit
TestRunner seamlessly integrates NUnit testing and debugging into a compact Visual Studio .NET 2003 add-in.
とのこと。nUnit Addinとどっちがいいのかな。
2004年3月26日金曜日
TypeKeyとSingle Sign On
Movable Typeの開発元でTypePadというBlogサービスをやっているSix Apart社が認証&プロファイル管理サーバを立ち上げるという話。(NDO::Weblog「TypeKey Overview」を参照のこと)
オンラインビジネス向け認証サービスといえば…の、.NET Passportは、あまり盛り上がっていない様子。
(CNET Japan「マイクロソフトのPassportはどこへいく?」を参照のこと)
この違いは何なんだろう。公開を前提としている情報で機密性が低いから、サービスの信頼性が問題にならない?うーむ、利便性と信頼性とのトレードオフの話で終わってしまってはつまらない。もう少し考えてみたい。
そうだ、Liberty Allianceはどうなっている?
私が興味を持ったのは、インテルの加盟、それから日本での事例としてNTTコミュニケーションズのCoDenに順次適用というニュース、総務省のe-LearningシステムEduMartの実証実験(リンク先はpdf)、こんなところかな。
2004年3月11日木曜日
Martin Fowler氏、4月に来日
Martin Fowler’s Bliki in Japaneseを読むと、MSのイベントで来日するとのこと。
そういえば、MSからアーキテクチャ関係イベントのお誘いが来ていたけど、あれかなあ。だとしたら万難を排して参加しなければ…
その時はPatterns of Enterprise Application Architectureにサインしてもらおう。
追記(まとめて書き直し):
まず、私がMSからお誘いを受けたイベントは、Fowlerたんとは無関係でした。
次に、4/20開催のリックテレコムのセミナーに出席するのは確定。ユニシス尾島も出席するので、ついていこう。ただし、Fowlerたんは午前中しかいない。午後は別の仕事が入っていることを確認(ソースは出せません。すみません)。
そして、4/21日にはMS主催のイベントに参加。
2004年3月10日水曜日
FlashでBlog
blog.30k2.comというサイトはBlogのフロントエンドにFlashを使っている。
どこかのサイトに「FlashなBlogってないですか?」みたいな問いかけがあったように思ったのだが、問いかけを見ているときにはblog.30k2.comを思い出せず、blog.30k2.comを思い出したときには問いかけのあったサイトのことを忘れている始末。
2004年3月5日金曜日
Keeping Passwords in a Database Secure
自分のために、現時点での理解をまとめ。
- パスワードをクリアテキストで保存
- データベースにアクセスできる人が他人のパスワードを容易に取得できる。
- パスワードを暗号化して保存
- 暗号化鍵の管理が大変。そして、暗号化パスワードであっても時間をかければクラック(復号化)可能であることを忘れてはいけない。
- パスワードのMD5ハッシュを保存
- ハッシュからパスワードに戻すことができないので安全…ではない。データベースにアクセスできる悪意のユーザーは、事前に文字列「password」のMD5ハッシュを生成しておいて、データベースに保存されている値と比べるだろう。MD5ハッシュが一致したユーザがいたら、そいつのパスワードは「password」だ。
- パスワード+αのMD5ハッシュを保存
- パスワードに、ユーザごとに異なる文字列αを追加して、そのハッシュをとる。となると、悪意のユーザは、誰かのパスワードが「password」なのかどうかを知るためには、文字列αを追加してMD5ハッシュをとる作業を各ユーザごとに行わなければならない。このようなユーザごとに異なる文字列αのことを「ソルト(塩)」と呼ぶ。
こんなところか。
Cassini
カッシーニ、ジョヴァンニ(Giovanni Domenico Cassini, 1625.6.8-1712.9.14).
ジェノア共和国(現在はイタリア領)、ペリナルドに生まれ、フランス、パリに死す。
ジェノアのイエズス会学院で学ぶ。パンツァノ天文台で観測(1648-1669)、1650年にボローニャ大学天文学教授。 彗星の観測(1652-3と1664-5)の詳細の記録を出版。水力学や工学にも興味。特にポー川の治水については貢献。都市の要塞化の監督とか、河川管理に関して教皇に雇われていた。
1669年、ルイ16世によりパリに招聘。1671年からパリ天文台長。土星の4つの衛星の観測(1671, 1672, 1684, 1684)、土星の輪の構造、特に隙間を見つけた(1675年、カッシーニの間隙)。木星の大赤点の発見(1665).
カッシーニの卵形線は、太陽と地球の相対運動の研究の一環として考察したもの。また、地球の経線の長さを測るのでは、長く見積もりすぎて、地球の形を縦長の卵形とみなして失敗(1712年)。24年後、モーペルテュイがニュートンの予言に従い、値を修正した。 [解IV.3], [パ24]
土星の輪の隙間のことをカッシーニ間隙というので、探査機「カッシーニ」の名前の由来になっていることは分かりやすい。でも、なぜ.NET Framework上で動作して、ASP.NETをホストするWebサーバのコードネームが「カッシーニ」なのかは、私には分からない。
ちなみに、Cassini Web ServerはJavaでいうところのTomcatみたいなものだ、と考えると分かりやすい人もいるだろう。ただしCassiniはリファレンス実装という位置づけではないし、当然ライセンス形態も違うのだけれど。
2004年2月29日日曜日
WhidbeyのモデリングツールWhitehorse
C|NET Japanに「Whitehorse」は、Windowsソフトウェア開発に革命を起こすか?という記事が載っています。
MSの製品なので「使える」ものになるとは思います。
開発スタイルが変わるかどうか、注目しています。