Share via


ツールボックス

ユーザー インターフェイス、ポッドキャスト、オブジェクト リレーショナル マッピング、その他

Scott Mitchell

共通するユーザー インターフェイスのグループをすばやく作成する

最近、私は大きな大学の印刷操作用の発注管理アプリケーションに取り組み始めました。近々行われる試験に向けた 100 部のコピーや、来学期の履修便覧の 5 万部ものコピーなど、毎日、何百人もの教授や管理者が印刷を発注します。このアプリケーションには、多くの基幹業務アプリケーションと同様、それぞれ多数のユーザー入力要素を備えた、さまざまなデータ入力画面が必要です。これらの画面の多くは、共通するユーザー インターフェイスのグループを共有しています。たとえば、注文を行う画面には、ユーザーが用紙の種類、綴じ位置などのオプションを選択できる一連のドロップダウン リストがあります。これと同じドロップダウン リストのグループは、注文を管理する画面でも繰り返し使用されます。また、保存の進行状況、送信、キャンセルなど、多くの画面で共通のボタン グループも共有されています。

一度に 1 つずつボタンやドロップダウン リストをユーザー インターフェイスに実装していくのは、面倒で時間のかかる作業です。もはや、このような作業は必要はありません。Nukeation Studios が提供する nukeationMachine を使用すれば、Windows Presentation Foundation (WPF)、WinForms、および ASP.NET の各アプリケーションのユーザー インターフェイス構築時間を大幅に短縮できます。nukeationMachine は Visual Studio アドインで、1600 を超える UI Bit が付属します。UI Bit はユーザー インターフェイス要素の共通グループで、マウスを 1 回クリックするだけで、Visual Studio のデザイン サーフェイスに追加できます。たとえば、IgnoreRetryCancel という UI Bit では、水平方向に配置される、[Ignore] (無視)、[Retry] (再試行)、および [Cancel] (キャンセル) という 3 つのボタンのグループが定義されます。このグループをアプリケーションに追加するには、[nukeationMachine] ウィンドウで、この UI Bit を見つけてクリックするだけです。すると、これらの 3 つのボタンが即座にデザイン サーフェイスに追加されます。時間の節約を実感していただくために、次のスクリーンショットをご覧ください。これは、nukeationMachine を使って設計したユーザー インターフェイスですが、わずか 30 秒足らずで設計できました。

nukeationMachine の UI Bit とは、デザイン サーフェイスに追加する要素を定義するマクロと考えることができます。つまり、nukeationMachine ウィンドウから UI Bit を選択することは、単に、デザイン サーフェイスに要素を追加するマクロを実行することです。したがって、nukeationMachine を使用してユーザー インターフェイスを実装しても、プロジェクトにコードが追加されたり、nukeationMachine との間に依存関係が生じたりするわけではありません。共通 UI グループを瞬時に追加する手段に過ぎません。また、nukeationMachine に付属する 1600 の UI Bit にまだ含まれていない UI グループがあれば、数回マウスをクリックするだけで、カスタム グループをパッケージ化して UI Bit に含めることができます。

nukeationMachine の Single Technology Edition は 140 米ドルで、WPF、WinForms、または ASP.NET のいずれかのテクノロジのみに対応する UI Bit がサポートされます。Complete Edition には 3 つのテクノロジがすべてサポートされ、価格は 280 米ドルです。

価格: 140 米ドル (Single Technology Edition)、280 米ドル (Complete Edition)
nukeation.com

.NET ポッドキャスト

ポッドキャストとは、オーディオやビデオから構成される作品のことで、インターネットからダウンロードして入手でき、通常、ポータブル MP3 プレーヤーで再生します。これは日々の通勤、フライト中、休憩時間などに理想的なリスニング素材です。ポッドキャスト形式はブログや雑誌記事に比べて、複数の参加者がインタラクティブなディスカッションを行うことができたり、特定のトピックを会話を交えながら深く掘り下げていったりすることができます。

Scott Hanselman の Hanselminutes など、特に開発者を対象とする品質の高いポッドキャストが増えています。このポッドキャストについては 2009 年 7 月号で紹介しました (msdn.microsoft.com/magazine/dd943051.aspx、英語)。他にも、Carl Franklin と Richard Campbell が毎週司会を務めるトーク番組で、".NET Rocks" という優れたポッドキャストもあります。毎回のエピソードは 1 時間程度で、特定のテクノロジ、製品、興味深い人物などを取り上げています。たとえば、第 370 回は、2 人がマイクロソフトの上級副社長 S. Somasegar にインタビューしています。第 433 回は Phil Haack が ASP.NET MVC Framework について説明しています。作家 Julia Lerman が第 319 回に登場し、Entity Framework について自らの見識を語りました。


.NET Rocks ポッドキャストの Web サイト

Franklin と Campbell の 2 人はインタビューの天才で、対談では滑らかで自然な流れを保ち、見事にゲストの知恵を引き出しています。.NET Rocks ポッドキャストを聴くと、まるで、ユーザー グループのミーティングや会議での、経験豊富な開発者たちの会話を耳にしているようです。そして、必ず何か新しいことを学び、興味深い秘話を 1 つ以上耳にして、他の博識な開発者たちが、日々の仕事でどのように .NET および関連テクノロジを使用しているかを理解できます。

.NET Rocks は、もともと Franklin が 2002 年に始めたもので、現在、そのエピソードは 460 回を超えています。番組の Web サイトでは、今までの番組を (当然、毎週の新しいエピソードも) ダウンロードしたり、完全なトランスクリプトを表示したり、質問や意見を送信することができます。

価格: 無償
dotnetrocks.com

C# を使用した NHibernate の構成

