fc2ブログ

書籍をつつく144-プログラマが知るべき97のこと。ためになるあるある話。

久し振りに本を紹介するピヨ♪これは読んでおいた方がいいピヨ♪



ネタばれになるかもしれないから、今回は目次を載せないピヨ。僕が読んで思ったのは、「あるある」だっピヨッ♪実務を経験した人が、思わず「あるある」と頷く事が100以上(世界の開発者97人+日本の開発者の言葉)も載っているピヨ。
でも、ただの「あるある話」ではないんだ。実務を行う上で、有益な話しだから新人はもちろんの事、プロの人も見直す為にこの本を読むべきピヨ。こういう「あるある話」は余りにも自然にそこにある。だから、意識しない事もあるピヨ。もしかしたら忘れている人もいるかもしれない。だからこそ、この「あるある話本」はお値段以上の価値があると思うピヨ。
確か今年ヒットした本の中に、ニーチェの格言集があったと思う。そんなニーチェの言葉は、よく考えると普通ピヨ。いまさら言われなくても・・・と思うかもしれないけど、当たり前だからこそ大切な事が、この世の中にはたくさんある。当たり前だけど、守っていない人が多いピヨ。そういった言葉が、分かりやすく書いてあるピヨ。だから、絶対に読むべき本だと思う。ニーチェのように難しい表現を使っていないから、普通にためになる事を再確認できる良本ピヨ。
 OS実装本とか、バリバリの専門書を読むと心が躍るけど、たまにはこういう易しい本を読むと、心の栄養になるピヨ。情報処理にかかわる人全てが読んでほしい一品ピヨッ♪
題名に「プログラマ」とついているけど、世界の常識は日本と違って、開発者の事を総称してプログラマと呼んでいるようだ。だから、スケジュールや設計などプログラミング以外の事も普通に載っているピヨ。プログラマ以外の人も読むべきピヨ。


他の本のレビューも読みたいたい人は・・・書籍レビュー目次をチェックしてね♪

テーマ : ソフトウェア開発
ジャンル : コンピュータ

書籍をつつく143-ゲーム開発に興味がある方必見の書♪

ゲーム開発に興味があるから、調べてみたピヨ♪
その結果、よさそうな本が見つかったから、紹介するピヨ♪


この3冊がよさそうだピヨ。
ボクはゲーム開発は門外漢だけど、プログラミングの習得方法は知っているピヨ。
開発は基礎知識・アーキテクチャ・開発対象特有の知識の3点が必要だっピヨ。
其の3点を今回紹介した本で身につけるとよいと思うピヨ。
そうしたら自然と、今回紹介した書籍に載っていない情報についても、調べる能力が身につくと思う。
どんな書籍にも向き・不向きがあるから、目次などをよく読んで、自分に合うと思ったらお試しあれ。


他の本のレビューも読みたいたい人は・・・書籍レビュー目次をチェックしてね♪

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

書籍をつつく142-パーフェクトPHP。決定版になりうる逸品。

ネットを飛び回っていたら、久し振りによさそうな本に出会えたピヨ♪
それがこの本だっぴょ♪



先ずは目次を見てみよう。

【目次】
1章 PHP概論
1.1 PHPとは
    * 1.1.1 PHPとは
    * 1.1.2 PHPの歴史
    * 1.1.3 本書の概要
    * 1.1.4 コーディングスタイル
1.2 Webアプリケーションの仕組み
    * 1.2.1 WebサーバとWebブラウザ
    * 1.2.2 インストールとドキュメントルートの設定
    * 1.2.3 Linux(CentOS/Fedora)
    * 1.2.4 Linux(Debian/Ubuntu)
    * 1.2.5 Mac OS X
    * 1.2.6 Windows
    * コラム Skypeを利用している場合の注意点
    * 1.2.7 ドキュメントルートの設定確認
    * 1.2.8 ソースからのインストール
1.3 PHPの処理の流れ
    * 1.3.1 モジュールとCGI
    * 1.3.2 CLI
    * 1.3.3 コンパイルと実行
Part 2 PHPの言語仕様
2章 PHPの基本
2.1 基本的な構文
    * 2.1.1 サンプルプログラム
    * 2.1.2 PHPブロック
    * 2.1.3 文
    * 2.1.4 コメント
    * 2.1.5 出力
    * 2.1.6 echo文とvar_dump()関数
    * 2.1.7 識別子
    * 2.1.8 予約語
    * 2.1.9 エラー
2.2 変数
    * 2.2.1 PHPの変数
    * 2.2.2 可変変数
    * 2.2.3 変数のスコープ
    * 2.2.4 定義済み変数
    * 2.2.5 スーパーグローバル変数
2.3 定数
    * 2.3.1 定数定義
    * 2.3.2 constants()関数
    * 2.3.3 定義済み定数
2.4 エラー
    * 2.4.1 エラーとは
    * 2.4.2 エラーの種類とエラー定数
    * 2.4.3 例外
    * 2.4.4 エラーに関する設定
3章 型と演算子
3.1 型
    * 3.1.1 PHPの型
    * 3.1.2 整数
    * 3.1.3 浮動小数点
    * 3.1.4 文字列
    * コラム 比較演算を行う場合の注意点
    * 3.1.5 論理型
    * 3.1.6 配列
    * 3.1.7 オブジェクト
    * 3.1.8 リソース
    * 3.1.9 null
    * 3.1.10 型変換
3.2 演算子
    * 3.2.1 PHPの演算子
    * 3.2.2 三項演算子
    * 3.2.3 演算子の優先順位
    * 3.2.4 その他の演算子
3.3 配列
    * 3.3.1 PHPの配列
    * 3.3.2 配列の初期化
    * 3.3.3 連想配列
    * 3.3.4 多次元配列
    * 3.3.5 PHPの配列の特徴のまとめ
    * 3.3.6 配列の演算
4章 制御構造と関数
4.1 制御構造
    * 4.1.1 プログラムの構成要素と制御構造
    * 4.1.2 if-elseif-else
    * 4.1.3 制御構造に関する別の構文
    * 4.1.4 while
    * 4.1.5 do-while
    * 4.1.6 for
    * 4.1.7 foreach
    * 4.1.8 break
    * 4.1.9 continue
    * 4.1.10 switch
    * 4.1.11 return
    * 4.1.12 exit
    * 4.1.13 require/require_once
    * 4.1.14 include/include_once
    * 4.1.15 goto
4.2 関数
    * 4.2.1 関数の基本
    * 4.2.2 関数の定義
    * 4.2.3 関数の呼び出し
    * 4.2.4 参照による引数と返り値
    * 4.2.5 無名関数
    * 4.2.6 定義済み関数
5章 クラスとオブジェクト
5.1 クラス
    * 5.1.1 PHPのクラス
    * 5.1.2 クラスの定義
    * 5.1.3 プロパティ
    * 5.1.4 定数
    * 5.1.5 メソッド
    * 5.1.6 コンストラクタとデストラクタ
    * コラム PHP 4とPHP 5のコンストラクタ
    * 5.1.7 継承
    * 5.1.8 標準クラスとキャスト
    * 5.1.9 抽象クラス
