【2022年】オブジェクト指向プログラミング本「最新・人気のおすすめの15冊」

現代のプログラミングでは欠かせない「オブジェクト指向プログラミング(OOP)」。

「オブジェクト指向」という概念はなんとなくはわかるものの、どういった粒度でクラス化するか、継承や委譲によるクラス設計をどうすべきか、クラス間関連を疎に保つには・・など、具体的な技術・考え方は学ばないとわからないもの。

こちらでは、オブジェクト指向プログラミングに関する人気の書籍を紹介していきます。

 

  1. オブジェクト指向プログラミングの本 人気ランキング/10冊詳細
    1. オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識
    2. 現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法
    3. オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)
    4. 憂鬱なプログラマのためのオブジェクト指向開発講座 (DDJ Selection)
    5. オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
    6. アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
    7. PHP本格入門[上] ~プログラミングとオブジェクト指向の基礎からデータベース連携まで
    8. PHP本格入門[下] ~オブジェクト指向設計、セキュリティ、現場で使える実践ノウハウまで
    9. オブジェクト指向における再利用のためのデザインパターン
    10. オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
  2. オブジェクト指向プログラミングの本 最新・高評価のおすすめの5冊
    1. オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)
    2. オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
    3. オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識
    4. 現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法
    5. オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
  3. オブジェクト指向プログラミングの本「Kindle Unlimited 読み放題 人気本ランキング」
  4. オブジェクト指向プログラミング参考書「新書一覧(2020年、2021年刊行)」
  5. 関連:「デザインパターン」「リファクタリング」に関する書籍
  6. 関連:最新おすすめのKindle端末
 

Kindle Unlimited 1ヶ月無料

kindle_unlimited_sale
 
  • 1ヶ月無料で読み放題
  • 1ヶ月以内でも解約可能
  • 解約後も1ヶ月まで利用可


 

オブジェクト指向プログラミングの本 人気ランキング/10冊詳細

以下が「オブジェクト指向プログラミングの本」人気ランキングと人気の10冊詳細です。

(2022/01/25 12:04 更新)
Rank製品価格
1
2,640円
2,376円
2,640円
2,640円
2
3,234円
3,072円
3,234円
3,234円
3
オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)...
発売日 2020/06/05
ソシオメディア株式会社, 上野 学, 藤井 幸多 (技術評論社)
総合評価
(4.5)
3,278円
3,114円
3,278円
3,278円
4
136円
3,520円
680円
5
3,608円
(+109pt)
3,608円
3,608円
3,608円
6
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技...
発売日 2008/07/01
ロバート・C・マーチン (SBクリエイティブ)
総合評価
(4.2)
6,380円
(+192pt)
6,380円
6,380円
7
3,938円
3,741円
3,938円
2,916円
8
3,938円
(+119pt)
3,741円
3,938円
3,938円
9
オブジェクト指向における再利用のためのデザインパターン...
ガンマ,エリック, ジョンソン,ラルフ, ヘルム,リチャード, ブリシディース,ジョン (ソフトバンククリエイティブ)
総合評価
(3.6)
5,280円
(+159pt)
5,280円
5,280円
10
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
発売日 2014/03/11
アラン・シャロウェイ, ジェームズ・R・トロット (丸善出版)
総合評価
(4.3)
4,180円
4,180円
4,180円
 

オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識

『オブジェクト指向でなぜつくるのか』10年ぶり、待望の改訂第3版!
これからの10年も通用する基本」を、より多くの読者に身につけてもらうために改訂しました。

現在のソフトウエア開発技術の主役である、オブジェクト指向の全体像とそこに含まれる各技術を平易な文章で核心をズバリと解説します。
生産性のかぎを握るプログラム開発の主要技術をわかりやすく教えるという位置づけは変わりません。
そのうえで「今ドキのOOP」として人気言語(Java、Python、Ruby、JavaScript)の最新動向を新たに盛り込んでいます。
もちろん、すべての文章を細かく見直して現況に沿うよう更新しています。

本書の特徴
◆オブジェクト指向(OOP)の全体像と特徴がわかる
◆OOPのプログラムが動く仕組みが具体的にわかる
◆関数型言語の本質とOOPとの関係がわかる
◆アジャイル開発手法と実践手法がわかる


【目次】
第1章   オブジェクト指向はソフトウエア開発を楽にする技術
今ドキのOOP:とっつきやすくて、奥の深いPython
第2章   オブジェクト指向と現実世界は似て非なるもの
オブジェクトの向こう側:バズワードになったオブジェクト指向
第3章   OOPを理解する近道はプログラミング言語の歴史にあり
プログラミング昔話: COBOL コンパイラのニワトリとタマゴの話
第4章   OOPは無駄を省いて整理整頓するプログラミング技術
今ドキのOOP:ホームページツールから進化したPHP
第5章   メモリの仕組みの理解はプログラマのたしなみ
プログラミング昔話: OOPはダンプが見づらい?
第6章   OOPがもたらしたソフトウエアとアイデアの再利用
今ドキのOOP: Rails フレームワークでブレークしたRuby
第7章   汎用の整理術に化けたオブジェクト指向
オブジェクト指向の向こう側:言語が先か、コンセプトが先か
第8章   UMLは形のないソフトウエアを見る道具
第9章   現実世界とソフトウエアのギャップを埋めるモデリング
第10章   擬人化して役割分担させるオブジェクト指向設計
今ドキのOOP:クラスに縛られずに動くJavaScript
第11章   オブジェクト指向から生まれたアジャイル開発
プログラミング昔話:昔は許されなかったXP
第12章   オブジェクト指向を使いこなそう
補章   関数型言語でなぜつくるのか
今ドキのOOP:関数型言語の箱庭を用意したJava

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
目次

【目次】
第1章 オブジェクト指向はソフトウエア開発を楽にする技術
今ドキのOOP:とっつきやすくて、奥の深いPython
第2章 オブジェクト指向と現実世界は似て非なるもの
オブジェクトの向こう側:バズワードになったオブジェクト指向
第3章 OOPを理解する近道はプログラミング言語の歴史にあり
プログラミング昔話: COBOL コンパイラのニワトリとタマゴの話
第4章 OOPは無駄を省いて整理整頓するプログラミング技術
今ドキのOOP:ホームページツールから進化したPHP
第5章 メモリの仕組みの理解はプログラマのたしなみ
プログラミング昔話: OOPはダンプが見づらい?
第6章 OOPがもたらしたソフトウエアとアイデアの再利用
今ドキのOOP:Rails フレームワークでブレークしたRuby
第7章 汎用の整理術に化けたオブジェクト指向
オブジェクト指向の向こう側:言語が先か、コンセプトが先か
第8章 UMLは形のないソフトウエアを見る道具
第9章 現実世界とソフトウエアのギャップを埋めるモデリング
第10章 擬人化して役割分担させるオブジェクト指向設計
今ドキのOOP:クラスに縛られずに動くJavaScript
第11章 オブジェクト指向から生まれたアジャイル開発
プログラミング昔話:昔は許されなかったXP
第12章 オブジェクト指向を使いこなそう
補章 関数型言語でなぜつくるのか
今ドキのOOP:関数型言語の箱庭を用意したJava

↓全て表示↑少なく表示
Users Voice
タイトルから,オブジェクト指向言語の使い方についての HowTo 本だと思いましたが違いました。 なぜ,オブジェクト指向が現代において普及しているのかを,歴史を追って説明し,とても簡単に理解しやすい内容となっています.最初の方は,「コーディングを支える技術」と似通った内容になっているので,読んだことがある人は読み飛ばすことができます. 基本的な解説は Java を用いていますが,Java を知らなくても理解できる切り口となっています. オブジェクト指向の解説が書籍の9割です。 個人的には,「デザインパターンを比喩で説明されてもあまりよくわからなかったので,オブジェクト指向は比喩を使って説明されがちだからわかりづらくなっている,あくまでプログラミング技術の一つ」,のような考え方がとてもしっくりきました. 最後に関数型プログラミングについての説明があります。 プログラミングの整理術から上流工程のモデリング手法まで使われるようになったオブジェクト指向の全体感を,オブジェクト指向に詳しくなくても理解できるので,オブジェクト指向を使うプログラミングを習った早い段階で読むと,良いと思いました. (参考:YahooShopping)

↓全て表示 ↑少なく表示
どの本を読んでわからなかったオブジェクト指向のキモの部分を詳細に分かりやすく解説している本です。 少しボリュームが多いので根気強く読むことをオススメします。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴

著:平澤 章
ウルシステムズ株式会社所属。 メインフレームによる金融システムからマイクロコンピュータを使った制御系システムまで、いくつかのシステム開発を経験した後、30代前半でオブジェクト指向モデリングとSmalltalk、(Observerパターンの)MVCフレームワークに出会い、衝撃を受ける。その後、技術コンサルティングの仕事を経て、2001年にウルシステムズのスタートアップに参画し、現在に至る。 著書/翻訳書:『UMLモデリングレッスン』(著、日経BP)、『リファクタリング 第2版』(共訳、オーム社)、『レガシーコード改善ガイド』(共訳、翔泳社) ほか


↓全て表示↑少なく表示

  

現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法

(概要)
「ソースがごちゃごちゃしていて,どこに何が書いてあるのか理解するまでがたいへん」「1つの修正のために,あっちもこっちも書きなおす必要がある」「ちょっとした変更のはずが,本来はありえない場所にまで影響して,大幅なやり直しになってしまった」といったトラブルが起こるのは,ソフトウェアの設計に問題があるから。日本最大級となる60万件以上の求人情報サイト「イーキャリアJobSearch」の主任設計者であり,システム設計のベテランである著者が,コードの具体例を示しながら,良い設計のやり方と考え方を解説します。

(こんな方におすすめ)
・システム設計のポイントを知りたいエンジニア
・良い設計とは何かを知りたいエンジニア

(目次)
第1章 小さくまとめてわかりやすくする

第2章 場合分けのロジックを整理する

第3章 業務ロジックをわかりやすく整理する

第4章 ドメインモデルの考え方で設計する

第5章 アプリケーション機能を組み立てる

第6章 データベースの設計とドメインオブジェクト

第7章 画面とドメインオブジェクトの設計を連動させる

第8章 アプリケーション間の連携

第9章 オブジェクト指向の開発プロセス

第10章 オブジェクト指向設計の学び方と教え方

↓全て表示↑少なく表示
 
目次
1 小さくまとめてわかりやすくする
2 場合分けのロジックを整理する
3 業務ロジックをわかりやすく整理する
4 ドメインモデルの考え方で設計する
5 アプリケーション機能を組み立てる
6 データベースの設計とドメインオブジェクト
7 画面とドメインオブジェクトの設計を連動させる
8 アプリケーション間の連携
9 オブジェクト指向の開発プロセス
10 オブジェクト指向設計の学び方と教え方

↓全て表示↑少なく表示
Users Voice
内容が徐々にドメイン駆動設計に近づいていくので,「ドメイン駆動設計に興味があるけど,そもそも良い設計が何なのか知らない」みたいな人に特におすすめできる本だと思いました. 著者が Java の知見が深いのか,使用歴が長いのかわかりませんが,コードを用いた説明は Java ベースで書かれていました. 要所で Java のフレームワークについて述べているので,周辺知識を持っていると一層理解できると思います. ただし,思考が Java に傾きすぎてしまうので,現在 Web アプリのバックエンドでよく使われる言語で,書いてくれるともっとわかりやすいのにと思ってしまいました. あと,個人開発の範疇だと,設計を意識しなくても,実装できたり,拡張や運用保守などもできてしまうので,ある程度の大規模開発や実務による苦労した経験が必要に感じました, 「リーダブルコード」,「オブジェクト指向でなぜつくるのか」,「ドメイン駆動設計」を足して3で割ったような内容となっており,具体的な説明からとてもわかりやすい良書だと思います. 「クリーンアーキテクチャ」や「ドメイン駆動設計」などにも興味を持てるようになったので読んでみたいと思います. (参考:YahooShopping)

↓全て表示 ↑少なく表示
どのよう設計すればオブジェクト指向を使用し、理路整然としたシステムを構築できるかが説明されています。 ドメイン駆動設計やリファクタリングの詳細は本書でも紹介されている 他書を参考することをお勧めしますが、 要点がまとまっていて良い内容かと思いました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
実践にそくして書いてあって、とても参考になりました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
著者略歴
増田亨(マスダトオル)
有限会社システム設計代表。ギルドワークス株式会社取締役。業務アプリケーションのアーキテクト。日本最大級の60万件以上の求人情報サイト「イーキャリアJobSearch」の主任設計者。非同期メッセージング/API/クラウド技術を組み合わせた、柔軟で発展性に優れた疎結合のシステム間連携方式でサービスを支える(本データはこの書籍が刊行された当時に掲載されていたものです)

  

オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)

オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)
(著)ソシオメディア株式会社, 上野 学, 藤井 幸多
発売日 2020/06/05
総合評価
(4.5)
(2022/01/25 12:04時点)
銀の弾丸、OOUI。操作性と開発効率の劇的な向上

オブジェクト指向ユーザーインターフェース(OOUI)とは、オブジェクト(もの、名詞)を起点としてUIを設計すること。タスク(やること、動詞)を起点としたUIに比べて、画面数が減って作業効率が高まり、また開発効率や拡張性も向上する、いわば「銀の弾丸」的な効果を持つ。ブログや雑誌記事などで大きな反響を得たこの設計手法について、前半部では理論やプロセスを詳説。そして後半部の「ワークアウト(実践演習)」では18の課題に読者がチャレンジ。実際に考え、手を動かし、試行錯誤をすることにより、OOUIの設計手法を体得できる。
 
内容サンプル

(引用元Amazon)

 
目次
はじめに
■1 オブジェクト指向UIとは何か
1-1 目当ての現し
 ユーザー要求とタスク
 目当て=オブジェクト
1-2 お金が先か、商品が先か
 明らかにおかしなUI
 テストするまでもない問題
1-3 オブジェクト指向UI
 オブジェクト指向UIの原則
 オブジェクトを知覚でき直接的に働きかけられる
 オブジェクトは自身の性質と状態を体現する
 オブジェクト選択→アクション選択の操作順序
 すべてのオブジェクトが互いに協調しながらUIを構成する
1-4 オブジェクト指向か? タスク指向か?
 対象オブジェクトを選ぶところから操作が始まる
 タスク指向UIの問題
 オブジェクト指向UIとタスク指向UIの対比
 タスク指向UIを改善する ビデオカメラ画面
 タスク指向UIを改善する フードデリバリーサービス
 オブジェクトを前面に出す
1-5 UIがタスク指向になってしまう背景
 業務分析では「やること」がまとめられる
 利用手続きをデザインしようとする
 タスクに必要な情報オブジェクトを定義する
■2 オブジェクト指向UIの設計プロセス
2-1 デザインプロセスのミッシングリンクをつなぐ
2-2 アプリケーションの手掛かり
 タスクを手掛かりにすると
 オブジェクトを手掛かりにする
2-3 ユーザー、タスク、オブジェクトの関係
2-4 ソフトウェアデザインのレイヤー
 UIは複数のオブジェクトを構造的に表象した合成物
 モデル ユーザーの関心対象の模式
 インタラクション 構造と機能
 プレゼンテーション スタイルやレイアウト
2-5 デザインの究極の目的は形である
 デザイナーのアブダクション
 一貫して作用する「原理」を備える
 道具の抽象性
2-6 オブジェクト指向UI設計の基本ステップ
 ステップ1. オブジェクトの抽出
 ステップ2. ビューとナビゲーションの検討
 ステップ3. レイアウトパターンの適用
■3 オブジェクト指向UI設計の実践
3-1 オブジェクト指向UIの設計ステップ
3-2 本章でデザインするものの全体像
3-3 ステップ1. オブジェクトの抽出
 「名詞」を抽出する
 「名詞」とそれらの関係を抽出する
 「名詞」を汎化し、粒度を揃える
 「名詞」の関係性をつなげ、オブジェクトを特定する
 オブジェクトの中で「メインオブジェクト」になるものを特定する
 メインオブジェクトの多重性を特定する
 メインオブジェクトに付随するオブジェクトをプロパティとする
  コラム メインオブジェクト選びのポイント
 タスクからアクションを見つける
  コラム タスク、オブジェクト、プロパティ、アクション
3-4 ステップ2. ビューとナビゲーションの検討
 基本のビュー形式
 メインオブジェクトに「コレクション」と「シングル」のビューを与える
  コラム シングルビューとコレクションビューの省略
 コレクションビューとシングルビューの呼び出し関係を検討する
 メインオブジェクトの中からルートナビゲーション項目を選定する
  コラム ルートナビゲーションの項目、アイコン、ラベリング
3-5 ステップ3. レイアウトパターンの適用
 ルートナビゲーションの配置パターン
 ビューの配置パターン
 メインオブジェクト同士の参照関係を踏まえて配置パターンを適用する
  コラム ビューの配置パターン適用のポイント
 コレクションビューの表示形式のパターン
  コラム オブジェクトへのフォーカスとコレクションビュー
 コレクションの性質や用途に合わせて表示形式を決定する
 コレクションのフィルタリングのパターン
 シングルビューの表示形式のパターン
  コラム シングルビューの表示内容
 シングルビューの性質や用途に合わせて表示形式を決定する
 アクションの性質や用途に合わせて表示形式を決定する
 Create(作成)アクションのパターン
 Delete(削除)アクションのパターン
 Update(更新)アクションのパターン
 ビジュアルデザイン
