[完全版]C# 実践ダイナミックプログラミング
2011年9月16日紙版発売
川俣晶 著
B5変形判/328ページ
定価3,168円(本体2,880円+税10%)
ISBN 978-4-7741-4833-5
ただいま弊社在庫はございません。
書籍の概要
この本の概要
C# 4.0で特徴的なことのひとつに「ダイナミックな(動的な)」プログラミングが可能ということが挙げられます。本書は,処理系のバージョンアップにより選択可能となった開発技法をメインに据えるような切り口で解説していますが,今回の柱は,(1)C# 4.0の特徴の解説,(2)リフレクション(従来のバージョンでも可能だった動的プログラミング),(3)新しい型(C# 4.0ならではの動的プログラミング)の3つです。特に(3)に関しては,簡単な動的プログラミング言語のC#へのトランスレーターを作成して,これをサンプルソースとします。
こんな方におすすめ
- C#プログラマー
- これからC#をマスターしようとする学生など
目次
Introduction 動的とは何か?
- 1 「動的」の定義
- 2 簡単な例
- 3 インタープリタと動的
- 4 リフレクションと動的
- 5 なぜ動的であるべきなのか?
- 6 本書の「動的」へのアプローチ
Part 1 C# 4.0入門
Chapter1 世界は動的
- 1-1 C# 4.0がやってきた
- 1-2 リスクの正体
- 1-3 C#進化の問題
- 1-4 ソースコードは腐る
- Chapter1 まとめ
- Chapter1 練習問題
Chapter2 dynamic型
- 2-1 dynamic型の機能
- 2-2 ダックタイピング
- 2-3 dynamic型と匿名型
- 2-4 dynamic型と動的言語
- Chapter2 まとめ
- Chapter2 練習問題
Chapter3 タスク並列ライブラリ
- 3-1 いまはどういう時代なのか?
- 3-2 単純に2 コアを使う
- 3-3 本当にコアを活用しているのか?
- 3-4 foreach文をパラレルに
- 3-5 for文をパラレルに
- 3-6 パラレルへの発想の転換
- Chapter3 まとめ
- Chapter3 練習問題
Chapter4 Taskクラス
- 4-1 Taskクラスの基本的な使い方
- 4-2 準備が終わったら次はこれやっといて
- 4-3 待てといわれて待つヤツがいるぞ
- Chapter4 まとめ
- Chapter4 練習問題
Chapter5 PLINQ
- 5-1 天は自らタスクるものをタスク
- 5-2 PLINQの例
- 5-3 PLINQのワナ
- Chapter5 まとめ
- Chapter5 練習問題
Chapter6 引数の省略と順番の変更
- 6-1 C#の弱点といえば
- 6-2 属性の省略の事例
- 6-3 引数の省略
- 6-4 可変値は指定不可能
- 6-5 定数の正しい意味
- 6-6 無効値選定の重要性
- 6-7 引数の順番の変更
- 6-8 ピンポイントで指定せよ
- Chapter6 まとめ
- Chapter6 練習問題
Chapter7 Office連携でrefキーワード不要
- 7-1 Wordの悪夢
- 7-2 なぜこんなことに?
- 7-3 refキーワードの省略と引数の省略
- 7-4 dynamic型の価値
- 7-5 名前付きの引数
- 7-6 補足:64ビットは問題にならない
- Chapter7 まとめ
- Chapter7 練習問題
Chapter8 in/outキーワードと共変性と反変性
- 8-1 共変/反変 ―in/outの関係について
- 8-2 ジェネリック使用時の制約
- 8-3 実は単純ではないジェネリック
- 8-4 in/outキーワードの使いどころ
- 8-5 両方同時に使えるか?
- 8-6 返却値ではない返却に注意
- Chapter8 まとめ
- Chapter8 練習問題
Chapter9 DynamicObjectを継承したダイナミックなクラス
- 9-1 状態を保管する
- 9-2 ダイナミックに解決せよ!
- 9-3 ダイナミックなクラスは便利か?
- 9-4 動的なメソッド
- 9-5 動的な演算子
- Chapter9 まとめ
- Chapter9 練習問題
Chapter10 ExpandoObjectを継承した動的拡張できるクラス
- 10-1 もう1つの解決方法
- 10-2 このコードは是か非か?
- 10-3 値の列挙
- 10-4 値のチェック
- 10-5 LINQでクエリする
- 10-6 メンバーの削除
- 10-7 メソッドモドキの追加
- Chapter10 まとめ
- Chapter10 練習問題
Chapter11 C# 4.0の使いどころはどこか?
- 11-1 C# 4.0をなぜ私は使うのか?
- 11-2 乗り換え可能なTFS 2010
- 11-3 Visual Studio 2010,C# 4.0,.NET Frameworkのメリット
- 11-4 C# 3.0でもよい場合
- 11-5 C# 2.0でもよい場合
- 11-6 C# 1.xはもうやめよう
- 11-7 分水嶺はどこにあるのか?
- 11-8 パラダイムはひっくり返った
- 11-9 パラダイムはもう1回ひっくり返る
- Chapter11 まとめ
- Chapter11 練習問題
- 【コラム】Turbo Pascal の思い出
Part 2 リフレクションによるプラグインの設計と実装
Chapter1 動的に拡張可能なゲームプログラムANGF
- 1-1 ANGFの概要
- 1-2 ソースコードの歴史
- 1-3 ANGFのモジュール構成
- 1-4 ファイルの配置
- 1-5 レジストリの配置
- 【コラム】String.Emptyの上書き
Chapter2 スタートアップ
- 2-1 プライベート検索パスの設定
- 2-2 アプリケーションドメインを作り直す
- 2-3 ANGFStart.exeのProgram.cs
Chapter3 Mainメソッド
- 3-1 Main メソッド
Chapter4 FormMain_Loadメソッド
- 4-1 メソッドの概要
- 4-2 FormMain_Loadメソッド
Chapter5 MyXmlDocメソッドとモジュール定義ファイル
- 5-1 MyXmlDocクラス
Chapter6 SeekModulesメソッド
- 6-1 SeekModulesメソッド
Chapter7 startupSubメソッド
- 7-1 UIの動的生成
- 7-2 オーダーをキャプチャ
- 7-3 アクセラレータ文字
- 7-4 汎用のメニュー追加
- 7-5 フォームはどこだ?
Chapter8 SimpleNameクラス
- 8-1 オブジェクトの置き換えという問題
- 8-2 重複チェックの選択という問題
- 8-3 所属モジュールの明示
- 8-4 重複チェックの本体
- 8-5 ID経由のオブジェクトの参照
- 8-6 SimpleName
クラスとSimpleNameLookUpクラス
Chapter9 Scenarios.Loadメソッド
- 9-1 アセンブリをロードする方法
- 9-2 型の探索とインスタンス化
- 9-3 Scenarios.Loadメソッド
Chapter10 ANGFLib.Moduleクラス
- 10-1 IDが2種類ある問題
- 10-2 モジュールの名前の問題
- 10-3 ANGFLib.Moduleクラス
Chapter11 RunScenarioMainメソッド
- 11-1 Invokeの問題
- 11-2 UI.Actionsの問題
- 11-3 実行と終了
- 11-4 RunScenarioMainメソッド
Chapter12 PlaceFrontMenu.MainLoopメソッド
- 12-1 スケジュールされたイベント
- 12-2 メインメニューの構築開始
- 12-3 人の情報の収集
- 12-4 場所の固有のメニュー
- 12-5 汎用のメニューの追加
- 12-6 移動とサブ移動
- 12-7 2種類あるメニュー
- 12-8 メインループが終わるとき
Chapter13 DynamicBuildAssembly.CreateAssemblyメソッド
- 13-1 大まかな処理の流れ
- 13-2 ポイントは参照
- 13-3 小さなトリック
- 13-4 " "と@" "の問題
- 13-5 Line指令の問題
- 13-6 DynamicBuildAssembly.cs
Chapter14 Flagsクラス
- 14-1 FlagCollection
の特異性 - 14-2 Flags.cs
Chapter15 Load/Save メソッド
- 15-1 AutoCollect.WalkAllメソッド
- 15-2 Load/Saveメソッド
- 【コラム】LoadFromの憂鬱
Chapter16 Generalクラス
- 16-1 ディレクトリの問題
- 16-2 「私」の問題
- 16-3 買い物の問題
- 16-4 列挙するだけで何もしない機能
- 16-5 装備可能な部位の数は?
- 16-6 コレクションの列挙の問題
- 16-7 ダイナミックな名前
Chapter17 SuperTalkクラス
- 17-1 SuperTalk.cs
Part 3 ExpandoObjectを活用した動的言語の作成
Chapter1 ダイナミックな自作言語ADyna
- 1-1 自作言語ADynaの設計目標
- 1-2 自作言語ADynaの実現方針
- 1-3 自作言語ADynaのBNF
- 1-4 自作言語ADynaのBNF以外の規定
- 1-5 自作言語ADynaのその他の言語規定
- 1-6 自作言語ADynaのメソッド呼び出し
- 1-7 自作言語ADynaのラムダ式の値
- 【コラム】言語の基本的な仕組み
Chapter2 ADynaのステートメント
- 2-1 writeステートメント
- 2-2 letステートメント
- 2-3 doステートメント
- 2-4 invokeステートメント
- 2-5 exitステートメント
- 2-6 newステートメント
- 2-7 ifステートメント
- 2-8 returnステートメント
- 2-9 assertステートメント
Chapter3 ADynaの式
- 3-1 式
- 3-2 デリゲート式
- 3-3 項
- 3-4 メソッド呼び出し
- 3-5 演算子
- 3-6 定数
Chapter4 ADynaのソースコード
- 4-1 ADynaのProgram.cs
- 4-2 ADynaHttpModuleのADynaHttpModule.cs
- 4-3 ADynaLibのCompileMainクラス
- 4-4 ADynaLibのParserクラス
- 4-5 ADynaLibのTokenizerクラス
Chapter5 サンプルソース
- 5-1 assertionfail.adyn
- 5-2 assertionok.adyn
- 5-3 for.adyn
- 5-4 hello.adyn
- 5-5 maze.adyn
- 5-6 prime.adyn
- 5-7 selftest.adyn
Appendix 動的なシリアライズ
- A-1 静的なシリアライズ
- A-2 シリアライズが動的な問題に化けるとき
- A-3 新メンバーがあるとき
- A-4 メンバー名が違うとき
- A-5 完全な互換性が取れないとき
- Appendix まとめ
「第1部:C# 4.0入門」練習問題解答
この本に関連する書籍
-
[速攻入門]C#プログラミング すぐに現場で使える知識
C#の需要が高まっている現在,プログラミング現場では,C#のことを知らないプログラマーであっても,これを使う必要に迫られています。いま最もC#の知識を必要としてい...
-
【省エネ対応】C# プログラムの効率的な書き方
C#が提供するLINQ to Objectsは,多大な効能と価値を併せ持つ重要な考え方ですが,Cのポインタ同様に抽象的でわかりりにくいものです。実際の使い方が初期と現在とでは...
-
C#ポケットリファレンス
13年のロングセラーシリーズ・ポケットリファレンスにWindowsプログラミングの定番言語となったC#が新登場。ベーシックだけど忘れてしまいがちな書式や振る舞いをコンパ...
-
C#ルールブック ~読みやすく効率的なコードの原則
「名前の付け方がバラバラでわかりづらい」「取りあえず動いているけど,どこか挙動がおかしい」……チームで開発にあたるプロジェクトでは致命的といえるそんな問題を解...
-
[完全版]究極のC#プログラミング ――新スタイルによる実践的コーディング
C#は現在ではよく使われている言語であり処理系ですが,Cなどに比べると,まだ書籍の種類は多くありません。案外,言語としてのポイントを絞った,効率的な学習を意図...
-
Visual C# 2005 [実践] プログラミングテクニック―応用できる基本の書き方
本書は,最新のVisual C# 2005を使ってWindowsアプリケーションを作成するにあたり実際に活用できるテクニックを多数集めて解説しています。しかし,単なるワザ集とは違...