実践 DLR .NET活用テクニック入門

[表紙]実践 DLR .NET活用テクニック入門

紙版発売
電子版発売

B5変形判/400ページ

定価3,850円(本体3,500円+税10%)

ISBN 978-4-7741-4777-2

ただいま弊社在庫はございません。

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

近年RubyやPythonに代表される動的言語が人気を集めています。一方C#に代表される.NETプログラミングは静的言語と言われています。動的言語には動的言語の便利性があり,.NET開発者の中でも,動的言語で開発したいという声が増えてきました。そこで本書では動的言語開発が可能になるDLRを活用法を紹介します。「デザインパターンをどのように適用するのか?」「C#にどのように動的言語を組み込むのか」「動的言語で.NET開発はどのように行うのか?」など実装の仕方を実践的に解説します。

こんな方におすすめ

  • DLRを利用した.NET開発に興味がある人
  • PythonやRubyなどの開発と.NET開発の連携に興味がある人

目次

1章 DLRの概要

1-1 DLRとは

  • 1-1-1 DLRとCLR
  • 1-1-2 DLRがもたらすもの

1-2 NETと動的言語

  • 1-2-1 言語と流行
  • 1-2-2 NETの動的言語対応
  • 1-2-3 静的言語と動的言語

1-3 静的言語vs動的言語

  • 1-3-1 静的言語のメリット
  • 1-3-2 動的言語のメリット
  • 1-3-3 それぞれのメリット
  • 1-3-4 使いどころ

1-4 各種DLR言語ファミリー

  • 1-4-1 CodePlex Dynamic Language Runtime
  • 1-4-2 IronPython
  • 1-4-3 IronRuby
  • 1-4-4 Gestalt

1-5 Hello World

  • 1-5-1 Hello World With Expression
  • 1-5-2 Hello World From IronPython

2章 プログラミングC#

2-1 ジェネリック

  • 2-1-1 基本クラスによる汎用化の問題点056
  • 2-1-2 ジェネリックに改善
  • 2-1-3 タイプパラメータ
  • 2-1-4 Nullable構造体
  • 2-1-5 ArrayListクラスとListクラス

2-2 共変性と反変性

  • 2-2-1 プログラミングにおける共変性と反変性
  • 2-2-2 型の扱いに関する基本
  • 2-2-3 デリゲートにおける共変性と反変性
  • 2-2-4 ジェネリックにおける共変性と反変性

2-3 拡張メソッド

  • 2-3-1 シンプルな拡張メソッドの定義
  • 2-3-2 拡張メソッドの定義方法075
  • 2-3-3 拡張メソッドと名
  • 2-3-4 SystemLinqの拡張メソッド
  • 2-3-5 まとめ

2-4 ラムダ式

  • 2-4-1 SystemLinq名前空間
  • 2-4-2 まずはシンプルな例を
  • 2-4-4 ラムダ式の書式
  • 2-4-5 引数の型
  • 2-4-6 ラムダ式内での変数スコープ

3章 C#からのDLR活用

3-1 dynamicキーワード〜レイトバインディング

  • 3-1-1 新しいキーワード「dynamic」
  • 3-1-2 「var」キーワード
  • 3-1-3 インテリセンス
  • 3-1-4 dynamicの使い道は・・・
  • 3-1-5 dynamic変数の型解決方法

3-2 プログラムは式ツリー〜Expression

  • 3-2-1 dynamic〜理解のキー
  • 3-2-2 式ツリーって何?
  • 3-2-3 ソースコード=データ構造
  • 3-2-4 基本クラス〜Expression
  • 3-2-5 Expression基本クラス
  • 3-2-6 ConstantExpression
  • 3-2-7 BinaryExpression
  • 3-2-8 NewArrayExpressionとIndexExpression
  • 3-2-9 MemberExpression