3-6 タスクをどう扱うか
 タスクの特徴
 タスクはどこへ行くのか?
■4 ワークアウト:基礎編
進め方
レベル1 メモアプリケーション
 ヒント・チャレンジ
 解説
レベル2 社員名簿アプリケーション
 ヒント・チャレンジ
 解説
レベル3 イベント店舗管理アプリケーション
 ヒント・チャレンジ
 解説
レベル4 会議室予約アプリケーション
 ヒント・チャレンジ
 解説
レベル5 家族で遊べる場所を探すアプリケーション
 ヒント・チャレンジ
 解説
レベル6 商品管理アプリケーション
 ヒント・チャレンジ
 解説
レベル7 商品管理アプリケーション
 ヒント・チャレンジ
 解説
レベル8 商品管理アプリケーション
 ヒント
 解説
レベル9 商品管理アプリケーション
 ヒント
 解説
■5 ワークアウト:応用編
進め方
レベル10 スマートフォン用の営業支援アプリケーション
 ヒント
 解説
レベル11 イベント管理アプリケーション
 ヒント
 解説
レベル12 保険契約の顧客管理アプリケーション
 ヒント
 解説
レベル13 アセット管理アプリケーション
 ヒント
 解説
レベル14 サイト管理アプリケーション
 ヒント
 解説
レベル15 出張申請・精算アプリケーション
 ヒント
 解説
レベル16 契約管理アプリケーション
 ヒント
 解説
レベル17 通貨換算アプリケーション
 ヒント
 解説
レベル18 販売実績照会アプリケーション
 ヒント
 解説
■6 オブジェクト指向UIのフィロソフィー
6-1 オブジェクトの原義
6-2 オブジェクト指向
 クラスとインスタンス
 イデア論
 GUIにおけるオブジェクト
 プログラミングにおける記述法
6-3 GUI
 マン ? マシン インターフェースからユーザーインターフェースへ
 インターフェースはユーザーとオブジェクトを接着する
 Whirlwind GUIという発想の原型
 SAGE 防空システムに組み込まれた最初期のGUI
 Sketchpad グラフィック言語による対話型コンピューター
 NLS 知的生産活動のためのコンピューター
 Smalltalk 誰もが使えるパーソナルコンピューター
 TUI テキストベースのUI
 Star GUIベースのビジネス用ワークステーション
 Macintosh 商業的に成功した最初のGUIシステム
 iPhone パーソナルコンピューターの新しいフォームファクター
 メタメディアとしてのオブジェクト指向UI
6-4 モードレス
 モードレスネスを信奉しなさい
 ラリー・テスラー テキスト編集のモードレス化
 ドナルド・ノーマン モードエラーの分析
 ジェフ・ラスキン モードレスにすることで劇的に使いやすくなる
 モードレスにする方法
6-5 オブジェクト指向UIについての文献
 『Object-Oriented User Interfaces and Object-Oriented Languages』
 『Object-Oriented Interface Design』
 『Designing Object-Oriented User Interfaces』
 『The Elements of User Interface Design』
 『Designing for the User with OVID』
おわりに
参考文献
索引
あとがき

↓全て表示↑少なく表示
Users Voice
ここ10年くらいで一気に普及した UI・UXという概念は、一部では未だに蔑ろにされています。 お役所のホームページなどはその最たる例で、 「一体だれがこれを使いやすい(わかりやすい)と思ったのか」と 呆れることも少なくありません。プロが作ったはずなのに。 曖昧な要求で技術者を振り回す発注者や、 駆け出しのエンジニアさん達には、ためになりそうです。 直観的に使いやすいメニューやナビゲーション構成というのは 出来る人は自然とそう設計できるものだったりもしますが、 こうして半ば無理やりに言語化して教わらないと身に着けられない人も多く、 その観点で、とても意味のある本だと感じました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
人気の書籍ということで、学びのために購入してみました。なかなかのボリュームなので、しっかり読み込んで理解していこうと思います。大切な分野です。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
もっと実例に沿って解説してくれると思っていたのですが、目新しいことはあまり載っていなかったです。 うーん、いまひとつ。残念。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴

著監:上野 学
デザインコンサルタント/デザイナー。各種ビジネスアプリケーション、ウェブ/モバイル/デスクトップアプリケーション、その他の様々なインタラクティブメディアのヒューマンインターフェース設計およびユーザビリティ評価に従事。ソシオメディアにおいてデザインメソッド開発を担う。執筆、講演など多数。 Twitter:@manabuueno

著:藤井 幸多
ソシオメディア株式会社ユーザーインターフェースデザイナー。各種ビジネスアプリケーションをはじめさまざまなアプリケーションのデザインコンサルティングを経験。UI設計、ユーザビリティテスト、デザインガイドライン策定、デザイン評価、OOUI メソッドとトレーニングプログラムの開発/実施などを通して、デザイン組織への支援を行う。 Twitter:@ atochotto


↓全て表示↑少なく表示

  

憂鬱なプログラマのためのオブジェクト指向開発講座 (DDJ Selection)

 
内容サンプル

(引用元Amazon)

 
Users Voice
C++による実践的ソフトウェア構築入門
これまで難解な印象がぬぐえなかった「オブジェクト指向」のイメージを一新、現場のエンジニアに取材した具体的な解説で、分析/設計/実装というソフトウェア開発の流れをトータルに把握することができます。
付録CD-ROMにはオブジェクト指向CASE(ソフトウェア開発支援)ツールRational Rose(デモ版)も収録されていますから、読者はすぐにオブジェクト指向開発を実践し、実際に動くプログラムを作ることが可能です。
ソフトウェアの分析/設計の実践と同時に、オブジェクト指向言語であるC++の用法も詳しく説明しているため、本書を読むことでC++言語も使えるようになります。
すでにCを習得しているプログラマが、C++を学習するのに最適です。
■目次
第1部 オブジェクト指向ソフトウェア開発とは
第1章 C言語プログラマでもわかる
「クラスとはなにか」
第2章 「データ」ではなく「クラス」である理由
メンバ関数とは
第3章 オブジェクト指向開発
私たち開発者にとってのメリットとは
第2部 静的分析
第4章 クラス
なにがクラスになるのか、そしてならないのか
第5章 関連
知られざる最重要概念
第6章 継承
プログラムを「作らない」ためのテクニック
第7章 より高度な分析
さらに深くシステムを洞察するために
第8章 多重継承る
複数の面をもつクラスの本質に迫る
第3部 動的分析
第9章 オブジェクトの状態
オブジェクトの変化を管理するための方法
第10章 より高度な状態管理
有限状態マシンの本質を追求するためには
第11章 メッセージシーケンス
オブジェクトの連携の把握
第4部 設計・実装
第12章 オブジェクト指向設計
実際にプログラムを動かす為に
第13章 クラスライブラリ
オブジェクト指向に不可欠な実装技術
第14章 実例
動くプログラムを作る (参考:honto)

↓全て表示 ↑少なく表示
ちょっとスクリプト言語を勉強しよう、と思って手にとった『たのしいRuby』。最初の方は普通に読めたのだけれど、純粋なC言語しか知らない僕には、クラスやらメソッドやらが出てきた時点でお手上げでした。何しろインスタンスだとか継承だとか、どんどん出てくる用語の意味が分からない。
 これではいけないと思い、物知りな知人に「オブジェクト指向を理解する為の良書はないか」と聞いたところ紹介されたのがこの本。
 本書では、オブジェクト指向言語としてC++を中心に解説してます。しかしながら、あくまで話の中心はプログラミング言語の事ではなく「オブジェクト指向とは何であるか」です。CかC++の知識があった方が読み易い事は確かですが、それ以外の何か1つでもプログラミング言語を知っていれば本書を読むには十分です。
 なによりも、この本では無駄なく筋道ハッキリとオブジェクト指向の基礎を解説してくれてます。基本的な用語・概念の解説に始まり、静的分析、動的分析と進み、最終的には書籍で学んだ知識を活用して1つのプログラムを作成する事になります。
 これからのプログラムの現場では、オブジェクト指向を用いた設計を免れる事はできません。ただでさえ理解が難しいと言われるオブジェクト指向、世には数多の解説書が存在します。しかし、この本と同程度の良書を探すのは容易ではないでしょう。 (参考:honto)

↓全て表示 ↑少なく表示
オブジェクト指向入門書として、大変もてはやされた時期があり、その評価を参考に購入した経緯がありましたが、最近この本の評価を調べてみたところ、ダメ本とかトンデモ本とされていました。
購入当時、読んでみてもさっぱりわからず、たとえ話を実務に当てはめようと思ってもピンと来ず、どうやって本の内容を活用すればいいか悩みました(結局、活用できませんでしたが)。
自分のスキル不足・理解不足のせいだろうと思っていたのですが、近年の評価を見ると、自分のせいだけじゃなく本の内容も悪かったのかもと思い始めました。
ということで、もう一度読み直してみてレビューしてみたいと思います。 (参考:honto)

↓全て表示 ↑少なく表示

  

オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方

オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby"、待望の翻訳版! 使いこなせるようになるととても便利なオブジェクト指向ですが、「なんとなく」の理解で使っていると、大きな罠にかかってしまいます。本書は、保守性を上げて運用コストを下げるアプリケーションをつくるために、クラス設計から基本概念、継承のテクニック、ダックタイプ、そしてテスト設計まで、幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。
 
内容サンプル

(引用元Amazon)

 
目次
第1章 オブジェクト指向設計
第2章 単一責任のクラスを設計する
第3章 依存関係を管理する
第4章 柔軟なインターフェースをつくる
第5章 ダックタイピングでコストを削減する
第6章 継承によって振る舞いを獲得する
第7章 モジュールでロールの振る舞いを共有する
第8章 コンポジションでオブジェクトを組み合わせる
第9章 費用対効果の高いテストを設計する

↓全て表示↑少なく表示
Users Voice
普段はC,C++を使っています。 Ruby未経験ですが、本書はRubyでの記載でした。 但し、少し推測でよんでいますが、オブジェクト指向がわかっている人なら読むことは可能です。 内容は、今までにはなかった本でして依存関係に関して詳しく書いています。買ってよかったです。ステップアップしたい人は一回は読むべきです。 できれば、脳内変換が無駄な気がするのため、C++やJava版も欲しかった。。。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
『オブジェクト指向設計実践ガイド』
ソフトウェア・アーキテクトとして30年以上の経験を持つSandi Mets 氏の著書です。
「オブジェクト指向」って、プログラミングの世界では普通に使われている言葉なんですが、プログラミング初心者の私には全然その姿が見えませんでした。
学生時代に勉強したプログラミング言語のBasic、FORTRANは手続き型言語でしたし、趣味でいじっていたEXCELマクロのVBAも小さいものばかりだったので必要としませんでした。
今回、RubyやRuby on Railsを真剣に取り組み始めて、他人のコードを見て???となるばかり。
そこで評判も良く、Rubyを使って説明している本書に挑戦してみることにしました。
【本書で学べること・考えること】
・オブジェクト指向プログラミングの利点
・単一責任のクラスの決定
・不必要な依存の断ち切り
・柔軟なインターフェイスの定め方
・ダックタイピング
・上手な振る舞いの適用
・コンポジションによるオブジェクト作成
・費用対効果の高いテスト設計
読んでみての感想です。
元の説明が冗長的な上に直訳的な日本語訳なので、なかなか読解が難しい本です。
絶対の正解があるわけでなく、概念的な内容なので、より難解です。
ただ、説明がRubyのコードで書かれているので、コードを読めば内容が理解できる点も良かったです。
今の自分のスキル、知識では、全部を理解することはできませんでした。
ただ、読む前と読んだ後では、確実にコードの見方や書き方が変わったと思います。
(Rubocopがメソッドの行数が多いと注意してくる理由が分かりました。)
自分の理解した内容としては、以下の通りです。
・オブジェクト指向の目的
 SOLID、DRY、デメテルの法則としった原則に基き、将来的に変更や拡張のコストを下げる柔軟性の高いソフトウェア設計を行う
・注意点
 -クラスは単一責任
 -依存関係は疎結合に
 -パブリックインターフェイスを明示
・設計手法
 -ダックタイピング
 -継承 is-a関係
 -モジュール
 -コンポジション has-a関係
・テストコード
 -将来の変更に備えつつ不変的な単位でコードを書く
まだまだ理解は足りませんが、体系的に知識を得たので、必要に応じて戻ってこれると思います。
今のタイミングで読んでおいて良かったです。 (参考:honto)

↓全て表示 ↑少なく表示
Rails実務経験半年の頃に読んだが、オブジェクト指向について理解しているけれど実践できない自分にはとても勉強になる内容だった。
読んだら力になることは間違いないが、読むのにかなり気合いを要したので、「それなりに実務経験を積んでから読む」 or 「短期間で集中して読む」のがいいと思う。
自分は後者。
全て完璧に理解したとは言えないので、時間を見つけて読み返したい。 (参考:honto)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴
メッツ,サンディ(Metz,Sandi)
ソフトウェア・アーキテクトとして、デューク大学にて毎日コードを書いている。デューク大学のチームでは、15年以上進化しつづけてきた大規模なオブジェクト指向アプリケーションを抱える顧客の、実際の問題を一丸となって解決している。現在、ノースカロライナのダーラム在住

