fc2ブログ

OCamlをつつく11-条件判断。関数でも判定は必要!

今度はif文をつつくよ。関数型言語は命令型言語と思考が違いすぎると思う人も多いと思うけど、条件判定が必要な事実は変わらないからif文をつっつくピヨ。


let x = 10;;
if x > 10 then print_string "true" else print_string "false";;
let x = 20;;
if x > 10 then print_string "true" else print_string "false";;


このプログラムを実行してみて。if文の動きがわかりやすいと思うピヨ。if 条件結果がtrue(真)ならば thenブロックのプログラムが実行されて、 結果がfalse(偽)ならば elseブロックのプログラムが実行されるんだ。
これでif文はほとんどマスターしたのと同じだけど、面白くないから意地悪プログラムを書いてみたピヨ。こんなこと思いつくなんて、ドリィちゃんと似てきたのかな?


let x = 20
if x > 10 then print_string "true";;

let x = 1;;
if x > 10 then print_string "true";;


このようにelseは省略できるんだ。 だけど、上記サンプルの2つ目のif文は動作がおかしくなるよ。 何故かと言うと、elseブロックを実行したいのにそれがないからなんだ。 つまり、絶対にtrueと分かっている時のみelseを省略できるんだ。でもそんな状況は滅多にないからelseブロックは必ず書こう
ところで、今までのサンプルプログラムはtrueブロックもelseブロックも1行だったけど、複数行の場合はどうすると思う?答えはこれだよ。


if x = 10 then 
  begin
    print_string "true\n";
    print_string "true";
  end
else 
  print_string "false";;


この手品のネタが分かったかな?そう、beginendキーワードで 実行文を挟むんだ。 あっ、それと、print_stringの最後の;に気をつけてね。 この場合はいるピヨ。 このようにif文は命令言語ぽい構文だからすぐに慣れると思うピヨ。 これでif文はおしまい。 おつかれー。


バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

テーマ : プログラミング
ジャンル : コンピュータ

書籍をつつく4-すぐに使える実例で学ぶLINQ実践サンプル集。サンプルが欲しい方はお勧め。

ボクは日課としてインターネット上の本屋をチェックするんだけど、役立つかもしれない本を発見したピヨ。
すぐに使える実例で学ぶLINQ実践サンプル集―ASP.NET3.5対応
ボクはまだ買っていないけど、サンプル系統は目次を見れば分かると思うから紹介するピヨ。
目次は次の通りだよ。

■目次
第1章 Visual Studio 2008および
    Visual Web Developer 2008 Express Editionを使う前に
1-1 開発/動作環境の整備
1-2 Visual Studio 2008の新しい機能
1-3 本書収録のCD-ROMの使い方
1-4 Windowsホスティングサービス

第2章 LINQを使った.NETプログラミングの基本
   -LINQ実践サンプル集を試す前の予備知識-
2-1 新規Webサイトのプロジェクトの構成
2-2 XMLファイル(使用するデータ)の追加と新しいフォルダの作成方法
2-3 XMLの基本
2-4 LINQの構文
2-5 本書で扱っているデータ

第3章 GridViewコントロールでのLINQクエリの処理
3-1 GridViewコントロールにLINQで抽出したデータをバインドする
   (ページングなし)
3-2 GridViewコントロールにLINQで抽出したデータをバインドする
   (ページング付き)
3-3 GridViewコントロールにLINQで抽出したデータをバインドして
   編集する
3-4 GridViewコントロールにLINQで抽出したデータをバインドし、
   編集/削除する(Join句使用)
3-5 GridViewコントロールにLINQで抽出したデータをバインドして
   FormViewで編集する
3-6 GridViewコントロールにLINQで抽出したデータをバインドして
   編集、削除する(XmlDataSource使用)
3-7 GridViewコントロールにLINQで抽出したデータをバインドして
   数量と価格の合計を出す(Sum演算子使用)
3-8 ListBoxより選択された品名の詳細データを表示する
   (Distinct演算子使用)
3-9 GridViewコントロールにLINQで抽出したデータをバインドして
   編集する(Group By句使用)
3-10 GridViewの編集時にカレンダーを表示し、選択した日付を反映させる
3-11 要素のXMLを属性のXMLに変換してデータをGridViewにバインドする
  (XmlDataSource使用)
3-12 2つのXMLを結合してGridViewに表示する(Union演算子使用)
3-13 XMLデータ内から別のXMLに記録されたXMLデータを削除し、
  GridViewに表示する(Except演算子使用)
3-14 2つのXMLに共通するデータを取り出し、GridViewに表示する
  (Intersect演算子使用)

第4章 ListViewコントロールでのLINQクエリの処理
4-1 ListViewコントロールにLINQを使ってXMLデータをバインドする
4-2 ListViewコントロールに手動でDataPagerコントロールをレイアウトする
4-3 ListViewコントロールにLINQを使ってデータをバインドし、
      データの追加編集を行う
4-4 LINQを使って、ListViewコントロールのデータを削除する

第5章 DetailsViewコントロールでのLINQクエリの処理
5-1 XML文書からLINQを使ってデータを抽出し、
   DetailsViewにバインドする
5-2 XML 文書からLINQを使ってデータを抽出し、
   DetailsViewにバインドして編集する
5-3 XML文書からLINQを使ってデータを抽出し、
   DetailsViewにバインドして削除を実行する
5-4 LINQを使ってXML文書から任意のデータを検索し、
   DetailsView コントロールに表示する

第6章 DataListコントロールでのLINQクエリの処理
6-1 DropDownListより選択した条件に該当するデータを、
   LINQを使ってDataListにバインドする
6-2 DataListに表示された「品名」を選択し、LINQを使って詳細データを表示して
      編集、削除を実装する
6-3 DataListにLINQを使って表示されたデータを編集する
6-4 DataListのデータをLINQでソートし、選択した品名の詳細データを表示する

第7章 FormViewコントロールでのLINQクエリの処理
7-1 FormViewにLINQを使ってXMLデータをバインドする
7-2 LINQを使って、FormViewから新規データをGridViewに追加する
7-3 FormViewにLINQを使ってバインドされたデータを編集する
7-4 FormViewにLINQでXPathを使ってデータをバインドする

第8章 SQL Serverデータベースを使ったLINQクエリの処理
8-1 SQL ServerデータをGridViewコントロールにバインドする
   (LinqDataSource使用)
8-2 SQL ServerデータをGridViewコントロールにバインドし、
   データの追加、編集、削除を行う(LinqDataSource使用)
8-3 SQL ServerデータをFormViewコントロールにバインドし、
   データの追加、編集、削除を行う(LinqDataSource使用)
8-4 IDをキーに2つのSQL Serverデータを結合して編集する
8-5 IDをキーにXMLとSQL Serverデータを結合し、
   「数量」を編集する(LinqDataSource不使用)
8-6 ListViewコントロールにデータをバインドし、追加、
   編集、削除を行う(LinqDataSource使用)

第9章 LINQ to Objectを使ったLINQクエリの処理
9-1 リストに格納されているオブジェクトにLINQでアクセスし、
  GridViewに表示する
9-2 リストに格納されているオブジェクトデータから、
  LINQでXMLデータを作成しGridViewに表示する
9-3 リストに格納されている2つのオブジェクトデータをIDキーで結合し、
  GridViewに表示する


ボクはそれほどLINQを使っているわけではないから、まだ必須アイテムかどうかの判断は出来ないから、この目次を検討してこの技が知りたいと思った人は買ったらいいと思うピヨ。あまり急いで買うものではないと思うからじっくり検討してね。

