印刷用ページ       送信     
クリックして評価とフィードバックをお寄せください
 ツールボックス : 簡単な LINQ クエリ、優れた開発者になる、ログ...
Related Articles

開発者は、ワークステーションおよび関連するクラスのバージョン管理にいつも頭を悩ませています。ワークフローのバージョン管理の主要な問題点と、ワークフロー定義、アクティビティ、およびワークフロー サービスへの変更に関する推奨事項について、Matt Milner が説明します。

Matthew Milner

MSDN Magazine May 2009

...

Read more!

メモリ使用量はアプリケーションの実行速度に直接影響を及ぼす可能性があるため、最適化する必要があります。この記事では、.NET プログラムを対象に、メモリの最適化の基本について説明します。

Subramanian Ramaswamy および Vance Morrison

MSDN Magazine June 2009

...

Read more!

クラス階層にオブジェクトを分類するという観点ではなく、テスト駆動開発とモック オブジェクトを使用して、役割と責任の観点からオブジェクト指向コードを設計するにはどうすればよいかについて説明します。

Isaiah Perumalla

MSDN Magazine June 2009

...

Read more!

CLR チームが NET Framework 3.5 SP1 の CLR に対して行った変更と、このサービス パックを使用して既存の CLR 2.0 ベースのアプリケーションを実行した場合のパフォーマンスの向上について説明します。

Surupa Biswas

MSDN Magazine April 2009

...

Read more!

今月は、IronPython を使用して .NET ベースのライブラリを簡単にテストできることを実演します。

James McCaffrey

MSDN Magazine June 2009

...

Read more!

Also by this Author

今月は、テスト環境を設定せずにさまざまなプラットフォームおよびブラウザ上で Web サイトをテストする方法、単体テストにモック オブジェクトを使用する方法、および Raymond Chen のブログを紹介します。

Scott Mitchell

MSDN Magazine June 2008

...

Read more!

今月は、作業の実行に必要ないくつかのツールについて説明します。

Scott Mitchell

MSDN Magazine December 2007

...

Read more!

より優れた状態監視のための Web アプリケーション エラーのログ記録方法、LINQ の理解に役立つ本、および Scott が勧める今月のブログを紹介します。

Scott Mitchell

MSDN Magazine April 2008

...

Read more!

今回のテーマは、Windows フォームのグリッド、洗練された外観の日付テキスト ボックス、ファイルのマージ、およびその他です。

Scott Mitchell

MSDN Magazine November 2007

...

Read more!

今月は、固定長ファイルと区切りファイルへのシリアル化および逆シリアル化に役立つツール、Scott Allen のブログ、Web ページの検査用ツールなどを紹介します。

Scott Mitchell

MSDN Magazine August 2008

...

Read more!

Popular Articles

When incorporating the ASP.NET DataGrid control into your Web apps, common operations such as paging, sorting, editing, and deleting data require more effort than you might like to expend. But all that is about to change. The GridView control--the successor to the DataGrid-- extends the DataGrid's functionality it in a number of ways. First, it fully supports data source components and can automatically handle data operations, such as paging, sorting, and editing, as long as its bound data source object supports these capabilities. In addition, ...

Read more!

UI パーツ間の対話の基盤となる Windows Presentation Foundation のルーティング イベントとルーティング コマンドについて説明します。

Brian Noyes

MSDN Magazine September 2008

...

Read more!

This article introduces 10 development tools that can increase your productivity, give you a better understanding of .NET, and maybe even change the way that you develop applications. The tools covered include NUnit to write unit tests, Reflector to examine assemblies, FxCop to police your code, Regulator to build regular expressions, NDoc to create code documentation and five more.

James Avery

MSDN Magazine July 2004

...

Read more!

Jason Clark

MSDN Magazine July 2003

...

Read more!

ワンタイム パスワードは、ディクショナリ攻撃、フィッシング、傍受などのさまざまなセキュリティ違反に対するソリューションを提供します。ここでは、そのしくみを説明します。