高山泰基(タカヤマタイキ)
株式会社Misoca勤務。西日暮里.rbのメンバー(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

【累計7刷りのロングセラー】
時代を超越したプログラミングの基本原則


本書はロバート・C・マーチン(愛称、ボブおじさん)が世に送り出した
『Agile Software Development』の邦訳書(Java版)です。
本書は優れたIT系書籍に送られる「Jolt Award」を受賞し、
発売以来いまだにアメリカのAmazonでもトップセールを続けている
「アジャイルソフォトウェア開発」の不屈の名作であり、バイブルです。

もはやソフトウェア開発業界で「アジャイル開発」という言葉を知らない人はいないでしょう。
著者は、アジャイル開発の歴史的な出発点となる
「アジャイルソフトウェア開発宣言」の生みの親の一人であり、
さまざまな国際会議やドレードショーなどでレギュラースピーカーを務める
「アジャイルソフトウェア開発」の大御所です。
『Clean Coder プロフェッショナルプログラマへの道』
『Clean Code アジャイルソフトウェア達人の技』
などの著者としても知られている、一級の教育者でもあります。

アジャイルソフトウェア開発は、めまぐるしく変化する仕様要求にさらされながらも、
迅速にソフトウェアを開発する能力をあたえてくれます。
こうしたアジャイル性(俊敏性)を達成するためには、
規律とフィードバクを与えてくれるプラクティス(実践法)が必要です。
また、柔軟性と保守性を兼ね備えた設計をするための基本原則や、
特定の問題にこういった原則をバランス良く利用するためのデザインパターンを理解している必要があります。

本書は、上記3つのコンセプトをすべて縫い合わせ、
一つにまとめるという前人未到の究極の試みを見事にやってのけています。
この美しく織り成された世界観には感動すら覚えます。
これは、自らの経験をもって著者が到達した1つの究極の境地、「奥義」だといえるでしょう。
「アジャイルソフトウェア開発」の創始者直伝の本書を手にした読者の方は、
師匠から奥義を授かり、巨人の肩に乗りその一歩先に進むことができるはずです。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
目次
第1部 アジャイル開発
第2部 アジャイル設計
第3部 給与システムのケーススタディ
第4部 給与システムのパッケージング
第5部 気象観測所のケーススタディ
付録
Users Voice
アジャイルとオブジェクト指向は切っても切れない。オブジェクト指向の本を読んだりしても何が嬉しくてそうするのか今までよくわからなかったが、この本はオブジェクト指向をどう使えばその効用が最大限に発揮されるのかを具体例を持って示してくれた。本書を読むには前提知識としてオブジェクト指向が必要だけど、とは言え、いまいち腑に落ちてなかった部分がかなりハッキリするし、オブジェクト指向を勉強中に並行して読むのもオススメできる。わかりやすい言葉で書かれていて大変読みやすいので、オブジェクト指向の基本さえ知って入れば、分厚いが一気に読み終わると思う。デザインパターンを単に暗記するよりも深い理解につながる一冊である。 (参考:honto)

↓全て表示 ↑少なく表示
◆内容
めまぐるしく変化する仕様要求にさらされながらも、迅速にソフトウェア開発を進めていく「アジャイル開発」を実行するためには、
- 「実践法」の理解 (XP とか)
- 多くの先人達の失敗と経験から作られた「設計基本原則」の理解 (SRP, OCP, LSP, DIP, ISP とか)
- こうした原則をバランス良く利用した「デザインパターン」の理解
が必要だと述べ、それぞれについて詳細に語られている。
◆印象に残った点
◎テストファースト
 - テストファーストにすると、使う側の視点で見ざるを得ないため、早い段階でインタフェースに注意を払える。
 - テスト可能な設計にしようとすると、結果的に周辺コードと切り離され、ソフトウェアの分離を促す。結果的に設計の質を高める。
 - => いつもは正直、 設計->実装->テスト の順でしかできていなかったので、この考え方は納得した。(本でも、先に実装して後からテストを加えてやってみた経験談を元にした小説があり、「テスト先に加えておけば手戻りせずにすんだな」という気づきが書かれていた。)
◎リファクタリングをすべきか?
 - もともと最初からプログラムは正しく機能していたのに、わざわざ時間を割いた価値はあるのか?
 - 筆者の答え「書き上げるモジュールと保守するモジュールのすべてを必ずリファクタリングすることを強く勧める」
 - 興味深い例え:リファクタリングは食後のキッチンを片付けるようなもの。最初は後片付けをしなければ、それだけ食事時間は短くて済むが、やっておかないと、翌日の食事の用意をするときにもっと時間がかかってしまう。そこでまた後片付けしたくなくなる。実際片付けをしなければ、その日の食事は早く終えることができる。しかし、キッチンはどんどん汚くなっていく。ついには、必要な調理用具を探すだけでとんでもない時間が費やされてしまう。乾いて皿にこべりついた食べ物を引っペ返して、ごしごしあらうだけで大変だ。これでは、いつまでたっても食事にありつけない。結局、後片付けを怠れば、食事にかかる時間は長くなるのだ。
◎ソフトウェア開発で一番変化するのは仕様であり、最も不確実な要素は仕様である。アジャイルは、仕様変更(変化)でソフトが腐敗しないような開発方法の実践法を示している。 (参考:honto)

↓全て表示 ↑少なく表示
「アジャイルソフトウェア開発宣言」の「包括的なドキュメントよりも動くソフトウェアを」という考えが、本書を通底して流れているように思える。我々は、この本を通読することで、アジャイル開発を疑似体験することができるのである。ただし、ここでの「アジャイル」とは、組織文化に着目したスクラム的なものではなく、プログラマーの復権を目指したXPであるけれども。
この書籍は、設計原則とコード例で満ち溢れている。もちろん、必要最低限のクラス図、シーケンス図などのモデルも随所に記載されている。もし、この書籍を腹落ちしながら読み通すことができれば、本当に素晴らしいソフトウェア開発者になることであろう。私も残念ながらそのレベルには至っていないが、そこに到達したいとは思っている。
本書に記載されている設計原則は、あまりにも有名である。この設計原則のおかげで、本書は「古典」になっている。これはアジャイル開発とは関係なくとも、すべてのソフトウェア開発者が読むべき文章であると思う。 (参考:honto)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴
マーチン,ロバート・C.(Martin,Robert C.)(マーチン,ロバートC.)
1970年からソフトウェアプロフェッショナルとして活動しており、1990年から国際的なソフトウェアコンサルタントとして活躍している。C++、Java、.NET、OO、Patterns、UML、アジャイル方法論、XP(エクストリームプログラミング)といった分野で世界中の顧客を指導する経験豊富なコンサルタント集団であるObject Mentor社の創設者であり社長

ニューカーク,ジェームス・W.(Newkirk,James W.)(ニューカーク,ジェームスW.)
ソフトウェア開発マネージャ兼アーキテクト。2000年から.NETフレームワークの仕事に携わり、.NETのユニットテストツールであるNUnitの開発にも貢献

コス,ロバート・S.(Koss,Robert S.)(コス,ロバートS.)
29年間ソフトウェアを書き続けている博士。オブジェクト指向設計の原則をプログラマとして、またシニアアーキテクトとして多くのプロジェクトに適用してきた。数百にも及ぶオブジェクト指向設計(OOD)やプログラミング言語のコースを受け持ち、世界中で数千人もの生徒に技術を教えてきている。現在、シニアコンサルタントとしてObject Mentor社で活躍している

瀬谷啓介(セヤケイスケ)
日本テキサス・インスツルメンツ半導体グループ技術主任、日本AMD次世代製品開発センター部長兼モバイルプラットフォームアーキテクトを経て、現在、株式会社フィルモア・アドバイザリーにてIT部門統括執行役員。Red Hat認定エンジニア(RHCE)。理論物理学学士、物性物理学修士(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  

PHP本格入門[上] ~プログラミングとオブジェクト指向の基礎からデータベース連携まで

(概要)

Webアプリケーションの定番言語であるPHPの基礎から実践までを、上下巻のフルボリュームで集大成。

「この目的を実現するためには、どの文法テクニックが適合しやすいだろう?」

「このプログラムをより読みやすくするために、どんなアプローチができるだろう?」

といったことを思考しつつ、「とりあえずは動く」だけで終わらない、現場に求められる品質を形にするための知識とテクニックを解説します。


(こんな方におすすめ)

・プログラミング入門、PHPの超入門レベルの知識はあるが、実践レベルの知識がないプログラマ


(目次)

1章 はじめてのPHP

  1-1 Webの仕組みとPHPの役割

  1-2 WebサーバーとWebクライアントはどのようにコミュニケーションをとるのか ― HTTPリクエストとHTTPレスポンス

  1-3 WebサーバーとPHP

  1-4 XAMPPによる開発環境のセットアップ

  1-5 ベーシックなPHPプログラム

2章 PHPの基本構文

  2-1 変数を使って値を出し入れする ― 代入と出力

  2-2 さまざまな形式の値を取り扱う ― データ型

  2-3 役割を持つ記号たち ― 演算子

  2-4 条件によって処理を切り替える ― 条件分岐

  2-5 同じ処理を繰り返す ― ループ処理

  2-6 一連のプログラム処理を意味のある単位でまとめる ― 関数

  2-7 共通部品を外部ファイル化し、プログラム間で共有する ― require命令、include命令

  2-8 PHP実行時のオプション設定

3章 プログラムを部品化し、拡張に強いアプリケーションを作る ― オブジェクト指向

  3-1 オブジェクト指向 ― アプリケーションの品質をゆらぎにくくする技術

  3-2 PHPを使ったオブジェクト指向の実装

  3-3 クラスに親子関係を持たせる ― 抽象クラスと継承

  3-4 クラスのメソッド定義を「約束」させる ― インターフェースと実装

  3-5 横断的で定形的な処理をクラスに挿し込む ― トレイト

  3-6 名前空間を使って、関連するクラス群をカテゴリー分けする

  3-7 イレギュラーなケースに対処する ― 例外処理

  3-8 クラスの操作に自動で反応するメソッド ― マジックメソッド

  3-9 インスタンスとの付き合い方 ― オブジェクト型変数の性質

4章 アプリケーションの機能をより豊かにする ― 内部関数/SPLクラス

  4-1 関数とクラスの種類 ― プログラマーが定義したもの/あらかじめ用意されているもの

  4-2 文字列を扱う ― 文字列処理のための関数

  4-3 正規表現を使ったパターンマッチング

  4-4 数値を扱う ― 数値処理のための関数

  4-5 日付/時間を操作する ― DateTimeクラス

  4-6 配列/連想配列を操作する

  4-7 ファイル/ディレクトリを扱う

  4-8 ファイル操作をクラスでおこなう ― SplFileObjectクラス、DirectoryIteratorクラス

  4-9 データの妥当性をチェックする

  4-10 ランダムな値を生成する ― 乱数

  4-11 データを安全に取り扱う ― ハッシュ化と暗号化

  4-12 コマンドラインプログラムの実行時オプションを制御する ― コマンドライン引数

  4-13 メールを送信する

  4-14 OSコマンドをPHPから実行する

  4-15 デバッグに役立つ情報を得る

5章 PHPによるWebアプリケーションの実装

  5-1 入力フォームを介したデータ送受信

  5-2 リクエストヘッダ/レスポンスヘッダ情報の読み書き

  5-3 クッキーを使ってクライアントPCに情報を保存する

  5-4 セッション変数を使ってサーバー上に情報を保存する

  5-5 ファイルアップロード処理

6章 リレーショナルデータベースを使った体系的なデータ管理

  6-1 体系的なデータ管理を実現するソフトウェア ― リレーショナルデータベース

  6-2 SQLでデータベースを操作する

  6-3 PHPプログラムからデータベース操作する ― PDOの利用

7章 読みやすいPHPプログラミング作法 ― 開発者の意図を、わかりやすく伝える

  7-1 コーディング規約 ― 見た目に美しく読みやすいコード作り

  7-2 読み手に意図が伝わるコーディング ― 迷いを与えない

  7-3 見た目をスリムにし、シンプルな思考をうながす

↓全て表示↑少なく表示
 
目次
■■1章 はじめてのPHP
■1-1 Webの仕組みとPHPの役割
1-1-1 Webページを動的に組み立てるためのプログラム言語 ― PHP
1-1-2 ラッキーカラーをPHPで動的に表示する
1-1-3 PHPはサーバー上で実行される、サーバーサイド言語
1-1-4 PHPはしなやかなプログラム言語 ― 他言語との比較
1-1-5 HTMLの基本的な書式を理解する
1-1-6 レイアウトはHTMLで、視覚表現はCSSで
■1-2 WebサーバーとWebクライアントはどのようにコミュニケーションをとるのか ― HTTPリクエストとHTTPレスポンス
1-2-1 Webクライアントからのページ要求 ― HTTPリクエスト
1-2-2 Webサーバーからのページ応答 ― HTTPレスポンス
■1-3 WebサーバーとPHP
1-3-1 Webサーバーソフトウェアを使ってOSにWebサーバー機能をもたせる
1-3-2 PHPの2つの実行方法 ― CGI版とCLI版
■1-4 XAMPPによる開発環境のセットアップ
1-4-1 Windows版XAMPPをインストールする
1-4-2 Apacheを起動する
1-4-3 ダウンロードファイルを展開する
1-4-4 php.iniを設定する
1-4-5 コマンドラインでPHPを実行する ― CLI版PHP
■1-5 ベーシックなPHPプログラム
1-5-1 PHPプログラムはPHPタグの中に書く
1-5-2 PHPの命令文はセミコロンで終わらせる
1-5-3 プログラマーのためのヒントを残す ― コメント
1-5-4 URLとファイルパスの関係を理解する ― localhostドメインとドキュメントルート
■■2章 PHPの基本構文
■2-1 変数を使って値を出し入れする ― 代入と出力
2-1-1 流動的なデータを持ち運ぶ ― 変数
2-1-2 変数の命名規則
2-1-3 変数の値を出力する ― echo命令、print命令
2-1-4 デバッグのために変数の情報を出力する ― var_dump命令
■2-2 さまざまな形式の値を取り扱う ― データ型
2-2-1 単一のデータを保存する ― スカラー変数とデータ型
2-2-2 文字列データの扱い(1) ― 固定値と変数値をつなぐ
2-2-3 文字列データの扱い(2) ― クオート内でクオートを使う
2-2-4 文字列データの扱い(3) ― エスケープシーケンスで特殊な文字を表す
2-2-5 文字列データの扱い(4) ― 改行コードをPHP_EOLで切り替える
2-2-6 文字列データの扱い(5) ― 長い文字列にはヒアドキュメントを使う
2-2-7 値のデータ型を変換する ― キャスト
2-2-8 複数の値を順序立てて保存する ― 配列
2-2-9 複数の値をラベル付きで保存する ― 連想配列
2-2-10 PHPにとっては配列も連想配列も同じ
2-2-11 配列を多階層にする ― 多次元配列
2-2-12 配列/連想配列の要素数を得る ― count関数
2-2-13 配列の各要素をスカラー変数に割り当てる ― list()
2-2-14 特別な意味を持つ値に名前を付ける ― 定数
2-2-15 PHPにより値が設定される定数 ― マジック定数
■2-3 役割を持つ記号たち ― 演算子
2-3-1 四則演算などの計算をする ― 代数演算子、加算子/減算子
2-3-2 配列を合成する2つの方法 ― 加算の演算子(+)とarray_merge関数
2-3-3 浮動小数点数の計算 ― 丸め誤差への対応
2-3-4 丸め誤差が起こる原因は、10進数→2進数の対応づけが正確にできないことにある
2-3-5 すでにある変数値に演算を加える ― 複合演算子
2-3-6 2つの変数で1つの値を共有する ― リファレンス渡し
2-3-7 値を比較する ― 比較演算子
2-3-8 浮動小数点数を比較する
2-3-9 2つの値の等価と大小を同時に比較する ― 宇宙船演算子
2-3-10 比較結果に応じた値を選ぶ ― 条件演算子(三項演算子、null合体演算子)
2-3-11 2つ以上の条件を組み合わせる ― 論理演算子
2-3-12 論理演算子の優先順位をコントロールする
2-3-13 論理演算子と命令文の組み合わせで、シンプルな条件分岐を表す
2-3-14 ビット列で複数の真偽値をまとめて表す ― ビット演算子
■2-4 条件によって処理を切り替える ― 条件分岐
2-4-1 シンプルな条件分岐 ― if構文
2-4-2 枝分かれした条件分岐 ― if~elseif構文
2-4-3 条件にマッチしなかった場合の分岐 ― if~else構文
2-4-4 条件式の表現をより豊かにする
2-4-5 条件分岐による空欄チェック処理 ― PHPの自動型変換に気をつける
2-4-6 変数値による条件分岐 ― switch構文
2-4-7 異常時にプログラムを強制終了する ― exit命令、die命令
■2-5 同じ処理を繰り返す ― ループ処理
2-5-1 配列/連想配列に対する繰り返し処理 ― foreachループ
2-5-2 それぞれの要素をループ中に書き換える ― リファレンス渡しによるforeach
2-5-3 リファレンス変数のunsetを忘れると何が起こるか
2-5-4 回数を指定した繰り返し処理 ― forループ
2-5-5 forループを配列のループ処理に使う
2-5-6 制御構文はネストできる
2-5-7 ある条件を満たす間の繰り返し処理 ― whileループ
2-5-8 繰り返し処理の制御 ― break命令、continue命令
2-5-9 制御構文の開始と終了をわかりやすく書く ― endif、endforeach、endfor、endwhile
■2-6 一連のプログラム処理を意味のある単位でまとめる ― 関数
2-6-1 関数の基本的な書き方 ― 関数名、引数、戻り値
2-6-2 return命令は関数を途中で終わらせる
2-6-3 関数から別の関数をコールする
2-6-4 関数内で引数を書き換えた時の挙動 ― 値渡しとリファレンス渡し
2-6-5 その関数は、汎用的か?
2-6-6 関数の内と外で、見えている変数が違う ― 変数のスコープ
2-6-7 引数と戻り値のデータ型を指定する ― 型宣言
2-6-8 データ型の暗黙的な変換を防ぐ ― declare文とstrict_types
2-6-9 declare命令はプログラムファイル単位でしか適用できない
2-6-10 オプショナルな引数を定義する ― デフォルト引数
2-6-11 引数の数を限定しない ― 可変長引数リスト
2-6-12 値として受け渡しできる関数 ― クロージャー
2-6-13 クロージャー外の変数をuseキーワードで引き継ぐ
2-6-14 クロージャーをcallable型の引数として渡す
2-6-15 2つ~3つ程度の処理バリエーションなら、クロージャーより条件分岐を選ぶ
■2-7 共通部品を外部ファイル化し、プログラム間で共有する ― require命令、include命令
2-7-1 require_once命令でPHPプログラムを読み込む
2-7-2 読み込み対象のファイルは絶対パスで指定する
2-7-3 include命令でWebページのパーツHTMLを読み込む
2-7-4 PHPプログラムだけのファイルでは、PHPタグを閉じない
■2-8 PHP実行時のオプション設定
2-8-1 オプション設定の方法1 ― php.iniで指定する
2-8-2 オプション設定の方法2 ― .htaccessで指定する
2-8-3 オプション設定の方法3 ― Apacheの設定ファイルhttpd.confで指定する
2-8-4 オプション設定の方法4 ― ini_set関数で指定する
2-8-5 オプションの設定方法と適用される範囲
2-8-6 オプションによって使える指定方法が異なる ― PHP_INI_*モード
2-8-7 よく扱う実行時オプション一覧
2-8-8 エラーレベルを制御するオプション ― error_reportingオプションとE_*定数
2-8-9 開発サーバーと本番サーバーでのエラーレベル設定
■■3章 プログラムを部品化し、拡張に強いアプリケーションを作る ― オブジェクト指向
■3-1 オブジェクト指向 ― アプリケーションの品質をゆらぎにくくする技術
3-1-1 オブジェクト指向がもたらすメリット
3-1-2 処理を役割分担する ― クラス
3-1-3 クラスに状態を持たせる ― プロパティ
3-1-4 クラスにふるまいを持たせる ― メソッド
3-1-5 クラスに命を吹き込む ー インスタンス
3-1-6 どんなものがクラスになりうるか ― ものと概念と呼び名
■3-2 PHPを使ったオブジェクト指向の実装
3-2-1 クラスを定義する
3-2-2 プロパティを定義する
3-2-3 メソッドを定義する
3-2-4 インスタンス化する ― newキーワード
3-2-5 インスタンスを別のクラスに渡す
3-2-6 1つの役割が、複数のクラスにまたがらないようにする
3-2-7 インスタンス化された時の初期化処理をおこなう ― コンストラクタ
3-2-8 プロパティとメソッドのアクセス権を指定する ― アクセス修飾子
3-2-9 プロパティはprivateが基本 ― アクセサメソッド
3-2-10 クラス固有の定数を持たせる ― オブジェクト定数
3-2-11 インスタンスの状態に左右されないメソッド ― 静的メソッド
3-2-12 プログラム処理全体でクラスの1つの状態を共有する ― 静的プロパティ
3-2-13 静的メソッド/プロパティは自クラスのインスタンスメソッド/プロパティにアクセスできない
■3-3 クラスに親子関係を持たせる ― 抽象クラスと継承
3-3-1 抽象クラスで共通概念を定義し、継承で現実化する
3-3-2 継承に適しているかを判断する ― ●●は▲▲である
3-3-3 抽象クラス/抽象メソッドを定義する ― abstractキーワード
3-3-4 スーパークラスを継承する ― extendsキーワード
3-3-5 スーパークラスの型を使って、サブクラスをひとまとめに扱う
3-3-6 スーパークラスのメソッドを上書きする ― オーバーライド
3-3-7 オーバーロードはPHPでは許可されていない
3-3-8 継承におけるコンストラクタの扱い
3-3-9 スーパークラスのメソッドを呼び出す ― parentキーワード
3-3-10 継承またはオーバーライドをさせない ― finalキーワード
■3-4 クラスのメソッド定義を「約束」させる ― インターフェースと実装
3-4-1 インターフェースの文法上の性質
3-4-2 インターフェースは、ルールに従っていることを約束させるために使う
3-4-3 インターフェースを定義する
3-4-4 インターフェースを実装する ― implementsキーワード
3-4-5 インターフェースの型を使って、実装クラスをひとまとめに扱う
■3-5 横断的で定形的な処理をクラスに挿し込む ― トレイト
3-5-1 プロパティ名/メソッド名のバッティングを解決する ― insteadofキーワード、asキーワード
3-5-2 トレイトとクラスは密な関係を生む
■3-6 名前空間を使って、関連するクラス群をカテゴリー分けする
3-6-1 名前空間を定義する ― namespaceキーワード
3-6-2 名前空間に所属するクラスを呼び出す
3-6-3 名前空間に所属するクラスをあらかじめインポートする ― useキーワード
3-6-4 同じ名前のクラスにエイリアスを与えてインポートする ― asキーワード
3-6-5 2つ以上のクラスをまとめてインポートする
■3-7 イレギュラーなケースに対処する ― 例外処理
3-7-1 Exceptionクラスのプロパティ/メソッド
3-7-2 例外をスローする ― throw命令
3-7-3 例外をキャッチする ― try~catch~finallyブロック
3-7-4 呼び出し元のさらに呼び出し元に例外が伝わる ― 例外の伝播
3-7-5 Exceptionクラスを継承して独自の例外クラスを作る
3-7-6 例外の種類に応じた処理をする ― catchブロックをつなげる
3-7-7 PHPの標準クラスも例外をスローする
3-7-8 PHPにあらかじめ用意された例外クラス ― LogicExceptionとRuntimeException
■3-8 クラスの操作に自動で反応するメソッド ― マジックメソッド
3-8-1 アクセス不能プロパティが読み書きされた時にコールされる__get()、__set()
3-8-2 インスタンスが出力された時に文字列表現を返すための__toString()
■3-9 インスタンスとの付き合い方 ― オブジェクト型変数の性質
3-9-1 オブジェクト型の変数はリファレンスである
3-9-2 インスタンスをコピーする ― cloneキーワード
3-9-3 オブジェクト型のプロパティをディープコピーする ― マジックメソッド__clone
3-9-4 インスタンス同士を比較する
3-9-5 インスタンスの型をチェックする ― instanceofキーワード
■■4章 アプリケーションの機能をより豊かにする ― 内部関数/SPLクラス
■4-1 関数とクラスの種類 ― プログラマーが定義したもの/あらかじめ用意されているもの
4-1-1 汎用的な処理が定義された関数群 ― 内部関数
4-1-2 汎用的な処理が定義されたクラス群 ― 定義済クラスとSPL
4-1-3 関数の構文を理解する
■4-2 文字列を扱う ― 文字列処理のための関数
4-2-1 内部文字エンコーディングを取得または設定する ― mb_internal_encoding
4-2-2 文字を検索する ― mb_strpos、mb_strrpos
4-2-3 文字列の一部を得る ― mb_substr、mb_strstr
4-2-4 文字列を置換する ― str_replace
4-2-5 文字列を区切り文字で分割する ― explode
4-2-6 文字列をパディングする ― str_pad
4-2-7 字種を変換する ― mb_convert_case、mb_convert_kana
4-2-8 文字コードを変換する ― mb_convert_encoding、mb_convert_variables
4-2-9 指定した幅で文字列を丸める ― mb_strimwidth
4-2-10 文字列の前後にあるスペースなどを取り除く ― trim
4-2-11 バイナリデータを文字列に変換する ― base64_encode、base64_decode
4-2-12 URLで使える文字列に変換する ― urlencode、urldecode
4-2-13 URLを要素に分け、クエリ文字列を解析/生成する ― parse_url、parse_str、http_build_query
■4-3 正規表現を使ったパターンマッチング
4-3-1 正規表現で文字列を検索する ― preg_match
4-3-2 正規表現で文字列を置換する ― preg_replace
4-3-3 正規表現による文字列の分割 ― preg_split
4-3-4 正規表現のエスケープ ― preg_quote
■4-4 数値を扱う ― 数値処理のための関数
4-4-1 最小値/最大値を得る ― min、max
4-4-2 四捨五入、切り上げ、切り捨てする ― round、ceil、floor
4-4-3 数値をフォーマットする ― number_format
4-4-4 浮動小数点数を正確に計算する ― BCMath
4-4-5 基数を相互に変換する ― base_convert
4-4-6 バイナリデータを可視化する ― bin2hex、hex2bin
■4-5 日付/時間を操作する ― DateTimeクラス
4-5-1 DateTimeクラスの基本的な使い方 ― setDate、setTime、modify、setTimezone、format
4-5-2 日付をフォーマットする ― DateTime::format
4-5-3 日付を比較する ― DateTimeインスタンスと比較演算子
4-5-4 期間に重なりがあるかを判定する
4-5-5 ちょっとした日時操作のための手軽に使える内部関数 ― time、strtotime、date
■4-6 配列/連想配列を操作する
4-6-1 配列の要素を追加/削除する ― array_push、array_(un)shift、array_merge、array_pop、array_slice、unset
4-6-2 連想配列のキーのみ、値のみを取得する ― array_keys、array_values
4-6-3 全要素を対象に処理をほどこす ― array_map、array_walk
4-6-4 連想配列の配列から指定したキーを持つ値のみ抽出する ― array_column
4-6-5 区切り文字列で配列を文字列化する ― implode
4-6-6 配列をソートする ― sort、rsort、ksort、krsort
4-6-7 配列をユーザ定義のルールでソートする ― usort
4-6-8 配列の要素数を調べる ― count
4-6-9 範囲指定で配列を作成する ― range
■4-7 ファイル/ディレクトリを扱う
4-7-1 パス文字列からファイル名、ディレクトリ名を取得する ― basename、dirname、realpath、pathinfo
4-7-2 ファイルの存在を確認する ― file_exists
4-7-3 ファイルをコピー/移動/削除する ― copy、rename、unlink
4-7-4 ファイルから読み込む ― file、file_get_contents、readfile
4-7-5 ファイルに書き込む ― file_put_contents
4-7-6 ファイルにアクセスする ― touch、file(c|m|a)time
4-7-7 ファイル種別MIMEタイプを調べる ― finfo_file
4-7-8 ディレクトリ操作する ― mkdir、rmdir
4-7-9 ファイルをパターンで検索する ― glob
■4-8 ファイル操作をクラスでおこなう ― SplFileObjectクラス、DirectoryIteratorクラス
4-8-1 ファイルを読み書き用にオープンする ― SplFileObject::__construct、setFlags
4-8-2 CSVファイルを読み込む ― SplFileObject::READ_CSV定数
4-8-3 ファイルに書き出す ― SplFileObject::fwrite、fputcsv
4-8-4 ファイルのメタ情報を取得する
4-8-5 ディレクトリを調べる ― DirectoryIterator
■4-9 データの妥当性をチェックする
4-9-1 データ型をチェックする ― is_*
4-9-2 日付をチェックする ― checkdate
4-9-3 空であることをチェックする ― empty
4-9-4 変数や配列キーの存在をチェックする ― isset、array_key_exists
4-9-5 配列に値が存在するかをチェックする ― in_array
4-9-6 あるクラスのインスタンスかどうかをチェックする ― instanceofキーワード
4-9-7 クラス、関数、メソッドの存在をチェックする ― class_exists、function_exists、method_exists、is_callable
■4-10 ランダムな値を生成する ― 乱数
4-10-1 ランダムな数値を生成する ― random_int
4-10-2 ランダムなバイト列を生成する ― random_bytes、openssl_random_pseudo_bytes
■4-11 データを安全に取り扱う ― ハッシュ化と暗号化
4-11-1 ハッシュ化の仕組み ― ソルト、ストレッチング
4-11-2 暗号化の仕組み ― キーを使って金庫を開け閉めする
4-11-3 パスワードをハッシュ化する ― password_hash、password_verify
4-11-4 ファイルのハッシュ値をもとに、誤りチェックする ― hash_file
4-11-5 データを暗号化/復号する ― openssl_*関数
■4-12 コマンドラインプログラムの実行時オプションを制御する ― コマンドライン引数
4-12-1 コマンドライン引数を取得する ― getopt
4-12-2 コマンドラインプログラムの挙動を実行時オプションによって変える
■4-13 メールを送信する
4-13-1 スパムメール対策のために、メール送信を外部Webサービスに任せる選択肢もある
4-13-2 メールを送信する ― mb_send_mail
■4-14 OSコマンドをPHPから実行する
4-14-1 汎用的な処理のほとんどは、PHPプログラムでも書ける
4-14-2 OSに依存する処理を条件分岐する
4-14-3 OSコマンドを呼び出す ― system、exec、shell_exec
4-14-4 OSコマンドの引数をエスケープする ― escapeshellarg
■4-15 デバッグに役立つ情報を得る
4-15-1 バックトレース情報を取得する ― debug_backtrace
4-15-2 メモリ情報を取得する ― memory_get_usage、memory_get_peak_usage
■■5章 PHPによるWebアプリケーションの実装
■5-1 入力フォームを介したデータ送受信
5-1-1 送信したい入力フォームをHTMLで定義する
5-1-2 入力フォームの入力値をPHPで受信する ― スーパーグローバル変数$_GET、$_POST
5-1-3 $_GETと$_POSTの両方を兼ねる$_REQUESTと、request_orderオプション
5-1-4 HTMLとして意味のある記号をHTMLエンティティに変換する ― htmlspecialchars関数
5-1-5 GETメソッドはデータを取得する時に使う
5-1-6 POSTメソッドはデータを投稿する時に使う
5-1-7 アンカータグ中のGETパラメータ値はURLエンコードする
■5-2 リクエストヘッダ/レスポンスヘッダ情報の読み書き
5-2-1 HTTPレスポンスの構造 ― ヘッダとボディ
5-2-2 HTTPステータスコードをPHPから送出する
5-2-3 別のURLにリダイレクトさせる ― Locationヘッダ
5-2-4 メディア形式を指定して出力する ― Content-Typeヘッダ
5-2-5 サーバー情報を取得する ― $_SERVER変数
■5-3 クッキーを使ってクライアントPCに情報を保存する
5-3-1 さまざまなデータの保存方式 ― クッキー、セッション、データベース
5-3-2 Set-Cookieヘッダの属性を知る
5-3-3 PHPからクッキーを送出する ― setcookie関数
5-3-4 保存されたクッキーをGoogle Chromeで確認する
5-3-5 保存されたクッキーをFirefoxで確認する
5-3-6 配列形式でクッキーを出力する
5-3-7 クッキーを上書きする
5-3-8 クッキーを削除する
5-3-9 Webブラウザが送信したクッキーデータをPHPで読み取る ― $_COOKIE変数
5-3-10 クッキーを使って「最近アクセスしたページ」を実装する
5-3-11 自動ログイン機能をクッキーで実現する
■5-4 セッション変数を使ってサーバー上に情報を保存する
5-4-1 セッション変数の仕組みと使いみち
5-4-2 セッション管理のための関数たち ― session_*関数
5-4-3 セッションに関するphp.iniの実行時オプション
5-4-4 セッションがタイムアウトするまでの時間を設定する ― session.gc_*オプション
5-4-5 お問い合わせ画面のプログラムを読解する
■5-5 ファイルアップロード処理
5-5-1 アップロードフォームを定義する
5-5-2 アップロードファイルを受信する ― スーパーグローバル変数$_FILES
■■6章 リレーショナルデータベースを使った体系的なデータ管理
■6-1 体系的なデータ管理を実現するソフトウェア ― リレーショナルデータベース
6-1-1 データを管理する単位 ― テーブル、レコード、カラム
6-1-2 データを扱うための言語 ― SQL
■6-2 SQLでデータベースを操作する
6-2-1 phpMyAdminを使ってMariaDBを操作する
6-2-2 テストデータをデータベースに投入する
6-2-3 データベースを作成する ― CREATE DATABASE構文
6-2-4 テーブルを作成する ― CREATE TABLE構文
6-2-5 厳密モード(STRICT_ALL_TABLES)で、文字数オーバー時にエラーを発生させる
6-2-6 バイナリデータを保存するBLOB型
6-2-7 カラムごとにオプションを指定する
6-2-8 レコードを検索する ― SELECT構文
6-2-9 レコードを集計する ― 集約関数
6-2-10 ページネーションのためのSELECT構文テクニック ― ORDER BY、LIMIT、OFFSET句
6-2-11 レコードを更新する ― UPDATE構文
6-2-12 レコードを新規作成する ― INSERT構文
6-2-13 レコードを削除する ― DELETE構文
6-2-14 照合順序で大文字/小文字の区別を指定する
■6-3 PHPプログラムからデータベース操作する ― PDOの利用
6-3-1 PDOでデータベースに接続する
6-3-2 PDOの動作オプションを指定する ― PDO::setAttributeメソッド
6-3-3 現在の動作オプション値を得る ― PDO::getAttributeメソッド
6-3-4 更新系SQLを実行する
6-3-5 SELECT文を実行し、結果をフェッチする ― PDOStatement::fetchメソッド
6-3-6 PDO::FETCH_OBJによるフェッチ
6-3-7 プリコンパイルすることで、SQL実行時のセキュリティリスクを減らす
6-3-8 2種類のバインド方式 ― bindValueとbindParam
6-3-9 一連のSQL実行中に起こる例外に対応する ― トランザクション管理
6-3-10 自動コミットモードを指定する ― PDO::ATTR_AUTOCOMMIT
6-3-11 実行されたSQLのログを見る
6-3-12 IN句のプレースホルダに配列を渡せない問題に対処する
■■7章 読みやすいPHPプログラミング作法 ― 開発者の意図を、わかりやすく伝える
■7-1 コーディング規約 ― 見た目に美しく読みやすいコード作り
7-1-1 最低限のコーディング規約は考えておいたほうがいい
7-1-2 PSRとは ― フレームワークフリーの標準的なコーディング規約
7-1-3 PSR-1 基本コーディング規約
7-1-4 PSR-12 拡張コーディングスタイルガイド
7-1-5 PSR-12におけるプログラム冒頭のコーディングスタイル
7-1-6 PSR-12におけるクラスのコーディングスタイル
7-1-7 PSR-12における制御構文のコーディングスタイル
7-1-8 PSR-12におけるクロージャーのコーディングスタイル
7-1-9 HTML&PHPの混在コードを美しく記述する(ifの書き方、ビューヘルパーの使用、phpタグのインデント)
7-1-10 コーディングスタイルの変更リスク ― スタイルはなるべく早く決めておく
■7-2 読み手に意図が伝わるコーディング ― 迷いを与えない
7-2-1 「伝わりにくい」プログラムの例
7-2-2 「伝わりやすい」プログラムの例
7-2-3 コメント文で意図を補足する
7-2-4 伝わりやすく、情報に過不足がない命名を考える
7-2-5 将来も見すえた命名を考える
7-2-6 命名を省略しすぎない
7-2-7 命名を冗長にしすぎない
7-2-8 配列データは複数形で命名する
7-2-9 ローマ字や母国語の命名は避けたほうがいい
7-2-10 伝わりやすいディレクトリ構成を考える
7-2-11 型宣言で利用者の不安をとりのぞく
7-2-12 否定の否定は肯定 ― はじめから肯定形をつかう
■7-3 見た目をスリムにし、シンプルな思考をうながす
7-3-1 関数を使って条件式をコンパクトにする
7-3-2 先にふるいにかけて、ネストを減らす
7-3-3 関数の戻り値は、確定した時点でreturnする
7-3-4 制御構文のネストをすっきり見せる
7-3-5 たくさんある引数はまとめる
7-3-6 長いテキストは別ファイルにする

↓全て表示↑少なく表示
Users Voice
副業用に勉強しようと購入。t所見ではとっつきにくい内容ですが、PHP自体を理解し始めてくると、書いてあることがすんなり理解できるようになってきます。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
著者略歴

著:大家 正登
大家正登(おおいえ まさと)

1979年、佐賀県生まれ。20歳よりフリープログラマーの下でプログラミングやサーバー管理の実務を、21歳より大学の研究室でPerl言語を使った自然言語処理を学ぶ。東京外国語大学外国語学部欧米第二課程スペイン語専攻卒業後、2003年より、株式会社ワイ・ディ・シー中部支社にてJava、PHP、Cなどによる生産管理システムの開発に従事する。2006年より、フリープログラマーとして独立。2008年、デジタルハリウッド横浜校「PHP講座」講師。2009年より現在まで、東京IT株式会社代表取締役。
おもな執筆歴として、『PHP逆引き大全516の極意』『たったコレだけでPHPプログラミングが理解できる本』『たったコレだけでJavaプログラミングが理解できる本』(以上、秀和システム)、「プログラミング未経験から始めるPHP入門」(翔泳社CodeZine・全15回)がある。現在の夢は、幼児・小学生~大学生まで幅広く、プログラミングの楽しさを体験してもらう場を世に広めること。


↓全て表示↑少なく表示

  

PHP本格入門[下] ~オブジェクト指向設計、セキュリティ、現場で使える実践ノウハウまで

(概要)

Webアプリケーションの定番言語であるPHPの基礎から実践までを、上下巻のフルボリュームで集大成。

「この目的を実現するためには、どの文法テクニックが適合しやすいだろう?」

「このプログラムをより読みやすくするために、どんなアプローチができるだろう?」

といったことを思考しつつ、「とりあえずは動く」だけで終わらない、現場に求められる品質を形にするための知識とテクニックを解説します。


(こんな方におすすめ)

・プログラミング入門、PHPの超入門レベルの知識はあるが、実践レベルの知識がないプログラマ


(目次)

8章 よりよいオブジェクト指向デザインのためのベストプラクティス

  8-1 よりよいオブジェクト指向設計を通して目指すべきもの

  8-2 オブジェクト指向がもたらす独立性 ― カプセル化と多態性

  8-3 クラスの独立性を高める ― 凝集度と結合度

  8-4 クラスの関係性を表すキーワード ― is-a関係とhas-a関係

  8-5 クラス同士の依存を解消する ― 依存性の注入、Factoryクラス

  8-6 好ましくない設計を知る ~アンチパターン


9章 能率を高める、一歩進んだ文法テクニック

  9-1 変数名やメソッド名を流動的に切り替える ― 動的アクセス

  9-2 配列のように扱えるクラスを作る

  9-3 複雑な規則性を持つ配列をシンプルに扱う ― ジェネレーター

  9-4 1つのインスタンスに対する複数のメソッド呼び出しをスマートに書く ― メソッドチェーン

  9-5 クラスをグルーピングするためのインターフェース ― マーカーインターフェース


10章 外部ライブラリを開発に役立てる ― Composer

  10-1 モダンなPHP開発における外部ライブラリの管理手法

  10-2 Composerでパッケージを管理する

  10-3 PhpSpreadsheetでExcel出力する

  10-4 GoutteでWebスクレイピングする

  10-5 なるべく失敗しない、外部ライブラリの選び方


11章 WebAPIを使った外部システムとの連携

  11-1 WebAPIを使った外部システム連携でできること

  11-2 WebAPIによる連携の仕組み

  11-3 WebAPIとデータを送受信する(1) ― 電文フォーマット「JSON」

  11-4 WebAPIとデータを送受信する(2) ― 電文フォーマット「XML」

  11-5 RESTful APIサーバー/クライアントをプログラム実装する

  11-6 外部サービスのAPIを使う ― Google自然言語API


12章 Webアプリケーションのセキュリティ

  12-1 システム全体の基本的なセキュリティ

  12-2 Webアプリケーションのセキュリティ

  12-3 SQLインジェクション攻撃とその対策

  12-4 XSS攻撃とその対策

  12-5 CSRF攻撃とその対策

  12-6 その他のさまざまな攻撃パターン


13章 強く、しなやかなPHPアプリケーション

  13-1 品質を構成する要素

  13-2 前提条件を表明し、ソースコードに起因するバグを減らす ― アサーション

  13-3 PHPUnitによる自動テスト ― 強度を高め、変更作業を安全におこなう

  13-4 コーディング規約の自動チェック ― 規約チェックツールPHP_CodeSniffer

  13-5 バグを生み出しそうなコードをあぶり出す ― phpmd

  13-6 もしものときのために履歴を残す ― ロギングツールMonolog

  13-7 プログラムの使い方マニュアルを自動生成する ― phpDocumentorによるドキュメンテーション

  13-8 プロファイリングによるボトルネック調査 ― blackfire

  13-9 Webアプリケーションフレームワークを理解する

  13-10 自動生成でヒューマンエラーを防止する ― 開発効率アップのためのコンソールプログラム

  13-11 IDEでプログラミングの生産効率を上げる

  13-12 アプリケーションの内部構造を安全に変える ― リファクタリング

  13-13 バグを調査する ― PhpStorm+Xdebugによるデバッグ手法

  13-14 どうしてもデバッグできないときは ― 良質な情報が得やすい質問の手順

↓全て表示↑少なく表示
 
目次
■■8章 よりよいオブジェクト指向デザインのためのベストプラクティス
■8-1 よりよいオブジェクト指向設計を通して目指すべきもの
8-1-1 後から機能を変更するのは、新規でプログラミングするより数倍の労力がかかる
8-1-2 オブジェクト指向を活かし、直感的で無駄のないアプリケーションを作る
■8-2 オブジェクト指向がもたらす独立性 ― カプセル化と多態性
8-2-1 独立性とはクラスの「自立」である
8-2-2 クラスの中身を「保護」する ― カプセル化と隠ぺい
8-2-3 うまくカプセル化されたアプリケーションは、小説の「あらすじ」のように読める
8-2-4 具象を意識しないための性質 ― 多態性
■8-3 クラスの独立性を高める ― 凝集度と結合度
8-3-1 凝集度は高く
8-3-2 結合度は低く
8-3-3 どこまで細かくクラス分けすべきか? ― 将来を見すえた、適切なサイズ感を考える
■8-4 クラスの関係性を表すキーワード ― is-a関係とhas-a関係
8-4-1 is-a ― ●●は▲▲である
8-4-2 has-a ― ●●は▲▲をもっている
8-4-3 関連 ― ゆるやかな関係をもっている
8-4-4 委譲 - ほかの人に任せる
8-4-5 is-aとhas-aは、見誤りやすい
8-4-6 カプセル化を守る ― なるべくならis-aよりhas-a
8-4-7 多重継承はできなくても、コンポジションならできる
■8-5 クラス同士の依存を解消する ― 依存性の注入、Factoryクラス
8-5-1 依存は具象クラスのインスタンス化から生まれる
8-5-2 依存対象のクラスを外部から挿し込む ― 依存性の注入
8-5-3 たくさんのクラスに対する依存をまとめてなくす ― Factoryクラス
■8-6 好ましくない設計を知る ~アンチパターン
8-6-1 神クラス ― 1人で何でもやるクラス
8-6-2 自由すぎて不安になる ― なんでもpublicなクラス
8-6-3 共通化のために、関係のないメソッドまで持たされたスーパークラス
8-6-4 求めていない処理までやってしまう ― 世話好きなメソッド
8-6-5 引数が多すぎるメソッド
8-6-6 状態を持てないクラス ― ユーティリティクラス
■■9章 能率を高める、一歩進んだ文法テクニック
■9-1 変数名やメソッド名を流動的に切り替える ― 動的アクセス
9-1-1 プロパティに動的アクセスする
9-1-2 メソッドを動的にコールする
9-1-3 クラスに動的にアクセスする
■9-2 配列のように扱えるクラスを作る
9-2-1 foreachループ可能なクラスを作る ― IteratorAggregateインターフェース
9-2-2 配列の形式でアクセスできるクラスを作る ― ArrayAccess
■9-3 複雑な規則性を持つ配列をシンプルに扱う ― ジェネレーター
9-3-1 続けざまに値を返すシンプルなジェネレーター ― yield命令
9-3-2 連想配列のように扱えるジェネレーター
9-3-3 ジェネレーターで要素数の多い配列生成を省メモリ化する ― Excel列名リストの生成
9-3-4 生成処理をサブジェネレーターに分担させる ― yield from
9-3-5 ジェネレーターで最終的な戻り値を返す
9-3-6 ジェネレーターに配列のフィルタリングを委ね、プログラムの見通しをよくする
■9-4 1つのインスタンスに対する複数のメソッド呼び出しをスマートに書く ― メソッドチェーン
9-4-1 3ステップで、メソッドチェーンに対応したクラスを作る
9-4-2 メソッドチェーンに対応した四則演算クラス
9-4-3 メソッドチェーン対応クラスのアイディア例
■9-5 クラスをグルーピングするためのインターフェース ― マーカーインターフェース
9-5-1 マーカーインターフェースを使わない、冗長な例外処理
9-5-2 マーカーインターフェースを使って、例外をグループ分けする
■■10章 外部ライブラリを開発に役立てる ― Composer
■10-1 モダンなPHP開発における外部ライブラリの管理手法
10-1-1 依存関係を自動で解決してくれるパッケージ管理ツール ― Composer
10-1-2 多くのPHPライブラリがつどうリポジトリ ― Packagist
10-1-3 外部ライブラリを使ってどんなことができるか
■10-2 Composerでパッケージを管理する
10-2-1 Composerをインストールする
10-2-2 composerコマンドでパッケージをインストールする
10-2-3 適切なバージョンを指定する ― バージョン記法とセマンティックバージョニング
10-2-4 すべての環境でまったく同じバージョンが使えるようにする ― composer.lock、composer installコマンド
10-2-5 開発環境でのみ使いたいパッケージを管理する ― --devオプション
10-2-6 最新のバージョンに更新する ― composer update
10-2-7 require_once命令なしでクラスを自動読み込みする ― オートロード
10-2-8 自作のクラスをオートロードする ― composer dump-autoloadコマンド
■10-3 PhpSpreadsheetでExcel出力する
10-3-1 PhpSpreadsheetをインストールする
10-3-2 テンプレートを元にExcelファイルを出力する
10-3-3 テンプレートを使わずにExcelファイルを出力する
■10-4 GoutteでWebスクレイピングする
10-4-1 外部のWebサイトをパースして情報を収集する ― Webスクレイピング
10-4-2 HTML文書をプログラムで階層的に扱う ― DOMの概念
10-4-3 Goutteをインストールする
10-4-4 Goutteを使う準備 ― GoutteからWebページにアクセスする
10-4-5 filterメソッドでノードを絞り込む ― CSSセレクタによるノード指定
10-4-6 複数のノードを繰り返し処理する ― eachメソッド
■10-5 なるべく失敗しない、外部ライブラリの選び方
10-5-1 選定のための基準 ― 最低限、対応品質は調べておきたい
10-5-2 「ライブラリ開発チームの対応品質」にもとづく4つの選定基準
10-5-3 パフォーマンスと限界を知っておく ― 性能テスト
10-5-4 ひととおりの機能を網羅した実験プログラムを作る
■■11章 WebAPIを使った外部システムとの連携
■11-1 WebAPIを使った外部システム連携でできること
11-1-1 外部Webサービスのデータを提供してもらう
11-1-2 特定のユーザによる投稿/閲覧の操作をおこなう
11-1-3 難しい計算処理を外部システムに委ねる
11-1-4 サーバーの一部の機能をまるごと、外部システムに任せる
■11-2 WebAPIによる連携の仕組み
11-2-1 標準的なWebAPIの設計方式 ― RESTful API
11-2-2 利用ユーザの認証は1リクエストごとにおこなう
■11-3 WebAPIとデータを送受信する(1) ― 電文フォーマット「JSON」
11-3-1 JSONデータが取り扱うデータ型を理解する
11-3-2 Unicode文字は「\u」で表す
11-3-3 一部の記号はエスケープで無効化する必要がある
11-3-4 改行/タブは特殊文字で表す
11-3-5 値をJSON形式にエンコードする ― json_encode関数
11-3-6 JSON文字列をデコードし、PHPの値に変換する ― json_decode関数
11-3-7 エンコード/デコード失敗時のエラーを検出する ― json_last_error関数
■11-4 WebAPIとデータを送受信する(2) ― 電文フォーマット「XML」
11-4-1 XMLを生成する ― DomDocumentクラス
11-4-2 XMLをパースする ― DomDocument::loadXMLメソッド
■11-5 RESTful APIサーバー/クライアントをプログラム実装する
11-5-1 WebAPIサーバーを実装する
11-5-2 WebAPIクライアントを実装する ― cURL関数
11-5-3 ファイルのアップロードはPUTメソッドを使う
■11-6 外部サービスのAPIを使う ― Google自然言語API
11-6-1 APIを使う準備をする ― Google Cloud Platformの登録~APIキーの取得
11-6-2 Google感情分析APIを使う
11-6-3 Google感情分析APIのリクエスト/レスポンスフォーマット
11-6-4 Google感情分析APIにHTTPリクエストを送信する
■■12章 Webアプリケーションのセキュリティ
■12-1 システム全体の基本的なセキュリティ
12-1-1 多重防御が基本
12-1-2 なるべく機械的に判断する
12-1-3 内部の人間にもアクセス権を設ける
12-1-4 あらゆる外部からのデータは信用しない
12-1-5 事後対策も考えておく
■12-2 Webアプリケーションのセキュリティ
12-2-1 パスワードは強固なものにし、ユーザにもそれを求める
12-2-2 ログイン機能を強固にする
12-2-3 ログイン認証失敗時のエラーメッセージにも気を配る
12-2-4 IPアドレスが特定できる画面はIP制限をかける
12-2-5 攻撃の手がかりになる情報を見せない ― コメント、スクリプト、エラーメッセージ
12-2-6 見せてはいけないファイルを公開ディレクトリに置かない
12-2-7 連番をパラメータで使う時は気をつける
12-2-8 アップロードファイルのチェックはサーバーサイドでもおこなう
12-2-9 セキュリティリスクを少なくするためのphp.iniの設定
■12-3 SQLインジェクション攻撃とその対策
12-3-1 SQLインジェクションとは ― SQLの意味を書き換え、不正なデータベース操作をおこなう
12-3-2 SQLインジェクション攻撃の試行
12-3-3 SQLインジェクション攻撃への対策を施す
12-3-4 SQLインジェクションでログイン情報を盗み出す
■12-4 XSS攻撃とその対策
12-4-1 XSSとは ― 不正なスクリプトを入力値に埋め込んでWebブラウザに実行させる
12-4-2 XSS攻撃を試行する
12-4-3 XSS攻撃への対策を施す(1) ― もっとも基本的な対策
12-4-4 XSS攻撃への対策を施す(2) ― イレギュラーな入力パターンへの対応
■12-5 CSRF攻撃とその対策
12-5-1 CSRFとは ― ユーザが意図しないHTTP送信を強制する
12-5-2 CSRF攻撃を試行する
12-5-3 CSRF攻撃への対策を施す
■12-6 その他のさまざまな攻撃パターン
12-6-1 メールヘッダインジェクション ― 不正なメールヘッダを注入する
12-6-2 オープンリダイレクト ― どこへもリダイレクトできてしまう脆弱性
12-6-3 ディレクトリトラバーサル ― 不正なパスを注入する
12-6-4 OSコマンドインジェクション ― 不正なコマンドを注入する
12-6-5 ペネトレーションテストのためのツール
■■13章 強く、しなやかなPHPアプリケーション
■13-1 品質を構成する要素
13-1-1 品質の見える化 ― ISO/IEC 9126の品質特性モデル
13-1-2 PHPプログラマーができる、ソフトウェア品質への働きかけとは
■13-2 前提条件を表明し、ソースコードに起因するバグを減らす ― アサーション
13-2-1 アサーションは開発時にのみ使い、本番運用では使わない ― zend.assertionsオプション
13-2-2 アサーションは外部データ値の異常ではなく、ソースコードの異常を伝えるために使う
13-2-3 アサーション、バリデーション、範囲外チェック例外の違い
13-2-4 アサーションを使って処理結果をセルフチェックする
■13-3 PHPUnitによる自動テスト ― 強度を高め、変更作業を安全におこなう
13-3-1 自動テストの対象範囲 ― おもに関数やメソッドの戻り値をテストする
13-3-2 PHPUnitのインストール
13-3-3 PHPUnitによる自動テストプログラムの基本的な書き方
13-3-4 PHPUnitによる自動テストプログラムの実例 ― ページャークラスのテスト
13-3-5 関連する自動テストをまとめる ― テストスイート
13-3-6 実行したいテストスイートを定義するもう1つの方法 ― phpunit.xml
13-3-7 自動テストがしやすいプログラム構成 ― データベースやHTTPへの依存を避ける
■13-4 コーディング規約の自動チェック ― 規約チェックツールPHP_CodeSniffer
13-4-1 PHP_CodeSnifferで規約チェックする
13-4-2 phpcbfコマンドでコードスタイルを自動整形する
■13-5 バグを生み出しそうなコードをあぶり出す ― phpmd
13-5-1 phpmdでバグ発見の手がかりを得る
■13-6 もしものときのために履歴を残す ― ロギングツールMonolog
13-6-1 Monologの全体像 ― ロガー、ハンドラー、プロセッサー、フォーマッター
13-6-2 出力レベルをコントロールする ― ログレベル
13-6-3 Monologをインストールする
13-6-4 Monologの基本的な使い方
13-6-5 ログメッセージを蓄積するハンドラー ― BufferHandler、FingersCrossedHandler
13-6-6 ログメッセージにプレースホルダを埋め込む ― PsrLogMessageProcessor
13-6-7 MariaDBのテーブルにログを記録する ― MySQLHandler
■13-7 プログラムの使い方マニュアルを自動生成する ― phpDocumentorによるドキュメンテーション
13-7-1 ドキュメンテーションのためのコメント「PHPDocコメント」
13-7-2 phpDocumentorの使い方
■13-8 プロファイリングによるボトルネック調査 ― blackfire
13-8-1 blackfireをセットアップする
13-8-2 重い商品検索アプリケーションを実行する
13-8-3 blackfireでプロファイリングする
13-8-4 blackfireのプロファイリング結果を読み解く
13-8-5 プロファイリング結果に基づいてプログラムを改良する
■13-9 Webアプリケーションフレームワークを理解する
13-9-1 フレームワークとは
13-9-2 ひしめき合うPHPフレームワークの世界
13-9-3 フレームワークが提供する最低限の機能 ― ルーティング
13-9-4 MVCモデルを理解する
13-9-5 フレームワークが提供するその他の機能
13-9-6 フレームワークのサイズと制約 ― マイクロフレームワークとフルスタックフレームワーク
13-9-7 有名どころのフレームワークを押さえる
■13-10 自動生成でヒューマンエラーを防止する ― 開発効率アップのためのコンソールプログラム
13-10-1 繰り返し作業は、なるべく自動化する
13-10-2 オリジナルのプログラムにScaffoldさせる
■13-11 IDEでプログラミングの生産効率を上げる
13-11-1 IDEが備える、強力な開発サポート機能
13-11-2 PHPプロジェクトで使われる、主要なIDE
13-11-3 PhpStormのセットアップ
13-11-4 PhpStormプロジェクトを作成する
13-11-5 PhpStormによるプログラミング体験の内容を確認する
13-11-6 PhpStormでクラス図を自動生成する
13-11-7 PhpStorm上でプログラミングしてみる
■13-12 アプリケーションの内部構造を安全に変える ― リファクタリング
13-12-1 命名を変更する
13-12-2 メソッド、プロパティの階層を変える ― プルアップとプッシュダウン
■13-13 バグを調査する ― PhpStorm+Xdebugによるデバッグ手法
13-13-1 IDEデバッグ機能の具体的な内容
13-13-2 不具合の現象を確認する
13-13-3 PhpStorm+Xdebugによるデバッグ環境のセットアップ
13-13-4 デバッグ手順(1) ― バグがある箇所の当たりをつけ、プログラムを中断する場所を決める
13-13-5 デバッグ手順(2) ― ブレークポイントを設定する
13-13-6 デバッグ手順(3) ― Webブラウザで実行して変数値を見る
13-13-7 デバッグ手順(4) ― ステップ実行しながら、変数値の遷移を確認する
13-13-8 デバッグ手順(5) ― 原因をさらに細かく追求する
13-13-9 デバッグ手順(6) ― プログラムを修正する
13-13-10 デバッグ手順(7) ― 修正後の動作確認をする
■13-14 どうしてもデバッグできないときは ― 良質な情報が得やすい質問の手順
13-14-1 質問にあたっての心構え
13-14-2 情報が散らばっていると、よい回答を得にくい
13-14-3 最小セットのプログラムで、問題の本質を見きわめる
13-14-4 聞きたいことを構造的に組み立てる
13-14-5 結局、どこにバグがあったのか?
13-14-6 そのほかに質問をするうえで気をつけること

↓全て表示↑少なく表示
Users Voice
非常にわかりやすく解説されています。初期の段階では、かなり役に立つし、長い目でみて、基礎ができると思います。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
著者略歴

著:大家 正登
大家正登(おおいえ まさと)

1979年、佐賀県生まれ。20歳よりフリープログラマーの下でプログラミングやサーバー管理の実務を、21歳より大学の研究室でPerl言語を使った自然言語処理を学ぶ。東京外国語大学外国語学部欧米第二課程スペイン語専攻卒業後、2003年より、株式会社ワイ・ディ・シー中部支社にてJava、PHP、Cなどによる生産管理システムの開発に従事する。2006年より、フリープログラマーとして独立。2008年、デジタルハリウッド横浜校「PHP講座」講師。2009年より現在まで、東京IT株式会社代表取締役。
おもな執筆歴として、『PHP逆引き大全516の極意』『たったコレだけでPHPプログラミングが理解できる本』『たったコレだけでJavaプログラミングが理解できる本』(以上、秀和システム)、「プログラミング未経験から始めるPHP入門」(翔泳社CodeZine・全15回)がある。現在の夢は、幼児・小学生~大学生まで幅広く、プログラミングの楽しさを体験してもらう場を世に広めること。


↓全て表示↑少なく表示

  

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン
(著)ガンマ,エリック, ジョンソン,ラルフ, ヘルム,リチャード, ブリシディース,ジョン
総合評価
(3.6)
(2022/01/25 12:01時点)
オブジェクト指向ソフトウェア設計の際に繰り返し現れる重要な部品をデザインパターンとして記録し、カタログ化。改訂版ではこれにCD−ROMを添付、現場でブラウザを通して即利用できるパターンカタログデジタル版を収録。特別付録として、原書にはないJavaのサンプルコードを追加。
【技術書翻訳名著シリーズ】
ソフトウェア開発のバイブル群! 弊社がこれまでに刊行した翻訳技術書の中から、長年読者から支持され続けている名著を厳選したのが、本シリーズです。移り変わりの激しいコンピュータ業界で、普遍性を保ち続ける定番をお届けします。ソフトウェア開発の上流から下流まで、入門書からエキスパート向けまで、技術者に求められる選りすぐりの情報がここにあります。
 
内容サンプル

(引用元Amazon)

 
目次
概論
事例ードキュメントエディタの設計
デザインパターン・カタログ(生成に関するパターン
構造に関するパターン
振る舞いに関するパターン)
終わりに
Users Voice
もともと知っているものもあって、当然パターンかされているのでほっとする。
もともと知らなかったパターンもあった。参考に覚えておく。そして、
自分が無意識で作成したプログラムに、あっこれはこのパターンだと後で気がつく。自然と使えるようになっている自分に驚く。そのようになるための本。 (参考:honto)

↓全て表示 ↑少なく表示
オブジェクト指向ソフトウェア設計の際に繰り返し現れる重要な部品をデザインパターンとして記録し、カタログ化。改訂版ではこれにCD−ROMを添付、現場でブラウザを通して即利用できるパターンカタログデジタル版を収録。
特別付録として、原書にはないJavaのサンプルコードを追加。 (参考:honto)

↓全て表示 ↑少なく表示
本書は、エリック・ガンマ、ラルフ・ジョンソン、リチャード・ヘルム、ジョン・ブリシディースの所謂、オブジェクト指向の4人組(Gof, Gang of four)の共著です。
デザインパターンとは、型紙のことです。
上着を作りたければ、上着の型紙が必要です。
上着の型紙は1種類とは限りません。
デザイン(設計)に応じて、数種類から数千種類の型紙から選ぶ必要があります。
10や20の型紙を知っているだけで、使いこなしていると勘違いすることがないように、本書をじっくり読みましょう。
デザインパターンのことをよく知らないで、既存のソフトを修正してプログラムを作っているという場合もしばしばあります。
本書は、そのままデザインパターンのことをよくしらないまま使いつづけるのにも役立ちます。
デザインパターンの使い方を覚えるのにも役立つと思います。
建築物でも、類似の建物を建てる場合には、設計を再利用することがある。
ソフトウェア開発でも、対象が似ていれば、ソフトウェアも似ていていいかもしれない。
オブジェクト指向とは、物(オブジェクト)思考なのだから、その設計(デザイン)も、似ていて当然かもしれない。
設計の再利用は自然の流れである。
課題てゃ、再利用する設計が、抽象的すぎることかもしれない。
もっと、具体的な会計システムのような厳密に定義できるものだとよかったかもしれない。
デザインパターンという設計の基本的な例題を使うという視点では、 結城さんが書いた「java言語で学ぶデザインパターン入門」「java言語で学ぶデザインパターン入門マルチスレッド編」を合わせて読むとよいかもしれません。 結城さんは、長年、マニュアル本をたくさん書かれているので、さまざまな情報源から情報を収集し、体系的に説明するのに長けていると思います。 (参考:honto)

↓全て表示 ↑少なく表示

  

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
(著)アラン・シャロウェイ, ジェームズ・R・トロット
発売日 2014/03/11
総合評価
(4.3)
(2022/01/25 12:04時点)
本書は、オブジェクト指向パラダイムを有効にするためのデザイ
ンパターンの中から、重要度の高いものを厳選し、解説しています。その際、要
求における流動的要素や、要求の変化という観点から、さまざまな事例につい
て丁寧な考察を行うことによって、デザインパターンそのものを導き出すという
ユニークなアプローチを採っています。
オブジェクト指向パラダイムのメリットを120% 引き出したいと考えている方
に、まず本書をお薦めすることができます。デザインパターンを考察することで
こそ、「オブジェクト指向の本当の姿」=「オブジェクト指向のこころ」
が理解できるようになるわけです。また、デザインパターンを勉強したことがな
い方、勉強はしたが日々の仕事に活用できないと悩んでおられる方にもお薦めで
す。本書で解説されている観点に立つことで、「時間軸を見渡した設計」とも言
える考え方を身につけることができ、設計・開発するシステムはひと味もふた
味も違ったものとなることでしょう。

↓全て表示↑少なく表示
 
目次
第1部 オブジェクト指向ソフトウェア開発入門
第2部 従来のオブジェクト指向設計における限界
第3部 デザインパターン
第4部 すべてをまとめる:パターンを使って考える
第5部 新たな設計パラダイムに向けて
第6部 パターンの持つその他の価値
第7部 ファクトリ
第8部 まとめ、そして今後

↓全て表示↑少なく表示
Users Voice
■個々のデザインパターンを勉強するつもりで読み始めたが、デザインパターンの根底にある考え方を習得することができた。
■Q1. 従来のオブジェクト指向設計の限界とは?
従来のオブジェクト指向設計では、流動的要素に対して継承による特化という手法で対応していた。この手法は、必要以上の継承階層によって結合度が強まり、凝集度が低下するため、保守性と柔軟性の悪化を引き起こす。
CAD/CAMシステムの例では、フィーチャーとシステムという2種類の流動的要素に対して、フィーチャー数とシステム数を掛け合わせた数のクラスが必要になってしまう。これに対して、パターンに基づいたオブジェクト指向設計アプローチでは、流動的要素を個別のクラス内に保持(カプセル化)する。
■Q2. オブジェクトの新たな考え方とは?
従来は、データとデータを取り扱うための手続きという、実装の観点でしかオブジェクトを見ていなかった。これに対して、新たな考え方では、概念上の観点=責務に基づいてオブジェクトを捉え、責務を備えた実態として定義する。これにより、オブジェクトがどう実装されるのかではなく、何を実行するかに着目できるようになる。実装ではなく動機に着目するというのは、デザインパターンでよく出てくるスローガンである。
■Q3. カプセル化の新たな考え方とは?
従来は、カプセル化とはデータ隠蔽であると考えられていたが、これはカプセル化の限られた一面である。新たな考え方では、カプセル化とは、あらゆるものを隠蔽することである。データのほかに、実装、派生クラス、設計の詳細、実体化の規則を隠蔽することができる。派生クラスのカプセル化は、型のカプセル化とも言えるもので、抽象クラスを使用するクライアントは、派生クラスの存在を意識する必要がなくなる。
■Q4. 共通性/可変性分析とオブジェクト指向やデザインパターンの関係は?
共通性/可変性分析を用いて、オブジェクトを見つけ出す。共通性分析によって流動的要素をまとめる概念を定義し、抽象クラスを導き出す。可変性分析によって流動的要素を洗い出し、派生クラス(具象クラス)によって実装する。
☆図8.5+Fowlerの観点:
・オブジェクトの概念上の観点=責任
・オブジェクトの仕様上の観点=メソッド(振る舞い)
・オブジェクトの実装上の観点=コード、データ、演算処理
■Q5. パターンで考えるとはどういうことか?
問題領域からパターンを洗い出すことから始める(第3部の各章)。次に、洗い出したパターンの適用順序を決めて、各パターンの“canonical form”に当てはめる(第4部)。大枠から入ることによって、詳細に気を取られすぎることを回避できる。Alexanderのアプローチとも呼んでいる。
ただし、「パターンで考える」ことが有効となるケースは多くない。これに対して、共通性/可変性分析は大抵のケースで有効な方法である。
※問題領域:解決しようとしている問題そのもののこと。
■Q6. コンテキストからの設計原則とは?
コンテキストとは、あるオブジェクトが別のオブジェクトをどうやって使用するのかということ。コンテキ���トからの設計原則とは、オブジェクトにどのような要求があり、その要求に対してどのようなサービスを提供するのかという「サービス指向」を目指すことである。
コンテキストからの設計は、Alexanderの設計アプローチとも呼んでおり、以下のようなアプローチである。「パターンで考える」と同じことを言っている。
1.全体の概念を理解する。
2.パターンを洗い出す。
3.他のパターンのためのコンテキストを作り出すパターンから開始する。
4.コンテキスト内に向かって、パターンの適用と、新たなパターンの洗い出しを繰り返す
ほとんどのデザインパターンがこのアプローチに従っている。
※コンテキスト:何らかのものをその中に存在または発生させる、互いに関連しあう条件、すなわち環境や設定のこと。あるパターンは、他のパターンのためのコンテキストを提供する。
■Q7. 流動的要素のカプセル化原則とは?
流動的な振る舞いを有した派生クラスを、使用側から隠蔽すること。凝集度を高め、流動的要素間の結合度を低くするために、クラス内に複数の流動的要素を保持しないことが重要である。CAD/CAMシステムの例では、Bridge, Abstract Factory, Adaptor, Fecadeの各パターンにより、カプセル化する流動的要素を分けている。
■Q8. クラス継承よりオブジェクトの集約を多用するとはどういうことか?なぜか?
被使用側クラスの流動的要素に合わせて使用側クラスを派生(継承)させるのではなく、使用側クラスに被使用側クラスを保持させたうえで、汎用的なインタフェースを経由して呼び出すこと。被使用側クラスで流動的要素をカプセル化することにより、汎用的なインタフェースを提供できるようになる。
※Strategyパターンが一例。
■Q9. 開放/閉鎖原則とは?
ソフトウェアは変更することなく拡張できるように設計すべきという考え方。デザインパターンの根幹には開放/閉鎖原則がある。
■Q10. 共通性/可変性分析とは?
問題領域内に存在している概念(共通性)と具体的な実装(可変性)を洗い出すこと。システムの流動的要素を洗い出すことができる。以下のような、共通性/可変性分析テーブルを作りながら進める。
共通性 | 存在する流動的要素
概念1 | 具体的な実装1-A
| 具体的な実装1-B
概念2 | 具体的な実装2-A
| 具体的な実装2-B
| 具体的な実装2-C
… | …
流動的要素を洗い出した後は、デザインパターンの教訓(インタフェースを用いて設計を行い、集約を用いて流動的要素をカプセル化する)を活用できる。
デザインパターンによるアプローチ(コンテキストからの設計)とよく似ている。しかし、相互補完的な面もある。共通性/可変性分析によるアプローチは、抽象的側面の洗い出しに役立つ。デザインパターンによるアプローチは、抽象的側面間の関連に着目する。
■Q11. 分析マトリクスとは?
問題領域内に存在する流動的要素を明確にするためのテクニック。分析結果から、使用すべきパターンを洗い出すことができる。以下の表が分析マトリクスであり、概念が共通性を表し、機能が特定の共通性における流動的要素を表す���
| シナリオA | シナリオB |
概念1 | 機能1-A | 機能1-B |
概念2 | 機能2-A | 機能2-B |
… | … | … |
分析マトリクスにより、要求の抜け漏れに気づくことができる。また、数多くの特殊ケースが存在し、全体像が見えない場合の整理に有効である。
■Q12. 共通性/可変性分析と分析マトリクスの関係は?
分析マトリクスは、共通性と流動的要素の整理により、複雑な問題領域の理解に役立つ。
■Q13. 有効で汎用的な設計アプローチとは?
デザインパターンから得られた以下の教訓のこと。どのような設計にも適用可能である。これは、Alexanderのコンテキストからの設計に従ったアプローチである。
・共通性/可変性分析を用いて、システムの流動的要素を洗い出す。
・流動的要素を洗い出した後、デザインパターンの教訓(インタフェースを用いて設計を行い、集約を用いて流動的要素をカプセル化する)に従う。 (参考:honto)

↓全て表示 ↑少なく表示
Gofの幾つかのデザインパターンをオブジェクト指向設計の考え方に沿って導出することでオブジェクト指向について理解を深める本。
体系だってオブジェクト指向を学んだことがなかったので,オブジェクト指向での重要な,ポリモーフィズム,カプセル化,結合度,凝集度等の概念が馴染みやすいものになったのは収穫。
これから設計を行う際の一つの指針として有効活用できる感触は得られた。
説明も適度に抽象化されており,応用可能なしっかりとした知識を得られると思う。 (参考:honto)

↓全て表示 ↑少なく表示

   

オブジェクト指向プログラミングの本 最新・高評価のおすすめの5冊

以下が「オブジェクト指向プログラミングの本」最新・高評価のおすすめの5冊詳細です。

(2022/01/25 12:04 更新)
Rank製品価格
1
オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)...
発売日 2020/06/05
ソシオメディア株式会社, 上野 学, 藤井 幸多 (技術評論社)
総合評価
(4.5)
3,278円
3,114円
3,278円
3,278円
2
3,608円
(+109pt)
3,608円
3,608円
3,608円
3
2,640円
2,376円
2,640円
2,640円
4
3,234円
3,072円
3,234円
3,234円
5
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
発売日 2014/03/11
アラン・シャロウェイ, ジェームズ・R・トロット (丸善出版)
総合評価
(4.3)
4,180円
4,180円
4,180円
 

オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)

オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)
(著)ソシオメディア株式会社, 上野 学, 藤井 幸多
発売日 2020/06/05
総合評価
(4.5)
(2022/01/25 12:04時点)
銀の弾丸、OOUI。操作性と開発効率の劇的な向上

オブジェクト指向ユーザーインターフェース(OOUI)とは、オブジェクト(もの、名詞)を起点としてUIを設計すること。タスク(やること、動詞)を起点としたUIに比べて、画面数が減って作業効率が高まり、また開発効率や拡張性も向上する、いわば「銀の弾丸」的な効果を持つ。ブログや雑誌記事などで大きな反響を得たこの設計手法について、前半部では理論やプロセスを詳説。そして後半部の「ワークアウト(実践演習)」では18の課題に読者がチャレンジ。実際に考え、手を動かし、試行錯誤をすることにより、OOUIの設計手法を体得できる。
 
内容サンプル

(引用元Amazon)

 
目次
はじめに
■1 オブジェクト指向UIとは何か
1-1 目当ての現し
 ユーザー要求とタスク
 目当て=オブジェクト
1-2 お金が先か、商品が先か
 明らかにおかしなUI
 テストするまでもない問題
1-3 オブジェクト指向UI
 オブジェクト指向UIの原則
 オブジェクトを知覚でき直接的に働きかけられる
 オブジェクトは自身の性質と状態を体現する
 オブジェクト選択→アクション選択の操作順序
 すべてのオブジェクトが互いに協調しながらUIを構成する
