書評☆4 オブジェクト指向でなぜつくるのか 第2版 | 従来の手続き型言語の欠点を解決するのがオブジェクト指向言語

概要

書名通り,オブジェクト指向 (OOP) でなぜ開発するのかという疑問に答えるために解説されている。

大きく4部構成になっている。

  1. OOPが理解しにくい理由
  2. OOPの登場の経緯,仕組み,メモリー管理
  3. OOPを用いた周辺環境
  4. OOPによる設計

特に,「第3章 OOPを理解する近道はプログラミング言語の歴史にあり」,「第4章 OOPは無駄を省いて整理整頓するプログラミング技術」,「第5章 メモリの仕組みの理解はプログラマのたしなみ」がよかった。

従来の手続き型言語の問題点を指摘し,その問題をOOPでどのように解決しているのかという視点で,OOPの主要な要素を解説しており,わかりやすかった。

従来の手続き型言語では以下2点の問題があった。

  1. グローバル変数が必要
  2. 関数単位でしか再利用不可能

OOPでは,これらの問題をクラスを用いることで解決できるようになった。

また,メモリの仕組みもよかった。関数はクラスや親クラスで共通であったり,メンバー変数はインスタンスごとに個別などの解説があり,キャストしたときなどにどのクラスの関数・変数が使われるのかという点が理解しやすくなった。

このメモリ管理のところは,できることならもっと深く,体系的に勉強したいと感じた。

例えば,新人にOOPを説明することになった場合,この3章から4章の内容を踏まえて説明すればいいのではないかと思った。

章の末尾には,著者が参考にした書籍も紹介されており,今後の参考になる。

ただ,個人的には末尾の方のUMLや設計などの説明は不要だった。

設計の分野においてOOPを適用する場合,どうすればいいか,UMLで現実のプロセスを表現する場合はどうすればいいかなどあって,悪くはないのだが,OOPの理解を深めるうえでは余計に感じた。この点は,他の本で必要になったときに学べばいいかと思い,軽く読み流した。

結論

若手の教育を任される場合にOOPを解説するという視点に立ったときに,この本はわかりやすくてよかった。

他にもOOPの解説本はあったが,自分には今のところこの本の3-5章があっていた。

パーマリンク: https://book.senooken.jp/post/2018/11/07/

書評☆2 オブジェクト指向に関する情報工学の研究資料向け | パターンとフレームワーク

概要

富士通,IBM,東芝といった大手PCベンダーの研究所に勤務する4名による共著。オブジェクト指向におけるパターンやフレームワークを解説している。

オブジェクト指向について学ぶために借りたのだが,目的と内容があまり一致しなかった。1999年出版で古いのもあるが,内容が情報工学の教科書や研究よりな内容が強い。

参考文献が充実しているのはいいのだが,内容が小難しくて一般の人は読んでいてもつまらないと思う。ただし,引用が多いため,この分野を研究する情報工学の研究者にとっては有用な資料になるのではないかと感じた。

結論

オブジェクト指向のパターンやフレームワークを学ぶために読んでみたのだが,一般人にはあまり向いていないので注意しよう。

パーマリンク: https://book.senooken.jp/post/2018/10/29/

書評☆3 複数の著者によるオブジェクト指向のさわりの解説 | オブジェクト指向をきちんと使いたいあなたへ

概要

オブジェクト指向というテーマに沿って,複数の執筆者によるオブジェクト指向の学び方や考え方などがざっくばらんに書いてある。

もともと,Software Designのこういう複数の執筆者によるムックは自分は好まない。記事が細切れになり,内容が浅くなるからだ。しかも,執筆者によって文体や捉え方も違うのため,戸惑う。ある意味,複数の著者の考えをまとめて知れてよいという面もあるかもしれないが,自分には合わなかった。

一番印象に残っているのは,「1-1 オブジェクト指向の基本を学ぶ」の節だ。

オブジェクト指向によるコーディングの考え方,手順,クラスの設計などが順序立てて解説されていてよかった。ただ,これは既にわかっている人だからできるのであって,こういう考え方,組み方をどうやったら身につけらるのかというのが知りたい。