テーマ : パソコン関連お役立ち情報
ジャンル : コンピュータ

OCamlをつつく10-比較演算子。やっぱ必要ピヨォツ。

OCamlが関数型言語だからといっても比較は絶対必要だから、初期段階でつついていこう。比較演算については言葉よりも見た方が早いので、毎度同じみ~♪サンプルプログラムでござーる♪

let x = 10;;
let y = 10;;
y = x;;
y <> x;;

let x = 100;;
let y = 90;;
x > y;;
y < y;;

let x = 200;;
let y = 200;;
x >= y;;
x <= y;;;

比較演算子についてはOCamlも素直で、=記号は等価<>記号は不等価という点に注意したら後はすぐになれるピヨ。 みじかいけどこれで、おわ
ドリィちゃん「排他的論理和!」

let x = true;;
let y = true;;
not x = y ;;

let y = false;;
not x = y ;;

えっと・・・排他的論理和が出来るって事だよね?ドリィちゃん。
ドリィちゃん「そう」
排他的論理和というのは、 二つのビットが等しい場合はfalse 等しくない場合はtrueを返す天邪鬼な論理演算の事なんだピヨ。 ちょっと変わっているよね(笑)でも必要な場合があるから馬鹿にしちゃ駄目だよ。 バイナリを扱うときの必須アイテムだから覚えておこう。 画像処理とかにも多用するからゲームが作りたい人は排他的論理和と友達になろう!!

テーマ : プログラミング
ジャンル : コンピュータ

OCamlをつつく9-論理演算。やっぱ必須だね♪

次は何をつつこうかかなり迷ったけど、ひとまずプログラミングの必須アイテム論理演算をつつくピヨ。 当然OCamlにも論理演算は用意されているよ。早速見てみよう!

let x = true;;
x && false;;
x || false;;
not x;;

これについてはもういいよね?もし論理演算自体について分からない事があれば、今後言語全般のカテゴリで論理演算をつつくからそれを見てね。さっくり、おしまい。
ドリィちゃん「OCamlに排他的論理和が足りなぃぃ・・・」

テーマ : プログラミング
ジャンル : コンピュータ

書籍をつつく3-プログラミング Microsoft Visual Basic 2005 言語編。余裕があればしばし待たれよ!

前回C#2005についての書籍を紹介したら、今度はVB.NET2005についての良書を紹介するピヨ。ボクが良書と思ったのはやっぱり公式解説書である、
プログラミング Microsoft Visual Basic 2005 言語編〈上〉 (マイクロソフト公式解説書)
プログラミングMicrosoft Visual Basic2005 言語編〈下〉 (マイクロソフト公式解説書)
ピヨ。でも購入には十分注意してね。というのも昨今はVB.NET2008の書籍が洋書で売り出されているからなんだ。だからどうしても今現在VB.NETの詳しい情報が必要な方や、2008で追加された構文をMSDNで見ることが出来る方 が買ってね。でも慌てないのならば購入は見送った方が得策だよ。じゃあ目次をアップするね。

プログラミングMicrosoft Visual Basic 2005 言語編 上

目次


謝辞
はじめに

第1部 基礎
-------------------------------------------------
第1章 .NET Frameworkの紹介
 1.1 .NET用語集

第2章 言語の基本概念
 2.1 モジュール、クラス、名前空間
   2.1.1 モジュール
   2.1.2 クラス
   2.1.3 名前空間
   2.1.4 属性
 2.2 変数
   2.2.1 宣言と代入
   2.2.2 データ型
   2.2.3 演算子
   2.2.4 配列

第3章 フロー制御とエラー処理
 3.1 実行フローの制御
   3.1.1 条件文とループ文
   3.1.2 プロシージャ
   3.1.3 コマンド、関数、定数
 3.2 エラー処理
   3.2.1 例外のスロー
   3.2.2 Try...Catch...Finally文
   3.2.3 Using...End Using文
   3.2.4 カスタム例外オブジェクト

第4章 Visual Studio 2005の使用
 4.1 プロジェクトとソリューション
   4.1.1 プロジェクトテンプレートとファイルテンプレート
   4.1.2 [ソリューションエクスプローラ]ウィンドウ
   4.1.3 [My Project]デザイナ
   4.1.4 複数のプロジェクトで構成されるソリューション
   4.1.5 構成マネージャ
   4.1.6 コンパイラ関連の属性
 4.2 コードの記述
   4.2.1 コードエディタ
   4.2.2 XMLコメント
   4.2.3 検索と置換
   4.2.4 ブックマーク
   4.2.5 [エラー一覧]ウィンドウと[タスク一覧]ウィンドウ
   4.2.6 コードスニペット
   4.2.7 コードのリファクタリング
 4.3 その他の新機能と既存の機能
   4.3.1 ツールウィンドウの操作
   4.3.2 設定のインポートとエクスポート
   4.3.3 プロジェクトテンプレートと項目テンプレート
   4.3.4 オンラインコンテンツへのアクセス
   4.3.5 カスタマイズ機能
   4.3.6 マクロとコマンド

第5章 Visual Basicアプリケーションのデバッグ
 5.1 デバッグテクニック
   5.1.1 ブレークポイントとトレースポイント
   5.1.2 ステップ実行
   5.1.3 データヒントとビジュアライザ
   5.1.4 例外への対処
 5.2 トレースとベンチマーク
   5.2.1 DebugクラスとTraceクラス
   5.2.2 TraceSourceクラス
   5.2.3 My.Application.Logオブジェクト
   5.2.4 StopWatchクラス
 5.3 単体テスト
 5.4 その他のデバッグ/テストテクニック
   5.4.1 Debuggerオブジェクト
   5.4.2 StackTraceオブジェクト
   5.4.3 ゾーン内デバッグ機能
   5.4.4 Visual Studioホスティングプロセス
   5.4.5 デバッグ用のマクロ
   5.4.6 さまざまな構成ファイルのテスト

第2部 オブジェクト指向プログラミング
-------------------------------------------------
第6章 クラスの基礎
 6.1 フィールド
 6.2 メソッド
   6.2.1 メソッドのオーバーロード
   6.2.2 オーバーロードと強制変換
   6.2.3 あいまいなケース
 6.3 プロパティ
   6.3.1 読み取り専用プロパティと書き込み専用プロパティ
   6.3.2 GetブロックとSetブロックのスコープ
   6.3.3 引数をとるプロパティ
   6.3.4 既定のプロパティ
 6.4 コンストラクタ
   6.4.1 コンストラクタのオーバーロード
 6.5 共有メンバ
   6.5.1 共有メソッド
   6.5.2 共有フィールド
   6.5.3 共有プロパティ
   6.5.4 共有コンストラクタ
   6.5.5 共有ファクトリメソッド
 6.6 部分クラス
 6.7 演算子のオーバーロード
   6.7.1 Operatorキーワード
   6.7.2 オーバーロード可能な演算子
   6.7.3 CType演算子のオーバーロード
   6.7.4 ほかの言語との相互運用性
 6.8 Visual Studioの型の管理
   6.8.1 [クラスビュー]ウィンドウ
   6.8.2 [クラスデザイナ]ウィンドウ
   6.8.3 [オブジェクトテストベンチ]ウィンドウ

第7章 デリゲートとイベント
 7.1 デリゲート
   7.1.1 デリゲートの宣言
   7.1.2 デリゲートの呼び出し
   7.1.3 デリゲートクラスのその他のメンバ
   7.1.4 コールバックメソッドとコードの再利用
   7.1.5 マルチキャストデリゲート
 7.2 イベント
   7.2.1 Handlesキーワードによるイベントの処理
   7.2.2 WithEventsキーワード
   7.2.3 イベントとデリゲートの仕組み
   7.2.4 AddHandlerキーワード
   7.2.5 配列およびコレクションからのイベントの捕捉
   7.2.6 イベントの公開
   7.2.7 イベントの構文に関するガイドライン
   7.2.8 カスタムイベント