1-4 オブジェクト指向か? タスク指向か?
 対象オブジェクトを選ぶところから操作が始まる
 タスク指向UIの問題
 オブジェクト指向UIとタスク指向UIの対比
 タスク指向UIを改善する ビデオカメラ画面
 タスク指向UIを改善する フードデリバリーサービス
 オブジェクトを前面に出す
1-5 UIがタスク指向になってしまう背景
 業務分析では「やること」がまとめられる
 利用手続きをデザインしようとする
 タスクに必要な情報オブジェクトを定義する
■2 オブジェクト指向UIの設計プロセス
2-1 デザインプロセスのミッシングリンクをつなぐ
2-2 アプリケーションの手掛かり
 タスクを手掛かりにすると
 オブジェクトを手掛かりにする
2-3 ユーザー、タスク、オブジェクトの関係
2-4 ソフトウェアデザインのレイヤー
 UIは複数のオブジェクトを構造的に表象した合成物
 モデル ユーザーの関心対象の模式
 インタラクション 構造と機能
 プレゼンテーション スタイルやレイアウト
2-5 デザインの究極の目的は形である
 デザイナーのアブダクション
 一貫して作用する「原理」を備える
 道具の抽象性
2-6 オブジェクト指向UI設計の基本ステップ
 ステップ1. オブジェクトの抽出
 ステップ2. ビューとナビゲーションの検討
 ステップ3. レイアウトパターンの適用