5.2 インターフェイス
    * 5.2.1 インターフェイスの定義と実装
    * 5.2.2 定義済みインターフェイス
    * 5.2.3 インターフェイスのチェック
5.3 クラスとオブジェクトの機能と特徴
    * 5.3.1 マジックメソッド
    * 5.3.2 遅延性的束縛
    * 5.3.3 オートロード
5.4 名前空間
    * 5.4.1 PHPの名前空間
    * 5.4.2 名前空間の定義
    * 5.4.3 インポートルール
    * 5.4.4 名前解決
5.5 例外
    * 5.5.1 PHPの例外
    * 5.5.2 定義済みの例外
    * 5.5.3 例外の拡張
    * 5.5.4 PHPのエラーと例外
5.6 参照
    * 5.6.1 参照とは
    * 5.6.2 参照変数の扱い
    * 5.6.3 オブジェクトの参照
    * コラム PHP 4のオブジェクトの参照
    * 5.6.4 リファレンスカウントとオブジェクトの寿命
    * 5.6.5 変数のリファレンスとコピーオンライト
Part 3 実践Webアプリケーション
6章 Webアプリケーション入門
6.1 Webアプリケーション概要
    * 6.1.1 Webアプリケーションとは
    * 6.1.2 HTMLとフォーム
    * コラム PHPの標準関数
    * 6.1.3 HTTPメソッド
    * 6.1.4 HTTPメソッドの使い分け
    * 6.1.5 スーパーグローバル変数
6.2 ひとこと掲示板作成
    * 6.2.1 アプリケーション概要
    * 6.2.2 データベースの作成
    * 6.2.3 テーブルの作成
    * 6.2.4 アプリケーションを配置するディレクトリの作成
    * 6.2.5 コメント投稿フォームの作成
    * 6.2.6 保存処理
    * 6.2.7 エラーメッセージ出力
    * 6.2.8 投稿されたひとことの表示
    * 6.2.9 投稿後のリダイレクト
6.3 レガシーPHPからの脱却
    * 6.3.1 レガシーPHPコード
    * 6.3.2 ロジックとビューの分離
    * 6.3.3 役割に応じたファイルの分割
6.4 さらなる役割の分割
    * 6.4.1 役割の分割と共通化
    * 6.4.2 フレームワーク
7章 フレームワークによる効率的な開発
7.1 開発の流れ
    * 7.1.1 フレームワークとは
    * コラム オープンソースのフレームワーク
    * 7.1.2 開発効率の向上
    * 7.1.3 フレームワークとオブジェクト指向
7.2 フレームワーク作成
    * 7.2.1 フレームワークの要件
    * 7.2.2 MVCモデル
    * 7.2.3 フレームワークの構造
    * 7.2.4 フレームワークの処理の流れ
    * 7.2.5 ディレクトリ構成
    * 7.2.6 クラスとオートロード
    * 7.2.7 ClassLoaderクラス
    * 7.2.8 bootstrap.php
    * コラム bootstrap.phpの配置場所について
    * 7.2.9 フロントコントローラと.htaccess
    * 7.2.10 Requestクラス
    * 7.2.11 ベースURLとPATH_INFO
    * 7.2.12 RequestクラスでのURL制御
    * 7.2.13 ルーティング
    * 7.2.14 Routerクラス
    * 7.2.15 Responseクラス
    * 7.2.16 データベースアクセスとPDO
    * 7.2.17 DbManagerクラス
    * 7.2.18 DbRepositoryクラス
    * 7.2.19 Sessionクラス
    * 7.2.20 Applicationクラス
    * 7.2.21 コントローラの呼び出しと実行
    * 7.2.22 例外の活用
    * 7.2.23 コントローラとビュー
    * 7.2.24 Controllerクラス
    * 7.2.25 Controller::run()メソッド
    * 7.2.26 ビューの仕組み
    * 7.2.27 Viewクラス
    * 7.2.28 Controller::render()メソッド
    * 7.2.29 Controllerクラスとリダイレクト
    * コラム リダイレクトのステータスコード
    * 7.2.30 CSRF対策
    * 7.2.31 ログイン状態の制御
    * 7.2.32 フレームワークの完成
8章 ミニブログアプリケーション開発
8.1 設計とセットアップ
    * 8.1.1 アプリケーション概要
    * 8.1.2 機能一覧
    * 8.1.3 コントローラ設計
    * 8.1.4 ミニブログアプリケーションの作成
    * コラム レンタルサーバを使う場合
    * コラム ドメインとアンダースコア
    * 8.1.5 データベースの作成
    * 8.1.6 MiniBlogApplicationクラス
    * コラム データベースとユーザ
    * 8.1.7 フロントコントローラの書き換え
    * 8.1.8 レイアウトビューファイルの作成
8.2 ユーザ登録機能作成
    * 8.2.1 アクションの作成手順
    * 8.2.2 ユーザ登録とデータベースアクセス
    * 8.2.3 Repositoryクラスの役割
    * 8.2.4 UserRepositoryクラス
    * コラム パスワードのハッシュ化
    * 8.2.5 ユーザIDからレコードを取得する処理
    * 8.2.6 signupアクション
    * 8.2.7 登録処理の流れ
    * 8.2.8 registerアクション
    * 8.2.9 ビューファイルの修正/signupAction()メソッドの修正
8.4 ホームページと投稿
    * 8.4.1 StatusRepositoryクラス
    * 8.4.2 indexアクション
    * 8.4.3 ビューファイルの共通化
    * 8.4.4 postアクション
8.5 ユーザの投稿一覧と投稿詳細
    * 8.5.1 StatusRepositoryクラスの拡張
    * 8.5.2 ルーティング定義とリンクの記述
    * 8.5.3 userアクション
    * 8.5.4 showアクション
8.6 アカウント情報管理とログイン
    * 8.6.1 アカウント情報の実装
    * 8.6.2 indexアクション
    * 8.6.3 signinアクション
    * 8.6.4 authenticateアクション
    * コラム ログイン時のバリデーションエラーメッセージ
    * 8.6.5 signoutアクション
    * 8.6.6 レイアウトにナビゲーションを追加
    * 8.6.7 ログイン状態のみ有効なアクションの制御
8.7 フォロー
    * 8.7.1 フォローとは
    * 8.7.2 FollowingRepositoryクラス
    * 8.7.3 フォローボタン
    * 8.7.4 followアクション
    * 8.7.5 フォローしているユーザの表示
    * 8.7.6 フォローしているユーザの投稿表示
8.8 デザインの修正
    * 8.8.1 デザインの改善点
    * 8.8.2 おわりに
Part 4 PHPセキュリティ
9章 PHPで作るWebアプリケーションのセキュリティ(前編)
9.1 セキュリティ概説
    * 9.1.2 Webアプリケーションとセキュリティ
    * 9.1.3 セキュリティ基礎知識
