[完全版]C# 実践ダイナミックプログラミング

[表紙][完全版]C# 実践ダイナミックプログラミング

紙版発売

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入門」練習問題解答

著者プロフィール

川俣晶(かわまたあきら)

1964年4月生まれの東京出身。東京農工大化学工学科卒業。ENIXにてドラゴンクエスト2 MSX/MSX2版移植等のゲームソフト開発を行う。その後,マイクロソフトでMicrosoft Windows 2.1~3.0の日本語化に従事。現在はピーデー代表取締役。日本XMLユーザーグループ代表。過去に経験したプログラム言語はアセンブラ(8080A, Z-80, 6800, x86),BASIC,C言語,C++,Java,C#,JavaScript等。コンピュータの前を離れれば,下高井戸のアマチュア郷土史研究家となり,下高井戸周辺の暗渠や河川跡を探索する。

【主な著書】実践Web2.0論 Web2.0を第二のネットバブルにしないための警告の書/2006年/アスキー刊.実例で学ぶ! [入門と実践] Ajax+XML/2006年/技術評論社刊,パソコンにおける日本語処理・文字コードハンドブック/1999年/技術評論社刊,はじめてのWindowsプログラミング/1993年/ソフトバンククリエイティブ刊,C言語教科書 入門編/2009年/日経BP刊