■3 オブジェクト指向UI設計の実践
3-1 オブジェクト指向UIの設計ステップ
3-2 本章でデザインするものの全体像
3-3 ステップ1. オブジェクトの抽出
 「名詞」を抽出する
 「名詞」とそれらの関係を抽出する
 「名詞」を汎化し、粒度を揃える
 「名詞」の関係性をつなげ、オブジェクトを特定する
 オブジェクトの中で「メインオブジェクト」になるものを特定する
 メインオブジェクトの多重性を特定する
 メインオブジェクトに付随するオブジェクトをプロパティとする
  コラム メインオブジェクト選びのポイント
 タスクからアクションを見つける
  コラム タスク、オブジェクト、プロパティ、アクション
3-4 ステップ2. ビューとナビゲーションの検討
 基本のビュー形式
 メインオブジェクトに「コレクション」と「シングル」のビューを与える
  コラム シングルビューとコレクションビューの省略
 コレクションビューとシングルビューの呼び出し関係を検討する
 メインオブジェクトの中からルートナビゲーション項目を選定する
  コラム ルートナビゲーションの項目、アイコン、ラベリング
3-5 ステップ3. レイアウトパターンの適用
 ルートナビゲーションの配置パターン
 ビューの配置パターン
 メインオブジェクト同士の参照関係を踏まえて配置パターンを適用する
  コラム ビューの配置パターン適用のポイント
 コレクションビューの表示形式のパターン
  コラム オブジェクトへのフォーカスとコレクションビュー
 コレクションの性質や用途に合わせて表示形式を決定する
 コレクションのフィルタリングのパターン
 シングルビューの表示形式のパターン
  コラム シングルビューの表示内容
 シングルビューの性質や用途に合わせて表示形式を決定する
 アクションの性質や用途に合わせて表示形式を決定する
 Create(作成)アクションのパターン
 Delete(削除)アクションのパターン
 Update(更新)アクションのパターン
 ビジュアルデザイン