NHibernate は、.NET アプリケーション向けのオブジェクト リレーショナル マッパー (ORM) として普及しています。他の ORM ツールと同様に、NHibernate では、オブジェクト指向のドメイン モデルとリレーショナル データベースと間でデータを保存したり取得したりするためのフレームワークを提供し、開発者が面倒なデータ アクセス コードを作成する必要をなくします。NHibernate については 2006 年 10 月号 (msdn.microsoft.com/magazine/cc163540.aspx、英語) で紹介しました。NHibernate が機能するためには、ドメイン モデルとデータベースとの間のマッピングを定義する必要があります。このようなマッピングは、従来、XML ファイルを使用して定義されていましたが、これにはいくつか欠点があります。たとえば、XML マッピングやドメイン モデルのプロパティの並びがコンパイル時にチェックされません。不一致があったとしても、実行時まで検出されません。また、多くの開発者は、XML の構文とその詳細度は、明確かつ簡潔なソース コードに比べて、過剰でわかりにくいものと感じるでしょう。

Fluent NHibernate は興味深いオープン ソース プロジェクトで、NHibernate のマッピングを XML からソース コードに移動することができます。各エンティティは、クラスを作成し、コンストラクターでマッピングの規則を定義することでマップされます。図 1図 2 に、Fluent NHibernate の動作を示します。図 1 に、ドメイン モデルの 2 つのオブジェクト、Category と Product のクラス定義を示します。図 2 は、CategoryMap クラスを示しています。このクラスでは、Category オブジェクトと基になる Categories データベース テーブルの間のマッピング規則を定義します。図 2 の構文に注意してください。これは Fluent インターフェイスが、説明的な名前とメソッド チェーンを使って、読みやすさを最大の目的とした API 設計スタイルを採用していることを示す一例です。コード内の NHibernate マッピングの規則により、マッピング規則とドメイン モデル間の不整合がコンパイル時に検出されます。たとえば、Category クラスを変更し、CategoryId プロパティの名前を Id に変えると、CategoryMap クラスのコンパイル時にエラーが発生します。

図 1 Category クラスと Product クラスの定義

public class Category
{
public int CategoryId { get; private set; }
public string CategoryName { get; set; }
public string Description { get; set; }
public IList<Product>
Products { get; private set; }
}
public class Product { ... }

図 2 CategoryMap クラス

public class CategoryMap : ClassMap<Category>
{
public CategoryMap()
{
WithTable("Categories");
Id(x => x.CategoryId);
Map(x => x.CategoryName)
.WithLengthOf(50)
.Not.Nullable();
Map(x => x.Description);
HasMany(x => x.Products)
.Cascade.All()
.WithTableName("Products");
}
}

オブジェクトとリレーショナル モデルの構造が、Fluent NHibernate によって定義された一連の規則に従う場合は、自動マッピング機能を使用できます。その結果、コードでマッピング規則を明示的に記述する必要がなくなります。代わりに、Fluent NHibernate が自動的にマッピングを決定します。さらに、Fluent NHibernate には、同じ Fluent インターフェイス形式を使用して、データベース構成情報を NHibernate の XML ファイルからソース コードに移動する機能もあります。

価格: 無償
FluentNHibernate.org

推薦図書

コンサルタントとして働くのは刺激的で、速いペースでキャリア選択を迫られます。常勤の職員と異なり、コンサルタントは通常、特定の問題を解決したり、固有のテクノロジを実装したりする際に参加します。それが終われば、新しいクライアントに出向き、新しい仕事や、場合によっては新しいテクノロジに取り掛かります。もちろん、コンサルタント業には欠点があり、主な欠点は仕事の安定性に関するものです。コンサルタントは常勤の職員よりも簡単に解雇されます。

現在、テクノロジ コンサルティング会社に勤務していたり、そこで働くことの長所と短所を秤に掛けているのなら、Aaron Erickson の書籍、『The Nomadic Developer』 (Addison-Wesley、2009 年) をお勧めします。この書籍は 2 部構成です。前半は、未来のコンサルタントに向けて、内部関係者から見るコンサルタント業について書かれています。後半は、既にコンサルティング会社に勤務している方を対象とし、さまざまなキャリア パスを検討し、コンサルタントとして最高の成功を収める方法についてアドバイスしています。

『The Nomadic Developer』 は、現在コンサルティング会社に職を求めている方、特にコンサルタントとしての勤務経験のない方にお勧めです。この書籍の第 2 章に、正常に機能していない危機に直面する会社の 7 つの特徴が挙げられていて、もしこの特徴に当てはまるならば、その会社での勤務時間に悪影響が出るでしょう。会社の各機能不全について Erickson は詳しく説明しており、このような特徴が存在するコンサルティング会社での生活がどのようなものになるかを示し、就職面接の際にこの機能不全を見極めるための情報を提供しています。また、テクノロジ コンサルティング会社が志望者に求める上位 10 の特徴について書かれた章や、志望者が面接で尋ねるべき質問を提案している章もあります。

Erickson 自身の見解に加え、『The Nomadic Developer』 では注釈やエッセーの章に、他の経験豊富なコンサルタントの見識や秘話も取り上げられています。この注釈とエッセーも Erickson の言葉巧みな書き方にならっており、『The Nomadic Developer』は楽しく読めて、ためになる本になっています。

価格: 39.99 米ドル
nomadic-developer.com

Scott Mitchell は、多数の著書を出版し、4GuysFromRolla.com の創設者でもあります。また、1998年からは Microsoft MVP としてマイクロソフトの Web テクノロジに携わっています。現在は、フリーのコンサルタント、トレーナー、およびライターとして活躍しています。Scott の連絡先は、Mitchell@4guysfromrolla.com です。また、ScottOnWriting.net にブログを公開しています。