9.2 スクリプト挿入攻撃(Script Insertion)
    * 9.2.1 スクリプト挿入攻撃とは
    * 9.2.2 脆弱性
    * 9.2.3 対応方法
9.3 クロスサイトスクリプティング(Cross Site Scripting/XSS)
    * 9.3.1 クロスサイトスクリプティングとは
    * 9.3.2 脆弱性
    * 9.3.3 対応方法
9.4 クロスサイトリクエストフォージェリ(Cross Site Request Forgeries/CSRF)
    * 9.4.1 クロスサイトリクエストフォージェリとは
    * 9.4.2 脆弱性
    * 9.4.3 対応方法
9.5 SQLインジェクション(SQL Injection)
    * 9.5.1 SQLインジェクションとは
    * 9.5.2 脆弱性
    * 9.5.3 対応方法
9.6 セッション固定攻撃
    * 9.6.1 セッション固定攻撃とは
    * 9.6.2 脆弱性
    * 9.6.3 対応方法
    * コラム セッションIDに利用できる文字と文字数
9.7 セッションハイジャック
    * 9.7.1 セッションハイジャックとは
    * 9.7.2 脆弱性
    * 9.7.3 対応方法
10章 PHPで作るWebアプリケーションのセキュリティ(後編)
10.1 HTTPヘッダインジェクション
    * 10.1.1 HTTPヘッダインジェクションとは
    * コラム HTTPヘッダインジェクションについて
    * 10.1.2 脆弱性
    * 10.1.3 対応方法
10.2 メールの第三者中継
    * 10.2.1 メールの第三者中継とは
    * 10.2.2 脆弱性
    * 10.2.3 対応方法
10.3 変数汚染攻撃
    * 10.3.1 変数汚染攻撃とは
    * 10.3.2 脆弱性
    * 10.3.3 対応方法
10.4 Nullバイト攻撃
    * 10.4.1 Nullバイト攻撃とは
    * 10.4.2 脆弱性
    * 10.4.3 対応方法
    * コラム POSIX互換正規表現関数を使っている際の注意点
10.5 ディレクトリトラバーサル
    * 10.5.1 ディレクトリトラバーサルとは
    * 10.5.2 脆弱性
    * 10.5.3 対応方法
10.6 eval利用攻撃
    * 10.6.1 eval利用攻撃とは
    * 10.6.2 脆弱性
    * 10.6.3 対応方法
10.7 ファイルアップロード攻撃
    * 10.7.1 ファイルアップロード攻撃とは
    * 10.7.2 脆弱性
    * 10.7.3 対応方法
10.8 インクルード攻撃
    * 10.8.1 インクルード攻撃とは
    * 10.8.2 脆弱性
    * 10.8.3 対応方法
    * コラム インクルードファイルの拡張子
10.9 パス・ディスクロージャ
    * 10.9.1 パス・ディスクロージャとは
    * 10.9.2 脆弱性
    * 10.9.3 対応方法
10.10 コマンド実行攻撃(Command Injection)
    * 10.10.1 コマンド実行攻撃とは
    * 10.10.2 脆弱性
    * 10.10.3 対応方法
10.11 サーバ設定
    * 10.11.1 PHPの設定
    * 10.11.2 Apacheの設定
Part5 テクニカルなPHPの活用
11章 実践オブジェクト指向
11.1 PHPとオブジェクト指向
    * 11.1.1 オブジェクト指向の活用
    * 11.1.2 Standard PHP Library(SPL)
11.2 マジックメソッド
    * 11.2.1 マジックメソッドとは
    * 11.2.2 __construct()メソッド/__destruct()メソッド
    * 11.2.3 __get()メソッド/__set()メソッド
    * 11.2.4 __isset()メソッド/__unset()メソッド
    * 11.2.5 __call()メソッド/__callStatic()メソッド
    * 11.2.6 __sleep()メソッド/__wakeup()メソッド
    * 11.2.7 __toString()メソッド
    * 11.2.8 __invoke()メソッド
    * 11.2.9 __clone()メソッド
11.3 配列オブジェクト
    * 11.3.1 配列オブジェクトとインターフェイス
    * 11.3.2 Iteratorインターフェイス
    * 11.3.3 IteratorAggregateインターフェイス
    * 11.3.4 ArrayAccessインターフェイス
    * 11.3.5 SPLのクラス/インターフェイス
11.4 例外
    * 11.4.1 例外処理
    * 11.4.2 SPL例外
11.5 PDO
    * 11.5.1 データベースアクセスの抽象化
    * 11.5.2 PDO
    * 11.5.3 接続
    * 11.5.4 問い合わせ処理
    * 11.5.5 結果セットと取得メソッド
    * 11.5.6 結果セットとフェッチモード
    * 11.5.7 更新処理
    * 11.5.8 プリペアドステートメント
    * 11.5.9 トランザクション
    * 11.5.10 エラー処理
11.6 オートロード
    * 11.6.1 オートロードとは
    * 11.6.2 __autoload()関数
    * 11.6.3 SPLとオートロード
11.7 名前空間
    * 11.7.1 名前空間とクラス名のルール
    * 11.7.2 オートローダを作成する
Part 6 PHPレシピ
12章 レシピことはじめ
12.1 PHPマニュアルの歩き方
    * 12.1.1 PHPのマニュアル
    * コラム 日本語のマニュアルに関するコミュニティ
    * 12.1.2 PHPマニュアルの読み方
    * 12.1.3 PHPマニュアルの様々な利用法
    * 12.1.4 検索
12.2 PHPの設定
    * 12.2.1 PHPの設定とは
    * 12.2.2 設定の変更
    * 12.2.3 推奨の設定
    * 12.2.4 PHPの主な設定
13章 標準機能
13.1 文字列
    * 13.1.1 文字列に対する操作
    * 13.1.2 変数をフォーマットする
    * 13.1.3 数値をフォーマットする
    * 13.1.4 HTMLタグをエスケープする
    * 13.1.5 改行を
      タグに変換する
    * 13.1.6 文字列の長さを調べる
    * 13.1.7 文字列の一部を切り出す
    * 13.1.8 配列を文字列として連結する
    * 13.1.9 文字列の両端から不要な空白文字を除去する
    * 13.1.10 大文字や小文字の変換をする
    * 13.1.11 URL文字列を解析する
    * 13.1.12 文字列を丸める
    * 13.1.13 全角・半角を変換する
13.2 文字コード
    * 13.2.1 文字コードに対する操作
    * 13.2.2 文字コードの設定
    * 13.2.3 文字コードを変換する
13.3 配列
    * 13.3.1 配列に対する操作
    * 13.3.2 配列の要素の追加と削除
    * 13.3.3 配列の要素を並び替える
    * 13.3.4 配列の要素数を得る
    * 13.3.5 文字列を分割して配列にする
    * 13.3.6 配列の要素を複数の変数へ代入する
    * 13.3.7 配列を結合する
    * 13.3.8 配列のキーをすべて取得する
    * 13.3.9 配列に値が含まれるか調べる
    * 13.3.10 配列を指定した値で埋める
    * 13.3.11 配列の一部を切り出す
    * 13.3.12 配列のすべての要素にコールバックを適用する
    * 13.3.13 配列の要素をコールバックでフィルタする