3-3 DLRにおけるレイトバインディング

  • 3-3-1 バインディング
  • 3-3-2 静的型解決でのバインディング(アーリーバインディング)
  • 3-3-3 動的型解決でのバインディング(レイトバインディング)
  • 3-3-4 バインダー
  • 3-3-5 シンプルなバインダーの実装

3-4 ダイナミックメタオブジェクト(動的オブジェクト)

  • 3-4-1 動的オブジェクト
  • 3-4-2 IDynamicMetaObjectProvierインターフェイス
  • 3-4-3 IDynamicMetaObjectProvierインターフェイスの実装
  • 3-4-4 DynamicObjectクラス
  • 3-4-5 レイトバインディングの処理フロー
  • 3-4-6 レイトバインディングが2つの要素で実行される理由

3-5 静的型言語で動的属性プログラミング〜ExpandoObject

  • 3-5-1 動的属性プログラミング
  • 3-5-2 動的プロパティの追加
  • 3-5-3 動的プロパティの列挙
  • 3-5-4 動的プロパティの削除
  • 3-5-5 動的メソッドの追加

3-6 dynamicでラクラクEXCEL開発

  • 3-6-1 Excel出力方式
  • 3-6-2 Excel COM 〜dynamicキーワード以前
  • 3-6-3 Excel COM&dynamicでExcel出力〜WPF/Windowsフォーム編
  • 3-6-4 Excel COM&dynamicでExcel出力〜Silverlight編

3-7 他言語との相互運用

  • 3-7-1 相互運用を振り返る
  • 3-7-2 C#からPythonコードを呼び出す

4章 動的言語とデザインパターン

4-1 デザインパターン

  • 4-1-1 デザインパターンとは
  • 4-1-2 デザインパターンとオブジェクト指向
  • 4-1-3 ソフトウェアにおけるパターン
  • 4-1-4 GoFの23種類のパターン
  • 4-1-5 デザインパターンの説明に入る前に…
  • 4-1-6 パターンの解説

4-2 Singletonパターン(シングルトン)

  • 4-2-1 パターン概説
  • 4-2-2 パターンの構造
  • 4-2-3 実装の例
  • 4-2-4 まとめ

4-3 Template Methodパターン(テンプレートメソッド)

  • 4-3-1 パターンの構造
  • 4-3-2 実装の例
  • 4-3-3 まとめ

4-4 Strategyパターン(ストラテジー)

  • 4-4-1 パターン概説
  • 4-4-2 パターンの構造
  • 4-4-3 実装の例
  • 4-4-4 CalculationStrategyクラスは必要か?
  • 4-4-5 まとめ

4-5 Factory Methodパターン(ファクトリメソッド)

  • 4-5-1 パターン概説
  • 4-5-2 パターンの構造
  • 4-5-3 実装の例
  • 4-5-4 まとめ

4-6 Compositeパターン(コンポジット)

  • 4-6-1 パターン概説
  • 4-6-2 パターンの構造
  • 4-6-3 実装の例
  • 4-6-4 まとめ

4-7 Builderパターン(ビルダー)

  • 4-7-1 パターン概説
  • 4-7-2 パターンの構造
  • 4-7-3 実装の例
  • 4-7-4 まとめ

4-8 Adapterパターン(アダプター)

  • 4-8-1 パターン概説
  • 4-8-2 パターンの構造
  • 4-8-3 実装の例(継承による実装)
  • 4-8-4 実装の例(委譲による実装)
  • 4-8-5 まとめ

4-9 Decoratorパターン(デコレーター)

  • 4-9-1 パターン概説
  • 4-9-2 パターンの構造
  • 4-9-3 実装の例
  • 4-9-4 もう1つの実装例(Python組み込み機能の利用)
  • 4-9-5 まとめ

5章 DLRで.NET開発