Dan Griffin

MSDN Magazine May 2008

...

Read more!

ツールボックス
簡単な LINQ クエリ、優れた開発者になる、ログ記録の支援
Scott Mitchell

記載価格は 2008 年 7 月 14 日時点のものであり、変更されている可能性があります。このコラムに記載されている見解は、執筆者の個人的な見解であり、必ずしもマイクロソフトの見解を反映するものではありません。

LINQPad で LINQ スキルを磨く
Microsoft® .NET Framework 3.5 の主要な追加機能の 1 つが LINQ です。LINQ とは、汎用的なデータ クエリ構文を提供するために設計されたクラスおよび言語拡張のセットです。LINQ to Objects、LINQ to XML、および LINQ to SQL を使用すると、配列とコレクション、XML ドキュメント、およびデータベース テーブルの照会を行えます。いずれの場合も、IntelliSense® やコンパイル時の型チェックのような多彩な機能を持つ類似の構文を使用できます。ただし、従来のプログラミングで主に SQL によるデータ照会を実施してきた開発者にとって、LINQ 構文の導入が多大な混乱をもたらす可能性があります。
LINQ の学習には専門書の購入をお勧めします。各章を念入り読み、それぞれの例を実演し、結果を確認してみてください。もちろん LINQ サンプルは Visual Studio® 2008 で実施できますが、ここでは、私のお気に入りのツール、LINQPad (Version 1.24) を紹介したいと思います。Joseph Albahari 氏が作成した LINQPad は、LINQ クエリの記述とテストを行える無料のスタンドアロン プログラムです。
LINQPad のユーザー インターフェイスは、4 つのペインで構成されています。左上のペインには、データベース サーバーの一覧が表示されます。この一覧を展開すると、データベースとそのテーブル、ビュー、およびストアド プロシージャが表示されます。右上のペインでは、クエリを入力して LINQ クエリをテストできます。LINQ クエリを直接入力するか、または C# や Visual Basic® の LINQ クエリを実行するコードを入力します。クエリ対象のデータベースを左上のペインから選択して、LINQ to SQL クエリの記述とテストを行うこともできます。
右下のペインには、クエリの結果が表示されます。ここには 3 つのビューがあり、結果、対応するラムダ式、および同等の SQL ステートメントが表示されます。左下のペインは、よく使用するクエリを整理するためのワークスペースになっています。このペインの [Samples] (サンプル) タブには、Albahari 氏の著書『C# 3.0 in a Nutshell』(O'Reilly、2007 年) から引用された 200 以上の C# および Visual Basic のサンプル LINQ が含まれています。LINQ クエリに対応する SQL ステートメントを確認できる機能とこれらのサンプルは、LINQ を初めて扱うユーザーにとって非常に貴重な学習ツールです。
LINQPad は、SQL Server® Management Studio の小規模な LINQ ベース実装と言えます。データをアプリケーションで表示する SQL クエリを記述する場合は、通常、Visual Studio で最初からクエリを記述するよりも、Management Studio で記述してから Visual Studio で自分のコードにコピー & ペーストする方が簡単です。なぜなら、Visual Studio からクエリをテストするにはアプリケーションの実行が必要だからです。同様に、LINQ クエリの記述とテストは Visual Studio よりも LINQPad で行う方が簡単です。
LINQPad エディタでは、Visual Studio と同じように、キーワード、変数、文字列、およびコメントについてコードの色分けが行われ、エラーに下線 (赤と緑の破線) が引かれますが、IntelliSense はサポートされていません (将来の拡張として計画されています)。IntelliSense はありませんが、LINQPad はその直感的で軽いユーザー インターフェイス、多数の機能、およびたくさんのサンプルにより、LINQ クエリの学習、記述、およびテストのための優れたツールとなっています。
価格 : 無料
図 5 LINQPad.net ユーザー インターフェイス (クリックすると拡大画像が表示されます)