13.4 正規表現
    * 13.4.1 PCREとPOSIX拡張
    * 13.4.2 PCRE正規表現構文
    * 13.4.3 preg_match
    * コラム その判定,わざわざ正規表現を使う必要があるの?
    * コラム メールアドレスと正規表現
    * 13.4.4 preg_match_all
    * 13.4.5 preg_replace
    * 13.4.6 preg_split
    * 13.4.7 preg_quote
    * 13.4.8 mb_ereg
14章 ライブラリとフォーマット
14.1 ライブラリの利用
    * 14.1.1 PHPのライブラリ
    * 14.2.2 PEAR
    * コラム PEAR 2
    * 14.2.3 PECL
    * 14.2.4 APC
    * 14.2.5 Xdebug
14.3 メール
    * 14.3.1 PHPでのメール送信
    * 14.3.2 mail()関数
    * コラム メールのセキュリティ
    * 14.3.3 mb_send_mail()関数
    * 14.3.4 ライブラリを利用したメールの扱い
14.4 日付と時間
    * 14.4.1 日付と時間の注意点
    * 14.4.2 DateTimeクラス
    * 14.4.3 タイムゾーンを指定する
    * 14.4.4 DateIntervalクラス
    * 14.4.5 日付の差の計算・加算・減算をする
    * 14.4.6 日付に対して繰り返し演算を実行する
    * 14.4.7 date()などの関数
14.5 ファイルとディレクトリ
    * 14.5.1 ファイルとディレクトリに対する操作
    * 14.5.2 ファイルの内容を文字列として取得する
    * 14.5.3 文字列をファイルに保存する
    * 14.5.4 SplFileObject
    * 14.5.5 ファイル一覧の取得
    * 14.5.6 ファイルやディレクトリの操作
    * 14.5.7 様々なチェック・情報取得関数
14.6 XML
    * 14.6.1 PHPとXML
    * 14.6.2 SimpleXMLオブジェクト
    * 14.6.3 変更・追加・XMLとして取得
    * 14.6.4 名前空間付きのノードの取得
    * 14.6.5 SimpleXMLの弱点
14.7 データフォーマット
    * 14.7.1 シリアライズ
    * 14.7.2 JSON
Appendix
    * App-A PHPコンパイルオプション
    * App-B php.ini

門司区を見たら、この本の凄さが分かるピヨ。PHPを実務で使用した人ならば、この本が如何に実務的であるか分かると思う。初心者は、この文章に圧倒されるかもしれないけど、Web開発では押えておくべき所だから、結局色々な本を買ったり、サイト巡りをしたりして勉強する事になるピヨ。それを考えたら、一つの書籍にまとまっているのは価値があるピヨ。だから、初心者にもお勧めするピヨ♪
この本とPHP 逆引きレシピ (PROGRAMMER’S RECiPE) を読めば、ひとまず初心者卒業だとボクは思うピヨ。これ以上の事は、それ専用に特化した本を読むか、マニュアルとPHPのソースコードを読む事になるピヨ。
PHPが少しでも気になる人や、PHPを使った開発をしている人はひとまず買っておいて損はないと思うピヨ♪

他の本のレビューも読みたいたい人は・・・書籍レビュー目次をチェックしてね♪

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

書籍をつつく141-SQLパズル 第2版 プログラミングが変わる書き方/考え方。SQL脳を作り上げよう!

お久しぶり♪今回はSQLに関する書籍を紹介するピヨ♪



この本は、題名通りSQLのパズルブックピヨ♪つまり、問題があって、その答えが考え方とともに書いてあるピヨ。イメージ的には、Java Puzzlers 罠、落とし穴、コーナーケースのSQL版だよ。
この本を読むと、SQLの考え方(集合指向)が身につくピヨ♪問題もとってつけたものではなくて、実務で似たような場面に遭遇したという人もいると思う。かくいうボクも同じで、いくつもの問題で、思い出が頭をよぎったピヨ♪
お勧めしたい人は、SQLに触れる人全員ピヨ。SQLの文法が分かっても、集合指向を身につけている人は意外と少ないピヨぉ。それも当然で、事例がすくないからだとボクは思う。その点この本はそれを補っており、プログラマのためのSQL 第2版と併読する事をお勧めするピヨ♪
SQLの文法だけ覚えている状態では危険なバグを生むピヨ。ここでいうバグというのは、デッドロック・酷いパフォーマンス・ファントムデータの発生・・・などといった、データベースにおける広い意味のバグだっピヨ。
最近のDBMSは賢くなったから、だいぶ改善してくれるだろうけど、SQLを下手に使うとデータベース特有のバグが大量の発生するから、文法を覚えるだけでは不十分で、この本で鍛えて集合指向の考え方を習得しよう♪

他の本のレビューも読みたいたい人は・・・書籍レビュー目次をチェックしてね♪

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

書籍をつつく140ーユースケース実践ガイド。究極のユースケース本。

今日は趣向を変えて、上流工程においてバイブルとされている本を紹介するピヨ♪



この本は知る人ぞ知るユースケースの聖書ピヨ♪


【目次】
第0章 ユースケースの概要
0.1 ユースケースとは
0.2 ユースケース図
第 1章 イントロダクション
1.1 ユースケースとは何か
1.2 ユースケースは状況によって異なる
1.3  要求とユースケース
1.4 ユースケースの真価が発揮される場所
1.5 労力を管理する
1.6  利用ナレーティブで準備運動をする
1.7 練習

第1 部 ユースケースの本体部分

第2章 振る舞いの契約としてのユースケース
2.1  目的を持ったアクター間の相互作用
2.2 利益に関わる利害関係者間の契約
2.3 図で表したモデル
第 3章 スコープ
3.1 機能スコープ
3.2 設計スコープ
3.3 一番外側のユースケース
3.4 スコープを定義するための作業成果物を使用する
3.6 練習
第4章 利害関係者とアクター
4.1 利害関係者
4.2 主アクター
4.3 支援アクター
4.4  議論の対象になるシステム
4.5 内部アクターとホワイトボックスユースケース
4.6 練習
第 5章 名前の付いた3つの目的レベル
5.1 ユーザー目的(青、海面)
5.2 要約レベル(白、雲/凧)
5.3  サブ機能(藍/黒、水中/貝)
5.4 絵のアイコンを使って目的レベルを強調する
5.5 適切なレベルを見つける
5.6  長めの記述例:複数レベルの「請求を処理する」
5.7 練習
第6章 事前条件、トリガー、保証
6.1  事前条件
6.2 最低保証
6.3 成功時保証
6.4 トリガー
6.5 練習
第 7章 シナリオ、ステップ
7.1 主成功シナリオ
7.2 アクションステップ
7.3 練習
第8章 拡張
8.1 拡張の基本
8.2 拡張条件
8.3 拡張処理
8.4 練習
第9章 技術およびデータのバリエーション
第10章 ユースケース間のリンク
10.1 サブユースケース
10.2 拡張ユースケース
10.3  練習
第11章 ユースケースの書式
11.1 書式の選択
11.2 ユースケースの記述スタイルに影響する事柄
11.3 5つのプロジェクトにおける標準
11.4 結論
11.5  練習

