# 6 実践的プログラミング[入門]講座

[表紙]C# 6 実践的プログラミング[入門]講座

A5判/376ページ

定価(本体2,680円+税)

ISBN 978-4-7741-7594-2

電子版

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

書籍の概要

この本の概要

最新版C#6の解説書です。特に従来のC#で開発されてきたプログラムに焦点を当てます。ここで問題になるのは,開発済みのプログラム資産を無駄にしないこと。例として現実的な課題であるモバイル対応/Web対応の問題を取り上げ,可能な限り既存のコード資産を活かしながら対応を図ります(最終的には,モバイル対応/Web対応の負荷を最小限にとどめ,UIレイヤーだけを作り直して乗り切ります)。既存のコード資産を捨てて何もかも書き直すというのは現実的ではありません。本書では目の前にあるコード資産の活用方法を追究します。

こんな方におすすめ

  • すでに開発に従事しているC#プログラマー
  • ひととおりの学習を終えて,これからプログラマーになる方たち

目次

  • はじめに

Part1 C#プログラマーの“いま”
Chapter 1 旧世界のC#

  • 1.1 デスクトップの世界
  • 1.2 サービスの世界
  • 1.3 コマンドラインの世界
  • 1.4 過去の言語機能依存のソースコードの有効性

Chapter 2 新世界のC#

  • 2.1 スマホ/ タブレットに対応せよ
  • 2.2 Webアプリを作成せよ
  • 2.3 負荷を適正化せよ
  • 2.4 クラウドに対応せよ
  • 2.5 マルチユーザーに対応せよ
  • 2.6 最新バージョンのC#

Chapter 3 旧世界と新世界の狭間で

  • 3.1 2つの世界で引き裂かれるC#プログラマー
  • 3.2 どちらの世界も無視できない
  • 3.3 コード資産を継承せよ
  • 3.4 過去のコード資産をリニューアルせよ
  • 3.5 実は最初から古く不完全だったネットの技術
  • 3.6 銀の弾丸はないが,インド人のラジオならある
  • 3.7 80点の答えを求めて三千里
  • 3.8 何を重視し,何を諦めるのかの問題
  • 3.9 Webはステートレスであれという原理原則は敵
  • 3.10 たとえ「正義」であろうとも退場を促す決断
  • 3.11 機能が主役,能書きは脇役
  • 3.12 技術は脇役,人が主役

Chapter 4 新技術とコード資産

  • 4.1 コード資産は古い文法で書かれている
  • 4.2 新技術はどこでどう活用できるのか?
  • 4.3 すべて書き換えることにメリットはあるか?
  • 4.4 TDDはコード書き換えを可能とするか?
  • 4.5 必要な部分だけ書き直すのはありか?
  • 4.6 それでも知る必要のある言語の新機能

Chapter 5 明日はどっちだ?

  • 5.1 コードで語ろう
  • 5.2 コスト意識を持とう
  • 5.3 開発は声の大きい第三者のためじゃない
  • 5.4 利用者のための開発
  • 5.5 出資者のための開発
  • 5.6 自分のための開発
  • 5.7 仲間のための開発
  • 5.8 みんなのための開発
  • 5.9 社会に貢献する開発

Part2 C# 6の新機能
Chapter 1 シンボルの名前を知りたい ――nameof式

  • 1.1 なぜ実行時にシンボルの名前を知りたいか?
  • 1.2 新しい方法
  • 1.3 ドット表記とnameof演算子

Chapter 2 文字列の一部を可変にしたい ――文字列への埋め込み

  • 2.1 C#の文字列は不変
  • 2.2 もっと柔軟に表現したい ――プラスの化け物
  • 2.3 string.Formatの憂鬱
  • 2.4 直接埋め込め!
  • 2.5 書式指定もバッチリ

Chapter 3 null参照例外はイヤ!――null 条件演算子

  • 3.1 宇宙の法則,世界の鬼門null
  • 3.2 nullはイヤっ!
  • 3.3 nullは大好きっ!
  • 3.4 例外フリーでnull とお付き合いする
  • 3.5 結果が値型ならどうする?
  • 3.6 バインディングをシンプルに

Chapter 4 添え字指定で初期化したい ――インデックス初期化子

  • 4.1 コレクションをどう初期化するか?
  • 4.2 よりスマートな初期化

Chapter 5 追加も拡張メソッド経由で ――拡張追加メソッド

  • 5.1 コレクションを初期化せよ
  • 5.2 コレクションの初期化構文をカスタマイズせよ

Chapter 6 より良いオーバーロード ――オーバーロードの解決

  • 6.1 戻り値のない非同期メソッド問題

Chapter 7 条件次第で例外処理 ――例外フィルタ

  • 7.1 例外処理の豊潤さ
  • 7.2 過剰に強力すぎる例外キャッチ
  • 7.3 本当に必要なときだけキャッチする

Chapter 8 catch/fi nallyブロックでのawait

  • 8.1 非同期処理とtryブロックの制約
  • 8.2 制約からの解放

Chapter 9 自動プロパティにだって初期値を書きたい ――自動プロパティ初期化子

  • 9.1 自動プロパティの便利さ
  • 9.2 初期化に難がある自動プロパティ
  • 9.3 初期値を書いてすっきり解決

Chapter 10 ゲッターのみの自動プロパティ

  • 10.1 readonlyにできなかった自動プロパティ
  • 10.2 でもreadonlyにしたい
  • 10.3 初期値を与えられればreadonlyに!

