プログラミングLINQ

以下の書籍が5/25に発売になります。 Paolo Pialorsi、Marco Russo著/小高太郎 監修 720ページ 価格:7,980円(税込み) ISBN:978-4-89100-618-1 発行元:日経BPソフトプレス 発行日:2009/05/25 http://ec.nikkeibp.co.jp/item/books/A05500.html この本は、とにかくLINQを網羅的にそして深くご紹介することをコンセプトにしています。LINQはシンタックスシュガーとして、内部実装を知らなくてもある程度は活用することが可能ですが、実際のシステムではそうもいかないことが多いでしょう。ある程度の内部までの理解をするために、こうした本を活用いただければと思います。 以下目次です。 第1章 LINQ入門 第2章 LINQ構文の基本 第3章 LINQ to Objects 第4章 LINQ to SQL:データへのクエリ実行 第5章 LINQ to SQL:データの管理 第6章 LINQ to SQLのためのツール 第7章 LINQ to DataSet 第8章 LINQ to Entities 第9章 LINQ to XML:XML Information Set (Infoset) の管理 第10章 LINQ to XML:ノードへのクエリ実行 第11章 インサイド…

10

Visual Studio 2008 ソリューションサンプルのビデオ公開中

こんにちは、こだかです。 今週のMSDN Flash ニュースレター(7/29日号)のトップ記事を書きましたが、今回も購読されていない方のために、ブログにも書いておきたいと思います。 ————————————————– Visual Studio 2008 ソリューション サンプル解説ビデオ Web 上で続々公開! 先月より、Visual Studio 2008 の活用ポイントを紹介する Visual Studio 2008 ソリューション サンプルを公開しましたが、今回、より詳細な解説を行う Web キャスト (ビデオ) を作成いたしました。 Visual Studio 2008 ソリューション サンプルの狙いは、Visual Studio 2008 に実装された新しいテクノロジが、実システムの中で「どのように優位であるのか?」あるいは、「どのような場面で使うべきなのか?」を実際のサンプル システムを見ていただくことで、ご理解いただく点にあります。 しかし、ソリューション サンプルのダウンロードを行ってみたものの、多くのプロジェクトやソース コードが存在して「知りたいポイントがぼやけてしまう」「作り込みの完成度が高すぎて…」と思われてしまった方のために、今回のビデオでは、使用テクノロジとして、ユーザー インターフェイス部分である WPF、ASP.NET AJAX、そしてサービスの構築部分では WCF、WF、さらにデータ アクセス部分では LINQ を中心に、テクノロジの切り口でポイントを絞り解説いたします。 なぜ、このテクノロジを選択するのか? どうして、このような設計になっているのか? そして、実際どのように使用するのか? など、新しいテクノロジを選定するにあたり疑問に思われる点をダウンロードいただける動くサンプル、解説ビデオ、ソース コードなどと共に、五感を通じて実感していただければと思います。 今後も解説ビデオは続々と公開される予定です。ぜひご期待ください。 •Visual Studio 2008 ソリューション サンプル…

2

ラムダ式で再帰表現を書いてみました