第2部 よくある議論

第 12章 いつ終えるのか
第13章 ユースケースの数が膨大になったら
第14章  CRUDとパラメタライズドユースケース
14.1 CRUDユースケース
14.2 パラメタライスドユースケース
第15章 ビジネスプロセスモデリング
15.1 モデリングVS.設計
15.2  ビジネスユースケースとシステムユースケースを結びつける
第16章 欠けている要求
16.1 データ要求の精度
16.2 ユースケースからほかの情報へのクロスリンク
第17章 プロセス全体の中でのユースケース
17.1 プロジェクトの組織化におけるユースケース
17.2 ユースケースからタスクまたは機能一覧へ
17.3 ユースケースから設計へ
17.4 ユースケースからUI設計へ
17.5 ユースケースからテストケースへ
17.6 実際の記述
第18章 ユースケース概要とエクストリームプログラミング
第 19章 問題点の修正
19.1 システムが書かれていない
19.2 主アクターが書かれていない
19.3  ユーザーインターフェイスについて詳細に書きすぎている
19.4 目的レベルが低すぎる
19.5 目的と内容が合ってない
19.6 ユーザーインターフェイスについて詳細に書きすぎている長い例

第3部 忙しい人のためのメモ

第20章 個別のユースケースについてのメモ
第21章 ユースケース全体についてのメモ
第22種 ユースケースの作業に関するメモ

付録

付録A UMLにおけるユースケース
付録B 練習の解答(一部)
付録C 用語集
付録D 参考文献


どう?目次を見てもこの本がただものじゃないって事が分かると思う。そう、この本はユースケースを実践的に使う事を専門としている珍しい本ピヨ♪ユースケースはUMLでおなじみだと思う。だけど、みんなはユースケースがテキスト形式で書かれる事をを知っているかな?
UMLの仲間入りをしているユースケースだけど、必ずしも図とは限らないピヨ。ユースケースに於いて、ユースケース図は全てではなく、逆にテキストで書いた方がいい時もあるピヨ。この本を読めばその事が詳しく書いているピヨ♪
それに、ユースケースは非常に役に立つ開発ツールとなるピヨ。UMLでの印象が強い人は、ユースケースなんてあんまり役に立たないと感じていると思う。ボクもこの本を読むまでは、ユースケースがそれ程役に立つとは思わなかったピヨ。だけど、この本を読んだら、ユースケースを書かないプロジェクトなんてありえないと考えを改めたピヨ。
だから、この本は上流工程にかかわる全ての人が読むべき本だとボクは思う。この本んを読んでいない人はもぐりでしょうと言えるぐらいピヨッ!
ユースケースをもっと生かしたい人、上流工程の技術力をアップしたい人、上手くプロジェクトを進めたい人などは是非読もう!読まないと損をするピヨ♪


【お得情報】
もっともっと本が欲しいという本好きは書籍レビュー目次書籍レビューを見ると良いピヨ♪

テーマ : 情報処理技術
ジャンル : コンピュータ

書籍をつつく139ー並行コンピューティング技法。2冊目以降に読むべき良書。

お久しぶり♪最近レビューを書いていなかったピヨ。ごめんね。
今回は並列処理に関する書籍を紹介するピヨ♪



この本は何らかの並列処理入門書を読んだ後に読むべき良書ピヨ♪
これからその辺を囀るから先ずは目次を見てね。


【目次】
The Art of Concurrency和訳書籍への推薦文
訳者まえがき
まえがき

1章 速くしたい人、手を挙げて!
1.1 さまざまな疑問
1.2 スレッド化の4つのステップ
1.3 並列アルゴリズムの背景
1.4 共有メモリプログラミングと分散メモリプログラミング
1.5 並行プログラミングへのアプローチ

2章 並行か非並行か? それが問題だ
2.1 並行アルゴリズム設計モデル
2.2 並列化不可能?

3章 正当性の検証と性能測定
3.1 並列アルゴリズムの検証
3.2 例題:クリティカルセクション問題
3.3 性能指標(現状把握)
3.4 並列性に対応するハードウェアの進化

4章 マルチスレッドアプリケーション設計の8つのルール
4.1 ルール1:真に独立した処理を特定する
4.2 ルール2:並行性はより上位で実装する
4.3 ルール3:コア数増加に備えスケーラビリティ対応を早期に計画する
4.4 ルール4:スレッドセーフなライブラリを使用する
4.5 ルール5:適切なスレッドモデルを採用する
4.6 ルール6:実行順序を前提としない
4.7 ルール7:ローカル変数を使用する、できなければロックで保護する
4.8 ルール8:並行性向上のためのアルゴリズム変更を恐れない
4.9 まとめ

5章 スレッドライブラリ
5.1 抽象化ライブラリ
5.2 明示的スレッドライブラリ
5.3 その他のスレッドライブラリ
5.4 特定分野のライブラリ

6章 並列和とプリフィクススキャン
6.1 並列和
6.2 プリフィクススキャン
6.3 セレクション
6.4 章のまとめとして

7章 MapReduce
7.1 並行map処理
7.2 並行reduce処理
7.3 MapReduceの応用
7.4 MapReduceの一般的並行性

8章 ソート
8.1 バブルソート
8.2 奇偶転置ソート
8.3 シェルソート
8.4 クィックソート
8.5 基数ソート

9章 サーチ
9.1 未ソートデータ
9.2 バイナリサーチ

10章 グラフアルゴリズム
10.1 深さ優先探索
10.2 全頂点対最短経路
10.3 最小スパニングツリー

11章 スレッド対応ツール
11.1 デバッガ
11.2 性能解析ツール
11.3 その他のツール
11.4 前へ進め、そして打ち勝て

用語解説
Photo Credits
索引

コラム目次
2分で分かる並行プログラミング入門
観点別設計スコアカード
デッドロックを発生させる4つの条件
プリフィクススキャンを用いた配列のパッキング
総当たり方式でルービックキューブ問題は解けるか