Chapter 11 式だけならメソッドを簡単に ――式本体のみの関数メンバー

  • 11.1 たったこれだけの中身でも波括弧が必要
  • 11.2 メソッドを短く書こう!
  • 11.3 利用できるバリエーション

Chapter 12 クラス抜きで静的メンバーを呼びたい ――静的なusing

  • 12.1 C言語に負けているハローワールド?
  • 12.2 静的メソッドはもっと自由に.クラス名からの解放

Part3 C#を巡る環境の変貌
Chapter 1 .NET Framework 4.6 の強化点

  • 1.1 .NET Framework 4.6の新機能
  • 1.2 C# 6と.NET Frameworkは分けて考えよう

Chapter 2 ネイティブコード開発

  • 2.1 Microsoft .NETネイティブ
  • 2.2 MSILとの関係
  • 2.3 ライブラリは必要か?
  • 2.4 ネイティブはいつ利用可能になるのか?

Chapter 3 Roslyn

  • 3.1 What's Roslyn?
  • 3.2 Roslynが可能にするもの
  • 3.3 Roslyn APIのレイヤ

Chapter 4 RyuJIT

  • 4.1 JITの改革

Chapter 5 Visual Studio SDK

  • 5.1 Visual Studioはプラットフォームだ
  • 5.2 Visual Studio Gallery
  • 5.3 Visual Studio SDK
  • 5.4 Visual Studio Shell

Part4 マルチプラットフォームマイグレーション
Chapter 1 Xamarin

Chapter 2 Unity

Chapter 3 Apache Cordova

Chapter 4 WWW

Chapter 5 jQuery Mobile

Part5 Webを用いたマルチプラットフォームマイグレーション
Chapter 1 マルチプラットフォームマイグレーションの事例

  • 1.1 なぜモバイル対応をWebで行うのか?
  • 1.2 Web非想定アプリの事例 ――『ANGF』の紹介
  • 1.3 Web非想定アプリの『ANGFWebPlayer』Web対応

Chapter 2 クライアント側開発の解決

  • 2.1 なぜTypeScriptを採用したのか?

Chapter 3 DOMアクセスと非互換性の解決

  • 3.1 なぜjQueryを採用したのか?

Chapter 4 タッチUIの解決

  • 4.1 なぜjQuery Mobileを採用したのか?

Chapter 5 サーバー側UIフレームワークの選定

  • 5.1 なぜASP.NET MVCなのか?

Chapter 6 サーバー側APIフレームワークの選定

  • 6.1 なぜASP.NET Web APIなのか?

Chapter 7 クラウド配置先の選定

  • 7.1 なぜMicrosoft Azureなのか?

Chapter 8 クライアントとサーバーの役割分担の問題

  • 8.1 2つの矛盾した要求
  • 8.2 軸足をTypeScriptに置いて良いとき
  • 8.3 軸足をC#に置いて良いとき
  • 8.4 TypeScriptとC#を同等に扱うとき

Chapter 9 Webアプリ化の記録

  • 9.1 『ANGF』はいかにしてWebに羽ばたいたか?
  • 9.2 静的メンバーによるコードのマルチユーザー化
  • 9.3 同期的に走るスレッドとWeb UIの結合
  • 9.4 フォームからの解放
  • 9.5 セッションのタイムアウトは許容できるか?
  • 9.6 デスクトップとWebアプリ,両用アプリへの飛翔

Chapter 10 Web化の功罪

  • 10.1 Web化で改善されたこと
  • 10.2 Web化で悪化したこと

Chapter 11 Web化したコードからデスクトップへ

  • 11.1 HTMLのフォームをデスクトップアプリで使う
  • 11.2 複雑高機能のフォームの解体
  • 11.3 デスクトップアプリから認証する
  • 11.4 1つのソースから両対応することの功罪

Chapter 12 『ANGFWebPlayer』の主要部分のソースコード

Part6 やっぱりWindowsが好き ――Windows開発最前線
Chapter 1 スマホ/タブレット/Webが提供できないものは何か?

Chapter 2 UWPという選択肢

Chapter 3 やはりステキなWindows開発

Chapter 4 ポストスマホ時代への提言

Appendix 付録
Appendix 1 ステート集約プログラミング2015

  • A1.1 2015版での新しい項目
  • A1.2 現在のプログラミングが抱える問題とは何か?
  • A1.3 複雑さの爆発とは何か?
  • A1.4 整合性の破綻を防ぐための方法
  • A1.5 「ステート集約プログラミング」の定義
  • A1.6 「ステート集約プログラミング」によって得られるもの
  • A1.7 「ステート集約プログラミング」とデータベース
  • A1.8 クラス設計パターン
  • A1.9 疎結合分散処理にいかにして対処するか?
  • A1.10 マルチユーザーへの対処はいかにして行うか?
  • A1.11 構造的に相容れないコードを共存させるには?
  • A1.12 クラウドとどう折り合いを付けるか?
  • A1.13 よくある質問

Appendix 2 C#と比較されるプログラミング言語世界

  • おわりに
  • 練習問題解答
  • Index

著者プロフィール

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

1964 年東京生まれ.東京農工大学工学部卒.ENIX にてドラゴンクエスト2 のMSX/2 移植,マイクロソフト株式会社にてWindows 2.1 ~ 3.0 の日本語化に従事後,株式会社ピーデー社長に就任.
代表図書『[完全版]究極のC# プログラミング―新スタイルによる実践的コーディング』.Visual C# MVP.
仕事を離れるとアマチュア郷土史研究家に変身して自転車で郷土を走り回り,Facebook のグループ『東京西部郷土史研究会(仮)』を主宰する.