参考

p. 017: if文とfor文を減らす | 1-1 オブジェクト指向の基本を学ぶ

条件文をif文を使わずに書くスキル、一見ループが必要な処理もfor文を使わない書き方を覚えること。それがプログラミングの力をつけることなんです。

たしかにこれはいえるかもしれない。

p. 020: 参考書 | 1-1 オブジェクト指向の基本を学ぶ

『実践パターン』(ケント・ベック著、ピアソンエデュケーション)も良い本です。クラスやメソッドに、なぜ、どういう名前を付けるべきかのガイドラインがたくさん書かれています。

オブジェクト指向設計を学ぶには『ドメイン駆動設計』(エリック・エバンス著、翔泳社)がすばらしい名著です。難解と言われるこの本を読み解くには『オブジェクトデザイン』(レベッカ・ワークスブラック著、翔泳社)と『実践UML 第3版』(クレーグ・ラーマン著、ピアソンエデュケーション)を読んでおくと良いでしょう。

機会があれば読んでみようと思う。

結論

Software Designの本だけあって,内容が中途半端なので自分には合わなかった。

オブジェクト指向を学ぶ上での名著を知れたので,次はこれらにあたってみたいと思う。

パーマリンク: https://book.senooken.jp/post/2018/10/24/

書評☆3 はじめよう! システム設計 | UIレイアウトデザインには「ノンデザイナーズ・デザインブック」がおすすめ

概要

IoTのキーワードでヒットしたので,IoTのシステム設計について書かれているのかと思って読んでみた。しかし,IoTは一切関係なく,システム設計全般の話だった。

本書は『はじめよう!要件定義〜ビギナーからベテランまで』『はじめよう!プロセス設計〜要件定義の前に』に続く要件定義3部作の完結編に当たる。

フロント層,バック層,DB層をうまく設計する方法についてその指針を解説していた。

上流工程には携わることがなく,あまり興味がなかった。図解を取り入れながら,わかりやすそうに書かれていた。

また必要になったタイミングに,要件定義の本から当たりたいと思った。

参考

p. 045: UIのレイアウトデザインを行う

そこで課題になるのは「ではどのようにしてUIのレイアウトデザインをすればよいのか」ということです。そういうことがわからないからUIデザイナーにお任せしたいのですが、お任せするためには「こういうふうにしたい」というものを材料として提示する必要がある。ここでぐるぐると無限ループに陥ってしまうのです。

この円環を断つには自分がある程度のレイアウトデザインをするしかありません。そこで非常に大きな助けとなるのが『ノンデザイナーズ・デザインブック[第4版]』という書籍です。

このようなデザインのための名著があることを知らなかったので,いずれ読んでみたい。

結論

システム設計をどうやればいいかの指針について書かれていた。残念ながら,今のところ関わる気配はなく,興味もあまりないのでさらっと読み流して終わった。ただし,図解が豊富に掲載されており,分かりやすかったように思ったので,必要になったらまた読み直したい。

パーマリンク: https://book.senooken.jp/post/2018/10/23/

書評☆3 読みやすいがわかりやすいかは微妙 | ゼロからわかる オブジェクト指向超入門

概要

Javaをサンプルとして,オブジェクト指向の入門を解説している。本書全体を通して,図解がふんだんに掲載され,読みやすかった。

オブジェクト指向の理解しやすくするために,UMLによるクラス図とシーケンス図を間に挟んだ形となっている。個人的には,これはいまいちだった。

読みやすくはあるのだが,オブジェクト指向でやるとどう便利なのかというのがいまいち実感を持ちにくかった。どちらかというと,「すっきり分かるJava入門」のほうが分かりやすかったような印象が残った。

まとめ

決して悪くはなく,読みやすかった。しかし,既に別の入門本を読んで,オブジェクト指向についてある程度知識があったので,目新しさがなく,相対的にイマイチな評価となってしまった。