注目のブログ
私は日々の作業の中で、より優れた開発者になるという目的意識を持ち、技術的な競争力およびプログラミング スキルの向上に努めています。尊敬を集める開発者のブログでコーディングのヒントや秘訣を見つけたり、市販のコンピュータ書籍から知識を得たりします。オンライン フォーラムに質問や回答を書き込むこともあります。しかし、より優れた開発者になるには、新しい技術的なスキルの獲得だけでなく、もっと別の能力も必要とされるようです。Rob Waling 氏のブログにそのヒントがあります。
Rob 氏は、.NET Framework に関連するさまざまな分野で仕事をしてきました。現在は、小規模な開発企業を経営し、各種 ASP.NET アプリケーションのコンサルティングと販売を手がけています。彼は熱心なブログ作成者でもあります。ほとんどの開発者向けブログでは、最新技術の検証やプログラミングのヒントや秘訣の提供が行われていますが、Rob 氏のブログはそうではありません。彼のブログのユニークな点は、開発者としての成功に必要なビジネスおよび人間関係の側面を取り上げていることです。より優れた開発者になるための 11 の項目で構成されているシリーズでは、さまざまな領域にわたる解説が掲載されています。チームで構築を行うこと、プロジェクトや会社での自分の役割を理解すること、自分の長所と短所を把握すること、同僚のコードを建設的に評価することなど、各項目が示唆に富んだ内容であり、よくまとめられています。それぞれの開発者が肩書きや経験に関係なく、この読み物から何かを得ることができるでしょう。
Rob 氏のブログは、フリーになることを検討している開発者や、自分のアイデア、ツール、またはアプリケーションを製品化することに興味のある開発者にとって価値のある情報が満載です。個人事業を組織化する場合のアドバイス、提供する時間と製品に対する請求金額を算出するガイドライン、フリーランス開発者または小さな独立系ソフトウェアとして成功を勝ち取るために役立つお勧めのツールとビジネス プロセスが紹介されています。

