InfoQ

News

LINQツール

作者 Hartmut Wilms, 翻訳者 編集部 投稿日 2008年4月24日 午前6時57分

コミュニティ
.NET
トピック
.NETフレームワーク
タグ
LINQ

LINQ(source)は、コミュニティで広く称賛されている上に、習得しやすい。VLinqおよびLINQpadの2つのツールが、LINQ構文をより深く理解できるように開発者を支援している。

Visual LINQ Query Builder(VLinq)は、MicrosoftフランスのインターンがMicrosoft Corporationと共同して開発したアカデミックプロジェクトである。Microsoftフランスのマネージャー兼プロジェクトリーダーであるフルタ ミツル氏(source)は、自身の発表の場(source)でプロジェクト目標について次のように説明している。

VLinqプロジェクトはデザイナとして、LINQ to SQLクエリをグラフィカルに作成できるよう支援しますが、私たちはそれを視覚的にコードから隠しておくことを望みました。目標は、生成コードを隠すことではなく、デザイナで見えるようにすることです。それは、古典的なデザイナとグラフィカルなインテリセンスとの混合のようなものです。

VLinqはVisual Studio 2008のアドインで、これは、Microsoft Access Query Builderに似たユーザーエクスペリエンスであり、LINQクエリを視覚的に作成可能にするデザイナを提供する。バイナリとソースコードが同梱されているVLinqプロジェクトは、MSDN Code Galleryでダウンロード(source)できる。

VLinqはVisual Studioに新しいアイテムテンプレートを追加し、選択したプロジェクト(.vlinq拡張子)内でデザイナを作成する。VLinqバッグデザイナでは、新しいクエリを作成することや既存のクエリを編集することができ、クエリデザイナでは、Class Browserからエンティティクラス(LINQ to SQLデザイナで作成)をデザインサーフェスにドラッグすることが可能だ。開発者は、これらのエンティティのクエリを作成できる。VLinqデザイナは、エンティティのプロパティについて完全な「グラフィカルなインテリセンス」を提供している。

ソリューションの構築時、VLinqはスタティックなクラスを生成する。これは、DataContextをパラメータとして受け入れ、視覚的に設計されたクエリを実行し、対応する強く型付けされたエンティティのIQueryableオブジェクトを返すメソッドを提供する。アプリケーションコードで、開発者は単に新しいDataContext(LINQ to SQLで作成)のインスタンスを作成し、それらの「クエリ」メソッドを呼び出すだけだ。したがって、スタティックな「クエリ」クラスは、プロジェクトのLINQクエリのコンテナとして役割を果たす。詳細については、ハウツービデオまたはクイックリファレンス(source)で確認できる。

また、VLinqは、設計時にデータベースに対してデザイナ内で構築されたクエリを発行可能にするプレビューモードを提供するため、クエリをテストするのに役立つ。プレビューモードでクエリを発行するには、VLinqデザイナプロパティでデータベースの接続文字列を設定する必要がある。プレビューは、次の3つのビューを提供する。クエリ結果、LINQ to SQL SQL文、およびVLinqによる生成コードの3つである。

 LINQPad(サイト・英語)は非常に異なったアプローチをとる。これは、the C# 3.0 in a Nutshel(サイト・英語))lブックに対するアドオンとしてJoseph Albahari氏が開発したフリーツールである。

LINQPadはスタンドアロンのアプリケーションであり、Visual Studioを必要とせず、インストールの必要がなく、自己更新型であり、次のようにいくつかの方法で使用することができる。

  • SQL Management Studioクエリエディタ(または類似のクエリツール)の代用: 「現代のクエリ言語LINQでインタラクティブにSQLデータベースへのクエリを実行する」
  • LINQインタプリタ: LINQクエリおよび新しいC# 3.0言語機能を試す; 「LINQと関数型プログラミングのクールさを経験する」
  • Code Snippet IDE: コードスニペットを作成および管理する。コードスニペットはLINQPad内で即座に実行される可能性がある。

LINQPadホームページによると、LINQPadについて次のように記載されている。

... C# 3.0およびFramework 3.5で次のすべてをサポートしています。

  • LINQ to SQL
  • LINQ to Objects
  • LINQ to XML

