InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

LINQツール

作者 Hartmut Wilms , 翻訳者 編集部 投稿日 2008年4月24日

セクション
デベロップメント
トピック
.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

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。