5-1 まずはIronPython開発の準備〜言語仕様

  • 5-1-1 Python 2.x系/3.x系とIronPython 2.7
  • 5-1-2 IronPythonコンソール
  • 5-1-3 変数と型
  • 5-1-4 組み込み型
  • 5-1-5 数値型
  • 5-1-6 シーケンス型
  • 5-1-7 辞書型
  • 5-1-8 Python型の調査
  • 5-1-9 組み込み型とCLR型
  • 5-1-10 条件分岐(if/else/elif)
  • 5-1-11 繰り返し(while)
  • 5-1-12 繰り返し(for)
  • 5-1-13 関数
  • 5-1-14 クラス
  • 5-1-15 インポート(import)

5-2 CPythonとIronPython

  • 5-2-1 IronPythonとNETライブラリ
  • 5-2-2 CPythonのC拡張モジュール
  • 5-2-3 IronClad

5-3 IronPythonでASPNET開発

  • 5-3-1 ASP.NET Dynamic Language Support
  • 5-3-2 ASP.NET Dynamic Language Supportの構成
  • 5-3-3 Webフォームの構成
  • 5-3-4 カスタムモジュールの利用

5-4 ミニブログアプリケーション作成

  • 5-4-1 アプリケーション仕様
  • 5-4-2 データベース
  • 5-4-3 プログラム構成
  • 5-4-4 モデル基本クラス
  • 5-4-5 BaseModelクラス実装解説
  • 5-4-6 Postクラス実装解説
  • 5-4-7 Accountクラス実装解説
  • 5-4-8 App_Codeフォルダへのモジュール検索パスの追加
  • 5-4-9 URLマップ構成
  • 5-4-10 マスターページと共通コントロール
  • 5-4-11 アカウント作成画面
  • 5-4-12 ログイン画面
  • 5-4-13 投稿一覧画面
  • 5-4-14 新規投稿画面
  • 5-4-15 ホーム画面
  • 5-4-16 ログアウト

6章 C#アプリケーションとIronPythonアプリケーションの連携

6-1 ブログアプリの開発

  • 6-1-1 プロジェクトの構成
  • 6-1-2 アプリケーション仕様
  • 6-1-3 画面構成
  • 6-1-4 URL設計
  • 6-1-5 ソリューション設計
  • 6-1-6 アプリケーションとしての問題点

6-2 モデルの設計

  • 6-2-1 モデルファースト設計
  • 6-2-2 Entity Framework基礎知識
  • 6-2-3 概念モデル/論理モデル/物理モデル
  • 6-2-4 概念スキーマ定義言語/ストアスキーマ定義言語/マッピングスキーマ定義言語
  • 6-2-5 CBlogでのエンティティデータモデルの設計
  • 6-2-6 データベース作成SQLの作成

6-3 テーマによるスタイル設定

  • 6-3-1 App_Themes特殊フォルダとskinファイル

6-4 ユーザーコントロールの開発

  • 6-4-1 各種ユーザーコントロール
  • 6-4-2 カテゴリーリストコントロールの実装
  • 6-4-3 リンクリストコントロールのHoverMenuExtender

6-5 エントリーの表示

  • 6-5-1 エントリー表示画面
  • 6-5-2 URLルーティングマップとルーティングパラメータによるエントリー表示切り替え
  • 6-5-3 エントリー画像のポップアップ
  • 6-5-4 GoogleMapの利用とフローティングウィンドウ
  • 6-5-5 コメント欄のパーシャルレンダリング

6-6 IronPythonミニブログとの連携

  • 6-6-1 連携仕様
  • 6-6-2 連携方式
  • 6-6-3 DLR連携の下準備
  • 6-6-4 CBlog投稿時にミニブログにも投稿
  • 6-6-5 CBlogの一部分にミニブログの内容を表示

著者プロフィール

醍醐竜一(だいごりゅういち)

現在,フリーのソフトウェアエンジニアとして活動中。某ソフトウェアベンダでActiveX・COMの開発,.NET Frameworkによるシステム開発といったマイクロソフトテクノロジーの技術経験を経てフリーとなる。現在も主に最新の.NET技術を利用した開発や執筆活動を中心として行っている。