LINQPadは、LINQの学習用として優れたツールでもあり、[the C# 3.0 in a Nutshellブック]からの200ものサンプルがあらかじめ組み込まれています。

例として、ツールやLINQのさまざまな使用方法のマニュアルがある。LINQPadでは、新しいデータベースの作成やデータベース接続の保存が可能で、それらは左側のツリービューに表示される。サンプルにはこれらのデータベースでデモテーブルを作成するためのコードが含まれている。クエリごとに接続データが保存されるため、クエリが再び開かれるたび、接続データが接続ツリーに再表示されることが保証される。

LINQPadはユーザーのホームディレクトリ内のフォルダ構造にクエリを保存する。したがって、コードスニペット(クエリ)を任意にグループ化することができる。

どのクエリも即座に実行、編集、拡張、再実行できる。クエリは単一の文に限られていない。任意の量の文で構成できる。ソースの全ステップの結果表示をサポートするために、LINQPadはDump()という拡張メソッドを提供している。Dump()は出力ビューでクエリ結果をダンプする。ダンプは呼び出し元のオブジェクトを返し、メッセージチェーン内でDump()を使用できるようにし、LINQクエリの全段階の結果をダンプする。

出力ビューは、結果、メソッドベースのクエリ、および生成されたSQL文の間で切り換え可能である。「ラムダ」ボタンは、linqクエリ式がどのようにメソッドベースのクエリに解決されたかを表示するビューに切り替える。「SQL」ボタンは、LINQ to SQLの使用時に、生成されたSQL文を表示する。

LINQPadも拡張可能である。高度なプロパティでは、さらなるアセンブリと名前空間を追加およびインポートできる。これにより、LINQPad内で独自のクラスおよび拡張メソッドを使用することが可能である!

LINQPadは現行リリースではインテリセンスをサポートしていませんが、今後のリリースではそれを最優先事項としている。

どちらのツールも、LINQについて理解を深める際に価値のある資産である。VLinqは、ビジュアルデザイナに慣れている、Visual StudioおよびLINQ to SQLを使用する開発者をサポートする。LINQPadは、F5を押してサンプルアプリケーションを実行する必要なく、LINQのあらゆる秘訣を探りたい人にとても役に立つツールである。

原文はこちらです:http://www.infoq.com/news/2008/04/linq-tooling

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。

Google Chartとgchartrbの紹介

Google Chartは、チャートを作成するためのWebサービスです。本稿では、Google Chartのインターフェースと、Rubyコードから簡単にチャートを生成することができるgchartrbライブラリの説明をします。

SOAを超えて: 動的な業務アプリケーションのための新しいエンタープライズアーキテクチャフレームワーク

全二回からなるこの記事では、ダイナミックビジネスアプリケーション(Dynamic Business Applications:DBAs)の開発についての全体的な眺望を、アーキテクチャと方法論の観点から見ていくことになります。我々のゴールは、「ビジネスの変化や、その他に必要とされる変更に対して、いかにして容易に適応できるアプリケーションを構築していくか」を導きだすことです。

ESB接続形態のオルタナティブ

本稿では、Adrien Louis氏がESBベースのSOAに対する2つの接続形態についての賛否について説明しています。その2つとは、会社での単一のESB対「部門毎」に相互接続するESBによるシステムです。

AjaxプログラマのためのJavaOne2008 -GrizzlyでComet!-

誕生から2年を経てCometは「何が出来るのか」という議論から、「いかに実現するか」という議論に関心が移ってきたように見えます。そこで本稿では同じくJavaOneで数多く取り上げられたNetBeans 6.1とGlassFish v3を使いながら、サンプルを交えてCometを解説していく事にします。

SharePoint Webサービスを始めましょう

この記事では、WSS3とMOSS 2007に難しい設定など一切せず、すぐに利用可能なWebサービスと、Javaと.NETからそのWebサービスを消費する方法に目を向けます。

レトロスペクティブのプライムディレクティブに対する問い

この記事の始まりは、知的で思慮深い人たちの魅力的なグループが食事会を終えて話をしているところです。話はレトロスペクティブ(振り返り)プロセスの要であるプライムディレクティブ(最初の指示)に及んでいます。