どう?この書籍の良さがわかったかな?この書籍は並行処理/並行処理について広範囲の知識を提供している本ピヨ。目次からもそれが読み取れるピヨ。勿論ボクはその点を期待して読んだピヨ。そして、実際に読んで期待通りの本だと分かったピヨ♪
この手の本は、大概特定の技術に関するプログラミングだけを解説しているものが多かったけど、この本は設計まで踏み込んで書いているピヨ。おまけに、並列アルゴリズムの考え方も書いてあるピヨ。ボクにとってはその辺が非常に気にいったピヨ♪
この本のレベルは、並列処理初心者からちょっと上ピヨ。ボクはその辺が気にいったんだけど、初心者レベルを期待していた人には残念な事かもしれないピヨ。ボクが思うに、並列処理入門者用の本を先ず読んで、ちょっと慣れてからこの本を読むと良いピヨ。
褒めてばっかりではレビューとは言えないから、ちゃんとこの本の弱点も書くピヨ。この本の弱点は話題が広い分ディープさが足りない点ピヨ。正直言って、ボクはもっと濃いのが欲しかったピヨ。ページ数と話題の広さから考えて仕方がないことだと思うけど、次の版で情報量を増やすか、別冊でテーマを絞って濃い本を書いてほしいな。20年以上も並行処理/並列処理に携わっている偉大なるClay Breshears 氏ならば絶対に可能だから、濃い続編を期待しているピヨ。
その弱点はあるものの、2冊目以降に必ず読むべき良書ピヨ♪要点が簡潔に述べられているし、書くべきことはちゃんと書かれているピヨ。著者の凄さが随所から伝わってくるピヨ。既にマルチコア時代になっているから、システム開発をする人は絶対に読むべき本だと言えると思う。
この本を読んでマルチコア時代を生き抜こう!


【追加情報】
違う本を知りたい人は書籍レビュー目次書籍レビューを見ると良いピヨ♪

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

書籍をつつく138-More Effective C#。要点をついたルーター書。

C++の世界にはEffective C++ 原著第3版 新訂版 More Effective C++が聖書としてあげられるピヨ。
そして、Javaの世界ではEffective Java 第2版が聖書と呼ばれているピヨ。
とくれば、C#の世界にもバイブルが欲しいよね♪それが・・・実はあるピヨ。
今回それを紹介するピヨ♪じゃーん♪



【目次】
第1章 ジェネリック
項目1 1.xフレームワークAPIのクラスではなく、ジェネリッククラスを使え 
項目2 制約は必要最小限にして十分なものを定義せよ 
項目3 実行時型チェックを使ってジェネリックアルゴリズムを特化せよ 
項目4 ジェネリックを使ってコンパイル時型インターフェイスを強制せよ 
項目5 ジェネリッククラスはIdisposableを実装すつ型のパラメータのサポートを忘れるな 
項目6 型パラメータのメゾット制約の定義にはデリケートを使え 
項目7 基底クラスやインターフェイスのためにジェネリックな特別バージョンを書くな 
項目8 型パラメータがインスタンスフィールドでない限り、ジェネリックメゾットを選べ 
項目9 out、ref引数よりもジェネリックとともに古いインターフェイスも実装せよ 
第2章 C#におけるマルチスレッド
項目11 スレッドを作らずにスレッドプールを使え 
項目12 スレッド間通信のためにBackgraoundWorkerを利用せよ 
項目13 同期のためにまxずlook()を使え 
項目14 ロックハンドルのためにはできる限り小さなスコープを使え 
項目15 ロックハンドルされたセクションからは未知のコードを呼び出すな 
項目16 Windows フォームとWPFのスレッド間呼び出しを理解せよ 
第3章 C#の設計実践
項目17 シーケンスのためには合成でできるAPIを作れ 
項目18 アクション、述語、関数から反復処理を切り離せ 
項目19 シーケンスの要素は要求されたときに生成せよ 
項目20 関数引数を使って結合を緩めよ 
項目21 メゾットグループは明快で完全な定義を優先せよ 
項目22 演算子の多重定義よりもメゾットの定義を優先せよ 
項目23 イベントはオブジェクトを実行時に密結合することを理解せよ 
項目24 イベントはvirtual宣言するな 
項目25 例外はメゾットの約束ごとが守られなかったときに使え 
項目26 プロパティはデータらしくふるまうように作れ 
項目27 継承と合成を区別せよ 
第4章 C#3.0の新機能
項目28 拡張メゾットでインターフェイスの最小限の約束を補え 
項目29 拡張メゾットでクローズジェネリック型を拡張せよ 
項目30 ローカル変数ではできる限り暗黙の型付けに委ねよ 
項目31 無名型を使って型のスコープを制限せよ 
項目32 外部コンポーネントに対する合成可能APIを作れ 
項目33 束縛変数の変更を避けよ 
項目34 無名型を使ってローカル関数を定義せよ 
項目35 拡張メゾットを多重定義してはならない 
第5章 LINQの操作
項目36 クエリ式からメゾット呼び出しへの変換がどのように行われるかを理解せよ 
項目37 遅延評価クエリーを使うようにせよ 
項目38 メゾットよりもラムダ式を使うようにせよ 
項目39 関数やアクションで例外を投げるな 
項目40 遅延実行と先行実行を区別せよ 
項目41 高価なリソースを抱えこまないようにせよ 
項目42 IenumerableデータソースとIquertableデータソースを区別せよ 
項目43 Single()とFlash()を使ってクエリのセマンティックスを指定せよ 
項目44 Func<>ではなくExpression<>を格納するようにせよ 
第6章 その他
項目45 null許容値のスコープはできるだけ狭くせよ 
項目46 コンストラクタ、ミューテータ、イベントハンドラのために部分クラス、部分メゾットを使え 
項目47 配列引数を使わず、Params配列を使え 
項目48 コンストラクタで仮想関数を呼び出すのを避けよ 
項目49 大規模なオブジェクトでは弱参照を検討せよ 
項目50 ミュータブルでシリアライズできないデータは自動実装プロパティにせよ 


早速ゲットして読んだピヨ♪この本の内容は、C#の効果的な使い方 ピヨ♪この本を読めば、C#1.1以降から追加された言語機能をどのようにして使うのかという事が分かるピヨ。特に ジェネリックに関する説明は役に立つピヨ。他にもマルチコア時代を反映して、マルチスレッドプログラミングについても書かれているし、LINQについても書かれているピヨ。広く学べるピヨ♪
この本は良い本で、C#使いならば絶対に読むべき本だと思うけど、それだけに残念な事があるピヨ。それは、広すぎて個々のトピックが少ない点が気になるピヨぉ。マルチコア時代だから、マルチスレッドを取りあげるのは良いことだし、LINQの知識も必要なのは分かるピヨ。だけどそれが災いして、ボクは物足りないピヨ。
理想的には、マルチスレッドとLINQは別冊にして内容を充実してほしかったピヨ。この本に書かれている事は、間違っていないし、要点は押えていると思うんだけど、いかせんマルチスレッドとLINQを相手にしては分が悪いピヨ。もっと特別に取り扱い(別冊にしてしまって)、C#における設計と言語の機能に注力した方が良かったとボクは思うピヨ。
そろそろ纏めるピヨ。この本はC#使いには必読の書ピヨ。だけど、マルチスレッドとLINQは不十分だから他の本を当たろう。また、オブジェクト指向御設計についても物足りないし、C#の言語機能についても不足しているピヨ。だけど、的確に要点はついているから、この本は各専門書のルーター的存在と言えるピヨ。この本を読んで、さらなる知識を探求しよう!