こんにちは、こだかです。 今回は、さあできること開発者セミナーのツアー中で出た話題 「ラムダ式で再帰表現を書いてみよう!」を書きたいと思います。 ラムダ式の元は関数言語からきていますので、考え方としては、再起表現はぴったり当てはまります。 例えば、指定された整数の和(n + n-1 + n-2 +…+1)を求める関数を定義してみます。 Func<int,int> func = null; func = x => x < 1 ? 0 : x + func(x – 1); ちょっと見慣れないかもしれないですね。 Func<int,int>は引数と戻り値がともにintである関数funcを宣言しています。 次にfuncの実装を行っており、「funcは引数xが1より小さかったら0、そうでない場合は x + f(x-1)を計算する」ことを表現したものです。 そうして、引数xの値が0になるまで、繰り返しの計算を行います。 呼び出してみます。ためしに1から10までの和を求めてみます。 MessageBox.Show(func(10).ToString()); 結果は当然55になります。何となく、ご理解頂けるでしょうか? では、これだけだと面白くないので、今度はI/Oを伴ったモノにしてみます。例としては、そうですねSinカーブの描画を行ってみたいとおもいます。 private void button1_Click(object sender, EventArgs e) {     pictureBox1.Image = null;     Bitmap bitmap =…

3

記事紹介(続き)

こんにちは、こだかです。 こだかはもうすぐシアトル出張の予定です。 外人に囲まれたディスカッションをくぐり抜け、最新情報を入手したいと思います。 (ちなみに、こだかは英語全く話せません。) 心配事はあと2つあります。 1.冬のシアトルの寒さ 非常に寒がりな私です。自宅では私だけ寒いので(家族には適温)、すぐに布団に入ってしまいます。そうすると睡魔が・・・ 6歳の娘より早く寝てしまうことも。 2.飛行機の乗り継ぎ 帰りの便がサンフランシスコ経由になってしまいました。 国内線も先日ようやく一人で乗れるようになったと言うのに・・・無事に日本に帰れるのでしょうか? と、そんなことはさておき、先日書きましたThinkITの記事の続きをご紹介します。 次世代データアクセステクノロジー 第3回:さまざまなデータソースへのアクセス http://www.thinkit.co.jp/free/article/0801/9/3/ 次世代データアクセステクノロジー 第4回:ADO.NET Entity Frameworkによるデータアクセス実装方法 http://www.thinkit.co.jp/free/article/0801/9/4/ 次世代データアクセステクノロジー 第5回:ADO.NET Entity FrameworkにおけるObjectServicesの使用 http://www.thinkit.co.jp/free/article/0801/9/5/ マイクロソフトが提示している、データアクセス手法は、ちょっと乱立気味と思われるかもしれませんが、 この記事で、少しでも整理をつけていただけたら幸いです。(こんなに読んでられないと言う人は、是非1回目を読んでみてください。) 今回書いた記事はこれで全てです、ご興味のある方はご確認ください。 こだかたろう


記事紹介

こんにちは、こだかです。 部署の引っ越しから1月立ちました。新しいオフィスは、初台駅にある東京オペラシティの45階で、とても落ち着いたよい環境です。マイクロソフト社内では、アルファベット3文字で省略することが非常に多く、ここはTOCと呼んでいます。この省略語を、皆知っているものとして、話にバンバン出してしまうのが始末の悪いところなんですよね。と、そんな話は置いておいて、先日ThinkITに記事を書きましたのでご紹介します。 次世代データアクセステクノロジー第1回:LINQとADO.NET Entity Frameworkhttp://www.thinkit.co.jp/free/article/0801/9/1/ 次世代データアクセステクノロジー第2回:LINQによるデータアクセス実装http://www.thinkit.co.jp/free/article/0801/9/2/ 今回の記事は、普段セミナーなどでお話させて頂く内容とは別の視点での解説を入れました。というのは、時間の都合などであまり話せない、テクノロジーの狙いを書きたかったからです。 ただ実際書きあげてみると、話が膨らみ過ぎて泣く泣くカットした部分が多かったのですが、そうして圧縮した記事が、大人の事情でさらに半分に・・・ 記事は全4回ですので、また後日ブログにてご紹介させていただきます。(2008/1/24追記:大人の事情その2で、全5回になりました。) ちなみに、記事にある写真は、東京モーターショーにて、DUCATIにまたがるこだかの顔です。豆知識です。 こだかたろう


いろいろご紹介

こんにちは、こだかです。 オフラインセミナーも終わりまして、ようやく新しい情報をキャッチアップできるようにと思っていた矢先ですが、前述のVS2008のイベント準備などもあり、思うように時間がとれません。いきなりグチっぽいですね、済みません。と言うのも最近ADO.NET Team blogが、なにやらあわただしくリリースを重ねており、早く確認したくてウズウズしているからなんです。 まずはこれ。以前Astoriaと言っていたものです。こんな名前になったんですね。ADO.NET Data Services CTP(http://blogs.msdn.com/adonet/archive/2007/12/10/ado-net-data-services-ctp-released.aspx) 実際追加するのはこちらになります。ASP.NET 3.5 Extensions Preview(http://www.microsoft.com/downloads/details.aspx?FamilyId=A9C6BC06-B894-4B11-8300-35BD2F8FC908&displaylang=en)ここには、ASP.NET Dynamic Data, Silverlight controls for ASP.NET, ADO.NET Data Services, Entity Framework runtime,  new features for ASP.NET AJAXなどなど、いろいろ盛りだくさんです。そしてここから、LINQ to ADO.NET Data Servicesと言う発想が生まれてきます。つまりLINQ to RESTです。(http://blogs.msdn.com/aconrad/archive/2007/12/10/linq-to-rest.aspx)これは、ぜひセミナーのネタにしたいですね。時間が取れれば、こちらもこのブログで紹介したいのですが、申し訳ありません。 次に、Entity Data Model Designer  CTP 2のビデオです(http://download.microsoft.com/download/e/4/6/e463f1bf-51c6-420b-babd-63a52b899f3b/SprocsDemo.wmv)これは、私も早急に確認しなければならないです。以前からどのように変わっているのか興味深いですね。 話は180度変わりますが、先日カップヌードルRefillの話をこのブログに書きました。(http://blogs.msdn.com/tarok/archive/2007/11/14/6206859.aspx)その中で、チキンラーメンが作れるか?を実験すると書いたのですが、セミナーでお会いした複数の方にリクエストを受けたこともあり、今回実験ページ(http://kodaka.info/msdnoffline/20071217/exp.htm)を書かせて頂きました。興味のある方(いるんでしょうか?)よかったら見て下さい。 こだかたろう

5

LINQ to SQL内での関数の使用

こんにちは、こだかです。今回は、LINQ to SQL構文内部での関数の使用について書いておきます。例として以下をご覧ください。        static void Main(string[] args)        {            using (pubsDataContext pubs = new pubsDataContext())            {                pubs.Log = Console.Out;                var titles = from t in pubs.titles                             where t.type == Test(“business”)                             select t;                foreach (var title in titles) Console.WriteLine(title.title_id);            }        }        static string Test(string arg1)        {            return arg1;        }この例は問題なく動作します。しかし、以下のようにすると、初めてのforeachのタイミングでエラーになります。        static void Main(string[] args)        {            using (pubsDataContext pubs…

1

Visual Studio 2008 Beta2 バーチャル ラボが公開されました

こんにちは、こだかです。 すでに、MSDN Flashでご報告しているのですが、Visual Studio 2008 Beta2 バーチャル ラボが公開されました。今回作成したものは、以下の2つです。 MSDN バーチャル ラボhttp://www.microsoft.com/japan/msdn/virtuallabs/・Visual Studio 2008 ワークショップ : LINQ を活用したデータ アクセス プログラミング・Visual Studio 2008 ワークショップ : WCF と WF の統合 私もレビューに参加したのですが、非常によくまとまった内容になっています。ただ、コーディング量が比較的ありますので、初めに、マニュアルをよく読んでから取り掛かることをお勧めします。 こだかたろう


【ADO.NET Entity Framework】LINQ to Entityの使用

こんにちは、こだかです。 前回に引き続きまして、EntityDataModel(EDM)に対するクエリーをご紹介します。 1.EntityClientを直接扱う方法 ・・・EntitySQL2.ObjectQueryから問い合わせをかける方法 ・・・EntitySQL ・・・Query builder メソッド ・・・Linq to Entity今回は2のObjectService(ObjectQuery)をLINQからクエリーしてみます。 LINQは様々なデータソースを扱うことができる言語埋め込み型のクエリーですが、他のソース(Object,XML等)と同じようにEntityモデル自体を扱うことが可能です。ObjectService経由で使用するのですが、型に注意して下さい。前回の例ではObjectQuery<T>型になりましたが、LINQを使用した場合、IQueryable<T>型になります。(もしくはLINQ to Object等で使用するIEnumerable <T>)当然ながらObjectQuery<T>型のメンバを使用したい場合などは、キャストする必要があります。 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.Common;using System.Data.EntityClient;using pubsModel;using System.Data.Objects; namespace EF1{    class Program    {        static void Main(string[] args)        {            using (pubsEntities pubsContext = new pubsEntities())            {                var emps = from x in pubsContext.employee                             where x.fname == “Maria”                             orderby x.lname                             select x;                 foreach…

1

ADO.NET Entity Framework Beta 2がリリースされました

こんにちは、こだかです。 次期ADO.NETであるADO.NET Entity Framework Beta 2がリリースされました。(http://www.microsoft.com/downloads/details.aspx?FamilyId=F1ADC5D1-A42E-40A6-A68C-A42EE11186F7&displaylang=en)詳細はADO.NET team blogを参照して下さい。(http://blogs.msdn.com/adonet/archive/2007/08/27/entity-framework-beta-2-the-1st-entity-framework-tools-ctp-released.aspx)同時に、Entity Framework Tools CTPもリリースされています。(http://www.microsoft.com/downloads/details.aspx?FamilyId=09A36081-5ED1-4648-B995-6239D0B77CB5&displaylang=en) 軽く使用してみましたが、概念モデルのXMLファイル(※)が、拡張子edmxファイルとして存在し(中身は従来のXMLと同等)、Entity Designer というビジュアルデザイナーを使用してデザインすることが可能になっています。また、ObjectQueryからLinq to Entityを使用してみましたが、こちらも問題なく動作します。当たり前といえば当たり前ですが、今まで動作させるのに非常に苦労しましたので・・・ Entity Designer以外にもツールがVisual Studioに統合されますので、ご興味のある方はご確認いただければと思います。 (※)CSDL : 概念スキーマ定義言語(CSDL : Conceptual Schema Definition Language)MSL : マッピングスキーマ言語(MSL : Mapping Schema Language)SSDL ストアスキーマ定義言語(SSDL : Conceptual Schema Definition Language) 注意)インストールにはVidual Studio 2008の英語版が必要です。日本語版の場合、新しい項目の追加にADO.NET Entity Data Modelが表示されませんのでご注意下さい。 こだかたろう

4