重要な情報、警告、およびエラーをログに記録する
運用環境でエラーが発生した場合に重要なことは、開発者が後でエラーを調べて修正できるように、詳細がログに記録されて永続的なストアに格納されていることです。この件については、2008 年 4 月号の「ツールボックス」(msdn.microsoft.com/magazine/cc500592.aspx を参照) で取り上げ、ASP.NET Web アプリケーションでエラーを自動的にログに記録する 2 つの異なるシステムを検証しました。それらのシステムとは、ASP.NET 状態監視システムおよびエラー ログのモジュールとハンドラ (ELMAH: Error Logging Modules and Handlers) です。では、デスクトップ アプリケーションではエラー詳細のログ記録にどのようなツールを利用できるでしょうか。エラー以外の情報のログ記録についてはどうでしょうか。多くの行政、金融、および医療のアプリケーションでは、システムにアクセスした人物および参照または変更されたデータに関する情報を記録する監査ログの保持が必要とされています。
.NET ベースのアプリケーションに利用できるロギング ライブラリが数多く存在していますが、その中で最も成熟度が高く、広範に利用されているのが Enterprise Library と log4net です。Enterprise Library は、Microsoft patterns & practices グループにより作成されたアプリケーション ブロックのセットです。各アプリケーション ブロックは、ログ記録、データ アクセス、例外処理など一般的なエンタープライズ開発タスクの実行を支援するクラスのセットです。Logging Application Block を使用すると、任意の数のログ ストアに情報を簡単に記録できます。
アプリケーションから情報をログに記録するには、最初に、Logging Application Block を構成し、少なくとも使用するトレース リスナを指定する必要があります。トレース リスナは、ソースから情報を受け取って格納するオブジェクトであり、ログ エントリを特定のログ ストアに書き込むためのメカニズムです。Enterprise Library に付属する組み込みのトレース リスナを使用して、Windows® イベント ログ、データベース、テキスト ファイル、電子メール メッセージなどにログ エントリを格納することができます。また、自分でカスタム トレース リスナを作成して組み込むこともできます。
Logging Application Block の構成には、カテゴリ、フィルタ、およびフォーマッタを含めることもできます。カテゴリは、"データ アクセス エラー" や "デバッグ メッセージ" のようなログ エントリの種類の分類を定義する場合に使用できます。各ログ エントリは、カテゴリだけでなく、優先度や重要度などさまざまなプロパティにも関連付けられます。たとえば、ステージング サーバーで、優先度が 5 以上のエントリのみをログに記録する場合があるでしょう。運用サーバーで、"デバッグ メッセージ" のカテゴリに属するログ エントリを省略する場合もあるかもしれません。フィルタを使用して、記録するログ エントリを制限することもできます。また、フォーマッタを使用すると、ログ エントリの詳細を記録するときにテキストにシリアル化する方法をカスタマイズできます。
アプリケーションを構成した後で、Logging Application Block の API を使用してログ エントリをプログラムで作成します。たとえば、例外の詳細をログに記録するには、新しい LogEntry オブジェクトを try/catch ブロックの catch 部分に作成し、例外の詳細がキャプチャされるように LogEntry のプロパティを設定します。さらに、Logger クラスの Write メソッドを呼び出すことによりエントリをログに記録し、LogEntry インスタンスに渡します。次に、Logging Application Block では、ログ エントリをフィルタ、カテゴリ、およびフォーマッタに対して評価してログ エントリを格納するかどうかを判断し、格納すると判断した場合にはどのようにフォーマットするかを決定します。
Log4net は、Apache Software Foundation により管理されている、オープン ソースのロギング ライブラリです。これは log4j の .NET への移植であり、Java で記述されたアプリケーション用のロギング ライブラリです。Logging Application Block と log4net は使用している用語が異なっている場合もありますが、Logging Application Block の中核となる概念の多くが log4net でも採用されています。たとえば、log4net では、ログ エントリは (トレース リスナではなく) アペンダと呼ばれるオブジェクトによって記録されます。log4net には、Enterprise Library よりも多くのアペンダが付属しています。ADO.NET データ ソース、ASP.NET トレース、コンソール ウィンドウ、Windows イベント ログ、メモリ内バッファ、電子メール メッセージ、テキスト ファイルなど、さまざまなソースにログ記録するためのアペンダがあります。log4net では、Logging Application Block のフォーマッタに似たフィルタとレイアウトが提供されています。
log4net の構成の中で、複数のロガーを定義できます。Logging Application Block (および他の多数のロギング システム) との主な相違点の 1 つとして log4net に備わっているのが、ロガーの階層を作成する機能です。アプリケーション内から情報をログ記録するには、API の GetLogger メソッドを呼び出し、アクセスするロガーの名前またはタイプを渡します。ロガーは、呼び出されたときに特定のレベルのログ エントリを作成するさまざまなメソッドを提供します。DEBUG、INFO、WARN、FATAL などの値を持つレベルは、ログ エントリの優先度を示します。特定のロガーで所定のレベルを持つログ エントリにのみ応答するように、log4net の構成で指定できます。
ログ記録は、どのようなアプリケーションにおいても重要な側面です。少なくとも、エラーの詳細をログに記録する必要があります。また、デバッグ時や監査記録にもログ記録は役立ちます。Logging Application Block と log4net は、新しい .NET 対応アプリケーションで、または既存のアプリケーションに統合して使用できる、成熟したオープン ソースのロギング システムです。
価格 : 無料 (オープン ソース)
Enterprise Library 4.0 を構成する (クリックすると拡大画像が表示されます)

ご意見やご質問は、Scott (toolsmm@microsoft.com) までお送りください。

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

すべての価格は {取得日} の時点で確認された額です。

Page view tracker