オブジェクト指向の理解がいまいちかなと思って,オブジェクト指向の本を漁っていたときの一冊だったのだが,デザインパターンとか実際の利用例を読んだほうが良かったようだ。

パーマリンク: https://sennooken.jp/blog/2018/10/22/

書評☆3 Web制作者のためのGitHubの教科書 | Gitの解説は少ないが,Wiki,Issue,絵文字,略語,コマンドラインツールなどGitHub特有機能が一通り解説されており,GitHubを初めて使うときに有用

概要

GitHubをWeb開発で活用することに焦点を当てて,GitとGitHubの使い方を会話形式で解説している入門書となっている。

GitやGitHubの主な使い方をわかりやすく解説していて,よかった。

個人的には,後半のGitHubでよく使われている絵文字,略語,LGTMの画像サイト,キーボードショートカット,コマンドラインツールなどが参考になった。一人で使うだけでは,これらの項目に気づくことができなかったので,助かった。

ただし,入門書であるので,Gitの細かい使い方はほとんどないので,これだけだとちょっと凝ったことをしようとすると行き詰まることに注意する。

参考

p. 129: ブランチモデル

Git Flow

GitHub Flow

この節では,Gitのブランチモデルとして,Git FlowとGitHub Flowを紹介していた。一次情報源とその日本語訳の両方を併記していたのが良かった。

p. 175: 6-2 GitHub Markdown