第8章 継承
 8.1 継承の基礎
   8.1.1 派生クラスの使用
 8.2 基本クラスのメンバのオーバーライド
   8.2.1 さまざまなオーバーライド
   8.2.2 MyBaseキーワード
   8.2.3 派生クラスのコンストラクタ
   8.2.4 MyClassキーワード
   8.2.5 メンバのシャドウ
   8.2.6 共有メンバの再定義
 8.3 シールクラスと抽象クラス
   8.3.1 NotInheritableキーワード
   8.3.2 MustInheritキーワード
   8.3.3 MustOverrideキーワード
 8.4 スコープ
   8.4.1 ネストクラス
   8.4.2 Public、Friend、Privateスコープ限定子
   8.4.3 Protectedスコープ限定子
   8.4.4 Protected Friendスコープ限定子
   8.4.5 コンストラクタでのスコープ限定子の使用
   8.4.6 イベントの再定義
 8.5 ビジュアル継承
   8.5.1 基本フォームの例
   8.5.2 派生フォームの例
   8.5.3 基本フォームへのプロパティ、メソッド、イベントの追加

第9章 オブジェクトの有効期間
 9.1 ガーベージコレクション
   9.1.1 COMと参照カウンタ
   9.1.2 ガーベージコレクションの仕組み
   9.1.3 Finalizeメソッド
   9.1.4 Disposeメソッド
   9.1.5 DisposeメソッドとFinalizeメソッドの併用
   9.1.6 Dispose-Finalizeパターンの改良
   9.1.7 派生クラスのファイナライザ
   9.1.8 ファイナライザの単純化
 9.2 高度なテクニック
   9.2.1 ジェネレーション
   9.2.2 ガーベージコレクションとパフォーマンス
   9.2.3 オブジェクトの弱い参照
   9.2.4 オブジェクトの再生
   9.2.5 CPUを複数搭載したコンピュータでのガーベージコレクション

第10章 インターフェイス
 10.1 インターフェイスの定義と実装
   10.1.1 Interface ... End Interfaceブロック
   10.1.2 インターフェイスの実装
   10.1.3 インターフェイスへのアクセス
   10.1.4 インターフェイスと継承
   10.1.5 インターフェイスの再実装
   10.1.6 インターフェイスとポリモーフィズム
 10.2 .NETインターフェイスの使用
   10.2.1 IComparableインターフェイス
   10.2.2 IComparerインターフェイス
   10.2.3 ICloneableインターフェイス
   10.2.4 IDisposableインターフェイス
   10.2.5 コレクションクラスの作成

第11章 ジェネリクス
 11.1 ジェネリクスの必要性
   11.1.1 従来の解決策
   11.1.2 ジェネリクスに基づく解決策
 11.2 ジェネリック型の作成
   11.2.1 ジェネリックパラメータ
   11.2.2 ジェネリック制約
 11.3 高度なテーマ
   11.3.1 Nullable型
   11.3.2 算術演算子のサポート
   11.3.3 ジェネリクスとイベント
   11.3.4 オブジェクトプール

索引

プログラミングMicrosoft Visual Basic 2005 言語編 下

謝辞
はじめに

第3部 .NET Frameworkでのプログラミング
-------------------------------------------------
第12章 .NET Frameworkの基本型
 12.1 System.Objectクラス
   12.1.1 PublicメソッドとProtectedメソッド
   12.1.2 値型と参照型
   12.1.3 ボックス化とボックス化解除
 12.2 String型
   12.2.1 プロパティとメソッド
   12.2.2 足りないメソッド
   12.2.3 文字列の最適化
   12.2.4 CultureInfoクラス
   12.2.5 Encodingクラス
   12.2.6 数値の書式設定
   12.2.7 日付と時刻の書式設定
   12.2.8 Char型
   12.2.9 StringBuilderクラス
   12.2.10 SecureStringクラス
 12.3 数値型
   12.3.1 プロパティとメソッド
   12.3.2 数値の書式設定
   12.3.3 文字列から数値への変換
   12.3.4 Convertクラス
   12.3.5 乱数ジェネレータ
 12.4 DateTime型
   12.4.1 日時の加算と減算
   12.4.2 日時の書式設定
   12.4.3 日時の解析
   12.4.4 タイムゾーン
   12.4.5 TimeZoneクラス
   12.4.6 Guid型
 12.5 列挙型
   12.5.1 Enum型の値の表示と解析
   12.5.2 Enum型のその他のメソッド
   12.5.3 ビットフィールド値

第13章 配列とコレクション
 13.1 Arrayクラス
   13.1.1 要素のソート
   13.1.2 要素のクリア、コピー、移動
   13.1.3 値の検索
   13.1.4 ジャグ配列
   13.1.5 ジェネリックメソッド
 13.2 System.Collections名前空間
   13.2.1 ICollectionインターフェイス、IListインターフェイス、
        IDictionaryインターフェイス
   13.2.2 ArrayListクラス
   13.2.3 Hashtableクラス
   13.2.4 SortedListクラス
   13.2.5 その他のコレクション
   13.2.6 厳密に型指定されたコレクションのための抽象クラス
 13.3 ジェネリックコレクション
   13.3.1 Listジェネリッククラス
   13.3.2 Dictionaryジェネリッククラス
   13.3.3 LinkedListジェネリッククラス
   13.3.4 その他のジェネリックコレクション
   13.3.5 System.Collections.ObjectModel名前空間

第14章 正規表現
 14.1 正規表現の概要
   14.1.1 基礎
   14.1.2 正規表現言語
   14.1.3 正規表現オプション
 14.2 正規表現クラス
   14.2.1 Regexクラス
   14.2.2 MatchCollectionクラスとMatchクラス
   14.2.3 Groupクラス
   14.2.4 CaptureCollectionクラスとCaptureクラス
 14.3 正規表現に基づくプログラミング
   14.3.1 正規表現の共通パターン
   14.3.2 単語と引用符で囲まれた文字列の検索
   14.3.3 文字列、数値、日付の検証
   14.3.4 ネストしたタグの検索
   14.3.5 データファイルの解析
   14.3.6 式の解析と評価
   14.3.7 コードの解析
   14.3.8 正規表現遊び

第15章 ファイル、ディレクトリ、ストリーム
 15.1 Pathクラス
 15.2 DirectoryクラスとFileクラス
   15.2.1 ディレクトリとファイルの列挙
   15.2.2 ディレクトリとファイルの操作
   15.2.3 ファイルの読み取りと書き込み
 15.3 DirectoryInfoクラスとFileInfoクラス
 15.4 DriveInfoクラス
 15.5 FileSystemWatcherクラス
   15.5.1 FileSystemWatcherオブジェクトの初期化
   15.5.2 通知
 15.6 ACLの操作
   15.6.1 アカウント名とセキュリティID
   15.6.2 DirectorySecurityクラスとFileSecurityクラス
   15.6.3 ACLの変更
 15.7 Streamクラス
   15.7.1 ストリームの操作
   15.7.2 ストリームリーダーとストリームライター
   15.7.3 テキストファイルの読み取りと書き込み
   15.7.4 バイナリファイルの読み取りと書き込み
   15.7.5 固定長のデータファイルと文字区切りのデータファイルの操作
 15.8 その他のストリームクラス
   15.8.1 メモリストリーム
   15.8.2 文字列ベースのストリーム
   15.8.3 ネットワークストリーム
   15.8.4 バッファストリーム
   15.8.5 圧縮ストリーム