他の本を知りたい人は書籍レビュー目次を見るといいピヨ。今まで紹介した本を纏めているピヨ。

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

書籍をつつく137-プログラミング言語Java第4版。Java使いのバイブル。

そういえば、ボクはあんまりJavaの本を紹介していなかったピヨ。
だけど、ボクは結構Javaが好きで、Javaの本をある程度持っているピヨ。
という事で、その中から良書を選んで紹介するピヨ♪
プログラミング言語Java第4版 (The Java Series)
アマゾンでは結構酷評されているけど、ボクはこの本が気に入ったピヨ♪
その辺の事は後で言うから先ずは目次を見よう。


【目次】
日本語版によせて
訳者まえがき
序文
第1章 はやめぐり
第2章 クラスとオブジェクト
第3章 クラスの拡張
第4章 インタフェース
第5章 ネストしたクラスとインタフェース
第6章 列挙型
第7章 トークン、値、変数
第8章 型としての基本データ型
第9章 演算子と式
第10章 制御の流れ
第11章 ジェネリック型
第12章 例外とアサーション
第13章 文字列と正規表現
第14章 スレッド
第15章 アノテーション
第16章 リフレクション
第17章 ガーベッジコレクションとメモリ
第18章 パッケージ
第19章 ドキュメンテーションコメント
第20章 I/Oパッケージ
第21章 コレクション
第22章 その他のユーティリティ
第23章 システムプログラミング
第24章 国際化とローカリゼーション
第25章 標準パッケージ
付録A アプリケーションの進化
付録B 有用な表
さらなる学習
索引


どう?Java言語の機能を一通り網羅している事が分かるよね?そうなんだ、この本はJava言語の機能を一通り解説する本なんだ。この手の網羅本は、内容が薄い時があるから心配だよね。だけどそれは大丈夫♪この本はジェームズ・ゴスリン氏が著しているだけあって、適度に深い内容を扱っているいるんだ。
あと、アマゾンのレビューを読んで訳の方が質が気になる人が居ると思う。それも心配ないよ。確かに正誤表を見る必要があると思うけど、深刻な誤りもないし、訳文は読みやすいとボクは感じたピヨ。少なくともボクはスラスラ読めたピヨ。
この本をお勧めしたいのは、現役のプログラマピヨ。Javaを今使っている人はもちろんのこと、他言語を使用している人もこの本を読めばJavaという言語の全容を知る事が出来るピヨッ♪
だけど注意するべき点があるピヨ。ボクはJavaをある程度知っていたから問題なかったけど、もしかしたらプログラミング初心者は理解しにくいかもしれない。特にオブジェクト指向に関する事柄は、ある程度知っておくべきでオブジェクト指向入門 第2版 原則・コンセプトとか併読すればいいピヨ。
もし、この本を読んで分かりにくいと感じたら、結城さんの改訂第2版 Java言語プログラミングレッスン (上)改訂第2版 Java言語プログラミングレッスン (下)を読むといいピヨ♪この方の本は分かりやすいと評判が高いので、きっとこの本を読めばJavaをある程度使えるようになると思う。ボク本屋さんで見てみたけど、結構いい感じだったピヨ。
ちなみに、ここで紹介した本は、J2SE 5.0だよ。6がすでに出ているけど問題ないと思う。


他の本を知りたい人は書籍レビュー目次を見るといいピヨ。今まで紹介した本を纏めているピヨ。

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

書籍をつつく136-C++ テンプレート完全ガイド。題名に偽りなしテンプレートのバイブル。

ボク最近凄い本を発見したピヨ♪それがこの
C++ テンプレート完全ガイド (Programmer’s SELECTION)
ピヨ♪この本の凄さは目次を見たらわかるよ♪

続きを読む

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

書籍をつつく135-オブジェクト指向入門 第2版 原則・コンセプト。オブジェクト指向の深遠への案内書。

今日は日記を書いていたらこの名著を紹介するのを忘れていた事に気付いたピヨ♪
オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)
オブジェクト指向を知りたい時、この書籍は必読ピヨ♪