3-6 タスクをどう扱うか
 タスクの特徴
 タスクはどこへ行くのか?
■4 ワークアウト:基礎編
進め方
レベル1 メモアプリケーション
 ヒント・チャレンジ
 解説
レベル2 社員名簿アプリケーション
 ヒント・チャレンジ
 解説
レベル3 イベント店舗管理アプリケーション
 ヒント・チャレンジ
 解説
レベル4 会議室予約アプリケーション
 ヒント・チャレンジ
 解説
レベル5 家族で遊べる場所を探すアプリケーション
 ヒント・チャレンジ
 解説
レベル6 商品管理アプリケーション
 ヒント・チャレンジ
 解説
レベル7 商品管理アプリケーション
 ヒント・チャレンジ
 解説
レベル8 商品管理アプリケーション
 ヒント
 解説
レベル9 商品管理アプリケーション
 ヒント
 解説
■5 ワークアウト:応用編
進め方
レベル10 スマートフォン用の営業支援アプリケーション
 ヒント
 解説
レベル11 イベント管理アプリケーション
 ヒント
 解説
レベル12 保険契約の顧客管理アプリケーション
 ヒント
 解説
レベル13 アセット管理アプリケーション
 ヒント
 解説
レベル14 サイト管理アプリケーション
 ヒント
 解説
レベル15 出張申請・精算アプリケーション
 ヒント
 解説
レベル16 契約管理アプリケーション
 ヒント
 解説
レベル17 通貨換算アプリケーション
 ヒント
 解説
レベル18 販売実績照会アプリケーション
 ヒント
 解説
■6 オブジェクト指向UIのフィロソフィー
6-1 オブジェクトの原義
6-2 オブジェクト指向
 クラスとインスタンス
 イデア論
 GUIにおけるオブジェクト
 プログラミングにおける記述法
6-3 GUI
 マン ? マシン インターフェースからユーザーインターフェースへ
 インターフェースはユーザーとオブジェクトを接着する
 Whirlwind GUIという発想の原型
 SAGE 防空システムに組み込まれた最初期のGUI
 Sketchpad グラフィック言語による対話型コンピューター
 NLS 知的生産活動のためのコンピューター
 Smalltalk 誰もが使えるパーソナルコンピューター
 TUI テキストベースのUI
 Star GUIベースのビジネス用ワークステーション
 Macintosh 商業的に成功した最初のGUIシステム
 iPhone パーソナルコンピューターの新しいフォームファクター
 メタメディアとしてのオブジェクト指向UI
6-4 モードレス
 モードレスネスを信奉しなさい
 ラリー・テスラー テキスト編集のモードレス化
 ドナルド・ノーマン モードエラーの分析
 ジェフ・ラスキン モードレスにすることで劇的に使いやすくなる
 モードレスにする方法
6-5 オブジェクト指向UIについての文献
 『Object-Oriented User Interfaces and Object-Oriented Languages』
 『Object-Oriented Interface Design』
 『Designing Object-Oriented User Interfaces』
 『The Elements of User Interface Design』
 『Designing for the User with OVID』
おわりに
参考文献
索引
あとがき

↓全て表示↑少なく表示
Users Voice
ここ10年くらいで一気に普及した UI・UXという概念は、一部では未だに蔑ろにされています。 お役所のホームページなどはその最たる例で、 「一体だれがこれを使いやすい(わかりやすい)と思ったのか」と 呆れることも少なくありません。プロが作ったはずなのに。 曖昧な要求で技術者を振り回す発注者や、 駆け出しのエンジニアさん達には、ためになりそうです。 直観的に使いやすいメニューやナビゲーション構成というのは 出来る人は自然とそう設計できるものだったりもしますが、 こうして半ば無理やりに言語化して教わらないと身に着けられない人も多く、 その観点で、とても意味のある本だと感じました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
人気の書籍ということで、学びのために購入してみました。なかなかのボリュームなので、しっかり読み込んで理解していこうと思います。大切な分野です。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
もっと実例に沿って解説してくれると思っていたのですが、目新しいことはあまり載っていなかったです。 うーん、いまひとつ。残念。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴

著監:上野 学
デザインコンサルタント/デザイナー。各種ビジネスアプリケーション、ウェブ/モバイル/デスクトップアプリケーション、その他の様々なインタラクティブメディアのヒューマンインターフェース設計およびユーザビリティ評価に従事。ソシオメディアにおいてデザインメソッド開発を担う。執筆、講演など多数。 Twitter:@manabuueno

著:藤井 幸多
ソシオメディア株式会社ユーザーインターフェースデザイナー。各種ビジネスアプリケーションをはじめさまざまなアプリケーションのデザインコンサルティングを経験。UI設計、ユーザビリティテスト、デザインガイドライン策定、デザイン評価、OOUI メソッドとトレーニングプログラムの開発/実施などを通して、デザイン組織への支援を行う。 Twitter:@ atochotto


↓全て表示↑少なく表示

  

オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方

オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby"、待望の翻訳版! 使いこなせるようになるととても便利なオブジェクト指向ですが、「なんとなく」の理解で使っていると、大きな罠にかかってしまいます。本書は、保守性を上げて運用コストを下げるアプリケーションをつくるために、クラス設計から基本概念、継承のテクニック、ダックタイプ、そしてテスト設計まで、幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。
 
内容サンプル

(引用元Amazon)

 
目次
第1章 オブジェクト指向設計
第2章 単一責任のクラスを設計する
第3章 依存関係を管理する
第4章 柔軟なインターフェースをつくる
第5章 ダックタイピングでコストを削減する
第6章 継承によって振る舞いを獲得する
第7章 モジュールでロールの振る舞いを共有する
第8章 コンポジションでオブジェクトを組み合わせる
第9章 費用対効果の高いテストを設計する

↓全て表示↑少なく表示
Users Voice
普段はC,C++を使っています。 Ruby未経験ですが、本書はRubyでの記載でした。 但し、少し推測でよんでいますが、オブジェクト指向がわかっている人なら読むことは可能です。 内容は、今までにはなかった本でして依存関係に関して詳しく書いています。買ってよかったです。ステップアップしたい人は一回は読むべきです。 できれば、脳内変換が無駄な気がするのため、C++やJava版も欲しかった。。。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
『オブジェクト指向設計実践ガイド』
ソフトウェア・アーキテクトとして30年以上の経験を持つSandi Mets 氏の著書です。
「オブジェクト指向」って、プログラミングの世界では普通に使われている言葉なんですが、プログラミング初心者の私には全然その姿が見えませんでした。
学生時代に勉強したプログラミング言語のBasic、FORTRANは手続き型言語でしたし、趣味でいじっていたEXCELマクロのVBAも小さいものばかりだったので必要としませんでした。
今回、RubyやRuby on Railsを真剣に取り組み始めて、他人のコードを見て???となるばかり。
そこで評判も良く、Rubyを使って説明している本書に挑戦してみることにしました。
【本書で学べること・考えること】
・オブジェクト指向プログラミングの利点
・単一責任のクラスの決定
・不必要な依存の断ち切り
・柔軟なインターフェイスの定め方
・ダックタイピング
・上手な振る舞いの適用
・コンポジションによるオブジェクト作成
・費用対効果の高いテスト設計
読んでみての感想です。
元の説明が冗長的な上に直訳的な日本語訳なので、なかなか読解が難しい本です。
絶対の正解があるわけでなく、概念的な内容なので、より難解です。
ただ、説明がRubyのコードで書かれているので、コードを読めば内容が理解できる点も良かったです。
今の自分のスキル、知識では、全部を理解することはできませんでした。
ただ、読む前と読んだ後では、確実にコードの見方や書き方が変わったと思います。
(Rubocopがメソッドの行数が多いと注意してくる理由が分かりました。)
自分の理解した内容としては、以下の通りです。
・オブジェクト指向の目的
 SOLID、DRY、デメテルの法則としった原則に基き、将来的に変更や拡張のコストを下げる柔軟性の高いソフトウェア設計を行う
・注意点
 -クラスは単一責任
 -依存関係は疎結合に
 -パブリックインターフェイスを明示
・設計手法
 -ダックタイピング
 -継承 is-a関係
 -モジュール
 -コンポジション has-a関係
・テストコード
 -将来の変更に備えつつ不変的な単位でコードを書く
まだまだ理解は足りませんが、体系的に知識を得たので、必要に応じて戻ってこれると思います。
今のタイミングで読んでおいて良かったです。 (参考:honto)

↓全て表示 ↑少なく表示
Rails実務経験半年の頃に読んだが、オブジェクト指向について理解しているけれど実践できない自分にはとても勉強になる内容だった。
読んだら力になることは間違いないが、読むのにかなり気合いを要したので、「それなりに実務経験を積んでから読む」 or 「短期間で集中して読む」のがいいと思う。
自分は後者。
全て完璧に理解したとは言えないので、時間を見つけて読み返したい。 (参考:honto)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴
メッツ,サンディ(Metz,Sandi)
ソフトウェア・アーキテクトとして、デューク大学にて毎日コードを書いている。デューク大学のチームでは、15年以上進化しつづけてきた大規模なオブジェクト指向アプリケーションを抱える顧客の、実際の問題を一丸となって解決している。現在、ノースカロライナのダーラム在住