第16章 My名前空間
 16.1 My名前空間の概要
   16.1.1 My.Applicationオブジェクト
   16.1.2 My.Computerオブジェクト
   16.1.3 My.Userオブジェクト
   16.1.4 My.Resourcesオブジェクト
   16.1.5 My.Settingsオブジェクト
   16.1.6 My.FormsオブジェクトとMy.WebServicesオブジェクト
 16.2 My名前空間の拡張とカスタマイズ
   16.2.1 トップレベルオブジェクトの追加
   16.2.2 My.ApplicationオブジェクトとMy.Computerオブジェクトの拡張
   16.2.3 My.Resourcesオブジェクトの拡張
   16.2.4 My.Settingsオブジェクトの拡張
   16.2.5 コンパイル定数の使用

第17章 アセンブリとリソース
 17.1 コンポーネント
   17.1.1 .NETクラスライブラリの作成
   17.1.2 ホスト可能なコンポーネントの作成
 17.2 アセンブリ
   17.2.1 プライベートアセンブリと共有アセンブリ
   17.2.2 厳密な名前
   17.2.3 GACへのインストール
   17.2.4 アセンブリレベルの属性
   17.2.5 InternalsVisibleTo属性
 17.3 リソースとサテライトアセンブリ
   17.3.1 マニフェストリソース
   17.3.2 リソースのローカル化
   17.3.3 厳密に型指定された文字列リソースのローカル化
   17.3.4 カスタムリソースファイル
   17.3.5 サテライトアセンブリ
   17.3.6 サテライトアセンブリの属性
 17.4 バインディングプロセス
   17.4.1 アプリケーション構成ファイルのバージョンポリシー
   17.4.2 ロード済みのアセンブリとGACの検索
   17.4.3 コードベースヒント
   17.4.4 プローブ
   17.4.5 アセンブリバインディングログビューア
 17.5 構成ファイル
   17.5.1 CLRのバージョンの設定
   17.5.2 .NET Framework Configurationユーティリティ
 17.6 NGenユーティリティ
   17.6.1 NGenユーティリティの使用
   17.6.2 NGenサービスの使用
   17.6.3 ネイティブイメージのデバッグ
   17.6.4 NGenユーティリティの属性

第4部 高度なプログラミング
-------------------------------------------------
第18章 リフレクション
 18.1 アセンブリとモジュールの操作
   18.1.1 Assemblyクラス
   18.1.2 AssemblyNameクラス
   18.1.3 Moduleクラス
 18.2 型の操作
   18.2.1 Typeオブジェクトの取得
   18.2.2 Typeクラスのメンバの取得
   18.2.3 ジェネリクスでのリフレクション
   18.2.4 属性でのリフレクション
   18.2.5 カスタムオブジェクトブラウザの作成
 18.3 実行時のリフレクション
   18.3.1 オブジェクトの動的な生成
   18.3.2 メンバへのアクセス
   18.3.3 InvokeMemberメソッド
   18.3.4 共通コンパーラの作成
   18.3.5 イベントハンドラの動的な登録
   18.3.6 アクションシーケンスのスケジューリング
   18.3.7 その場でのコンパイル
   18.3.8 パフォーマンスの問題
   18.3.9 セキュリティの問題

第19章 カスタム属性
 19.1 カスタム属性の紹介
   19.1.1 カスタム属性クラスの作成
   19.1.2 カスタム属性でのリフレクション
 19.2 CSV直列化のためのカスタム属性
 19.3 ベンチマークツールの作成
 19.4 Windowsフォームアプリケーションのプラグインの作成
   19.4.1 PluginLibraryプロジェクト
   19.4.2 MainApplicationプロジェクトとMainApplicationStartupプロジェクト
   19.4.3 SamplePluginプロジェクト
 19.5 n層アプリケーションのフレームワーク
   19.5.1 DataObjectLibraryプロジェクト
   19.5.2 DataSetsプロジェクト
   19.5.3 DemoClientプロジェクト
   19.5.4 DataObjectsプロジェクト

第20章 スレッド
 20.1 スレッドの基礎
   20.1.1 スレッドを使用する状況
   20.1.2 スレッドの生成
   20.1.3 スレッドとのデータの受け渡し
   20.1.4 スレッドの操作
   20.1.5 スレッドのプロパティ
   20.1.6 データの保存と共有
   20.1.7 スレッドと未処理の例外
   20.1.8 スレッドのデバッグ
 20.2 スレッドの同期
   20.2.1 SyncLock文
   20.2.2 同期オブジェクト
   20.2.3 揮発的な読み取りと書き込み
   20.2.4 Monitorクラス
   20.2.5 Mutexクラス
   20.2.6 Semaphoreクラス
   20.2.7 ReaderWriterLockクラス
   20.2.8 Interlockedクラス
   20.2.9 ManualResetEventクラス、AutoResetEventクラス、
        EventWaitHandleクラス
 20.3 スレッドプールの使用
   20.3.1 ThreadPoolクラス
   20.3.2 Timerクラス
 20.4 非同期操作
   20.4.1 非同期デリゲート
   20.4.2 非同期のファイル操作
   20.4.3 カスタムクラスへの非同期サポートの追加
 20.5 Windowsフォームアプリケーションでのスレッディング
   20.5.1 ISynchronizeInvokeインターフェイス
   20.5.2 BackgroundWorkerクラス

第21章 直列化
 21.1 基本的な直列化
   21.1.1 バイナリ直列化
   21.1.2 SOAP直列化
   21.1.3 Serializableクラスの作成
   21.1.4 オブジェクトグラフ
   21.1.5 直列化とイベント
   21.1.6 オブジェクトのディープコピー
   21.1.7 Version-Tolerant Serialization(VTS)
 21.2 ユーザー定義の直列化
   21.2.1 IDeserializationCallbackインターフェイス
   21.2.2 ISerializableインターフェイス
   21.2.3 直列化イベントと逆直列化イベント
   21.2.4 IObjectReferenceインターフェイス
   21.2.5 ISerializationSurrogateインターフェイス
   21.2.6 直列化が不可能なクラスの継承

第22章 PInvokeとCOM Interop
 22.1 PInvokeの使用
   22.1.1 Declareキーワード
   22.1.2 DllImport属性
   22.1.3 データのマーシャリング
   22.1.4 MarshalAs属性
   22.1.5 StructLayout属性
   22.1.6 FieldOffset属性
   22.1.7 デリゲートとコールバックプロシージャ
   22.1.8 In属性とOut属性
   22.1.9 Marshalクラス
 22.2 .NETからのCOMコンポーネントの呼び出し
   22.2.1 Runtime Callable Wrapper(RCW)
   22.2.2 Visual StudioでのCOMコンポーネントのインポート
   22.2.3 インポートされたInteropアセンブリの使用
   22.2.4 TlbImpでのCOMコンポーネントのインポート
   22.2.5 Primary Interop Assembly(PIA)
   22.2.6 登録なしのCOMコンポーネント
   22.2.7 実行時バインディングとリフレクション
   22.2.8 COM Interopのマーシャリング
   22.2.9 スレッドの問題
 22.3 COMからの.NETオブジェクトの呼び出し
   22.3.1 COM Callable Wrapper(CCW)
   22.3.2 サンプル.NETコンポーネントの作成
   22.3.3 RegAsmユーティリティとTlbExpユーティリティ
   22.3.4 変換の詳細
   22.3.5 変換を制御する属性
   22.3.6 例外の操作
   22.3.7 COMを考慮した.NET Frameworkコンポーネントの作成