【目次】
パートA 諸問題
第1章 ソフトウェアの品質
1.1 外的品質要因と内的品質要因
1.2 外的品質要因
1.3 ソフトウェアの保守について
1.4 本章のまとめ
1.5 参考文献
第2章 オブジェクト指向の基準
2.1 基準について
2.2 方法論と言語
2.3 実装と環境
2.4 ライブラリ
2.5 もっと詳しい予告編
2.6 参考文献とオブジェクトのリソース
パートB オブジェクト指向への道
第3章 モジュール性
3.1 5つの基準
3.2 5つの規則
3.3 5つの原則
3.4 本章のまとめ
3.5 参考文献
3.6 演習問題
第4章 再利用性へのアプローチ
4.1 再利用性の目標
4.2 何を再利用すべきか?
4.3 ソフトウェア開発における繰り返し
4.4 「非」技術的障害
4.5 技術的な問題
4.6 モジュール構造の5つの要件
4.7 伝統的なモジュール構造
4.8 多重定義と総称性
4.9 本章のまとめ
4.10 参考文献
第5章 オブジェクト技術への道
5.1 コンピュータ処理の中身
5.2 機能による分解
5.3 オブジェクトによる分解
5.4 オブジェクト指向によるソフトウェア構築
5.5 課題
5.6 本章のまとめ
5.7 参考文献
第6章 抽象データ型
6.1 基準
6.2 実装のバリエーション
6.3 オブジェクトを抽象的に見るには
6.4 仕様記述を形式化する
6.5 抽象データ型からクラスへ
6.6 ソフトウェアを越えて
6.7 補助的な話題
6.8 本章のまとめ
6.9 参考文献
6.10 演習問題
パートC オブジェクト指向の技法
第7章 静的な構造:クラス
7.1 オブジェクトは主体ではない
7.2 ありがちな混乱を避けるために
7.3 クラスの役割
7.4 一様な型体系
7.5 単純なクラス
7.6 基本的な構文規約
7.7 オブジェクト指向的なスタイル
7.8 選択的エクスポートと情報隠蔽
7.9 すべてを1つにする
7.10 検討
7.11 本章のまとめ
7.12 参考文献
7.13 演習問題
第8章 実行時の構造:オブジェクト
8.1 オブジェクト
8.2 モデリングツールとしてのオブジェクト
8.3 オブジェクトと参照を操作する
8.4 生成プロシージャ
8.5 さらに参照について
8.6 参照に対する操作
8.7 複合オブジェクトと拡張型
8.8 アタッチメント:参照と値の意味
8.9 参照を扱うということ:利点と危険
8.10 検討
8.11 本章のまとめ
8.12 参考文献
8.13 演習問題
第9章 メモリ管理
9.1 オブジェクトに何が起きるのか
9.2 呑気なアプローチ
9.3 メモリの回収に関する諸問題
9.4 プログラマ制御による開放(デアロケーション)
9.5 部品レベルのアプローチ
9.6 自動領域管理
9.7 参照カウント
9.8 ガーベジコレクション
9.9 ガーベジコレクションの実用上の諸問題
9.10 領域管理を備えた環境
9.11 本章のまとめ
9.12 参考文献
9.13 演習問題
第10章 総称性
10.1 水平方向と垂直方向の型の汎化
10.2 型のパラメータ化の必要性
10.3 総称クラス
10.4 配列
10.5 総称性のコスト
10.6 議論:これで終わりではない
10.7 本章のまとめ
10.8 参考文献
10.9 演習問題
第11章 契約による設計:信頼性の高いソフトウェアを構築する
11.1 基本的な信頼性のメカニズム
11.2 ソフトウェアの正しさについて
11.3 仕様を書く
11.4 ソフトウェアテキストに表明を導入する
11.5 事前条件と事後条件
11.6 ソフトウェア信頼性のための契約
11.7 表明を用いた作業
11.8 クラス不変表明
11.9 クラスが正しいのはいつか?
11.10 ADTとの関係
11.11 表明命令
11.12 ループ不変表明と変化表明
11.13 表明を使う
11.14 検討
11.15 本章のまとめ
11.16 参考文献
11.17 演習問題
第12章 契約が破られるとき:例外処理
12.1 例外処理の基本概念
12.2 例外処理
12.3 例外メカニズム
12.4 例外処理例
12.5 rescue句の仕事
12.6 高度な例外処理
12.7 検討
12.8 本章のまとめ
12.9 参考文献
12.10 演習問題
第13章 支援メカニズム
13.1 非オブジェクト指向ソフトウェアへのインタフェース
13.2 引数渡し
13.3 命令
13.4 式
13.5 文字列
13.6 入出力
13.7 識別子に関する語彙的慣例
13.8 本章のまとめ
13.9 演習問題
第14章 継承入門
14.1 多角形と長方形
14.2 多相性
14.3 継承のための型付け
14.4 動的束縛
14.5 暫定特性と暫定クラス
14.6 再宣言の方法
14.7 継承の意味
14.8 暫定クラスの役割
14.9 検討
14.10 本章のまとめ
14.11 参考文献
14.12 演習問題
第15章 多重継承
15.1 多重継承の例
15.2 特性の改名
15.3 構造をフラットにする
15.4 反復継承
15.5 検討
15.6 本章のまとめ
15.7 参考文献
15.8 演習問題
第16章 継承のテクニック
16.1 継承と表明
16.2 グローバルな継承構造
16.3 凍結型特性
16.4 制約付き総称性
16.5 試行代入
16.6 型付けと再宣言
16.7 アンカー宣言
16.8 継承と情報隠蔽
16.9 本章のまとめ
16.10 参考文献
16.11 演習問題
第17章 型付け
17.1 型付けの問題
17.2 静的型付け:「なぜ」と「どうして」
17.3 共変性と子孫隠蔽
17.4 システム妥当性への最初のアプローチ
17.5 アンカー型に任せる
17.6 グローバル分析
17.7 多相的catcallに気づく
17.8 評価
17.9 完全な適合
17.10 本章のまとめ
17.11 参考文献
第18章 グローバルオブジェクトとグローバル定数
18.1 基本型の定数
18.2 定数の利用
18.3 クラス型定数
18.4 onceルーチンの応用
18.5 文字列型定数
18.6 ユニーク値
18.7 検討
18.8 本章のまとめ
18.9 参考文献
18.10 演習問題
オブジェクト技術用語集
参考文献
E.1 筆者以外の人の著作
E.2 筆者の著作 


目次を見たらこの書籍の濃さは伝わると思うピヨ♪濃い本が大好きなボクは喜んで買ったピヨ♪それで、この本はどういった本なのかというとバーランド・メイヤー氏が考えだしたオブジェクト指向方法論をみっちり解説した本だっピヨッ♪勘違いして欲しくないんだけど、これはあくまでも数あるオブジェクト指向方法論の内の一つ本だっピヨ。でもボクはこの本を読むことを強くお勧めするピヨ♪
これからその理由を話すピヨ。それは、契約指向なオブジェクト指向を学べるからなんだ。契約指向とは何かというと、オブジェクトが果たすべき役割と責任をきっちり決めて、各メソッドの事前契約(メソッドが実行する前の契約)・事後契約(メソッドを実行した後の契約)・不変表明(どのような状態を保証するのかを定めた契約)を定めていく考え方の事を指して言っているピヨ。Windows系開発者の方は攻撃的デバッグを知っていると思う。そうこの有名な本(.NET&Windowsプログラマのためのデバッグテクニック徹底解説)で紹介されている事ピヨ。
それで、契約指向の何が美味しいのかというと、先ずはユニットテストが行いやすくなる点が挙げられるピヨ。実務でオブジェクト指向でシステム設計した時、何が問題になると思う?それは、要求仕様が変化しても品質を保つことなんだ。開発現場に居る人にとって常識だと思うけど、お客様の要求は常に変わるピヨ。時は全てを帰るからそれも当然だよね。だけど、従来開発方法(プロセス指向・データ指向)ではその変化に対応し辛いんだ。だけど、その中で品質を保つ事はプロとして当然要求される。じゃあどうしたらいいのかというと、オブジェクト指向になるんだけど、でもオブジェクト指向は実のところ一意な概念ではないピヨ。
オブジェクト指向をしたら、要求分析は具体的にどうすればいいの?設計は具体的にどうすればいいの?開発作業はどうやって進めればいいの?・・・といった点が問題になってくるピヨ。その時、ただ無闇に「オブジェクトで考えろ」といっても何も解決しないピヨ。そこで、バーランド・メイヤー氏は個々のオブジェクトが果たすべき役割と責任に注目してオブジェクト指向開発をすると提唱しているんだ。 ここがポイントで、オブジェクトを契約指向で考えたらどうして品質が上がるのかの答えがここにあるピヨ。彼が個々のオブジェクト(クラス)に拘っている点に注意しよう。システム全体で常にテストをするのは難しいけど、個々のオブジェクトだとテストするのは簡単だよね♪
おまけに、単体で考えるから再利用しやすいクラスが作れる可能性が高いピヨ♪これが契約指向する2つ目の利点なんだ。 オブジェクト指向のメリットは再利用だとよく言われてるけど、実際に再利用しようと思ったら汎用的なオブジェクトでなければならない。特殊な環境や問題に特化したオブジェクトは再利用しようがないからね。その点、メイヤー氏のオブジェクト指向方法論は、個々にオブジェクト(クラス)に注目し、処理順序に依存することを極力避けるので再利用しやすいオブジェクトが出来上がるピヨ♪
ここまで一生懸命説明したけど、普通はよくわからないよね?その答えは・・・この本を読もう!この本を読んだらオブジェクト指向とは一体何なのかという一つの答えが得られると思う。オブジェクト指向を真面目に学習したい人は絶対に読もう!


【補足】
他の本も知りたいという人は、書籍レビュー目次書籍レビューを見ると良いピヨ♪

テーマ : 情報処理技術
ジャンル : コンピュータ

プロフィール

インドリ

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カウンター