高山泰基(タカヤマタイキ)
株式会社Misoca勤務。西日暮里.rbのメンバー(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  

オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識

『オブジェクト指向でなぜつくるのか』10年ぶり、待望の改訂第3版!
これからの10年も通用する基本」を、より多くの読者に身につけてもらうために改訂しました。

現在のソフトウエア開発技術の主役である、オブジェクト指向の全体像とそこに含まれる各技術を平易な文章で核心をズバリと解説します。
生産性のかぎを握るプログラム開発の主要技術をわかりやすく教えるという位置づけは変わりません。
そのうえで「今ドキのOOP」として人気言語(Java、Python、Ruby、JavaScript)の最新動向を新たに盛り込んでいます。
もちろん、すべての文章を細かく見直して現況に沿うよう更新しています。

本書の特徴
◆オブジェクト指向(OOP)の全体像と特徴がわかる
◆OOPのプログラムが動く仕組みが具体的にわかる
◆関数型言語の本質とOOPとの関係がわかる
◆アジャイル開発手法と実践手法がわかる


【目次】
第1章   オブジェクト指向はソフトウエア開発を楽にする技術
今ドキのOOP:とっつきやすくて、奥の深いPython
第2章   オブジェクト指向と現実世界は似て非なるもの
オブジェクトの向こう側:バズワードになったオブジェクト指向
第3章   OOPを理解する近道はプログラミング言語の歴史にあり
プログラミング昔話: COBOL コンパイラのニワトリとタマゴの話
第4章   OOPは無駄を省いて整理整頓するプログラミング技術
今ドキのOOP:ホームページツールから進化したPHP
第5章   メモリの仕組みの理解はプログラマのたしなみ
プログラミング昔話: OOPはダンプが見づらい?
第6章   OOPがもたらしたソフトウエアとアイデアの再利用
今ドキのOOP: Rails フレームワークでブレークしたRuby
第7章   汎用の整理術に化けたオブジェクト指向
オブジェクト指向の向こう側:言語が先か、コンセプトが先か
第8章   UMLは形のないソフトウエアを見る道具
第9章   現実世界とソフトウエアのギャップを埋めるモデリング
第10章   擬人化して役割分担させるオブジェクト指向設計
今ドキのOOP:クラスに縛られずに動くJavaScript
第11章   オブジェクト指向から生まれたアジャイル開発
プログラミング昔話:昔は許されなかったXP
第12章   オブジェクト指向を使いこなそう
補章   関数型言語でなぜつくるのか
今ドキのOOP:関数型言語の箱庭を用意したJava

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
目次

【目次】
第1章 オブジェクト指向はソフトウエア開発を楽にする技術
今ドキのOOP:とっつきやすくて、奥の深いPython
第2章 オブジェクト指向と現実世界は似て非なるもの
オブジェクトの向こう側:バズワードになったオブジェクト指向
第3章 OOPを理解する近道はプログラミング言語の歴史にあり
プログラミング昔話: COBOL コンパイラのニワトリとタマゴの話
第4章 OOPは無駄を省いて整理整頓するプログラミング技術
今ドキのOOP:ホームページツールから進化したPHP
第5章 メモリの仕組みの理解はプログラマのたしなみ
プログラミング昔話: OOPはダンプが見づらい?
第6章 OOPがもたらしたソフトウエアとアイデアの再利用
今ドキのOOP:Rails フレームワークでブレークしたRuby
第7章 汎用の整理術に化けたオブジェクト指向
オブジェクト指向の向こう側:言語が先か、コンセプトが先か
第8章 UMLは形のないソフトウエアを見る道具
第9章 現実世界とソフトウエアのギャップを埋めるモデリング
第10章 擬人化して役割分担させるオブジェクト指向設計
今ドキのOOP:クラスに縛られずに動くJavaScript
第11章 オブジェクト指向から生まれたアジャイル開発
プログラミング昔話:昔は許されなかったXP
第12章 オブジェクト指向を使いこなそう
補章 関数型言語でなぜつくるのか
今ドキのOOP:関数型言語の箱庭を用意したJava

↓全て表示↑少なく表示
Users Voice
タイトルから,オブジェクト指向言語の使い方についての HowTo 本だと思いましたが違いました。 なぜ,オブジェクト指向が現代において普及しているのかを,歴史を追って説明し,とても簡単に理解しやすい内容となっています.最初の方は,「コーディングを支える技術」と似通った内容になっているので,読んだことがある人は読み飛ばすことができます. 基本的な解説は Java を用いていますが,Java を知らなくても理解できる切り口となっています. オブジェクト指向の解説が書籍の9割です。 個人的には,「デザインパターンを比喩で説明されてもあまりよくわからなかったので,オブジェクト指向は比喩を使って説明されがちだからわかりづらくなっている,あくまでプログラミング技術の一つ」,のような考え方がとてもしっくりきました. 最後に関数型プログラミングについての説明があります。 プログラミングの整理術から上流工程のモデリング手法まで使われるようになったオブジェクト指向の全体感を,オブジェクト指向に詳しくなくても理解できるので,オブジェクト指向を使うプログラミングを習った早い段階で読むと,良いと思いました. (参考:YahooShopping)

↓全て表示 ↑少なく表示
どの本を読んでわからなかったオブジェクト指向のキモの部分を詳細に分かりやすく解説している本です。 少しボリュームが多いので根気強く読むことをオススメします。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴

著:平澤 章
ウルシステムズ株式会社所属。 メインフレームによる金融システムからマイクロコンピュータを使った制御系システムまで、いくつかのシステム開発を経験した後、30代前半でオブジェクト指向モデリングとSmalltalk、(Observerパターンの)MVCフレームワークに出会い、衝撃を受ける。その後、技術コンサルティングの仕事を経て、2001年にウルシステムズのスタートアップに参画し、現在に至る。 著書/翻訳書:『UMLモデリングレッスン』(著、日経BP)、『リファクタリング 第2版』(共訳、オーム社)、『レガシーコード改善ガイド』(共訳、翔泳社) ほか


↓全て表示↑少なく表示

  

現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法

(概要)
「ソースがごちゃごちゃしていて,どこに何が書いてあるのか理解するまでがたいへん」「1つの修正のために,あっちもこっちも書きなおす必要がある」「ちょっとした変更のはずが,本来はありえない場所にまで影響して,大幅なやり直しになってしまった」といったトラブルが起こるのは,ソフトウェアの設計に問題があるから。日本最大級となる60万件以上の求人情報サイト「イーキャリアJobSearch」の主任設計者であり,システム設計のベテランである著者が,コードの具体例を示しながら,良い設計のやり方と考え方を解説します。

(こんな方におすすめ)
・システム設計のポイントを知りたいエンジニア
・良い設計とは何かを知りたいエンジニア

(目次)
第1章 小さくまとめてわかりやすくする

第2章 場合分けのロジックを整理する

第3章 業務ロジックをわかりやすく整理する

第4章 ドメインモデルの考え方で設計する

第5章 アプリケーション機能を組み立てる

第6章 データベースの設計とドメインオブジェクト

第7章 画面とドメインオブジェクトの設計を連動させる

第8章 アプリケーション間の連携

第9章 オブジェクト指向の開発プロセス

第10章 オブジェクト指向設計の学び方と教え方

↓全て表示↑少なく表示
 
目次
1 小さくまとめてわかりやすくする
2 場合分けのロジックを整理する
3 業務ロジックをわかりやすく整理する
4 ドメインモデルの考え方で設計する
5 アプリケーション機能を組み立てる
6 データベースの設計とドメインオブジェクト
7 画面とドメインオブジェクトの設計を連動させる
8 アプリケーション間の連携
9 オブジェクト指向の開発プロセス
10 オブジェクト指向設計の学び方と教え方

↓全て表示↑少なく表示
Users Voice
内容が徐々にドメイン駆動設計に近づいていくので,「ドメイン駆動設計に興味があるけど,そもそも良い設計が何なのか知らない」みたいな人に特におすすめできる本だと思いました. 著者が Java の知見が深いのか,使用歴が長いのかわかりませんが,コードを用いた説明は Java ベースで書かれていました. 要所で Java のフレームワークについて述べているので,周辺知識を持っていると一層理解できると思います. ただし,思考が Java に傾きすぎてしまうので,現在 Web アプリのバックエンドでよく使われる言語で,書いてくれるともっとわかりやすいのにと思ってしまいました. あと,個人開発の範疇だと,設計を意識しなくても,実装できたり,拡張や運用保守などもできてしまうので,ある程度の大規模開発や実務による苦労した経験が必要に感じました, 「リーダブルコード」,「オブジェクト指向でなぜつくるのか」,「ドメイン駆動設計」を足して3で割ったような内容となっており,具体的な説明からとてもわかりやすい良書だと思います. 「クリーンアーキテクチャ」や「ドメイン駆動設計」などにも興味を持てるようになったので読んでみたいと思います. (参考:YahooShopping)

↓全て表示 ↑少なく表示
どのよう設計すればオブジェクト指向を使用し、理路整然としたシステムを構築できるかが説明されています。 ドメイン駆動設計やリファクタリングの詳細は本書でも紹介されている 他書を参考することをお勧めしますが、 要点がまとまっていて良い内容かと思いました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
実践にそくして書いてあって、とても参考になりました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
著者略歴
増田亨(マスダトオル)
有限会社システム設計代表。ギルドワークス株式会社取締役。業務アプリケーションのアーキテクト。日本最大級の60万件以上の求人情報サイト「イーキャリアJobSearch」の主任設計者。非同期メッセージング/API/クラウド技術を組み合わせた、柔軟で発展性に優れた疎結合のシステム間連携方式でサービスを支える(本データはこの書籍が刊行された当時に掲載されていたものです)

  

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
(著)アラン・シャロウェイ, ジェームズ・R・トロット
発売日 2014/03/11
総合評価
(4.3)
(2022/01/25 12:04時点)
本書は、オブジェクト指向パラダイムを有効にするためのデザイ
ンパターンの中から、重要度の高いものを厳選し、解説しています。その際、要
求における流動的要素や、要求の変化という観点から、さまざまな事例につい
て丁寧な考察を行うことによって、デザインパターンそのものを導き出すという
ユニークなアプローチを採っています。
オブジェクト指向パラダイムのメリットを120% 引き出したいと考えている方
に、まず本書をお薦めすることができます。デザインパターンを考察することで
こそ、「オブジェクト指向の本当の姿」=「オブジェクト指向のこころ」
が理解できるようになるわけです。また、デザインパターンを勉強したことがな
い方、勉強はしたが日々の仕事に活用できないと悩んでおられる方にもお薦めで
す。本書で解説されている観点に立つことで、「時間軸を見渡した設計」とも言
える考え方を身につけることができ、設計・開発するシステムはひと味もふた
味も違ったものとなることでしょう。

↓全て表示↑少なく表示
 
目次
第1部 オブジェクト指向ソフトウェア開発入門
第2部 従来のオブジェクト指向設計における限界
第3部 デザインパターン
第4部 すべてをまとめる:パターンを使って考える
第5部 新たな設計パラダイムに向けて
第6部 パターンの持つその他の価値
第7部 ファクトリ
第8部 まとめ、そして今後

↓全て表示↑少なく表示
Users Voice
■個々のデザインパターンを勉強するつもりで読み始めたが、デザインパターンの根底にある考え方を習得することができた。
■Q1. 従来のオブジェクト指向設計の限界とは?
従来のオブジェクト指向設計では、流動的要素に対して継承による特化という手法で対応していた。この手法は、必要以上の継承階層によって結合度が強まり、凝集度が低下するため、保守性と柔軟性の悪化を引き起こす。
CAD/CAMシステムの例では、フィーチャーとシステムという2種類の流動的要素に対して、フィーチャー数とシステム数を掛け合わせた数のクラスが必要になってしまう。これに対して、パターンに基づいたオブジェクト指向設計アプローチでは、流動的要素を個別のクラス内に保持(カプセル化)する。
■Q2. オブジェクトの新たな考え方とは?
従来は、データとデータを取り扱うための手続きという、実装の観点でしかオブジェクトを見ていなかった。これに対して、新たな考え方では、概念上の観点=責務に基づいてオブジェクトを捉え、責務を備えた実態として定義する。これにより、オブジェクトがどう実装されるのかではなく、何を実行するかに着目できるようになる。実装ではなく動機に着目するというのは、デザインパターンでよく出てくるスローガンである。
■Q3. カプセル化の新たな考え方とは?
従来は、カプセル化とはデータ隠蔽であると考えられていたが、これはカプセル化の限られた一面である。新たな考え方では、カプセル化とは、あらゆるものを隠蔽することである。データのほかに、実装、派生クラス、設計の詳細、実体化の規則を隠蔽することができる。派生クラスのカプセル化は、型のカプセル化とも言えるもので、抽象クラスを使用するクライアントは、派生クラスの存在を意識する必要がなくなる。
■Q4. 共通性/可変性分析とオブジェクト指向やデザインパターンの関係は?
共通性/可変性分析を用いて、オブジェクトを見つけ出す。共通性分析によって流動的要素をまとめる概念を定義し、抽象クラスを導き出す。可変性分析によって流動的要素を洗い出し、派生クラス(具象クラス)によって実装する。
☆図8.5+Fowlerの観点:
・オブジェクトの概念上の観点=責任
・オブジェクトの仕様上の観点=メソッド(振る舞い)
・オブジェクトの実装上の観点=コード、データ、演算処理
■Q5. パターンで考えるとはどういうことか?
問題領域からパターンを洗い出すことから始める(第3部の各章)。次に、洗い出したパターンの適用順序を決めて、各パターンの“canonical form”に当てはめる(第4部)。大枠から入ることによって、詳細に気を取られすぎることを回避できる。Alexanderのアプローチとも呼んでいる。
ただし、「パターンで考える」ことが有効となるケースは多くない。これに対して、共通性/可変性分析は大抵のケースで有効な方法である。
※問題領域:解決しようとしている問題そのもののこと。
■Q6. コンテキストからの設計原則とは?
コンテキストとは、あるオブジェクトが別のオブジェクトをどうやって使用するのかということ。コンテキ���トからの設計原則とは、オブジェクトにどのような要求があり、その要求に対してどのようなサービスを提供するのかという「サービス指向」を目指すことである。
コンテキストからの設計は、Alexanderの設計アプローチとも呼んでおり、以下のようなアプローチである。「パターンで考える」と同じことを言っている。
1.全体の概念を理解する。
2.パターンを洗い出す。
3.他のパターンのためのコンテキストを作り出すパターンから開始する。
4.コンテキスト内に向かって、パターンの適用と、新たなパターンの洗い出しを繰り返す
ほとんどのデザインパターンがこのアプローチに従っている。
※コンテキスト:何らかのものをその中に存在または発生させる、互いに関連しあう条件、すなわち環境や設定のこと。あるパターンは、他のパターンのためのコンテキストを提供する。
■Q7. 流動的要素のカプセル化原則とは?
流動的な振る舞いを有した派生クラスを、使用側から隠蔽すること。凝集度を高め、流動的要素間の結合度を低くするために、クラス内に複数の流動的要素を保持しないことが重要である。CAD/CAMシステムの例では、Bridge, Abstract Factory, Adaptor, Fecadeの各パターンにより、カプセル化する流動的要素を分けている。
■Q8. クラス継承よりオブジェクトの集約を多用するとはどういうことか?なぜか?
被使用側クラスの流動的要素に合わせて使用側クラスを派生(継承)させるのではなく、使用側クラスに被使用側クラスを保持させたうえで、汎用的なインタフェースを経由して呼び出すこと。被使用側クラスで流動的要素をカプセル化することにより、汎用的なインタフェースを提供できるようになる。
※Strategyパターンが一例。
■Q9. 開放/閉鎖原則とは?
ソフトウェアは変更することなく拡張できるように設計すべきという考え方。デザインパターンの根幹には開放/閉鎖原則がある。
■Q10. 共通性/可変性分析とは?
問題領域内に存在している概念(共通性)と具体的な実装(可変性)を洗い出すこと。システムの流動的要素を洗い出すことができる。以下のような、共通性/可変性分析テーブルを作りながら進める。
共通性 | 存在する流動的要素
概念1 | 具体的な実装1-A
| 具体的な実装1-B
概念2 | 具体的な実装2-A
| 具体的な実装2-B
| 具体的な実装2-C
… | …
流動的要素を洗い出した後は、デザインパターンの教訓(インタフェースを用いて設計を行い、集約を用いて流動的要素をカプセル化する)を活用できる。
デザインパターンによるアプローチ(コンテキストからの設計)とよく似ている。しかし、相互補完的な面もある。共通性/可変性分析によるアプローチは、抽象的側面の洗い出しに役立つ。デザインパターンによるアプローチは、抽象的側面間の関連に着目する。
■Q11. 分析マトリクスとは?
問題領域内に存在する流動的要素を明確にするためのテクニック。分析結果から、使用すべきパターンを洗い出すことができる。以下の表が分析マトリクスであり、概念が共通性を表し、機能が特定の共通性における流動的要素を表す���
| シナリオA | シナリオB |
概念1 | 機能1-A | 機能1-B |
概念2 | 機能2-A | 機能2-B |
… | … | … |
分析マトリクスにより、要求の抜け漏れに気づくことができる。また、数多くの特殊ケースが存在し、全体像が見えない場合の整理に有効である。
■Q12. 共通性/可変性分析と分析マトリクスの関係は?
分析マトリクスは、共通性と流動的要素の整理により、複雑な問題領域の理解に役立つ。
■Q13. 有効で汎用的な設計アプローチとは?
デザインパターンから得られた以下の教訓のこと。どのような設計にも適用可能である。これは、Alexanderのコンテキストからの設計に従ったアプローチである。
・共通性/可変性分析を用いて、システムの流動的要素を洗い出す。
・流動的要素を洗い出した後、デザインパターンの教訓(インタフェースを用いて設計を行い、集約を用いて流動的要素をカプセル化する)に従う。 (参考:honto)

↓全て表示 ↑少なく表示
Gofの幾つかのデザインパターンをオブジェクト指向設計の考え方に沿って導出することでオブジェクト指向について理解を深める本。
体系だってオブジェクト指向を学んだことがなかったので,オブジェクト指向での重要な,ポリモーフィズム,カプセル化,結合度,凝集度等の概念が馴染みやすいものになったのは収穫。
これから設計を行う際の一つの指針として有効活用できる感触は得られた。
説明も適度に抽象化されており,応用可能なしっかりとした知識を得られると思う。 (参考:honto)

↓全て表示 ↑少なく表示

   

オブジェクト指向プログラミングの本「Kindle Unlimited 読み放題 人気本ランキング」

「Kindle Unlimited」は、Amazonの定額本読み放題サービス。

最近はKindle Unlimitedで読める本もどんどん増えており、雑誌、ビジネス書、実用書などは充実のラインナップ。

以下がKindle Unlimitedで読み放題となるオブジェクト指向プログラミングの本の一覧です。

30日無料体験も可能なので、読みたい本があれば体験期間で無料で読むことも可能です。

(2022/01/25 12:04 更新)
Rank製品価格
1
速習 Python 3 中: オブジェクト指向編
発売日 2016/11/06
伊藤 裕一
Kindle Unlimited対象
総合評価
(4.1)
800円
2
250円
3
99円
4
99円
5
新入社員のためのJavaプログラミングテキスト オブジェクト指向編...
発売日 2014/06/14
遠藤 正隆 (株式会社アテニューム)
Kindle Unlimited対象
総合評価
(2.6)
1,250円
6
99円
7
99円
8
499円
9
400円
10
99円
 

オブジェクト指向プログラミング参考書「新書一覧(2020年、2021年刊行)」

IT技術・プログラミング言語は、最新情報のキャッチアップも非常に重要、すなわち新書は要チェック

ということで、2020年以降に発売したオブジェクト指向プログラミング参考書の新書一覧(発売日の新しい順)が以下です。

(2022/01/25 12:03 更新)
製品価格
新わかりやすいJava オブジェクト指向徹底解説 第2版
発売日 2022/01/28
川場隆 (秀和システム)
3,300円
2,970円
99円
C#で入門 はじめてのプログラミング:基礎からオブジェクト指向まで...
発売日 2021/09/07
飯塚 泰樹, 大森 康朝, 松本 哲志, 木村 功 (森北出版)
2,310円
2,310円
2,310円
99円
2,640円
2,376円
2,640円
2,640円
99円
オブジェクト指向の考え方 5th Edition impress top gearシリーズ
発売日 2020/10/23
Matt Weisfeld, 神林 靖 (インプレス)
総合評価
(2.6)
3,740円
3,366円
3,740円
3,740円
99円
99円
99円
 

関連:「デザインパターン」「リファクタリング」に関する書籍

オブジェクト指向プログラミングを学ぶことで、適切なクラス設計に基づくコーディング基礎知識が得られます。

加えて学びたいのが、汎用的で再利用可能な設計知識となる「デザインパターン」。少なくともプロのエンジニアなら主要パターンの知識は必須です。

また、設計とともに、コーディング自体の守るべき原則・アンチパターンなどのリファクタリング知識も知ることで、保守性・拡張性の高い実装が可能となります。

以下では「デザインパターン」「リファクタリング」に関する書籍を紹介しています、合わせてのぞいて見てください。

 

関連:最新おすすめのKindle端末

以下では最新のKindle端末について比較、おすすめ紹介しています、合わせてのぞいて見てください。

いじょうでっす。

コメント

タイトルとURLをコピーしました