索引


この書籍の魅力はなんていっても情報量ピヨ。でもC#の場合と同じく、初心者こそこのような書籍がいいと思うピヨ。というのも、初心者のときは下手な入門書を読んだら 知識の欠落が生じる場合があるがあるピヨ。 そのような事態になったら知らないことを知らないまますごしてしまう危険があるよ。そうなってしまったら後は大変だから、この本を元に書籍の見る目を肥やそう
他にこの書籍が必要だと思うのはやはりプロだピヨ。プロは情報量が多くなければ務まらないから、まずは情報を確保する目的で購入し、辞書代わりに使う事をお勧めするピヨ。もちろん、世暇があったら目次だけでも見てね。その方が技術力がUPするのは間違いないよ。
ボクの好みから言うとC#の方よりもこっちの方が好きピヨ。というのも、目的がしっかりして情報量が多いからね。でも併読が必要なのは間違いないよ。その理由はこの本だけじゃあ楽習しにくいからだよ。 どうやったらこの本で楽習出来るのかはこのブログで今後紹介していくピヨ。お楽しみに♪

テーマ : パソコン関連お役立ち情報
ジャンル : コンピュータ

中の人の徒然草50

今頃と吃驚されると思いますがAmazonアフリエイトというものを最近知ったのでやってみました。 情報処理技術に書籍は付き物なので、いつか自分の蔵書を紹介しようと思っていた所、毎日チェックしているAmazonでこのシステムを発見したので興味が沸きました。
Amazonアフリエイトのリンクを張ると、私が紹介した書籍が売れた場合にポイントか現金をもらえるそうです。私の場合は無類の本好きなので迷わずポイントを選択しました。現金って何か嫌なものです。私のブログで本を買ってもらって現金を貰うというのは私のポリシーに反します。ですから、本を買ってもらってポイントが溜まったら違う本を買って、そのレビューや情報をするつもりです。もし私にポイントが渡るのが嫌な方は、リンクをクリックせずにグーグルなどを経由して本を買ってください。
話しは変わりますが、今関数言語の書く順番について迷っています。命令型言語と同じ順序で説明したら駄目です。かといって、どうしたらいいものやら・・・まだ私には分かりません。それが原因で投稿記事がここ数日少なくなってごめん。いざとなったら、また命令型言語の記事を書きます。【気まぐれ】がこのサイトの方針ですしね♪
最後にお知らせです、明日CodeZineに投稿した私の記事が載る予定です。是非見てください。第3回はC#とはぜんぜん違う展開になるのでお楽しみに。では明日また会いましょう。

テーマ : 裏事情
ジャンル :

書籍をつつく2-プログラミングMicrosoft Visual C# 2005 言語編。全てはここから始まる。

C#を自由自在に操りたい人が読むべきなのは
プログラミング Microsoft Visual C# 2005 言語編 (マイクロソフト公式解説書)
ピヨ。リンク先はAmazonだよ。先ずは目次を見てみよう。
※余裕がある人はC#2008年度版を待とう

はじめに

第1部 基本概念

第1章 Visual C#プログラミングの概要
 1.1 言語のルーツ
 1.2 C#言語の中核機能
  1.2.1 シンボルとトークン
  1.2.2 キーワード
  1.2.3 プリミティブ型
 1.3 C#のサンプルプログラム
 1.4 名前空間
 1.5 Mainエントリポイント
 1.6 ローカル変数
 1.7 null許容型
 1.8 式
 1.9 選択ステートメント
 1.10 繰り返しステートメント
 1.11 クラス

第2章 クラスと型
 2.1 クラス
  2.1.1 クラスメンバ
  2.1.2 メンバメソッド
 2.2 構造体
 2.3 列挙体
  2.3.1 ビット単位の列挙
 2.4 同一性と等価性
 2.5 クラスの改変

第3章 継承
 3.1 継承の例
 3.2 System.Object
  3.2.1 Object.Equalsメソッド
  3.2.2 Object.GetHashCodeメソッド
  3.2.3 Object.GetTypeメソッド
  3.2.4 Object.ToStringメソッド
  3.2.5 Object.MemberwiseCloneメソッド
  3.2.6 Object.ReferenceEqualsメソッド
 3.3 Employeeクラス
 3.4 継承の実装
  3.4.1 アクセス修飾子
 3.5 オーバーライド
  3.5.1 virtualとoverrideキーワード
  3.5.2 オーバーロードとオーバーライド
  3.5.3 イベントのオーバーライド
 3.6 new修飾子
 3.7 抽象クラス
 3.8 シールクラス
 3.9 コンストラクタとデストラクタ
 3.10 インターフェイス
  3.10.1 インターフェイスの実装
  3.10.2 インターフェイスメンバの明示的な実装
  3.10.3 インターフェイスの再実装
 3.11 ポリモーフィズム
  3.11.1 インターフェイスのポリモーフィズム
  3.11.2 new修飾子とポリモーフィズム
 3.12 キャスト
  3.12.1 継承演算子
 3.13 属性の継承
 3.14 Microsoft Visual Studio 2005

第2部 基本スキル

第4章 Visual Studio 2005の概要
 4.1 統合開発環境
  4.1.1 スタートページ
  4.1.2 コミュニティの統合
  4.1.3 プロジェクトの作成
  4.1.4 ソリューションエクスプローラ
  4.1.5 参照の追加
  4.1.6 [データ]メニュー
  4.1.7 Visual Studioでのウィンドウの管理
  4.1.8 自動バックアップ
 4.2 クラス階層
  4.2.1 クラスビュー
  4.2.2 オブジェクトブラウザ
  4.2.3 クラスダイアグラム
  4.2.4 継承
  4.2.5 関連付け
  4.2.6 クラスダイアグラムのチュートリアル
  4.2.7 エラー一覧
 4.3 コードエディタ
  4.3.1 IntelliSense
  4.3.2 ブロックの挿入
  4.3.3 フォントと色の設定
  4.3.4 ソースコードの書式設定
  4.3.5 変更の追跡
  4.3.6 プロファイル
 4.4 コードスニペット
  4.4.1 コピーと貼り付け
  4.4.2 コードスニペットの挿入
  4.4.3 既定のスニペット
  4.4.4 コードスニペットマネージャ
  4.4.5 スニペットの作成
 4.5 リファクタリング
  4.5.1 リファクタリングのチュートリアル
 4.6 ビルドと配置
 4.7 MSBuild
  4.7.1 項目
  4.7.2 プロパティ
  4.7.3 タスク
  4.7.4 プロジェクトファイル 
  4.7.5 MSBuildのチュートリアル
 4.8 ClickOnceの配置
  4.8.1 ClickOnceアプリケーションの発行
 4.9 配列とコレクション

第5章 配列とコレクション
 5.1 配列
  5.1.1 配列の要素
  5.1.2 多次元配列
  5.1.3 ジャグ配列
  5.1.4 System.Array
  5.1.5 System.Arrayのプロパティ
  5.1.6 paramsキーワード
  5.1.7 配列の変換
 5.2 コレクション
  5.2.1 ArrayListコレクション
  5.2.2 BitArrayコレクション
  5.2.3 Hashtableコレクション
  5.2.4 Queueコレクション
  5.2.5 Stackコレクション
  5.2.6 特殊なコレクション
 5.3 ジェネリック