Markdown記法というのは、ジョン ・ クルーパーという人が2004年に発表した、覚えやすい文章の書き方です (この人の本業はApple関係の話題に強いライター/ブロガーです)0 d aringfireball .netというグルーバ一氏のブログにオリジナルのMarkdownの説明があります (daringfireball.net (http://daringfireball.net/projects/markdown/))


GitHubで使用できるMarkdownはGitHub Flavored Markdown (GFMと呼ばれます)というMarkdownの方言になります。


Git Hub Flavored Markdownについては以下のヘルプも参照してくだい。

https://help.github.com/articles/githubflavored-markdown

Markdownの一次情報と,GItHubで採用されているMarkdownの情報元が明記されておりよかった。

p. 186: シンタックスハイライトとコードブロック

読むのに少し苦労するけれど、 G itHubで使えるシンタックスハイライトの種類はこのURL (linguist https://github.com/github/Iinguist/blob/master/lib/linguist/languages.yml) からわかるよ。 あとこれらのシンタックスハイライトは、 リポジトリにpush したファイルなんかにも鉱張子に対応して自動で適用されるから、 G itHubのリポジトリのソースが見やすいんだ。

GFMでのシンタックスハイライトの対応言語がわかった。

p. 207: キーボードショートカットを覚えよう

GitHubは、ブラウザでの操作を効率的に行うために、多くのキーボードショートカットカf用意されています。 どの画面でもキーボードの?キー (Shift+/)を押すことで、 ヘルプを呼び出すことができます

これは知らなかった。

結論

GitHubを使った開発をしていくうえで,必要な情報がわかりやすくまとまっていた。網羅性や,詳しさはいまいちだったが,WikiやIssueなど,GitHubの基本機能や,絵文字,ショートカットキー,コマンドラインツールなど,一人で使っているだけだと気づかない便利な事項が記載されており,よかった。

GitHubを初めて使うときに,読むと参考になると感じた。

パーマリンク: https://book.senooken.jp/post/2018/10/16/

書評☆3 アルゴリズムとデザインパターンのカタログの読み物 | 矢沢久雄セレクション アルゴリズム&デザインパターン

概要

過去に日経ソフトウェアに寄稿された記事の中で特に人気の高かったものを集めたムックとなっている。アルゴリズムとデザインパターンをまとめたものとなっている。

一般的なアルゴリズムから発展させたアルゴリズムまで,仕組みや計算量がどう変わるのかなど丁寧に解説されている。

元が雑誌の記事ということもあり,ややゆるい感じの本となっている。どちらかというと読み物的な感じで楽しめた。

参考箇所

p. 014: オブジェクト指向は便利な考え方の一つ

日経BP者のITProに,計算が来日した際のインタビュー記事が掲載されています(http://itpro.nikkeibp.co.jp/members/ITPro/ITARTICLE/20030514/1/)。

有名なアラン・ケイの考え方を知ることができる貴重な資料だ。

p. 142: GoFって何?/Mediatorパターン

この本は通称「GoF本」と呼ばれ,「オブジェクト指向における再利用のためのデザインパターン 改訂版」(ソフトバンククリエイティブ発行)というタイトルで邦訳も出ています。

デザインパターンの邦訳本の書名を知れてよかった。

まとめ

主要なアルゴリズムとデザインパターンをざっと解説している。読み物として読んでアルゴリズムにどういうものがあるのかなどを知るにはよいと思った。

ただし,より細かいことを学びたい場合は物足りないので,別の本を当たる必要があるだろう。

パーマリンク: https://book.senooken.jp/post/2018/09/05/

書評☆2 実践ドメイン駆動設計 | Javaのサンプルを豊富に使ったDDDの実践例

概要

Javaのサンプルを使って具体的にDDDをどのようにやるのか書いてある。

エリック・エヴァンスのドメイン駆動設計」を事前に読んだが,こちらは難しすぎて意味不明だった。

本書は,まだましだったが,そもそもDDDとは何か?どのようにやればいいのかというのが理解できなかった。

翻訳本であり,英語を日本語に訳されている。元々,英語で小難しい内容なので,それを単に翻訳しても小難しいだけで,間にさらに翻訳というフィルターがはいったことでますますわかりにくい。

具体的なサンプルが多くてなんとなくこんな感じなのかというのが雰囲気だけわかった。しかし,これでは何の役にも立たない。

結論

DDD自体が,中規模から大規模な開発で使う設計手法であり,そもそもその時点で難易度が高い。

ソフト開発中上級者で,既に中規模から大規模な開発で設計を担当している人のための本だ。

DDDがどういうものか知るために読んでみたのだが,日本人が解説した本をあたったほうがよさそうだ。

パーマリンク: https://book.senooken.jp/post/2018/07/19/

書評☆2 エリック・エヴァンスのドメイン駆動設計 | DDDの基礎理論

概要

ドメイン駆動設計 (Domain Driven Design: DDD) とよばれるソフトウェアの設計手法の提唱者により,基礎理論が解説されている。

業務領域に合わせて設計することで,大規模で複雑な設計もうまく対応できるらしい。

書籍内では,具体的な事例を上げながらこれはこうというような感じで説明されていた。具体例を上げてそこから一般的なことをいうという帰納的な論理展開がされていて,読んでいる側としてはかなりわかりにくかった。

小難しい内容が小難しく書かれており,わかりにくかった。

そもそもドメインとは何か?という根本的なところがわかっていなかったのだが,結局ドメインとは何かはどこにも書いていなかった。ある程度わかっている人向けに書かれているようだ。

図解もたくさんあるのだが,クラス図みたいなものでモデル化されているので,DDDの基本的な考え方がわからないので意味不明だった。

参考

p. iv: 日本語版への序文

根本的には、DDDを駆動している原則は次の3つだけです。

  • コアドメインに集中すること。
  • ドメインの実践者とソフトウェアの実践者による創造的な共同作業を通じて、モデルを探求すること。
  • 明示的な境界づけられたコンテキストの内部で、ユビキタス言語を語ること。

既にこの原則の部分で意味のわからない用語が大量に出てきた。本文中で解説があって理解できるかと思ったが,結局できなかった。

結論

はっきりいって自分には全く理解できなかった。おそらく,大規模で複雑な設計時には役に立つ考え方なのだろう。

大規模なソフトウェア開発に従事し,その設計を担当するような,少なくとも中上級者向けの内容だと感じた。

DDDについて知りたいなら,もっと簡単に書かれた他の本をあたったほうが良いだろう。

パーマリンク: https://book.senooken.jp/post/2018/07/17/