第6章 ジェネリック
 6.1 ジェネリック型
  6.1.1 型パラメータ
  6.1.2 構築型
 6.2 ジェネリックメソッド
  6.2.1 メソッドのオーバーロード
  6.2.2 ジェネリック型のthis参照
 6.3 制約
  6.3.1 派生制約
  6.3.2 インターフェイス制約
  6.3.3 値型制約
  6.3.4 参照型制約
  6.3.5 コンストラクタ制約 
 6.4 キャスト
 6.5 継承 
  6.5.1 メソッドのオーバーライド 
  6.5.2 入れ子にされた型
 6.6 静的メンバ 
  6.6.1 演算子のオーバーロード
  6.6.2 シリアル化
  6.6.3 ジェネリックの内部構造
  6.6.4 ジェネリックコレクション
 6.7 列挙子

第7章 反復子
 7.1 列挙可能なオブジェクト
 7.2 ジェネリック列挙子
 7.3 反復子
 7.4 デリゲートとイベント

第3部 高度な機能

第8章 デリゲートとイベント
 8.1 デリゲート
  8.1.1 デリゲートの定義
  8.1.2 デリゲートの生成
  8.1.3 デリゲートの起動
  8.1.4 デリゲート配列
  8.1.5 非同期呼び出し
  8.1.6 非同期デリゲートダイアグラム 
  8.1.7 例外
 8.2 匿名メソッド
  8.2.1 外部変数
  8.2.2 ジェネリック匿名メソッド
  8.2.3 匿名メソッドの制限
 8.3 イベント
  8.3.1 イベントの発行
  8.3.2 イベントの受信
  8.3.3 イベント発生
 8.4 例外処理

第9章 例外処理
 9.1 例外の例  
 9.2 一般的な例外のモデル
 9.3 構造的な例外処理
  9.3.1 tryステートメント
  9.3.2 catchステートメント
  9.3.3 finallyステートメント
  9.3.4 例外情報テーブル
  9.3.5 入れ子にされたtryブロック 
 9.4 System.Exception 
  9.4.1 System.Exceptionのメソッド
  9.4.2 System.Exceptionのプロパティ
  9.4.3 アプリケーション例外
  9.4.4 例外の変換
  9.4.5 COMの相互運用性の例外
 9.5 リモート例外
 9.6 処理されない例外
  9.6.1 Application.ThreadExceptionイベント
  9.6.2 AppDomain.UnhandledExceptionイベント
 9.7 Visusl Studioにおける例外の管理
  9.7.1 例外処理アシスタント
  9.7.2 [例外]ダイアログボックス
 9.8 メタデータとリフレクション

第4部 デバッグ

第10章 メタデータとリフレクション
 10.1 メタデータ
  10.1.1 トークン
  10.1.2 メタデータヒープ
  10.1.3 ストリーム
  10.1.4 メタデータ検証
  10.1.5 ILDASMツール
 10.2 リフレクション
  10.2.1 Typeオブジェクトの取得
  10.2.2 アセンブリの読み込み
  10.2.3 型情報の検索
  10.2.4 動的呼び出し
  10.2.5 型の生成
  10.2.6 遅延バインディングのデリゲート
  10.2.7 メソッド呼び出しのパフォーマンス
 10.3 リフレクションとジェネリック
  10.3.1 IsGenericプロパティとIsGenericTypeDefinitionプロパティ
  10.3.2 typeof演算子
  10.3.3 GetTypeメソッド
  10.3.4 GetGenericTypeDefinitionメソッド
  10.3.5 GetGenericArgumentsメソッド
  10.3.6 ジェネリック型の生成
  10.3.7 リフレクションのセキュリティ
  10.3.8 属性
  10.3.9 カスタム属性の作成
  10.3.10 属性とリフレクション
 10.4 MSIL

第11章 MSIL プログラミング
 11.1 "Hello World"アプリケーション
 11.2 評価スタック
 11.3 MSILの詳細
 11.4 複合タスク
 11.5 分岐
 11.6 配列
 11.7 算術命令
 11.8 プロセス実行
 11.9 Visual Studio 2005によるデバッグ

第12章 Visual Studio 2005によるデバッグ
 12.1 デバッグの概要
  12.1.1 Windowsフォームプロジェクトのデバッグ
  12.1.2 デバッグの構成
  12.1.3 デバッグ設定
  12.1.4 Visual Studioのデバッグ用インターフェイス
  12.1.5 ブレークポイント
  12.1.6 コードのステップ実行
  12.1.7 [デバッグ]ツールバー
  12.1.8 デバッグウィンドウ
  12.1.9 トレース
  12.1.10 DebuggerDisplayAttributeクラス
  12.1.11 ダンプファイル
 12.2 高度なデバッグ

第13章 高度なデバッグ
 13.1 DebuggableAttribute属性
 13.2 デバッガ
 13.3 JIT(Just-In-Time)デバッグ
 13.4 マネージデバッガ 
  13.4.1 MDbgチュートリアル
  13.4.2 MDbgコマンド
 13.5 WinDbg
  13.5.1 WinDbgの基本的なコマンド
 13.6 Son of Strike(SOS)
  13.6.1 SOSチュートリアル-Part I
  13.6.2 SOSチュートリアル-Part II
 13.7 ダンプ
  13.7.1 ADPlus
  13.7.2 ワトソン博士
 13.8 メモリ管理
  13.8.1 参照ツリー
  13.8.2 ジェネレーション
  13.8.3 ファイナライゼーション
  13.8.4 パフォーマンスモニタ
 13.9 スレッド
  13.9.1 スレッドコマンド
 13.10 例外
 13.11 シンボル
  13.11.1 Symsrvシンボルサーバー
  13.11.2 アプリケーションシンボル
 13.12 メモリ管理

第5部 高度な概念

第14章 メモリ管理
 14.1 アンマネージリソース
  14.1.1 ガベージコレクションの概要
  14.1.2 GCの実行モード
 14.2 ファイナライザ
 14.3 IDisposable.Dispose
  14.3.1 Disposableパターン
  14.3.2 Disposableパターンの検討事項
  14.3.3 内部オブジェクトの破棄
 14.4 弱い参照
  14.4.1 弱い参照の内部
  14.4.2 WeakReferenceクラス
  14.4.3 重大なファイナライザオブジェクト
  14.4.4 CER
  14.4.5 アンマネージリソースの管理
 14.5 GCクラス
 14.6 安全でないコード

第15章 アンセーフコード
 15.1 unsafeキーワード
  15.1.1 ポインタ
  15.1.2 ポインタによるパラメータと戻り値
  15.1.3 プラットフォーム呼び出し
 15.2 まとめ

付録 演算子のオーバーロード
 A-1 算術演算子と論理演算子
  A-1-1 実装
  A-1-2 インクリメント演算子およびデクリメント演算子
  A-1-3 左シフト演算子および右シフト演算子
  A-1-4 trueおよびfalse
  A-1-5 ペアでオーバーロードする演算子
 A-2 変換演算子
  A-2-1 文字列演算子
 A-3 実際の例
 A-4 演算子のオーバーロードの内部の動き


どう?目次を見ただけでC#に詳しくなる事が分かるよね。でも、一つの書籍が全ての消費者に答えられるわけはないので、ボクがこの書籍を必要とすると思う人を考えたピヨ。
先ず考えられるのはC#の初心者ピヨ。初心者はこのページ数に圧倒されると思うけど、 下手に初心者用の本を読んでも同じぐらいのページ数を読む事になるピヨ。それに、安物買いの銭失いとなるピヨ。それに初心者の人はよく誤解しているけど、本当に必要としているのは初心者用と題名の本ではないピヨ。その辺を注意してね。もしかしたら、この本を読んでも分からなくて、もっと簡単な本が欲しくなる時もあると思う。だけど、何が分からないのか知らないといけないのでこの書籍が適しているピヨ。
次に考えられるのはC#のプロピヨ。よくこの本の目次を見て欲しい。ツールの説明が多いピヨ。そこが逆にいいんだ。というのも、業務では開発ツールを使用するから、ツールの説明が多い方が助かるんだ。しかもそのツールは、MSBuild コードスニペットILDASMとプロが使うべきものなんだよ。しかもMSILについて書かれている数少ない書籍だからプロにお勧めするピヨ。
今までお勧めする人を書いたけど、公平なレビューをするには逆の場合も書かなければいけないから辛口で書くよ。この書籍の弱点は、ディープな人にとっては中途半端な事ピヨ。具体的に言うと、MSBuildはそれ一冊がかけるほど深いから、たったこれだけのページでマスター出来ないピヨ。もちろん、MSILについても然りで、このページ数では本当にMSILを必要としている人には情報が足りなすぎる。おまけに言語の構文についても中途半端さが感じられる。 だから、C#を既にバリバリ使いこなしている人には向かないと思う。
纏めると、初心者や明日の業務にC#を使いたいプロにとっては本書は適しているけども、既にC#をバリバリ使いこなしていて、個別のディープな内容を求めている人には向かないとボクは思うピヨ。どうせならば、MSBuildとMSILは別の書籍を用意して、ツールの説明に徹した本か、構文に徹した本にすれば理想的ピヨ。でも、それらの本が出版されたらこの本が糊本となるかもしれないね。

テーマ : パソコン関連お役立ち情報
ジャンル : コンピュータ

中の人の徒然草49

今日はあまりオキャムリF#ルもしませんでした。といのも、昨日かなり前から注文していた書籍をつつく1-LINQテクノロジ入門。この本から一歩を踏み出そう。が届いたからです。OCamlとF#をつつくは楽しいのですが、やっぱりLINQも気になって書籍を速読してしまいました。私はいつも、速読して大まかなインデックスを脳内に構築してから精読しますので、まだまだ理解が足りませんが、暫く経ったら「C#を咥えてLINQをつつく(仮題)」とかで、フルスクラッチの記事を書こうと思っています。
実は初めLINQは「埋め込みSQLだろ」と思ったから興味がなかったのですが、わんくま同盟勉強会のLINQのセッションにWebで参加して興味が湧きました。そして、このLION本を見て吃驚しました。というのも、私が昔極秘で作った発明品と似ているところがあったからです。
今となっては強奪したり、盗もうとする者がいないだろうから告白しますが、ちょうどVB6.0でADOを触ったときに不満を多々感じて、私はADO.NETモドキ+LINQで作ったO/Rラッパーみたいなものを作っていました。それから、個人が特許を出しても意味がなく盗まれるだけだいう事実を知ってから、墓の下に持っていこうと考えていましたので、マイクロソフトがADO.NETを発表したときは単純にうれしく思いました。というのも、自分の発明よりもやはり上手く実装されていたからです。それは2002年の出来事でした。でも、私は不満でした。マイクロソフトの技術力を持ってすればO:/Rマッパー的要素とLIONモドキなどさっさと実装できるはずなのにとね。そのときの私の発明の名前はDataLifeCycleGeneratorでした。全てがオブジェとで構成され、データライフサイクルに基づいたデータオブジェクトをテーブルから生成して、そのコードをO/Rマッパー(この時はO/Rマッパーという名前はなかった)を使って他の研究をしていました。因みにVB6.0では完全なオブジェクト指向ではなかったので、のちに2002年にC#へ乗り換えました。 そのようにしてさらに6年待って漸くLIONがマイクロソフトから発表されました。墓の下に持って行こうと考えていた自分の技術に似たものが、マイクロソフトが実装してくれた事をうれしく感じております。自分で実装するのは楽しかったのですが、私の腕は未熟ゆえやはりマイクロソフトの方が完成度が高く、開発ツールのサポートもあるからです。これで漸く隠さず面前でデータ中心アプローチ+オブジェクト指向+メタデータ指向プログラミングできます。開放感を感じます。とはいえ、LIONに更新と消滅が足りないのは不満です。一刻も早く実装して欲しいです。マイクロソフトの優秀さを考慮すると、それほど難しくないと思うのですが何故実装していないのでしょう?
LIONは自分の発明と似ているので習得はたぶん簡単だと思います。近いうちに記事を書くと思いますのでお楽しみに。ではまた明日お会いしましょう。

テーマ : 裏事情
ジャンル :

書籍紹介記事の目次ー.NETプログラミング

.NETテクノロジーに関する書籍紹介ページの目次ピヨ♪


【言語】
【技術基盤】
【個別技術】

テーマ : パソコン関連お役立ち情報
ジャンル : コンピュータ

書籍をつつく1-LINQテクノロジ入門。この本から一歩を踏み出そう。

ひとまず第一弾は最新刊を紹介しするピヨ。その書籍は
LINQテクノロジ入門~Microsoft Visual Studio 2008による新たなクエリ構築技法~ (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ)
ピヨォ。リンク先はAmazonだよ。
気になる目次は次の通り。


第1章	LINQ概要
1.1	LINQとは何か
    1.1.1	LINQの全体像
    1.1.2	最も簡単なLINQ to SQLによるデータアクセス
    1.1.3	内部動作の概要
    
    1.2	LINQ to SQLによるクエリ記述
    1.2.1	特定データ列の選択
    1.2.2	BCLを利用した検索条件の指定
    1.2.3	リレーションシップを利用したデータ取得

    1.3	LINQ to Objectsによるクエリ記述
    1.3.1	オブジェクトコレクションに対するクエリ記述
    1.3.2	データセットに対するクエリ記述

    1.4	LINQの特徴
    1.4.1	2つの論理データモデリング手法のトレードオフ
    1.4.2	データモデリング手法から見たLINQの意味
    1.4.3	DBMLファイルの位置付け

    1.5	現状のLINQの制限事項
    1.5.1	n件一括同時更新に関する制限事項
    1.5.2	トランザクション制御に関する制限事項
    1.5.3	.NET Framework 3.5世代におけるLINQの活用方法

    1.6	LINQ概要 - まとめ

第2章	LINQの基盤技術
2.1	C# 3.0とVB 9.0
    2.1.1	Visual Studio 2008の.NET Frameworkバージョン選択機能
    2.1.2	C# 3.0とVB 9.0

    2.2	拡張メソッド
    2.2.1	拡張メソッドとは何か
    2.2.2	拡張メソッド方式の狙い
    2.2.3	System.Linq名前空間の拡張メソッド

    2.3	自動型推定と匿名データ型
    2.3.1	自動型推定機能
    2.3.2	匿名データ型
    2.3.3	自動型推定と匿名データ型の狙い
    2.3.4	自動プロパティとオブジェクト初期化子
	
    2.4	ラムダ式
    2.4.1	処理ロジック引き渡しの必要性
    2.4.2	デリゲートによる処理ロジックの引き渡し
    2.4.3	匿名メソッドによる処理ロジックの引き渡し
    2.4.4	ラムダ式による処理ロジックの引き渡し
    2.4.5	ラムダ式の狙い

    2.5	LINQの基盤技術 - まとめ

第3章	LINQ処理の基本的な考え方
    3.1	LINQ処理の基本的な考え方
    3.1.1	コレクションパイプライン処理の考え方
    3.1.2	int[]型データ配列に対する集計処理の場合
    3.1.3	エンティティオブジェクトコレクションに対する集計処理の場合
    3.1.4	エンティティオブジェクトコレクションに対する絞り込み処理の場合
    3.1.5	エンティティオブジェクトコレクションに対する射影処理の場合
    3.1.6	自動型推定と匿名データ型を活用する場合

    3.2	LINQ処理の2種類の記述方法
    3.2.1	拡張メソッド方式と埋め込みクエリ方式
    3.2.2	2種類の記述方法の使い分け

    3.3	様々なデータに対するLINQ処理
    3.3.1	LINQ to Objects / LINQ to DataSet
    3.3.2	LINQ to SQL

    3.4	LINQ処理の基本的な考え方 - まとめ

第4章	LINQによるデータ参照処理
    4.1	LINQによるデータ参照処理の分類
    
    4.2	以降の解説で利用するサンプルアプリケーション
    4.2.1	Visual Studio 2008のセットアップ
    4.2.2	サンプルデータベースのダウンロード
    4.2.3	テスト用プロジェクトの作成
    4.2.4	Visual Studio 2008のオプションの変更
    4.2.5	DBMLファイルの準備
    4.2.6	LINQ to SQLの動作確認

第5章	LINQによるデータ参照処理1 基本操作処理
    5.1	フィルタリング処理(.Where())
    5.1.1	基本的な使い方
    5.1.2	リレーションシップを使った検索条件の指定
    5.1.3	遅延ロード機能とクエリ発行タイミングに関する注意点
    5.1.4	文字列データの大小比較の記述方法

    5.2	射影処理(.Select())
    5.2.1	基本的な使い方
    5.2.2	クエリの記述順序による発行T-SQL文の変化
    5.2.3	BCL処理のT-SQL変換に関する注意点
    5.2.4	リレーションシップを活用した射影処理
    5.2.5	その他のTips & Tricks

    5.3	ソート処理(.OrderBy()、.ThenBy())
    5.3.1	基本的な使い方
    5.3.2	計算結果に基づくソート処理

    5.4	単一値集計処理(.Count(), .Sum(), .Average(), .Min(), .Max())
    5.4.1	基本的な使い方
    5.4.2	グループ集計処理
    5.4.3	埋め込みクエリ方式による記述の制限について

    5.5	読み飛ばし処理(.Take(), .Skip())
    5.5.1	基本的な使い方
    5.5.2	発行されるT-SQL文の特徴

    5.6	LINQによるデータ参照処理1 基本操作処理 - まとめ

第6章	LINQによるデータ参照処理2 グループ化処理と結合処理
    6.1	グループ化処理(.GroupBy())
    6.1.1	基本的な使い方
    6.1.2	埋め込みクエリ方式での記述方法
    6.1.3	様々なグループ化処理の例
    6.1.4	複合キーによるグループ化処理

    6.2	内部結合処理(.Join()処理)
    6.2.1	基本的な使い方
    6.2.2	埋め込みクエリ方式を利用する場合の記述方法
    6.2.3	LINQにおける結合処理の考え方
    6.2.4	リレーションシップが存在しないテーブル間での.Join()処理
    6.2.5	その他のTips & Tricks

    6.3	グループ化結合処理(.GroupJoin())
    6.3.1	基本的な使い方
    6.3.2	埋め込みクエリ方式での記述方法
    6.3.3	リレーションシップが存在する場合の.GroupJoin()処理の記述
    6.3.4	.Join()処理と.GroupJoin()処理の違い
    6.3.5	外部結合処理への.GroupJoin()処理の応用(参考)

    6.4	LINQによるデータ参照処理2 グループ化処理と結合処理 - まとめ	

第7章	LINQによるデータ参照処理3 コレクション変換処理
    7.1	コレクションへの変換処理
    7.1.1	基本的な使い方

    7.2	動的配列への変換処理(.ToList()メソッド)
    7.2.1	基本的な使い方
    7.2.2	.ToList()処理を利用する代表的なケース

    7.3	LINQによるデータ参照処理3 コレクション変換処理 - まとめ	

第8章	LINQ Tips & Tricks
    8.1	LINQ to SQLデバッグ用ビジュアライザ
    8.1.1	LINQ to SQLクエリビジュアライザの利用方法
    8.1.2	ファイルアタッチデータベースにおけるSQLプロファイラの利用方法

    8.2	遅延ロード機能
    8.2.1	遅延ロード機能の概要
    8.2.2	遅延ロード機能の注意点
    8.2.3	データロードオプションの活用
    8.2.4	実際の開発における注意点

    8.3	ラムダ式の展開
    8.3.1	LINQにおける2つのコレクション - IEnumerableとIQueryable
    8.3.2	ラムダ式変換の2つのパターン
    8.3.3	ラムダ式変換パターンの決定メカニズム
    8.3.4	インターフェイスによる内部動作の違い
    8.3.5	AsEnumerable()拡張メソッドとAsQueryable()拡張メソッド	
    8.3.6	実際の開発時のコーディングガイドライン

    8.4	楽観同時実行制御機能つきデータ更新機能
    8.4.1	楽観同時実行制御機能つきデータ更新機能の概要
    8.4.2	内部動作処理モデル
    8.4.3	機能上の制限事項

    8.5	LINQ to SQLを利用したBC/DAC開発時の注意点
    8.5.1	戻り値のデータ構造の明示的な定義の必要性
    8.5.2	.ToList()拡張メソッドによるデータ取り込みの必要性	
    8.5.3	LINQ to SQLでBCやDACを作成する場合のコーディングガイドライン

    8.6	LinqDataSourceコントロール
    8.6.1	開発するサンプルアプリケーションについて
    8.6.2	WebサイトプロジェクトでのLINQ to SQLの利用準備
    8.6.3	DropDownListへのLinqDataSourceコントロールのバインド
    8.6.4	GridViewへのLinqDataSourceコントロールのバインド
    8.6.5	サンプルアプリケーションの実行結果について

    8.7	LINQ Tips & Tricks - まとめ


今この本を読んでいる最中なんだけど、一言で言うと分かり易いピヨ。流石、赤間氏!この本を読めばLINQの基礎がいち早く身につく事間違いなし。ただ、一つ残念なのは、濃さが足りない事ピヨ。このことについては、著者自身が前置きに書いてあるように、執筆時期やLINQ自身が不完全という問題もあるし、入門と明記してあるからいいんだけど、図と開発ツールを多用しているからもっとサンプルコードが欲しかったとボクは思う。でもあくまでもボクがプログラミングジャンキーだということを考慮してね。大半の人はこの本を読んで、実践を積み重ねればいいと思うピヨ。あと、生成されるMSILについての具体的な説明が欲しかったピヨ。プログラミング言語毎に差異があると書かれているから余計に気になるピヨ!
まぁ、何はともあれ現時点ではこの本は買いピヨォッ
続編のもっとディープな本も出して欲しい。

【総評】
  • 対象読者・・・LINQの初心者。現時点ではほとんどの人がそうだと思うピヨ。
  • ディープさ・・・残念ながら入門用だからあまり濃くない。
  • 得られる経験値・・・完読すれば通常は困らないピヨ。だから、数レベルぐらいはUP出来るといえる。ただし、LINQそのものが不完全だからその辺で躓くピヨ。だからどこでどう使うべきなのかはこの本を読むべし!
  • 対象言語・・・C#とVB.NET。C++/CLIも欲しいよぉー。
  • サンプルコード数・・・残念ながら少ない。開発ツールを多用しているピヨ。ボクの希望を言えば、フルスクラッチして欲しいな。

テーマ : パソコン関連お役立ち情報
ジャンル : コンピュータ

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター