リファクタリング本 - 人気 / 新書 / 高評価 書籍一覧 | 技術書の本だな


リファクタリング 人気本 ランキング

人気 1位
本書の内容
「美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、
自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ」(本書「はじめに」より)。

コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。
名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。
またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。

日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。  
内容サンプル
 
User Voice
このコードどうなの?と思い始めた人向けの本です。

業務で、他人が作ったコードを読め、動作するコードも書けています。
しかし、他人のコードは読みにくかったりしませんか?
また、自分のコードは見直して理解しやすいでしょうか?
そんな悩みの解決につながる内容になっています。
例えば以下の内容等があります。
・誤解されない変数名のつけ方
・コードを論理的な段落に分ける書き方
・returnを早めるガード節の考え方

どこかで聞いたことがあるかもしれません。それらの体系的な理解に役立ちます。
相手に伝わるコードが書けているかな?と悩みのある人にお薦めの本です。
コメントとコードの2つについて書かれています。

コメントについては、必要・不必要の分類があって、必要なものについてそれぞれ解説がついています。例えば、頭の中で考えたことを書きなさいね!とか。
コードは、表記のルールつくれよ、とか、リファクタリングなど。

自分は、コードは我流でやってきたところがあるので結構勉強になりました。
特に、
・関数とか変数の名前は意味がわかるようにつける
・コメントにtodoを書く
・頭の中で考えたことはどんどんメモする
とか。

上に列挙したものについて「そんなの当たり前だよ。」っていう人は読む必要ないかもしれないすね。
以前知り合いに借りて読んだことがあるのですが、改めて読み直す機会があり購入しました。
エンジニアは一人一冊持っていて、間違えはないと思います。
ただ、英語でもOKという方はpdfが無料であるみたいなのでそちらのほうがいいかもしれません。
 
   
人気 2位
本書の内容
(概要)
「コミュニケーションにおける不確実性を減らすには?」
「技術的負債を解消する方法とは?」
「経営陣とエンジニア間の認識のずれを解消するには?」
エンジニアリングにおける課題を解決する思考の整理方法やメンタリング手法を,さまざまな企業の技術組織アドバイザリーを務めている著者が解説。若手を戦力として育て上げ,成長する組織を設計・運営するためにおすすめの1冊です。

(こんな方におすすめ)
・開発チームの生産性を上げたいエンジニア
・社内組織を改善したい経営者

(目次)
Chapter 1 思考のリファクタリング

1-1 すべてのバグは,思考の中にある
1-2 不確実性とエンジニアリング
1-3 情報を生み出す考え方
1-4 論理的思考の盲点
1-5 経験主義と仮説思考
1-6 全体論とシステム思考
1-7 人間の不完全さを受け入れる
Chapter 2 メンタリングの技術

2-1 メンタリングで相手の思考をリファクタリング
2-2 傾聴・可視化・リフレーミング
2-3 心理的安全性の作り方
2-4 内心でなく行動に注目する
Chapter 3 アジャイルなチームの原理

3-1 アジャイルはチームをメンタリングする技術
3-2 アジャイルの歴史
3-3 アジャイルをめぐる誤解
3-4 アジャイルの格率
Chapter 4 学習するチームと不確実性マネジメント

4-1 いかにして不確実性を管理するか
4-2 スケジュール予測と不確実性
4-3 要求の作り方とマーケット不安
4-4 スクラムと不安に向き合う振り返り
Chapter 5 技術組織の力学とアーキテクチャ

5-1 何が技術組織の“生産性”を下げるのか
5-2 権限委譲とアカウンタビリティ
5-3 技術的負債の正体
5-4 取引コストと技術組織
5-5 目標管理と透明性
5-6 組織設計とアーキテクチャ
 
内容サンプル
 
User Voice
システム思考という物の考え方がある。
この本はソフトウェア開発の文脈でシステム思考を獲得するための本であり、
そのような前提が無いとこの本は何も語っていないように見えるかもしれない。

システム思考とは、組織のような複数の要素が絡み合う場における問題解決の際に
その原因を特定の要素(誰それが悪い、仕様の品質が低いなど)に見出すのではなく
「システム」全体の構造に見出すことによって全体最適化を達成するという考え方である。
優秀なマネージャはほぼこの考え方を持っているといえると思う。

しかしシステム思考をうまく稼働させるためには
今現場で起きていることを高い解像度で認識することが必須となる。
表面的に見えている問題(プロジェクトの遅延、品質の低下など)の裏で起きている
本当の問題を透視するための言わば解剖図や骨格標本のような知識が必要になるのだ。

本書はそのようなソフトウェア開発の現場で起きる問題を理解するための
骨格を様々な角度から見事に言語化してくれた。
これは過去他のどの書籍も行っていないことだと思う。

何か即効性のあるアクションを求めているのならこの本を読んでも期待はずれに終わると思う。
問題を深く正しく理解するためのツールを求めているであればこの本は最適だろう。
組織の成長のため、仕組みの作り方とメンバーのメンタリングについて書いている。実践方法よりも考え方を変えるためのインプットとしてよさそう。
読む前は、職制とか命令指揮系統、ソフトウェア開発手法、のような内容が書いてあると思ってた。それよりも概念的というか考え方を知りたいときに読むのがよいと思う。
既にレビューに挙がっていない点について書きます。批判的に書きましたが、次回に向けての改善提案をしたいだけの良い本であり、エンジニアと名のつく仲間にはぜひ読んでほしい一冊です。

1. (良)ソフトウェアエンジニアだけではない
ソフトウェアエンジニアリングとその組織を題材に扱っているものの、何らかのエンジニアリングを伴うプロダクト開発を行う組織ならばハード中心でも適用できる知見が数多く書かれています。

2. (悪)図が非常に分かりにくい、出展が不明
この本の最も悪いところは、図が非常に分かりにくく、本文を読まない限りは誤解すら生じるところです。筆者以外の、理解が及んでいない人が描いたとしか思えません。また、図も本文も同様ですが出展が示されている箇所が非常に少ないです。原典にあたろうとしてもそれが出来ない。熱心な読者にアクセシビリティと、引用・オリジナルを明記する真摯さを表して欲しかったです。

3. (要望) 筆者の知る Best practice を示して欲しかった

紙面が足りないのかもしれないが、良い実践例を具体的に多く示して欲しかった。筆者の経歴から推測するに、まだ良い実践例のサンプル数が多くないということなのかもしれません。
バズワードを丁寧に日本語で表現し直されていて、そこはとても勉強になりました。だからこそ、一歩先を行って欲しかったです。
 
   
人気 3位
本書の内容
さらにわかりやすくなった! デザインパターン入門書の決定版!!

GoFの『デザインパターン』で紹介された23個のパターンを、オブジェクト指向の初心者にもわかるようにやさしく解説。
すべてのパターンについて、Javaのサンプルプログラムを掲載。「デザインパターンQ&A」を新たに加筆。


●第1部 デザインパターンに慣れる

第1章 Iterator--1つ1つ数え上げる
第2章 Adapter--一皮かぶせて再利用

●第2部 サブクラスにまかせる

第3章 Template Method--具体的な処理をサブクラスにまかせる
第4章 Factory Method--インスタンス作成をサブクラスにまかせる

●第3部 インスタンスを作る

第5章 Singleton--たった1つのインスタンス
第6章 Prototype--コピーしてインスタンスを作る
第7章 Builder--複雑なインスタンスを組み立てる
第8章 Abstract Factory--関連する部品を組み合わせて製品を作る

●第4部 分けて考える

第9章 Bridge--機能の階層と実装の階層を分ける
第10章 Strategy--アルゴリズムをごっそり切り替える

●第5部 同一視

第11章 Composite--容器の中身の同一視
第12章 Decorator--飾り枠と中身の同一視

●第6部 構造を渡り歩く

第13章 Visitor--構造を渡り歩きながら仕事をする
第14章 Chain of Responsibility--責任のたらい回し

●第7部 シンプルにする

第15章 Facade--シンプルな窓口
第16章 Mediator 相手は相談役一人だけ

●第8部 状態を管理する

第17章 Observer--状態の変化を通知する
第18章 Memento--状態を保存する
第19章 State--状態をクラスとして表現する

●第9部 無駄をなくす

第20章 Flyweight--同じものを共用して無駄をなくす
第21章 Proxy--必要になってから作る

●第10部 クラスで表現する

第22章 Command--命令をクラスにする
第23章 Interpreter--文法規制をクラスで表現する
 
内容サンプル
 
User Voice
拙者プログラミング初心者、
デザインパターンのデの字しか知らないのに、
友人たちがシングルトンが好きだのファクトリーだというから悔しくなって
デザインパターン本を買ってみた

古めの本にもかかわらず、
ランキングで高い位置に居るだけ合って内容はとてもわかりやすく、
サクサク読み進めることができた。

卍デザインパターン完全に理解した卍

とてもおすすめです。
Javaを仕事で使用していて、それなりの規模のプログラムを開発するとき、デザインパターンの知識は必須です。
特に、既存のプログラムの保守や拡張をするとき、既存のプログラムがデザインパターンを利用しているかどうか見分けて、そのパターンの意図を理解できないといけません。
逆に、パターンを知っていると、コード内にパターンを示す命名や使われていたり、コメントが残されていると、それだけで何をしているコードなのか理解も推測もしやすいです。
この本はまずパターンを利用するプログラム例を解説し、その後で抽象的な説明となっています。
内容としては上手くまとめられていて非常にわかりやすく,object指向のプログラミングを学びたい方にお勧めできる一冊となっています。
ただしjavaという言語に触れたことのない方が読んで理解するのは難しいと思います。そのような方はこの本の作者である結城浩先生が書かれた,"Java言語プログラミングレッスン"の上下巻を読んでからこの本に入った方がよいかもしれないです。私がそうでしたがプログラミングを多少やっている方ならサクサク読み進めることができます。
 
   
人気 4位
本書の内容
ソフトウェア開発の名著、第2版登場!
リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。
本第2版では、約20年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードがJavaからJava Scriptになるなど、現代的にアレンジされています。  
内容サンプル
 
User Voice
1版、Java版は蔵書としてあるのですが。所属している会社ではフロントエンド寄りの業務が多く、プログラムというとwebでJavaScriptのみ(たまにPHP)で完結することが多い環境にいる人です。

JSで1ファンクションが長くても100行、200行程度、ランディングページとかで継続的メンテナンスは求められない。
なのでどうしても「ベタ書き、とりあえず動けばいい、なるはやで」というコーディングが重宝される。
そんな環境です。(でした?かな。それだけではやっていけなくなっているので)

はい。”ブラックボックス”だらけです。大半のコードを書いた人たちはもう社内にいません、よくある話です。
・長大なファンクションを、入れ子ファンクションできりわける
・一時変数の特定、いらないやつは撲滅
・異常系の検出がおろそかだったので、オブジェクト自身に異常検出機能をつけてみた
などを、「夏休みの宿題・工作」みたいな感じでメンバといっしょに取り組んでいます。

本書について。
文章の言い回しは固くはないのですが、あつかっている処理ちょっと難しい話なので、誰でもがさらっとよめる本ではないようです。しかしサンプルがJavaScriptなので、とりあえず「記載されているコードの意味」はわかってもらえているようです。

最後に。
本書に盲従する必要はないとは思います。いろんなスタイルの一例です。
ただ、本書を通じることで、ある程度の共通認識を持ったうえで、コーディング職人の間での意見交換や価値観論争などは良いことかな、と思いました。

最後の最後に。
急激な変化を嫌う人もいるので、「押し売り」にならないように気を付けて。
コードを書くうえでなんとなく汚い、綺麗でない、もっとよく書けるのでは?と疑問を持った時に読むととても参考になる本だと思います。2版になり現在の主流ともいえるJavascriptで書き直されている点も高評価の要因です。
高いけど良い本です。
 
   
人気 5位
本書の内容
■「ITエンジニア本大賞 2020」技術書部門大賞受賞!

レガシーコードとは、バグを多く含み、壊れやすく拡張が難しいコードを指します。
このようなコードの保守と管理には多大な労力がつぎ込まれることになります。
しかも一度作ってしまったレガシーコードの質を上げるには、初めから質の高いコードを作るよりも膨大なコストがかかります。

本書では、ソフトウェア開発において、初めからレガシーコードを作りださないためのプラクティスを9つ挙げて解説します。
プロダクトオーナーは目的を語り、やり方は開発者に任せること、小さなバッチで開発を進めること、継続的に統合すること、チームメンバーで協力することなど、日々の開発に取り入れる考え方と具体的な実践について各章で分かりやすく解説します。
信頼性や拡張性が高いソフトウェアをリリースしたい開発者、運用管理者、マネージャに必携の一冊です。  
内容サンプル
 
User Voice
ベストセラーになってますし、すでに読まれた方も多いと思います。間違いなく定番本の一つです。
著者がXP(エクストリームプログラミング)のコーチらしく、述べられているプラクティスの多くはXP由来となっています。
ただ、アジャイル開発手法に変わりはありませんので、スクラムでも適用できる内容です。ウォータフォール?そんな開発手法は存在しませんよ?
副題の9つのプラクティスは以下の通りです。

- やり方より先に目的、理由、誰のためかを伝える
- 小さなバッチで作る
- 継続的に統合する
- 協力しあう
- 「CLEAN」コードを作る
- まずテストを書く
- テストでふるまいを明示する
- 設計は最後に行う
- レガシーコードをリファクタリングする

自分のプロジェクトでも、これらのプラクティスは(ややアレンジはあるものの)実施しており、適切なシステム開発を行うためのミニマムセットになっています。
逆に、できてないものがある場合は、そのシステム開発は何らかの問題を抱えているということになります。
プロジェクト管理者はもちろん、システム開発に関わる全ての人が知っておくべき内容が詰まっています。
システム開発プロジェクトの新規参画者に対しては、オンボーディングで最初に読んでもらうのがいいと思います。
C言語やBASIC言語は学校の座学で知っている程度、営業職などを経て、ここ最近、実務でjQueryありきのJavaScriptコードを数年ほど扱っている末端コーディング人です。

読んだ後の感想。
「自社の財産」とされているコードの大半(率直にいうとほとんど全部)が、この本で言われている「レガシーコード」だと気づくことができました。
オーダーされて旧コードに「機能拡張」などもしているのですが、それがハック的に割り込みしているだけだと自覚できました。

雑談などでもしゃべりやすい同僚から先に、本書を布教しています。わりと共感してもらえて、半年後が楽しみです。

目先の目標としては
・マネージメントの人にも読んでもらう
・本書から共通認識として取り入れられそうなことを、チームとして共有してとりくむ
・会社の経費でオライリー本を買ってもらう

というところです。
今の私にとっては、得るものが多すぎる、とても良い本です。
ちと3千円という価格に躊躇したが買ってよかった。アジャイルでもwater fallでも情報はwebや本に溢れている。でもそれらは本質を得ているかと言うと、初心者のための入門書である。しかしプロジェクトに従事し、そのプロジェクトが継続的なプロジェクトになると話は違ってくる。コメントが書いてない誰が書いたかわからないコード、当然単体テストなんてものはないし、あったとしても単体テストがなにをやってるかわからない。コード品質にしても、なんでクラス関数が50個もあるの?クラス使ってる意味ないじゃん!みたいな組織は多いのではないか。そういったプロジェクトを管理する人には最適であり、日本語で読める唯一の本のような気がする。「レガシーコード改善ガイド」とかマーティンファウアーの本とかはいい本だが、コード書く人よりのガイドであるので、この本とはちょっと方向性が違う。数年間同じ製品を開発し、努力しても製品品質があがらないマネージャ向けだが、若い開発者も読んで損はない本だと思う。
 
   
人気 6位
本書の内容
開発経験に基づくパターン実践の極意!
パターン誕生の背景/エッセンス/適用条件/サンプルを解説。

ゲームプログラミングを含むソフトウェア開発の現場において、デザインパターンをより的確に利用するための解説書。

著者は、米国大手ゲーム会社エレクトロニック・アーツでゲーム開発に従事。
その経験に基づき、GoFや著者独自のパターンについて考察。

より容易に変更できる洗練されたアーキテクチャ、
ゲームに求められる実行速度といった視点を重視しつつ、
幅広く応用できるパターンやゲーム必須のパターンを取り上げています。

本書は、米国アマゾンで60以上のレビューを集め、その9割が星5つ。
『Game Programming Patterns』の翻訳書です。

プログラムの構成・構造を転換!
良いパターンはフレームワークや方法論を超える。


【以下、本書イントロダクションより抜粋】
私がこの本で提供したいのは、解決策のメニューのようなものです。
この本の各々の章では、単独でコードに適応可能なアイデアを解説しています。
ですから、作りたいゲームに役立つものをメニューから選んで組み合わせることができます。

題名に「パターン」という言葉の入った本はどれも、「四人組」と呼ばれた
エリック・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシディーズの
『オブジェクト指向における再利用のためのデザインパターン』とはっきりした関連を持っています。

この本の題名を『ゲーム プログラミング パターンズ』としたからといって、
四人組の本がゲームの世界では役に立たないと言うつもりはありません。まったく逆です。
Part IIでは『・・・ためのデザインパターン』で解説されているパターンを数多く取り上げます。
ただし、ゲームプログラミングにどうすれば応用可能かに力点を置いています。

その一方で、私はこの本がゲーム以外のソフトウェアにも応用可能だと思っています。
本の題名を『続・デザインパターン』としてもよかったのですが、
ゲームを扱ったほうが魅力のある例が示せると考えました。
社員台帳や銀行口座についての本を書いても面白くありませんから。

そのようなわけで、この本で説明するパターンはどんなソフトウェアにも有用ですが、
とりわけゲームプログラミングで突き当たる難問を解決するのに役立つと思います。
 
内容サンプル
 
User Voice
デザインパターン(設計パターン)の本です。
これを読んだからといって、ゲームを作れなかった人が作れるようになる本ではありません。
すでに作れる人が、より良い設計(拡張性が高いとか、不具合が出にくいとか、実行効率が良いとか)にするための本です。
内容は広く浅くという感じです。
学生や若手プログラマーの人におすすめです。

元祖デザインパターンで定番のコマンドパターン、オブザーバパターン、シングルトンパターン、ステートパターンなども載っていますし、ゲーム独自の設計パターンも載っています。
この本の良いところは、サンプルコードや説明がゲームに特化していることです。
よくあるデザインパターンの本は「概要はわかった。でも何が嬉しいのかわからない。実際にいつ使えば良いのかわからない。」という例・解説が多い気がするんですが、この本はゲームに特化してるので、例も具体的で使用方法やメリットがすぐ理解できます。

また、「デザインパターン最高!これを使えば万事解決!」みたいな押しつけはなくて、デメリットを詳しく併記している点も好感が持てます。

「データ局所化(データ指向)」など、わりと高度なトピックも載っていて、このあたりを読むと最近UnityがEntity Component Systemを推し進めようとしている理由がわかります。

翻訳も良好で読みやすかったです。

サンプルコードはすべてC++なので、C++がわからないと厳しいです(といっても、クラスとポインタさえわかっていれば大丈夫です)。
デザインパターンの本といえば結城浩さんのデザインパターン入門が有名ですが、わかりやすいものの面白くなく、デザインパターン自体つまらないものなのかなと思っていました。

しかしこの本はゲーム開発歴が長い作者が実際のゲーム開発で遭遇する問題をデザインパターンで解決していくというスタイルで、すべて例がゲームなのでゲームプログラミング好きにはめちゃくちゃ面白いです。
ステートパターンの章は自分が経験したことのある問題を扱っていた章なので、忘れようがないぐらい吸収できました。
パターンのデメリットや限界、実装上の注意やパターンの変形などについても詳しく扱っていて、実際に実装しようと思った時にかなり役立ちそうな感じです。

設計一般の話も載っており、第一章にあったこの文などがためになりました。
「あるゲームのアイデアが使い物になるかどうか知りたい段階で、アーキテクチャの整ったコードを書くのは、一種の賭けになってしまいます。そのアイデアが実際に画面に展開されて評価を受けるまでに時間がかかるだけでなく、もしもそのアイデアが使い物にならないと結論されたら、そのコードを構造化するためにかけた時間はまったくの無駄になってしまうのです。」

言語はC++ですが、オブジェクト指向言語が一つわかってれば読めるように書かれています。
話題自体が若干高度なのである程度プログラミング経験ある人向けですが、基本的に解説に不親切なところはなく、名著と言っていい本だと思いました。
ゲーム以外のプログラム経験がある人が、趣味でUnityを使い始めて、少し大きなゲームに挑戦した辺りでぶつかる「あれ、このゲームのシステムってどういう風に設計するのが正解なんだろう。」というモヤモヤをスッキリさせてくれる書籍です。

いわゆるデザインパターンの活用方法が、「主人公の状態管理どうしよう。」「敵いっぱい作りたいんだけどパラメータのデータ構造どうしよう。」といったゲームを作るとほぼ確実に出会うであろう問題を例に解説されているので、すんなり頭に入ります。ゲームに寄った内容ですが、専門書が大好きな銀行口座や学生名簿の例よりもよほどわかりやすいので、デザインパターンの入門書としても良いと思います。

個人的には、脚注のユーモアがツボにハマり、読み物としても楽しめました。
 
   
人気 7位
本書の内容
本書は、統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションなどのモダンな開発スタイルを組込み開発に適用する方法を解説します。  
内容サンプル
 
User Voice
組込み系開発では、このご時世になってもC言語が主流です。
そのため、C言語に関する書籍は数多く出版されていますが、着目する箇所が他の書籍と異なります。
特に、以下の点です。
・環境構築法の記載
・オブジェクト指向的な実装方法
・ツールを活用した開発方法

・環境構築法の記載
環境構築の方法がしっかり記述されていることに驚きました。
書籍によって、各自で構築というケースも少なくないため、手間取ることも多かったと思います
本書では、様々なツールの導入方法がキャプチャ画像付きでしっかり記述されていました。
非常に助かりました。

・オブジェクト指向的な実装方法
エンプラ系では、オブジェクト指向が主流のご時世ですが、C言語でうまく実装できないか悩んでいました。
本書では、多態性や継承、デザインパターンなどをC言語で記述する方法がしっかり記述されています。
特に、C言語を極めたいエンジニアには良いと感じました。

・ツールを活用した開発方法
一番勉強になった点は、ツールの活用方法がしっかりかかれている点でした。
特に、googletest、カバレッジ測定、Valgrindの使い方は、組み込み系エンジニアなら役に立つはずです。
著者の目の付け所がすごいです。

一通り読んでみて、C言語を使いつづけるエンジニアには、読むべき書籍です。
著者の10年分の知識が、一瞬で身に付きます。

なお、対象はC言語中級レベルだとスラスラ読めます。
2回通して読みました。自分には大当たりの技術書です。

C言語、という書名ですが、C言語に固有の本ではありません。
ソフト設計に共通して当てはめられる本質的な考え方やノウハウが、
Cを例に使って説明されてる、というのが正しいです。(実際この著者はJavaの本も書いてるようです)

恐らく、10年以上 真剣に設計に向き合ったソフト屋しか知り得ないようなノウハウが
惜しげもなく詰め込まれています。
いくつかは、世のベテランも独自に会得して、いざという時の秘策や切り札にしているような知識まであるのでは…。

理論倒れでなく、開発の現場で地に足を着けて苦労の末に気づく本質、
あるいは余程のことがなければ他人には教えないような秘訣も、書いてしまっているようです。

年寄りと見なされつつ、経験とノウハウで必死に若い理解力や柔軟性に負けじと踏ん張る身としては
こんなことまで教えてしまったら困る、という思いさえ心をよぎらずには居れません。
数千円で、誰でも買えてしまって良いものか。

そう言う自分自身も、今まで洞察しえなかった知識を多く得て、何というか、
著者には感謝のような思いも感じます

良書、と言ってよいと思います。
昔日の日々、C言語とは文法を覚えて書くだけ(まあコンパイルされたアセンブラレベルとかわかるとすごーい、なんて言われてたり)、それだけでプロとして認識された。
しかし学生ではなく職業としてコードを書く人の求められるスキルレベルは現在非常に高い。デザインパターンを知らないコード書きはありえない。継続的インテグレーションをちゃんと理解してないコード書きもありえない。もちろん現代のリファクタリングテクニックはXPにおいて必須である。
でもそんなの知らずにコード書いてる人がたくさんいるのは、事実であり日々むかつく。そんな昭和なコード書きに投げつけてやりたい本である。
 
   
人気 8位
本書の内容
※このKindle本はプリント・レプリカ形式で、Kindle Paperwhiteなどの電子書籍リーダーおよびKindle Cloud Readerではご利用いただけません。Fireなどの大きいディスプレイを備えたタブレット端末や、Kindle無料アプリ (Kindle for iOS、Kindle for Android、Kindle for PC、Kindle for Mac) でのみご利用可能です。また、文字列のハイライト、検索、辞書の参照、引用については、一部機能しない場合があります。文字だけを拡大することはできません。
※プリント・レプリカ形式は見開き表示ができません。
プログラムに潜む扱いにくい部分を見つけ出し、その動作を変えずに内部の構造を改善していくためのテクニックを整理したマーティン・ファウラー氏によるソフトウェア開発の名著『リファクタリング プログラミングの体質改善テクニック』(“Refactoring:Improving the Design of Existing Code”)が、オリジナルの訳者による丁寧な見直しと現代的なJava開発環境による「再リファクタリング」を施した書き下ろし付録を収録して再発行!
旧版の価値を知るベテランはもちろん、これからソフトウェア開発に携わる新人にも必読の一冊です。  
内容サンプル
 
User Voice
基本的な内容は「リファクタリング―プログラムの体質改善テクニック」とほぼ同様ですが、
オリジナルの訳者による丁寧な見直しが新装版にも反映されています。
まだ全て読み終わってはいませんが・・・
(旧版との比較を厳密にしながら読み進めているわけではないですが・・・)

旧版はもう販売していませんので、多くの方に購入する機会をとの考えで新装版を発売されたそうです。
新装版の目玉は、付録「 Java のバージョンアップに伴うリファクタリングをめぐる環境の変化」です。
旧版出版以降のJavaとそのテスティングフレームワークの進歩の記載があります。
対象となるJavaは7までとなっています。

Javaとそのテスティングフレームワークの進歩の記載の後に、その進歩を反映して、
本書に含まれるコードを再びリファクタリングしています。実際にはジェネリック等が取り扱われています。
この部分が新装版の最も注目されるべき箇所であると思います。

本書が全面的にJava7に対応されていないことについては不満がありますが
今後は、Oracleは今までと違ってJavaの言語仕様の強化に注力して行くことが見えていますし
既にJava8でかなりの変更があったといえ、付録の再リファクタリングで十分に新装版の意味はあると考えます。
オブジェクト指向の応用的な内容であると同時にオブジェクト指向の利点が分かるようになっている。オブジェクト指向を学んだor学んでいる最中だがオブジェクト指向の利点が分からない、というときに読むと理解の助けになる。また、本書の内容がほとんどそのままオブジェクト指向の利用法になっているので、理解できるだけでなくそのままオブジェクト指向を活用する第一歩になっている。リファクタリングという横文字でなんだか小難しいものだと思って敬遠していたけど、カタログ部分はオブジェクト指向プログラミングにおける「あるある」ネタを集めて、それに対処するための小ネタを集めたようになっているので、気楽につまみ食いするように読める。ただし、ある程度のオブジェクト指向の知識は必要で、一部UML図も使われている。といっても、オブジェクト指向の基本が分かれば十分理解できるレベルなので、オブジェクト指向の勉強の一環として読めば非常に有益な本だった。
リファクタリングの勉強するなら、この一冊は必要不可欠でしょう。 この本の対象となる読者は、職業プログラマ及びオブジェクト指向言語です。 解説はすべて、Java言語で行われていますが、他のオブジェクト指向言語を 理解していれば、問題なく読み進めることができます。 リファクタリングの重要性についてはもちろん、テクニックを細かく解説してあり、 実践に役に立ちます。 この本の核となる部分は第6章からリファクタリング・カタログです。 「名前、要約、動機、手順、例」の順で全てが書かれていて、 非常に読みやすいです。
 
   
人気 9位
本書の内容
※このKindle本はプリント・レプリカ形式で、Kindle Paperwhiteなどの電子書籍リーダーおよびKindle Cloud Readerではご利用いただけません。Fireなどの大きいディスプレイを備えたタブレット端末や、Kindle無料アプリ (Kindle for iOS、Kindle for Android、Kindle for PC、Kindle for Mac) でのみご利用可能です。また、文字列のハイライト、検索、辞書の参照、引用については、一部機能しない場合があります。文字だけを拡大することはできません。
※プリント・レプリカ形式は見開き表示ができません。
※この電子書籍は紙版書籍のページデザインで制作した固定レイアウトです。

ソフトウェア開発の名著、第2版登場!
 リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。
 本第2版では、約20年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードがJavaからJava Scriptになるなど、現代的にアレンジされています。


第2版翻訳にあたって
初版の「本書に寄せて」
はじめに
Chap.1 リファクタリング-最初の例
Chap.2 リファクタリングの原則
Chap.3 コードの不吉な臭い
Chap.4 テストの構築
Chap.5 カタログの紹介
Chap.6 リファクタリングはじめの一歩
Chap.7 カプセル化
Chap.8 特性の移動
Chap.9 データの再編成
Chap.10 条件記述の単純化
Chap.11 APIのリファクタリング
Chap.12 継承の取り扱い
文献リスト 
訳者あとがき
索引  
内容サンプル
 
User Voice
1版、Java版は蔵書としてあるのですが。所属している会社ではフロントエンド寄りの業務が多く、プログラムというとwebでJavaScriptのみ(たまにPHP)で完結することが多い環境にいる人です。

JSで1ファンクションが長くても100行、200行程度、ランディングページとかで継続的メンテナンスは求められない。
なのでどうしても「ベタ書き、とりあえず動けばいい、なるはやで」というコーディングが重宝される。
そんな環境です。(でした?かな。それだけではやっていけなくなっているので)

はい。”ブラックボックス”だらけです。大半のコードを書いた人たちはもう社内にいません、よくある話です。
・長大なファンクションを、入れ子ファンクションできりわける
・一時変数の特定、いらないやつは撲滅
・異常系の検出がおろそかだったので、オブジェクト自身に異常検出機能をつけてみた
などを、「夏休みの宿題・工作」みたいな感じでメンバといっしょに取り組んでいます。

本書について。
文章の言い回しは固くはないのですが、あつかっている処理ちょっと難しい話なので、誰でもがさらっとよめる本ではないようです。しかしサンプルがJavaScriptなので、とりあえず「記載されているコードの意味」はわかってもらえているようです。

最後に。
本書に盲従する必要はないとは思います。いろんなスタイルの一例です。
ただ、本書を通じることで、ある程度の共通認識を持ったうえで、コーディング職人の間での意見交換や価値観論争などは良いことかな、と思いました。

最後の最後に。
急激な変化を嫌う人もいるので、「押し売り」にならないように気を付けて。
コードを書くうえでなんとなく汚い、綺麗でない、もっとよく書けるのでは?と疑問を持った時に読むととても参考になる本だと思います。2版になり現在の主流ともいえるJavascriptで書き直されている点も高評価の要因です。
高いけど良い本です。
 
   
人気 10位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 11位
本書の内容
 
内容サンプル
 
User Voice
 GoFデザインパターン解説書の体裁をとった「オブジェクト指向設計」入門。コンパクトにまとめられた良書だと思う。

 対象読者は、Javaの文法を一通り理解しており、プログラミングにも慣れてきた頃のJavaプログラマ。GoF本のデザインパターン23種類を順に取り上げ、各パターンの目的・効果・背景・サンプルプログラム・注意点を簡潔に述べていく。ただし、デザインパターンをすぐに使いこなせるように読者を導くことが本書の狙いではなく、デザインパターンを教材として「良いクラス設計とは何か」の指針を与えることに主眼を置いている。

 そのため、各パターンの解説では、そのエッセンスだけを簡潔に伝えることに注力されている。サンプルプログラムは全てJavaで記述されているが、どれも「Hello, World!」レベルなので、Javaプログラマでなくても内容を理解できると思う(巻末に、サンプルプログラムを理解するために最低限必要なJava言語仕様が25ページ程度にまとめられている)。

 開発の現場から生まれた本、という印象を受けた。各パターンの解説の最後に置かれた「注意点」が秀逸で、「そのパターンを用いる場合、何に注意しなければならないか」「そのパターンを用いない方がいいのはどのような場合か」「そもそも、デザインパターンを適用することで解決できるような問題はそれほど多くない」といった類の指摘に説得力がある。また、デザインパターン万能論とも言える数々の「誤解」について述べた最終章「デザインパターンの難しさを理解する」も面白い。
デザインパターンの入門書はたくさんありますが、どれもそのパターンが生まれた経緯など、理屈ばっかりなところが多くわかりづらいと感じていました。
一方、この本では、どんな時に使うパターンかが一言、そのパターンを使うと何がよいか、簡単なサンプルコードという構成で完結にまとめられていて、非常にわかりやすいです。

他の本を数冊読んだので、すでにパターン使えるようになっていましたが、最初にこれを読んでおけば遠回りしなかったのかな・・・と思いました。
デザインパターンを初めて勉強する人向けには★5つです!
「徹底攻略」とタイトルにあるが、どちらかというとデザインパターンとはどういうものかを解説した入門書に近いものがある。したがって、初めてデザインパターンを学ぶ方には適していると思われる。サンプルソースはごく平易なものを採用しているが、やはり基本的なJava知識は必須。また、デザインパターンに対する過剰意識(誤解)なども後半にまとめられているのも嬉しい。実践に繋げていくためには、本書を読破するだけでは難しいが、発想の手助けになってくれる一冊である。
 
   
人気 12位
本書の内容
(概要)
Lisp・関数型プログラミングのメリットとは何か――副作用のないプログラミングがまず挙げられます。これでバグが圧倒的に少なくなります。さらにはコードの再利用がしやすいこと,並列処理が得意であるということも。それだけではありません。動的な型付けも特徴ですし,ラムダ計算もクロージャも,さらにはオブジェクト指向までできます。数十年の時を越えて現代にも通用する普遍的なアイデアがLispにはあります。本書はさまざまなLispプログラム(ハノイの塔,エイトクイーン,オンライン書店など)を解説し,さらにリファクタリングまでいっきに学びます。本書で関数型プログラミングのエッセンスを得ることができます。


(こんな方におすすめ)
・オブジェクト指向プログラマ
・昔からのLispプログラマ

(目次)
第1章 関数型プログラミングとは何か――そして,それがなぜ難しいのか?

第2章 関数型プログラミングを学ぶためのLisp超入門

第3章 関数型プログラミングの基本

第4章 プログラミングパラダイムの比較

第5章 関数型プログラミングの演習

第6章 関数型プログラムの評価とリファクタリング  
内容サンプル
 
User Voice
待望のLispの良書が出た!という感じです。
Lispというとその大きな特徴にマクロがあり、そのことに偏重する本が近年、多かったと思います。
この本ではもっと広く、Lispの魅力を伝えつつ、関数型プログラミングを平易に説明していると思います。
往年のLispファンにとっても読みごたえたありますし、これからLispをやってみようという人にも魅力的な一冊だと思います。
著者はかつて、日本のメーカーにてLispマシンやLisp処理系の実装経験があるというLispを語るには最適の人材。しかしその才能が仇となってか、「はじめての」読者の気持ちがよく分かっていないように見えた。例えば「はじめに」や第一章でいきなり「副作用」という言葉が出てくる。「風邪薬を飲むと眠くなる」副作用しか知らない関数型プログラミング言語初学者は何のことかと思う。そしてプログラミングの学習には欠かせない「コード写経」をするための環境構築の記述が少ない。サンプルも、高階関数からはじまりカリー化、フィボナッチ数列を求める関数、nクイーン問題など数学好きには興味のある問題が出てくるのだが、入門書の例題を飛ばして読んでしまう私のような不真面目な読者には、それが手続き型プログラミング言語をどう革新してくれるのか想像できなかった。
キャリアだけ見れば適材中の適材であるはずの著者が、なぜ本を書くというと、社内ドキュメント以上のものが出てこないのか?日本には優れた技術書を書く人材がいないわけがなく、これは出版社の構造的な問題に感じる。編集者の意識がマニュアル本以上の「読める技術書」を作ろう、作らせようという意識がないのだと思う。優れた技術書とは何か?オライリーの好評価の本を数冊読めば自明の筈なのに…。
日本人が日本語で書いたLisp入門書が2016年に出た、という価値により星3つ。
Listや関数型でプログラミングする際の基本的なコンセプトが説明されていて良書だと感じました。
特にコンスセルを基礎にした設計感覚が理解できた気がします。
他にも、末尾最適化の説明は、意外とWEB上でも情報が少ないのですが、とても分かり易かったです。

ただ「はじめての」と名うってはいるものの、初見では理解が難しい部分も少なからずありましたが(特に演習の部分)、そこは本文中でも時間を掛けて咀嚼するべし、と記載があったので、実際にコードを書いてみて段階的に読み直してみようかと思います。

あとはラムダ計算はじめ目次的に惹かれるものの、実際には読み飛ばして良い内容が少なからずあるのが少し残念です。構成を少し見直してくれるともっと良くなると思います。
 
   
人気 13位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 14位
本書の内容
リファクタリングの入門書の決定版。

※この電子書籍は、「固定レイアウト型」で配信されております。説明文の最後の「固定レイアウト型に関する注意事項」を必ずお読みください。

どうすれば、きれいで読みやすいコードになるのか? 『Java言語で学ぶデザインパターン入門』の結城浩が、リファクタリングの本質と手順をやさしく解説。Javaによる実例満載したリファクタリング入門書の決定版。

●目次
第0章 リファクタリングとは
リファクタリングと「不吉な匂い」
リファクタリング・カタログ
リファクタリングのエッセンス
リファクタリングQ&A
(第1章~第4章では、コードを整える小規模のリファクタリングを学びます)
第1章《シンボリック定数によるマジックナンバーの置き換え》
第2章《制御フラグの削除》
第3章《アサーションの導入(表明の導入)》
第4章《ヌルオブジェクトの導入》
(第5章~第10章では、クラスを整える中規模のリファクタリングを学びます)
第5章《メソッドの抽出》
第6章《クラスの抽出》
第7章《クラスによるタイプコードの置き換え》
第8章《サブクラスによるタイプコードの置き換え》
第9章《State/Strategyによるタイプコードの置き換え》
第10章《例外によるエラーコードの置き換え》
(第11章~第15章では、クラスの関係を整える大規模のリファクタリングを学びます)
第11章《Factory Methodによるコンストラクタの置き換え》
第12章《観察されるデータの複製》
第13章《委譲による継承の置き換え》
第14章《委譲の隠蔽》
第15章《継承の分割》

固定レイアウト型に関する注意事項(必ずお読みください)
この電子書籍は、全ページ画像の「固定レイアウト型」で配信されております。以下の点にご注意し、購入前にプレビュー表示をご確認の上、ご購入ください。

■使用できない機能
・文字拡大(ピンチイン・ピンチアウトは可能ですが、画面におさまらない場合は画面をスワイプ)/文字のコピー/マーク/ハイライト/文字列検索/辞書の参照/Web検索/引用

■推奨環境
・タブレットなど大きいディスプレイを備えた端末
・Wi-Fiネットワーク経由でのダウンロード(Kindle端末の場合)
 
内容サンプル
 
User Voice
リファクタリングを日本語の書籍でかつ、Javaで学びたい方にはおすすめです。
全体的にわかりやすかったです。

■長所
・説明がていねい
・ソースコードを入力しながら学習できる。(実際に入力することで理解しやすい)
・内容のレベルも難しくない。おそらくJavaを一通り学び終えた方には最適

■短所
・リファクタリングの概要→リファクタリングの説明→ソースコードを確認する構成になっているため、わかりにくい。
ソースコードを確認→リファクタリングの説明の方が理解しやすいと感じた。
・一部のリファクタリングのサンプルが複雑すぎて理解しにくい。
Javaのことを少し分かってきた人にオススメです。逆に中級者以上は読む必要ないと思います。
基礎がわかっている人や他の言語を知ってるけどjavaはあまり知らないと
いう人には、かなり良いと思う。

javaプログラミングの処方箋、java謎落とし穴、J2EEアンチパターン
といったリファクタリング系の本はけっこうあると思う。
各本の違いは、正直読んで見ないとわからない。

結城さんのjava系の本で、デザインパターン入門やスレッド入門などありますが
これはそれらの2冊よりもページ数でいったら6〜7割くらいです。

少し見にくい(カラーにしてもよいのでは?)といったところがあります。
後は、ページまたぎが多いから電車内で読んだりするのには適さない。
 
   
人気 15位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 16位
本書の内容
新品未使用品です。店頭陳列しておりましたので、表紙にスレ傷などございますが、商品には問題ございません。一部ヤケ、スレなどがある場合がございますので、完全に新品が良い方はご遠慮下さいませ。ご注文後、Amazon.co.jp 配送センターより迅速に発送されます  
内容サンプル
 
User Voice
VB.NETで書かれた案件では、中途半端なオブジェクト指向に遭遇することがあります。
可読性の悪いコードでも、辛抱して改修や機能追加をしてきましたが、
この本を読んで、「まずはリファクタリングしてから取り掛かる」価値を知りました。
実際にやってみると、確かにそのとおり。
今では可読性の悪いコードに遭遇しても、気が重くなることはなくなりました。

また実装中には、常にリファクタリングの習慣が働くのでコードの無駄が減りました。
それに以前は、複雑な動作を設計段階で定義しようとして工数を割いていましたが、
今では設計で定義し辛い部分は適当に切り上げ、
実装で解決して設計ドキュメントに戻すやり方でプロジェクトの進捗が早くなりました。
良い設計や実装は、クラスの構造やメソッドの動作を理解していなくても、
「コードの形」を真似るだけで機能追加や変更ができるのは、皆さん周知のところと思いますが、
この本に従って作業すると、そのようなコード部分が増えて生産性が向上するのが実感できます。

値段で購入をためらっていましたが読んでみて、それだけの価値がある本だと感じています。
この本は著者のXPでのリファクタリングの経験をカタログ形式でまとめたもので、ソフトウェアを少しずつ日々改善し、ソフトウェアが肥大化が修正を困難にしないようにする小さな手法の集まりを紹介しています。ソフトウェアの構造に日々手を加える(部分的な再設計の)ための、問題点の発見の仕方、直し方がカタログ化されています。
書いてあることの個々の内容は比較的単純なものばかりですが、まずい設計が示唆する問題点、改善による効果、リファクタリングが可能な条件、リファクタリング時に見落としがちな点の指摘などが十分に書かれていて、リスクと効果をよく考えながらリファクタリングが出来るようによく配慮された内容になっています。プログラミング初級者にとって、とても勉強になる内容だと思いますが、経験を積んだプログラマにも日々のプログラミングのチェックリストとして非常に役に立つのではないかと思います。
JAVAでかかれているため、C++を使っている人には多少違和感がありそうですが、.NETプログラミングにはうってつけの内容だと思います。
これはイイです。
なんというか、プログラミングのベストプラクティスが載っているわけではありません。
しかし、
「最初からすげぇプログラムなんてできるわけないじゃん。とりあえず作って、後から体質改善すれば~?」
みたいなノリでプログラムってやっていいんだ。って感じです。
体質改善の為の基本的な処方箋が、ここにはあります。
ケント・ベック著の「テスト駆動開発入門」も、あわせて読めば、効果的かも。
 
   
人気 17位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 18位
本書の内容
(概要)
業務でVBAプログラムを組んでいる人の多くは,部署で一番パソコンやExcelに詳しいからという理由で任されていることも多く,プログラミングの基本的な素養や知識を知らない方も多いでしょう。このため,動けばOKといった,その場しのぎのコードを書いてしまいがちです。そういったコードは,あとから見直したり再利用する際にトラブルを起こしやすく,またどこになにが書いてあるかわかりにくいので,せっかくの生産性や効率性を落としがちです。本書は,そのようなVBAではじめてプログラムを組んだという人たちにプログラミングの基礎を示し,あとから見て読みやすく,変更や再利用に強いVBAプログラムの書き方を身につけるための本です。

(こんな方におすすめ)
・業務や趣味で初めて触ったプログラミング言語がVBAという人,VBA以外プログラミングしたことがない人
・独学でVBAプログラミングをやってきたけど,自分の書き方でよいのか自信のない人

(目次)
第1章 良いVBAのコードとは
1-1 そのVBAのコード,半年後の自分が理解できますか?
1-2 “良いコード”とはなんだろう?
1-3 本書の読み進め方

第2章 見た目にこだわる
2-1 理解しやすいコードは見た目も美しい
2-2 コードのまとまりをインデントしよう
2-3 まとまりごとに空行を入れよう
2-4 1行が長いコードは適度に改行しよう

第3章 適当な名前を付けない
3-1 読みやすいコードは名前もわかりやすい
3-2 プロシージャは機能がわかる名前を付けよう
3-3 変数や定数は用途がわかる名前を付けよう
3-4 変数名を変えてみよう
3-5 変数名の暗黙の了解

第4章 コメントを入れよう
4-1 たかがコメント,されどコメント
4-2 サンプルにコメントを入れてみよう
4-3 ポイントとなる箇所にコメントを入れよう

第5章 変数は必ず宣言して使おう
5-1 なぜ変数を宣言するのか
5-2 本書サンプルで変数を宣言してみよう
5-3 変数を宣言したことによる補完機能
5-4 変数宣言時にデータ型も指定しよう
5-5 本書サンプルでデータ型を指定してみよう
5-6 覚えておきたいオブジェクト変数のデータ型

第6章 数値や文字列は定数に置き換えよう
6-1 なぜ数値や文字列を直接記述してはいけないのか
6-2 定数定義のキホンをおさらい
6-3 サンプルで数値を定数化しよう
6-4 定数を定義して数値を置き換えよう
6-5 文字列も定数化して変化に強くしよう
6-6 定数を定義して文字列を置き換えよう
6-7 知っておきたい定数の知識やノウハウ

第7章 共通するコードはまとめよう
7-1 何度も登場するオブジェクトをまとめよう
7-2 サンプルの重複するオブジェクトを変数にまとめよう
7-3 Withステートメントで重複をまとめる
7-4 共通する処理はくくり出してまとめる
7-5 共通する処理をSubプロシージャにくくり出す
7-6 Subプロシージャの引数でちょっとした違いを吸収する
7-7 戻り値が必要ならFunctionプロシージャの出番
7-8 長いコードは機能別に小分けにしよう
7-9 変数を利用して賢くコードを分割しよう

第8章 変化やトラブルにもっと強いコードにする
8-1 表のデータの増減に自動対応可能にしよう
8-2 表の移動に自動対応可能にしよう
8-3 コードを整理してスッキリさせよう
8-4 予期しづらいトラブルの受け皿を用意しておく  
内容サンプル
 
User Voice
Excel VBAのプログラミングをする際の、メンテしやすいソースコードを書くための具体的なノウハウが詰まっています。インデントや改行、空白行の挿入といった基本的なことも、ここまで詳しく書いてある本は他にはないと思います。

そして変数や定数、サププロシージャの名前の付け方もとても具体的で、プロはここまでやるのかと勉強になりました。特に定数については非常に詳しく、自分はまだまだ定数をつかいこなせていなかったと痛感しました。

Functionプロシージャやサブプロシージャを使ってプログラムを整理するやり方も具体的でわかりやすく、勉強になりました。第8章の表のセル位置などが変わった場合に対応する方法も、特にセルの名前の定義を使う箇所は具体的で実践的です。

よりわかりやすくメンテしやすいプログラミングをしたい方におすすめです。
筆者はVBA解説者の泰斗のひとり。中級者を対象にした、更に上を目指そうという方々への熱意を感じる解説に惹かれた。プロシージャを次々に書き換えて、より良いプログラムにしていくという立山流メソッドは懇切丁寧であり、次はどうなるんだろう、自分ならこう書き換えるのだが、という期待感と疾走感を感じて、一気に読破できた。

また、変数に比べてイマイチ脚光を浴びない(?)定数にも章立てして丁寧に解説されていたのも良かった。
まさしくオススメの一冊である。次回作は中級者泣かせの配列について立山流で解説したのを是非、執筆願いたいと思った。
 
   
人気 19位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 20位
本書の内容
オブジェクト指向ソフトウェア設計の際に繰り返し現れる重要な部品をデザインパターンとして記録し、カタログ化。改訂版ではこれにCD−ROMを添付、現場でブラウザを通して即利用できるパターンカタログデジタル版を収録。特別付録として、原書にはないJavaのサンプルコードを追加。
【技術書翻訳名著シリーズ】
ソフトウェア開発のバイブル群! 弊社がこれまでに刊行した翻訳技術書の中から、長年読者から支持され続けている名著を厳選したのが、本シリーズです。移り変わりの激しいコンピュータ業界で、普遍性を保ち続ける定番をお届けします。ソフトウェア開発の上流から下流まで、入門書からエキスパート向けまで、技術者に求められる選りすぐりの情報がここにあります。
 
内容サンプル
 
User Voice
確かにこの本は予備知識なしに読むのは難しいですね。
まず、"デザインパターン"とは何かということを、そしてその記述の仕方(パターン名、問題、解決、結果)を第1章で説明されていますが、事前に知っておいたほうが読みやすいと思います。
第2章ではLexiというTexに似たドキュメントエディタのなかにどんなデザインパターンが使われているか書かれています。個人的にもデザインパターンを説明するにはテキストエディタや描画エディタが最適だと思い、2章も押さえておくと以降も理解しやすいです。
第3章以降でやっとそれぞれ(生成、構造、振る舞い)のデザインパターンが紹介されています。"生成"、"構造"、"振る舞い"というのが何を意味しているのか初めはよくわかりませんでしたが、各パターンを見ていくうちにこの区別の仕方が理解できます。
ただし各章を順番どおりに読んでいくのではなく、後へ先へページを何度もめくっていく中で理解していくことができるでしょう。
「デザインパターン」を学ぶ上で、結城浩氏の「Java言語で学ぶデザインパターン入門」やW.J. ブラウンの「アンチパターン―ソフトウェア危篤患者の救出」もお勧めです。
この本は、SEがプログラムの詳細まで指示をして、末端に極力考えさせないようにする日本のIT土方には全く不要だと思う。
ではSEならば初期のスクラッチモデルを作るとき、この本が役に立つかというと、それもそうではない気がする。

いまの日本ではデザインパターン自体を直接プログラム製造に生かす機会は少ないのではないだろうか。
スクリプトもマシンの力業でパターンを使わずに作れる。

この本の用途としては、オブジェクトに対する感覚といった、プログラムのセンスを磨くための本であると私は考えている。例えばFlyweightにあるIntrinsicとExtrinsicのように、プログラムの全体要素を多数と少数の部分に切り分けるといった、全体の中の大小のトレードオフをする感覚といったものを(今となっては)磨くことができるのではないだろうか。あとライブラリを作る時にも参考になると思う。
ウェブサイトでまとめてある物では何故その設計思考に至ったのかが書かれていなかったり、
どの様なときに使うべきかなどが曖昧だったりする場合が多く、表面だけ真似て批判する人も多いので、この本を買った。
予想通り、何故この様な設計に至ったのかが書かれていてよかった。
現代では言語仕様に組み込まれている場合もあり、意味のないデザインパターンも存在するが、考え方を学ぶには良さそうです。
設計の話を巻き起こした原点とも言えるので一読の価値あり。
 
   
人気 21位
本書の内容
初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead Firstシリーズのデザインパターン編。
刺激的なレイアウト、思わず膝を叩く見事なたとえ、引き込まれる小話、楽しいクイズやパズルで飽きることなく読み進むことができます。
複雑難解なデザインパターンの概念が面白いほどよくわかる、目からウロコの画期的な書籍です。  
内容サンプル
 
User Voice
典型的な初心者が書くコードとデザインパターンを導入したコードを比較することでどのような効果を得られたのか理解できるようになっている。並行して、アーキテクチャの説明がなされている。スクリプト言語のユーザーであればオブジェクト生成に関連するパターンを一通りやっておけばよいだろう。2009年に GoF のメンバーのインタビュー (Design Patterns 15 Years Later) によれば、GoF のカタログの改定版には Null Object、Type Object、Dependency Injection、と Extension Object/Interface が追加され、Singleton が削除された。
息子に薦められて購入。全部で13章あり3章の途中まで読んだ。これは面白い!デザインパターンというコトバ、聞いたことはあったが内容は今まで知らなかった。期せずして随所に「再利用」というコトバが登場していて心強い。デザインパターンを適用して課題を解決していく例題はJavaで記述され説明されている。自分にはJavaの経験はないのだが、オブジェクト指向プログラムの考え方(概念)を例題で学ぶことにもなっている。
重要なデザインパターンとその背景にある考え方を分かりやすい実例を通して学べる良書です。
Java初心者の私にも簡単に読めました。
 
   
人気 22位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 23位
本書の内容
アジャイルなソフトウェア開発の実践において、プログラムの改善にリファクタリングは欠かせません。
同様に、プロジェクトを本当の意味で改善するためには、開発にかかわる人間の脳(ウェットウェア)をリファクタリングすることが重要だと思いませんか?
そこで、認知科学、神経科学、学習理論、行動理論などを駆使し、人間の脳がどのように機能するかを明らかにします。

本書で紹介するテクニックを実践すれば、読者の学習スキルおよび思考スキルは向上、日々の生産性を20%から30%改善できると著者は主張します。
名著『達人プログラマー』の著者、アンディ・ハントが語る「あなたの脳をリファクタリングする」方法です。  
内容サンプル
 
User Voice
「達人プログラマー」の共著者であるAndy Huntの渾身の一作といえるかもしれない。
個人的にはかなりの当たり本だと思う。

内容は仕事の上達論、右脳左脳の話、意識的な学びの方法、など
知識労働者(エンジニア特にプログラマー、あるいは作家など)であれば、
一読して損はない内容だと思う。

Andy Huntはソフトウェアエンジニア出身とあって、
比喩や事例などはほとんどプログラマー向けのコンテクストで、
他の分野の人が読んでもピンと来ないのではないかと思う(笑)。

この本の対象は職業プログラマー、その中でも
「プログラマーは現代の職人である」とい思いを持っていて、
自ら職業としてその道をつっぱしりたい人には、非常に参考になる内容が書かれている。

冒頭で紹介される技能の上達に関するドレイファスモデルなどは、
まさに「達人プログラマー」になるための個人向けCMMみたいなものだ。
初心者/中級者/上級者/熟達者/達人の5段階がある。
引用されている「ベナー看護論」はぜひ読んでみたい一冊だ。

印象に残ったところで、
初心者クラスのプログラマーが学んだばかりデザインパターンのほとんどを、
小さなコードにつめこんだ話が出てくるが、あまりにありがちで笑うに笑えない。

初心者はあらゆる可能性を検討してしまうが、
達人クラスは、直感を使って必要にして十分な最適解をいきなり出してしまう。ということを書いている。

これなどは、将棋の羽生さんの「直感力」に書かれていることと同じだ。
将棋を指す際に、できるだけ手を読むのではなく、その局面において明らかに読まなくて
良い手はまず除く。できるだけ不要な手を読まない。というスタンス。

この「検討しなくて良いこと」が何かが判断できるためには、知識や経験を積むしかない。
つまり、ドライファスモデルに従って、一段ずつ地道にあがるのが正しい。

この本には、その階段を上がるための基礎体力を鍛える方法が惜しみなく書かれている。
 技能には、初心者、中級者、上級者、熟練者、達人の5段階があるというドレイファスモデルを紹介し、上級者と達人の間の非連続的なギャップを明らかにする。全8章からなるこの本の第1章の初心者から達人への道という章に共感できるかどうかが、この本の評価を分けることになる。上級者はえてして、その上のレベルがあることに気付かず、そこで満足しがちであるという現場で起きている現象を鮮やかに説明しきっている。
 さらに上を目指す上級者のためのレシピが残りの7章である。脳の構造とLモードとRモード(よく言われている左脳・右脳の働きをモードとして表現した用語)で説明し、達人への道としてRモードへの転換の必要性を示す。そのための具体的トレーニングも説明している。いろんな例と丁寧な説明でわかりやすい。
 ここで書かれているレシピが適切なものかどうかは別にして、ドレイファスモデルについて記述された第1章を読むためだけに購入しても価値がああると思う。
 本書のメッセージは、初心者、中級者、上級者、熟練者、達人の夫々の習熟度の段階において、必要とするツールが異なるということだ。初心者には、定型的な手順書が必要であり(その代わり臨機応変な判断を期待しない)、達人には臨機応変に行動するための柔軟な環境が必要である。
 ここで問題は、どうすれば初心者から中級車、そして上級者、最後に達人と習熟度を上げていけるか?という方法であり、本書はこの方法について述べている。
 世の中のHow to 本が、初心者向けのツール(定型的な手順:例えば「重要なものから先に実行せよ」など)を提供しているのと比べ、本書は初心者から達人になるための方法を記している点が特徴である。キーワードは、「学び方を学ぶ」である。
 
   
人気 24位
本書の内容
リファクタリングは、システムデザインの改善や保守性、拡張性、パフォーマンスの向上
など、開発での幅広い有効性が証明されてきました。本書は、データベースシステムのために設計された強力なリファクタリング・テクニックを紹介しています。テーブル構造やデータ、トリガーなどをほんの少し手直しするだけで、どんなデータベースデザインも強化でき、無駄な再作業や余分なコストを省くことができるようになります。また、一連の決まったプラクティスの概略が述べられており、データベースの設計・開発にたいして、アジャイルな手法をどう取り入れるべきかが明確に示されています。不可能だといわれていたデータベースのリファクタリング・テクニックを確立したのは、アジャイル手法の第一人者スコット・アンブラーと高名なコンサルタントピラモト・サダラージ。彼らのおかげで、エンタープライズアプリケーションアーキテクチャに携わる開発者やデータベースの専門家は、自信を持って、しかも安全にデータベース設計に変化を取り入れることができるようになるでしょう。  
内容サンプル
 
User Voice
とは、プログラムの外部から見た動作を変えずに
ソースコードの内部構造を整理するためのテクニックです。
リファクタリングとユニットテストによって、アジャイルのような
ユーザ要件の変化に合わせて段階的に設計・実装を行うスタイルの開発が可能になりました。

しかし、本書の前書きにあるとおり、リファクタリングが有名になっても
データベースに対してリファクタリング手法を適用することは一般的ではありませんでした。
稼働中のデータベース内に存在する大量の「データ」を失う訳にはいかないからです。

本書では、データベースのリファクタリングをデータの移行手順まで踏まえた上で紹介しています。
本書を読み進め、データベースリファクタリングのパターンを理解していくことで
データベース開発においても、アジャイルさを得ることができるかも知れません。

ちなみに、本家リファクタリングのプラクティスがEclipse等で自動化されているように、
本書で紹介されているデータベースリファクタリングもLiquibaseというツールで自動化されています。
実際に、本書のプラクティスを適用する際には、このようなツールを探してみるのも一考です。
サンプルDBでおなじみの銀行口座を例にあげて、DBとアプリの一貫性を損なわないよう細心の注意を払いながらDBを再編する技法を詳細に解説している。永らく使われてきたDBの保守を受身でなく前向きに取り組む上での心構えを含めて考えさせられる本である。
日本でも、銀行とその系列のノンバンクに波及する合併・再編は普通の出来事となり、それに伴って、銀行の情報システムのトラブルもマスコミで数多く取り上げられている。
銀行をはじめとする金融分野に限らず、既存システムの再構築にあたってSEが読むべき本として推奨したい。
データベースもアジャイルに作ろう!
そのために必要な、データベースの変更に関する
各種テクニックを紹介した本です。

表の変更、列を追加する、表の名前を変える、
参照整合性を追加する・・・などなどの
データベースに関する変更が対象となっています。
物理的な設計、実装が対象となっています。

変更内容ごとに、
変更するためのSQL、移行の方法、移行に必要なSQL、
AP側の処理の変更、移行等で利用するストアードプロシージャ
等が紹介されています。
SQLやストアードは、Oracleのものです。

別にアジャイルでなくても、アプリケーション開発や保守
を行っていれば、必ず直面する問題だし、
DBAをやっていれば、同じような解決策をとってるような
印象を受ける内容が多かったです。

これからDBAとして、腕を磨くぞ!という本でしょうか。
 
   
人気 25位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 26位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 27位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 28位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 29位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 30位
本書の内容
 
内容サンプル
 
User Voice
 
   
人気 31位
本書の内容
 
内容サンプル
 
User Voice
 
   

リファクタリング 新書一覧

本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
※このKindle本はプリント・レプリカ形式で、Kindle Paperwhiteなどの電子書籍リーダーおよびKindle Cloud Readerではご利用いただけません。Fireなどの大きいディスプレイを備えたタブレット端末や、Kindle無料アプリ (Kindle for iOS、Kindle for Android、Kindle for PC、Kindle for Mac) でのみご利用可能です。また、文字列のハイライト、検索、辞書の参照、引用については、一部機能しない場合があります。文字だけを拡大することはできません。
※プリント・レプリカ形式は見開き表示ができません。
※この電子書籍は紙版書籍のページデザインで制作した固定レイアウトです。

ソフトウェア開発の名著、第2版登場!
 リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。
 本第2版では、約20年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードがJavaからJava Scriptになるなど、現代的にアレンジされています。


第2版翻訳にあたって
初版の「本書に寄せて」
はじめに
Chap.1 リファクタリング-最初の例
Chap.2 リファクタリングの原則
Chap.3 コードの不吉な臭い
Chap.4 テストの構築
Chap.5 カタログの紹介
Chap.6 リファクタリングはじめの一歩
Chap.7 カプセル化
Chap.8 特性の移動
Chap.9 データの再編成
Chap.10 条件記述の単純化
Chap.11 APIのリファクタリング
Chap.12 継承の取り扱い
文献リスト 
訳者あとがき
索引  
内容サンプル
 
User Voice
1版、Java版は蔵書としてあるのですが。所属している会社ではフロントエンド寄りの業務が多く、プログラムというとwebでJavaScriptのみ(たまにPHP)で完結することが多い環境にいる人です。

JSで1ファンクションが長くても100行、200行程度、ランディングページとかで継続的メンテナンスは求められない。
なのでどうしても「ベタ書き、とりあえず動けばいい、なるはやで」というコーディングが重宝される。
そんな環境です。(でした?かな。それだけではやっていけなくなっているので)

はい。”ブラックボックス”だらけです。大半のコードを書いた人たちはもう社内にいません、よくある話です。
・長大なファンクションを、入れ子ファンクションできりわける
・一時変数の特定、いらないやつは撲滅
・異常系の検出がおろそかだったので、オブジェクト自身に異常検出機能をつけてみた
などを、「夏休みの宿題・工作」みたいな感じでメンバといっしょに取り組んでいます。

本書について。
文章の言い回しは固くはないのですが、あつかっている処理ちょっと難しい話なので、誰でもがさらっとよめる本ではないようです。しかしサンプルがJavaScriptなので、とりあえず「記載されているコードの意味」はわかってもらえているようです。

最後に。
本書に盲従する必要はないとは思います。いろんなスタイルの一例です。
ただ、本書を通じることで、ある程度の共通認識を持ったうえで、コーディング職人の間での意見交換や価値観論争などは良いことかな、と思いました。

最後の最後に。
急激な変化を嫌う人もいるので、「押し売り」にならないように気を付けて。
コードを書くうえでなんとなく汚い、綺麗でない、もっとよく書けるのでは?と疑問を持った時に読むととても参考になる本だと思います。2版になり現在の主流ともいえるJavascriptで書き直されている点も高評価の要因です。
高いけど良い本です。
 
   
本書の内容
(概要)
業務でVBAプログラムを組んでいる人の多くは,部署で一番パソコンやExcelに詳しいからという理由で任されていることも多く,プログラミングの基本的な素養や知識を知らない方も多いでしょう。このため,動けばOKといった,その場しのぎのコードを書いてしまいがちです。そういったコードは,あとから見直したり再利用する際にトラブルを起こしやすく,またどこになにが書いてあるかわかりにくいので,せっかくの生産性や効率性を落としがちです。本書は,そのようなVBAではじめてプログラムを組んだという人たちにプログラミングの基礎を示し,あとから見て読みやすく,変更や再利用に強いVBAプログラムの書き方を身につけるための本です。

(こんな方におすすめ)
・業務や趣味で初めて触ったプログラミング言語がVBAという人,VBA以外プログラミングしたことがない人
・独学でVBAプログラミングをやってきたけど,自分の書き方でよいのか自信のない人

(目次)
第1章 良いVBAのコードとは
1-1 そのVBAのコード,半年後の自分が理解できますか?
1-2 “良いコード”とはなんだろう?
1-3 本書の読み進め方

第2章 見た目にこだわる
2-1 理解しやすいコードは見た目も美しい
2-2 コードのまとまりをインデントしよう
2-3 まとまりごとに空行を入れよう
2-4 1行が長いコードは適度に改行しよう

第3章 適当な名前を付けない
3-1 読みやすいコードは名前もわかりやすい
3-2 プロシージャは機能がわかる名前を付けよう
3-3 変数や定数は用途がわかる名前を付けよう
3-4 変数名を変えてみよう
3-5 変数名の暗黙の了解

第4章 コメントを入れよう
4-1 たかがコメント,されどコメント
4-2 サンプルにコメントを入れてみよう
4-3 ポイントとなる箇所にコメントを入れよう

第5章 変数は必ず宣言して使おう
5-1 なぜ変数を宣言するのか
5-2 本書サンプルで変数を宣言してみよう
5-3 変数を宣言したことによる補完機能
5-4 変数宣言時にデータ型も指定しよう
5-5 本書サンプルでデータ型を指定してみよう
5-6 覚えておきたいオブジェクト変数のデータ型

第6章 数値や文字列は定数に置き換えよう
6-1 なぜ数値や文字列を直接記述してはいけないのか
6-2 定数定義のキホンをおさらい
6-3 サンプルで数値を定数化しよう
6-4 定数を定義して数値を置き換えよう
6-5 文字列も定数化して変化に強くしよう
6-6 定数を定義して文字列を置き換えよう
6-7 知っておきたい定数の知識やノウハウ

第7章 共通するコードはまとめよう
7-1 何度も登場するオブジェクトをまとめよう
7-2 サンプルの重複するオブジェクトを変数にまとめよう
7-3 Withステートメントで重複をまとめる
7-4 共通する処理はくくり出してまとめる
7-5 共通する処理をSubプロシージャにくくり出す
7-6 Subプロシージャの引数でちょっとした違いを吸収する
7-7 戻り値が必要ならFunctionプロシージャの出番
7-8 長いコードは機能別に小分けにしよう
7-9 変数を利用して賢くコードを分割しよう

第8章 変化やトラブルにもっと強いコードにする
8-1 表のデータの増減に自動対応可能にしよう
8-2 表の移動に自動対応可能にしよう
8-3 コードを整理してスッキリさせよう
8-4 予期しづらいトラブルの受け皿を用意しておく  
内容サンプル
 
User Voice
Excel VBAのプログラミングをする際の、メンテしやすいソースコードを書くための具体的なノウハウが詰まっています。インデントや改行、空白行の挿入といった基本的なことも、ここまで詳しく書いてある本は他にはないと思います。

そして変数や定数、サププロシージャの名前の付け方もとても具体的で、プロはここまでやるのかと勉強になりました。特に定数については非常に詳しく、自分はまだまだ定数をつかいこなせていなかったと痛感しました。

Functionプロシージャやサブプロシージャを使ってプログラムを整理するやり方も具体的でわかりやすく、勉強になりました。第8章の表のセル位置などが変わった場合に対応する方法も、特にセルの名前の定義を使う箇所は具体的で実践的です。

よりわかりやすくメンテしやすいプログラミングをしたい方におすすめです。
筆者はVBA解説者の泰斗のひとり。中級者を対象にした、更に上を目指そうという方々への熱意を感じる解説に惹かれた。プロシージャを次々に書き換えて、より良いプログラムにしていくという立山流メソッドは懇切丁寧であり、次はどうなるんだろう、自分ならこう書き換えるのだが、という期待感と疾走感を感じて、一気に読破できた。

また、変数に比べてイマイチ脚光を浴びない(?)定数にも章立てして丁寧に解説されていたのも良かった。
まさしくオススメの一冊である。次回作は中級者泣かせの配列について立山流で解説したのを是非、執筆願いたいと思った。
 
   
本書の内容
■「ITエンジニア本大賞 2020」技術書部門大賞受賞!

レガシーコードとは、バグを多く含み、壊れやすく拡張が難しいコードを指します。
このようなコードの保守と管理には多大な労力がつぎ込まれることになります。
しかも一度作ってしまったレガシーコードの質を上げるには、初めから質の高いコードを作るよりも膨大なコストがかかります。

本書では、ソフトウェア開発において、初めからレガシーコードを作りださないためのプラクティスを9つ挙げて解説します。
プロダクトオーナーは目的を語り、やり方は開発者に任せること、小さなバッチで開発を進めること、継続的に統合すること、チームメンバーで協力することなど、日々の開発に取り入れる考え方と具体的な実践について各章で分かりやすく解説します。
信頼性や拡張性が高いソフトウェアをリリースしたい開発者、運用管理者、マネージャに必携の一冊です。  
内容サンプル
 
User Voice
ベストセラーになってますし、すでに読まれた方も多いと思います。間違いなく定番本の一つです。
著者がXP(エクストリームプログラミング)のコーチらしく、述べられているプラクティスの多くはXP由来となっています。
ただ、アジャイル開発手法に変わりはありませんので、スクラムでも適用できる内容です。ウォータフォール?そんな開発手法は存在しませんよ?
副題の9つのプラクティスは以下の通りです。

- やり方より先に目的、理由、誰のためかを伝える
- 小さなバッチで作る
- 継続的に統合する
- 協力しあう
- 「CLEAN」コードを作る
- まずテストを書く
- テストでふるまいを明示する
- 設計は最後に行う
- レガシーコードをリファクタリングする

自分のプロジェクトでも、これらのプラクティスは(ややアレンジはあるものの)実施しており、適切なシステム開発を行うためのミニマムセットになっています。
逆に、できてないものがある場合は、そのシステム開発は何らかの問題を抱えているということになります。
プロジェクト管理者はもちろん、システム開発に関わる全ての人が知っておくべき内容が詰まっています。
システム開発プロジェクトの新規参画者に対しては、オンボーディングで最初に読んでもらうのがいいと思います。
C言語やBASIC言語は学校の座学で知っている程度、営業職などを経て、ここ最近、実務でjQueryありきのJavaScriptコードを数年ほど扱っている末端コーディング人です。

読んだ後の感想。
「自社の財産」とされているコードの大半(率直にいうとほとんど全部)が、この本で言われている「レガシーコード」だと気づくことができました。
オーダーされて旧コードに「機能拡張」などもしているのですが、それがハック的に割り込みしているだけだと自覚できました。

雑談などでもしゃべりやすい同僚から先に、本書を布教しています。わりと共感してもらえて、半年後が楽しみです。

目先の目標としては
・マネージメントの人にも読んでもらう
・本書から共通認識として取り入れられそうなことを、チームとして共有してとりくむ
・会社の経費でオライリー本を買ってもらう

というところです。
今の私にとっては、得るものが多すぎる、とても良い本です。
ちと3千円という価格に躊躇したが買ってよかった。アジャイルでもwater fallでも情報はwebや本に溢れている。でもそれらは本質を得ているかと言うと、初心者のための入門書である。しかしプロジェクトに従事し、そのプロジェクトが継続的なプロジェクトになると話は違ってくる。コメントが書いてない誰が書いたかわからないコード、当然単体テストなんてものはないし、あったとしても単体テストがなにをやってるかわからない。コード品質にしても、なんでクラス関数が50個もあるの?クラス使ってる意味ないじゃん!みたいな組織は多いのではないか。そういったプロジェクトを管理する人には最適であり、日本語で読める唯一の本のような気がする。「レガシーコード改善ガイド」とかマーティンファウアーの本とかはいい本だが、コード書く人よりのガイドであるので、この本とはちょっと方向性が違う。数年間同じ製品を開発し、努力しても製品品質があがらないマネージャ向けだが、若い開発者も読んで損はない本だと思う。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
(概要)
「コミュニケーションにおける不確実性を減らすには?」
「技術的負債を解消する方法とは?」
「経営陣とエンジニア間の認識のずれを解消するには?」
エンジニアリングにおける課題を解決する思考の整理方法やメンタリング手法を,さまざまな企業の技術組織アドバイザリーを務めている著者が解説。若手を戦力として育て上げ,成長する組織を設計・運営するためにおすすめの1冊です。

(こんな方におすすめ)
・開発チームの生産性を上げたいエンジニア
・社内組織を改善したい経営者

(目次)
Chapter 1 思考のリファクタリング

1-1 すべてのバグは,思考の中にある
1-2 不確実性とエンジニアリング
1-3 情報を生み出す考え方
1-4 論理的思考の盲点
1-5 経験主義と仮説思考
1-6 全体論とシステム思考
1-7 人間の不完全さを受け入れる
Chapter 2 メンタリングの技術

2-1 メンタリングで相手の思考をリファクタリング
2-2 傾聴・可視化・リフレーミング
2-3 心理的安全性の作り方
2-4 内心でなく行動に注目する
Chapter 3 アジャイルなチームの原理

3-1 アジャイルはチームをメンタリングする技術
3-2 アジャイルの歴史
3-3 アジャイルをめぐる誤解
3-4 アジャイルの格率
Chapter 4 学習するチームと不確実性マネジメント

4-1 いかにして不確実性を管理するか
4-2 スケジュール予測と不確実性
4-3 要求の作り方とマーケット不安
4-4 スクラムと不安に向き合う振り返り
Chapter 5 技術組織の力学とアーキテクチャ

5-1 何が技術組織の“生産性”を下げるのか
5-2 権限委譲とアカウンタビリティ
5-3 技術的負債の正体
5-4 取引コストと技術組織
5-5 目標管理と透明性
5-6 組織設計とアーキテクチャ
 
内容サンプル
 
User Voice
システム思考という物の考え方がある。
この本はソフトウェア開発の文脈でシステム思考を獲得するための本であり、
そのような前提が無いとこの本は何も語っていないように見えるかもしれない。

システム思考とは、組織のような複数の要素が絡み合う場における問題解決の際に
その原因を特定の要素(誰それが悪い、仕様の品質が低いなど)に見出すのではなく
「システム」全体の構造に見出すことによって全体最適化を達成するという考え方である。
優秀なマネージャはほぼこの考え方を持っているといえると思う。

しかしシステム思考をうまく稼働させるためには
今現場で起きていることを高い解像度で認識することが必須となる。
表面的に見えている問題(プロジェクトの遅延、品質の低下など)の裏で起きている
本当の問題を透視するための言わば解剖図や骨格標本のような知識が必要になるのだ。

本書はそのようなソフトウェア開発の現場で起きる問題を理解するための
骨格を様々な角度から見事に言語化してくれた。
これは過去他のどの書籍も行っていないことだと思う。

何か即効性のあるアクションを求めているのならこの本を読んでも期待はずれに終わると思う。
問題を深く正しく理解するためのツールを求めているであればこの本は最適だろう。
組織の成長のため、仕組みの作り方とメンバーのメンタリングについて書いている。実践方法よりも考え方を変えるためのインプットとしてよさそう。
読む前は、職制とか命令指揮系統、ソフトウェア開発手法、のような内容が書いてあると思ってた。それよりも概念的というか考え方を知りたいときに読むのがよいと思う。
既にレビューに挙がっていない点について書きます。批判的に書きましたが、次回に向けての改善提案をしたいだけの良い本であり、エンジニアと名のつく仲間にはぜひ読んでほしい一冊です。

1. (良)ソフトウェアエンジニアだけではない
ソフトウェアエンジニアリングとその組織を題材に扱っているものの、何らかのエンジニアリングを伴うプロダクト開発を行う組織ならばハード中心でも適用できる知見が数多く書かれています。

2. (悪)図が非常に分かりにくい、出展が不明
この本の最も悪いところは、図が非常に分かりにくく、本文を読まない限りは誤解すら生じるところです。筆者以外の、理解が及んでいない人が描いたとしか思えません。また、図も本文も同様ですが出展が示されている箇所が非常に少ないです。原典にあたろうとしてもそれが出来ない。熱心な読者にアクセシビリティと、引用・オリジナルを明記する真摯さを表して欲しかったです。

3. (要望) 筆者の知る Best practice を示して欲しかった

紙面が足りないのかもしれないが、良い実践例を具体的に多く示して欲しかった。筆者の経歴から推測するに、まだ良い実践例のサンプル数が多くないということなのかもしれません。
バズワードを丁寧に日本語で表現し直されていて、そこはとても勉強になりました。だからこそ、一歩先を行って欲しかったです。
 
   
本書の内容
※このKindle本はプリント・レプリカ形式で、Kindle Paperwhiteなどの電子書籍リーダーおよびKindle Cloud Readerではご利用いただけません。Fireなどの大きいディスプレイを備えたタブレット端末や、Kindle無料アプリ (Kindle for iOS、Kindle for Android、Kindle for PC、Kindle for Mac) でのみご利用可能です。また、文字列のハイライト、検索、辞書の参照、引用については、一部機能しない場合があります。文字だけを拡大することはできません。
※プリント・レプリカ形式は見開き表示ができません。
プログラムに潜む扱いにくい部分を見つけ出し、その動作を変えずに内部の構造を改善していくためのテクニックを整理したマーティン・ファウラー氏によるソフトウェア開発の名著『リファクタリング プログラミングの体質改善テクニック』(“Refactoring:Improving the Design of Existing Code”)が、オリジナルの訳者による丁寧な見直しと現代的なJava開発環境による「再リファクタリング」を施した書き下ろし付録を収録して再発行!
旧版の価値を知るベテランはもちろん、これからソフトウェア開発に携わる新人にも必読の一冊です。  
内容サンプル
 
User Voice
基本的な内容は「リファクタリング―プログラムの体質改善テクニック」とほぼ同様ですが、
オリジナルの訳者による丁寧な見直しが新装版にも反映されています。
まだ全て読み終わってはいませんが・・・
(旧版との比較を厳密にしながら読み進めているわけではないですが・・・)

旧版はもう販売していませんので、多くの方に購入する機会をとの考えで新装版を発売されたそうです。
新装版の目玉は、付録「 Java のバージョンアップに伴うリファクタリングをめぐる環境の変化」です。
旧版出版以降のJavaとそのテスティングフレームワークの進歩の記載があります。
対象となるJavaは7までとなっています。

Javaとそのテスティングフレームワークの進歩の記載の後に、その進歩を反映して、
本書に含まれるコードを再びリファクタリングしています。実際にはジェネリック等が取り扱われています。
この部分が新装版の最も注目されるべき箇所であると思います。

本書が全面的にJava7に対応されていないことについては不満がありますが
今後は、Oracleは今までと違ってJavaの言語仕様の強化に注力して行くことが見えていますし
既にJava8でかなりの変更があったといえ、付録の再リファクタリングで十分に新装版の意味はあると考えます。
オブジェクト指向の応用的な内容であると同時にオブジェクト指向の利点が分かるようになっている。オブジェクト指向を学んだor学んでいる最中だがオブジェクト指向の利点が分からない、というときに読むと理解の助けになる。また、本書の内容がほとんどそのままオブジェクト指向の利用法になっているので、理解できるだけでなくそのままオブジェクト指向を活用する第一歩になっている。リファクタリングという横文字でなんだか小難しいものだと思って敬遠していたけど、カタログ部分はオブジェクト指向プログラミングにおける「あるある」ネタを集めて、それに対処するための小ネタを集めたようになっているので、気楽につまみ食いするように読める。ただし、ある程度のオブジェクト指向の知識は必要で、一部UML図も使われている。といっても、オブジェクト指向の基本が分かれば十分理解できるレベルなので、オブジェクト指向の勉強の一環として読めば非常に有益な本だった。
リファクタリングの勉強するなら、この一冊は必要不可欠でしょう。 この本の対象となる読者は、職業プログラマ及びオブジェクト指向言語です。 解説はすべて、Java言語で行われていますが、他のオブジェクト指向言語を 理解していれば、問題なく読み進めることができます。 リファクタリングの重要性についてはもちろん、テクニックを細かく解説してあり、 実践に役に立ちます。 この本の核となる部分は第6章からリファクタリング・カタログです。 「名前、要約、動機、手順、例」の順で全てが書かれていて、 非常に読みやすいです。
 
   
本書の内容
(概要)
Lisp・関数型プログラミングのメリットとは何か――副作用のないプログラミングがまず挙げられます。これでバグが圧倒的に少なくなります。さらにはコードの再利用がしやすいこと,並列処理が得意であるということも。それだけではありません。動的な型付けも特徴ですし,ラムダ計算もクロージャも,さらにはオブジェクト指向までできます。数十年の時を越えて現代にも通用する普遍的なアイデアがLispにはあります。本書はさまざまなLispプログラム(ハノイの塔,エイトクイーン,オンライン書店など)を解説し,さらにリファクタリングまでいっきに学びます。本書で関数型プログラミングのエッセンスを得ることができます。


(こんな方におすすめ)
・オブジェクト指向プログラマ
・昔からのLispプログラマ

(目次)
第1章 関数型プログラミングとは何か――そして,それがなぜ難しいのか?

第2章 関数型プログラミングを学ぶためのLisp超入門

第3章 関数型プログラミングの基本

第4章 プログラミングパラダイムの比較

第5章 関数型プログラミングの演習

第6章 関数型プログラムの評価とリファクタリング  
内容サンプル
 
User Voice
待望のLispの良書が出た!という感じです。
Lispというとその大きな特徴にマクロがあり、そのことに偏重する本が近年、多かったと思います。
この本ではもっと広く、Lispの魅力を伝えつつ、関数型プログラミングを平易に説明していると思います。
往年のLispファンにとっても読みごたえたありますし、これからLispをやってみようという人にも魅力的な一冊だと思います。
著者はかつて、日本のメーカーにてLispマシンやLisp処理系の実装経験があるというLispを語るには最適の人材。しかしその才能が仇となってか、「はじめての」読者の気持ちがよく分かっていないように見えた。例えば「はじめに」や第一章でいきなり「副作用」という言葉が出てくる。「風邪薬を飲むと眠くなる」副作用しか知らない関数型プログラミング言語初学者は何のことかと思う。そしてプログラミングの学習には欠かせない「コード写経」をするための環境構築の記述が少ない。サンプルも、高階関数からはじまりカリー化、フィボナッチ数列を求める関数、nクイーン問題など数学好きには興味のある問題が出てくるのだが、入門書の例題を飛ばして読んでしまう私のような不真面目な読者には、それが手続き型プログラミング言語をどう革新してくれるのか想像できなかった。
キャリアだけ見れば適材中の適材であるはずの著者が、なぜ本を書くというと、社内ドキュメント以上のものが出てこないのか?日本には優れた技術書を書く人材がいないわけがなく、これは出版社の構造的な問題に感じる。編集者の意識がマニュアル本以上の「読める技術書」を作ろう、作らせようという意識がないのだと思う。優れた技術書とは何か?オライリーの好評価の本を数冊読めば自明の筈なのに…。
日本人が日本語で書いたLisp入門書が2016年に出た、という価値により星3つ。
Listや関数型でプログラミングする際の基本的なコンセプトが説明されていて良書だと感じました。
特にコンスセルを基礎にした設計感覚が理解できた気がします。
他にも、末尾最適化の説明は、意外とWEB上でも情報が少ないのですが、とても分かり易かったです。

ただ「はじめての」と名うってはいるものの、初見では理解が難しい部分も少なからずありましたが(特に演習の部分)、そこは本文中でも時間を掛けて咀嚼するべし、と記載があったので、実際にコードを書いてみて段階的に読み直してみようかと思います。

あとはラムダ計算はじめ目次的に惹かれるものの、実際には読み飛ばして良い内容が少なからずあるのが少し残念です。構成を少し見直してくれるともっと良くなると思います。
 
   
本書の内容
開発経験に基づくパターン実践の極意!
パターン誕生の背景/エッセンス/適用条件/サンプルを解説。

ゲームプログラミングを含むソフトウェア開発の現場において、デザインパターンをより的確に利用するための解説書。

著者は、米国大手ゲーム会社エレクトロニック・アーツでゲーム開発に従事。
その経験に基づき、GoFや著者独自のパターンについて考察。

より容易に変更できる洗練されたアーキテクチャ、
ゲームに求められる実行速度といった視点を重視しつつ、
幅広く応用できるパターンやゲーム必須のパターンを取り上げています。

本書は、米国アマゾンで60以上のレビューを集め、その9割が星5つ。
『Game Programming Patterns』の翻訳書です。

プログラムの構成・構造を転換!
良いパターンはフレームワークや方法論を超える。


【以下、本書イントロダクションより抜粋】
私がこの本で提供したいのは、解決策のメニューのようなものです。
この本の各々の章では、単独でコードに適応可能なアイデアを解説しています。
ですから、作りたいゲームに役立つものをメニューから選んで組み合わせることができます。

題名に「パターン」という言葉の入った本はどれも、「四人組」と呼ばれた
エリック・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシディーズの
『オブジェクト指向における再利用のためのデザインパターン』とはっきりした関連を持っています。

この本の題名を『ゲーム プログラミング パターンズ』としたからといって、
四人組の本がゲームの世界では役に立たないと言うつもりはありません。まったく逆です。
Part IIでは『・・・ためのデザインパターン』で解説されているパターンを数多く取り上げます。
ただし、ゲームプログラミングにどうすれば応用可能かに力点を置いています。

その一方で、私はこの本がゲーム以外のソフトウェアにも応用可能だと思っています。
本の題名を『続・デザインパターン』としてもよかったのですが、
ゲームを扱ったほうが魅力のある例が示せると考えました。
社員台帳や銀行口座についての本を書いても面白くありませんから。

そのようなわけで、この本で説明するパターンはどんなソフトウェアにも有用ですが、
とりわけゲームプログラミングで突き当たる難問を解決するのに役立つと思います。
 
内容サンプル
 
User Voice
デザインパターン(設計パターン)の本です。
これを読んだからといって、ゲームを作れなかった人が作れるようになる本ではありません。
すでに作れる人が、より良い設計(拡張性が高いとか、不具合が出にくいとか、実行効率が良いとか)にするための本です。
内容は広く浅くという感じです。
学生や若手プログラマーの人におすすめです。

元祖デザインパターンで定番のコマンドパターン、オブザーバパターン、シングルトンパターン、ステートパターンなども載っていますし、ゲーム独自の設計パターンも載っています。
この本の良いところは、サンプルコードや説明がゲームに特化していることです。
よくあるデザインパターンの本は「概要はわかった。でも何が嬉しいのかわからない。実際にいつ使えば良いのかわからない。」という例・解説が多い気がするんですが、この本はゲームに特化してるので、例も具体的で使用方法やメリットがすぐ理解できます。

また、「デザインパターン最高!これを使えば万事解決!」みたいな押しつけはなくて、デメリットを詳しく併記している点も好感が持てます。

「データ局所化(データ指向)」など、わりと高度なトピックも載っていて、このあたりを読むと最近UnityがEntity Component Systemを推し進めようとしている理由がわかります。

翻訳も良好で読みやすかったです。

サンプルコードはすべてC++なので、C++がわからないと厳しいです(といっても、クラスとポインタさえわかっていれば大丈夫です)。
デザインパターンの本といえば結城浩さんのデザインパターン入門が有名ですが、わかりやすいものの面白くなく、デザインパターン自体つまらないものなのかなと思っていました。

しかしこの本はゲーム開発歴が長い作者が実際のゲーム開発で遭遇する問題をデザインパターンで解決していくというスタイルで、すべて例がゲームなのでゲームプログラミング好きにはめちゃくちゃ面白いです。
ステートパターンの章は自分が経験したことのある問題を扱っていた章なので、忘れようがないぐらい吸収できました。
パターンのデメリットや限界、実装上の注意やパターンの変形などについても詳しく扱っていて、実際に実装しようと思った時にかなり役立ちそうな感じです。

設計一般の話も載っており、第一章にあったこの文などがためになりました。
「あるゲームのアイデアが使い物になるかどうか知りたい段階で、アーキテクチャの整ったコードを書くのは、一種の賭けになってしまいます。そのアイデアが実際に画面に展開されて評価を受けるまでに時間がかかるだけでなく、もしもそのアイデアが使い物にならないと結論されたら、そのコードを構造化するためにかけた時間はまったくの無駄になってしまうのです。」

言語はC++ですが、オブジェクト指向言語が一つわかってれば読めるように書かれています。
話題自体が若干高度なのである程度プログラミング経験ある人向けですが、基本的に解説に不親切なところはなく、名著と言っていい本だと思いました。
ゲーム以外のプログラム経験がある人が、趣味でUnityを使い始めて、少し大きなゲームに挑戦した辺りでぶつかる「あれ、このゲームのシステムってどういう風に設計するのが正解なんだろう。」というモヤモヤをスッキリさせてくれる書籍です。

いわゆるデザインパターンの活用方法が、「主人公の状態管理どうしよう。」「敵いっぱい作りたいんだけどパラメータのデータ構造どうしよう。」といったゲームを作るとほぼ確実に出会うであろう問題を例に解説されているので、すんなり頭に入ります。ゲームに寄った内容ですが、専門書が大好きな銀行口座や学生名簿の例よりもよほどわかりやすいので、デザインパターンの入門書としても良いと思います。

個人的には、脚注のユーモアがツボにハマり、読み物としても楽しめました。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
リファクタリングの入門書の決定版。

※この電子書籍は、「固定レイアウト型」で配信されております。説明文の最後の「固定レイアウト型に関する注意事項」を必ずお読みください。

どうすれば、きれいで読みやすいコードになるのか? 『Java言語で学ぶデザインパターン入門』の結城浩が、リファクタリングの本質と手順をやさしく解説。Javaによる実例満載したリファクタリング入門書の決定版。

●目次
第0章 リファクタリングとは
リファクタリングと「不吉な匂い」
リファクタリング・カタログ
リファクタリングのエッセンス
リファクタリングQ&A
(第1章~第4章では、コードを整える小規模のリファクタリングを学びます)
第1章《シンボリック定数によるマジックナンバーの置き換え》
第2章《制御フラグの削除》
第3章《アサーションの導入(表明の導入)》
第4章《ヌルオブジェクトの導入》
(第5章~第10章では、クラスを整える中規模のリファクタリングを学びます)
第5章《メソッドの抽出》
第6章《クラスの抽出》
第7章《クラスによるタイプコードの置き換え》
第8章《サブクラスによるタイプコードの置き換え》
第9章《State/Strategyによるタイプコードの置き換え》
第10章《例外によるエラーコードの置き換え》
(第11章~第15章では、クラスの関係を整える大規模のリファクタリングを学びます)
第11章《Factory Methodによるコンストラクタの置き換え》
第12章《観察されるデータの複製》
第13章《委譲による継承の置き換え》
第14章《委譲の隠蔽》
第15章《継承の分割》

固定レイアウト型に関する注意事項(必ずお読みください)
この電子書籍は、全ページ画像の「固定レイアウト型」で配信されております。以下の点にご注意し、購入前にプレビュー表示をご確認の上、ご購入ください。

■使用できない機能
・文字拡大(ピンチイン・ピンチアウトは可能ですが、画面におさまらない場合は画面をスワイプ)/文字のコピー/マーク/ハイライト/文字列検索/辞書の参照/Web検索/引用

■推奨環境
・タブレットなど大きいディスプレイを備えた端末
・Wi-Fiネットワーク経由でのダウンロード(Kindle端末の場合)
 
内容サンプル
 
User Voice
リファクタリングを日本語の書籍でかつ、Javaで学びたい方にはおすすめです。
全体的にわかりやすかったです。

■長所
・説明がていねい
・ソースコードを入力しながら学習できる。(実際に入力することで理解しやすい)
・内容のレベルも難しくない。おそらくJavaを一通り学び終えた方には最適

■短所
・リファクタリングの概要→リファクタリングの説明→ソースコードを確認する構成になっているため、わかりにくい。
ソースコードを確認→リファクタリングの説明の方が理解しやすいと感じた。
・一部のリファクタリングのサンプルが複雑すぎて理解しにくい。
Javaのことを少し分かってきた人にオススメです。逆に中級者以上は読む必要ないと思います。
基礎がわかっている人や他の言語を知ってるけどjavaはあまり知らないと
いう人には、かなり良いと思う。

javaプログラミングの処方箋、java謎落とし穴、J2EEアンチパターン
といったリファクタリング系の本はけっこうあると思う。
各本の違いは、正直読んで見ないとわからない。

結城さんのjava系の本で、デザインパターン入門やスレッド入門などありますが
これはそれらの2冊よりもページ数でいったら6〜7割くらいです。

少し見にくい(カラーにしてもよいのでは?)といったところがあります。
後は、ページまたぎが多いから電車内で読んだりするのには適さない。
 
   
本書の内容
本書は、統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションなどのモダンな開発スタイルを組込み開発に適用する方法を解説します。  
内容サンプル
 
User Voice
組込み系開発では、このご時世になってもC言語が主流です。
そのため、C言語に関する書籍は数多く出版されていますが、着目する箇所が他の書籍と異なります。
特に、以下の点です。
・環境構築法の記載
・オブジェクト指向的な実装方法
・ツールを活用した開発方法

・環境構築法の記載
環境構築の方法がしっかり記述されていることに驚きました。
書籍によって、各自で構築というケースも少なくないため、手間取ることも多かったと思います
本書では、様々なツールの導入方法がキャプチャ画像付きでしっかり記述されていました。
非常に助かりました。

・オブジェクト指向的な実装方法
エンプラ系では、オブジェクト指向が主流のご時世ですが、C言語でうまく実装できないか悩んでいました。
本書では、多態性や継承、デザインパターンなどをC言語で記述する方法がしっかり記述されています。
特に、C言語を極めたいエンジニアには良いと感じました。

・ツールを活用した開発方法
一番勉強になった点は、ツールの活用方法がしっかりかかれている点でした。
特に、googletest、カバレッジ測定、Valgrindの使い方は、組み込み系エンジニアなら役に立つはずです。
著者の目の付け所がすごいです。

一通り読んでみて、C言語を使いつづけるエンジニアには、読むべき書籍です。
著者の10年分の知識が、一瞬で身に付きます。

なお、対象はC言語中級レベルだとスラスラ読めます。
2回通して読みました。自分には大当たりの技術書です。

C言語、という書名ですが、C言語に固有の本ではありません。
ソフト設計に共通して当てはめられる本質的な考え方やノウハウが、
Cを例に使って説明されてる、というのが正しいです。(実際この著者はJavaの本も書いてるようです)

恐らく、10年以上 真剣に設計に向き合ったソフト屋しか知り得ないようなノウハウが
惜しげもなく詰め込まれています。
いくつかは、世のベテランも独自に会得して、いざという時の秘策や切り札にしているような知識まであるのでは…。

理論倒れでなく、開発の現場で地に足を着けて苦労の末に気づく本質、
あるいは余程のことがなければ他人には教えないような秘訣も、書いてしまっているようです。

年寄りと見なされつつ、経験とノウハウで必死に若い理解力や柔軟性に負けじと踏ん張る身としては
こんなことまで教えてしまったら困る、という思いさえ心をよぎらずには居れません。
数千円で、誰でも買えてしまって良いものか。

そう言う自分自身も、今まで洞察しえなかった知識を多く得て、何というか、
著者には感謝のような思いも感じます

良書、と言ってよいと思います。
昔日の日々、C言語とは文法を覚えて書くだけ(まあコンパイルされたアセンブラレベルとかわかるとすごーい、なんて言われてたり)、それだけでプロとして認識された。
しかし学生ではなく職業としてコードを書く人の求められるスキルレベルは現在非常に高い。デザインパターンを知らないコード書きはありえない。継続的インテグレーションをちゃんと理解してないコード書きもありえない。もちろん現代のリファクタリングテクニックはXPにおいて必須である。
でもそんなの知らずにコード書いてる人がたくさんいるのは、事実であり日々むかつく。そんな昭和なコード書きに投げつけてやりたい本である。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
「美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、
自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ」(本書「はじめに」より)。

コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。
名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。
またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。

日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。  
内容サンプル
 
User Voice
このコードどうなの?と思い始めた人向けの本です。

業務で、他人が作ったコードを読め、動作するコードも書けています。
しかし、他人のコードは読みにくかったりしませんか?
また、自分のコードは見直して理解しやすいでしょうか?
そんな悩みの解決につながる内容になっています。
例えば以下の内容等があります。
・誤解されない変数名のつけ方
・コードを論理的な段落に分ける書き方
・returnを早めるガード節の考え方

どこかで聞いたことがあるかもしれません。それらの体系的な理解に役立ちます。
相手に伝わるコードが書けているかな?と悩みのある人にお薦めの本です。
コメントとコードの2つについて書かれています。

コメントについては、必要・不必要の分類があって、必要なものについてそれぞれ解説がついています。例えば、頭の中で考えたことを書きなさいね!とか。
コードは、表記のルールつくれよ、とか、リファクタリングなど。

自分は、コードは我流でやってきたところがあるので結構勉強になりました。
特に、
・関数とか変数の名前は意味がわかるようにつける
・コメントにtodoを書く
・頭の中で考えたことはどんどんメモする
とか。

上に列挙したものについて「そんなの当たり前だよ。」っていう人は読む必要ないかもしれないすね。
以前知り合いに借りて読んだことがあるのですが、改めて読み直す機会があり購入しました。
エンジニアは一人一冊持っていて、間違えはないと思います。
ただ、英語でもOKという方はpdfが無料であるみたいなのでそちらのほうがいいかもしれません。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
アジャイルなソフトウェア開発の実践において、プログラムの改善にリファクタリングは欠かせません。
同様に、プロジェクトを本当の意味で改善するためには、開発にかかわる人間の脳(ウェットウェア)をリファクタリングすることが重要だと思いませんか?
そこで、認知科学、神経科学、学習理論、行動理論などを駆使し、人間の脳がどのように機能するかを明らかにします。

本書で紹介するテクニックを実践すれば、読者の学習スキルおよび思考スキルは向上、日々の生産性を20%から30%改善できると著者は主張します。
名著『達人プログラマー』の著者、アンディ・ハントが語る「あなたの脳をリファクタリングする」方法です。  
内容サンプル
 
User Voice
「達人プログラマー」の共著者であるAndy Huntの渾身の一作といえるかもしれない。
個人的にはかなりの当たり本だと思う。

内容は仕事の上達論、右脳左脳の話、意識的な学びの方法、など
知識労働者(エンジニア特にプログラマー、あるいは作家など)であれば、
一読して損はない内容だと思う。

Andy Huntはソフトウェアエンジニア出身とあって、
比喩や事例などはほとんどプログラマー向けのコンテクストで、
他の分野の人が読んでもピンと来ないのではないかと思う(笑)。

この本の対象は職業プログラマー、その中でも
「プログラマーは現代の職人である」とい思いを持っていて、
自ら職業としてその道をつっぱしりたい人には、非常に参考になる内容が書かれている。

冒頭で紹介される技能の上達に関するドレイファスモデルなどは、
まさに「達人プログラマー」になるための個人向けCMMみたいなものだ。
初心者/中級者/上級者/熟達者/達人の5段階がある。
引用されている「ベナー看護論」はぜひ読んでみたい一冊だ。

印象に残ったところで、
初心者クラスのプログラマーが学んだばかりデザインパターンのほとんどを、
小さなコードにつめこんだ話が出てくるが、あまりにありがちで笑うに笑えない。

初心者はあらゆる可能性を検討してしまうが、
達人クラスは、直感を使って必要にして十分な最適解をいきなり出してしまう。ということを書いている。

これなどは、将棋の羽生さんの「直感力」に書かれていることと同じだ。
将棋を指す際に、できるだけ手を読むのではなく、その局面において明らかに読まなくて
良い手はまず除く。できるだけ不要な手を読まない。というスタンス。

この「検討しなくて良いこと」が何かが判断できるためには、知識や経験を積むしかない。
つまり、ドライファスモデルに従って、一段ずつ地道にあがるのが正しい。

この本には、その階段を上がるための基礎体力を鍛える方法が惜しみなく書かれている。
 技能には、初心者、中級者、上級者、熟練者、達人の5段階があるというドレイファスモデルを紹介し、上級者と達人の間の非連続的なギャップを明らかにする。全8章からなるこの本の第1章の初心者から達人への道という章に共感できるかどうかが、この本の評価を分けることになる。上級者はえてして、その上のレベルがあることに気付かず、そこで満足しがちであるという現場で起きている現象を鮮やかに説明しきっている。
 さらに上を目指す上級者のためのレシピが残りの7章である。脳の構造とLモードとRモード(よく言われている左脳・右脳の働きをモードとして表現した用語)で説明し、達人への道としてRモードへの転換の必要性を示す。そのための具体的トレーニングも説明している。いろんな例と丁寧な説明でわかりやすい。
 ここで書かれているレシピが適切なものかどうかは別にして、ドレイファスモデルについて記述された第1章を読むためだけに購入しても価値がああると思う。
 本書のメッセージは、初心者、中級者、上級者、熟練者、達人の夫々の習熟度の段階において、必要とするツールが異なるということだ。初心者には、定型的な手順書が必要であり(その代わり臨機応変な判断を期待しない)、達人には臨機応変に行動するための柔軟な環境が必要である。
 ここで問題は、どうすれば初心者から中級車、そして上級者、最後に達人と習熟度を上げていけるか?という方法であり、本書はこの方法について述べている。
 世の中のHow to 本が、初心者向けのツール(定型的な手順:例えば「重要なものから先に実行せよ」など)を提供しているのと比べ、本書は初心者から達人になるための方法を記している点が特徴である。キーワードは、「学び方を学ぶ」である。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
リファクタリングは、システムデザインの改善や保守性、拡張性、パフォーマンスの向上
など、開発での幅広い有効性が証明されてきました。本書は、データベースシステムのために設計された強力なリファクタリング・テクニックを紹介しています。テーブル構造やデータ、トリガーなどをほんの少し手直しするだけで、どんなデータベースデザインも強化でき、無駄な再作業や余分なコストを省くことができるようになります。また、一連の決まったプラクティスの概略が述べられており、データベースの設計・開発にたいして、アジャイルな手法をどう取り入れるべきかが明確に示されています。不可能だといわれていたデータベースのリファクタリング・テクニックを確立したのは、アジャイル手法の第一人者スコット・アンブラーと高名なコンサルタントピラモト・サダラージ。彼らのおかげで、エンタープライズアプリケーションアーキテクチャに携わる開発者やデータベースの専門家は、自信を持って、しかも安全にデータベース設計に変化を取り入れることができるようになるでしょう。  
内容サンプル
 
User Voice
とは、プログラムの外部から見た動作を変えずに
ソースコードの内部構造を整理するためのテクニックです。
リファクタリングとユニットテストによって、アジャイルのような
ユーザ要件の変化に合わせて段階的に設計・実装を行うスタイルの開発が可能になりました。

しかし、本書の前書きにあるとおり、リファクタリングが有名になっても
データベースに対してリファクタリング手法を適用することは一般的ではありませんでした。
稼働中のデータベース内に存在する大量の「データ」を失う訳にはいかないからです。

本書では、データベースのリファクタリングをデータの移行手順まで踏まえた上で紹介しています。
本書を読み進め、データベースリファクタリングのパターンを理解していくことで
データベース開発においても、アジャイルさを得ることができるかも知れません。

ちなみに、本家リファクタリングのプラクティスがEclipse等で自動化されているように、
本書で紹介されているデータベースリファクタリングもLiquibaseというツールで自動化されています。
実際に、本書のプラクティスを適用する際には、このようなツールを探してみるのも一考です。
サンプルDBでおなじみの銀行口座を例にあげて、DBとアプリの一貫性を損なわないよう細心の注意を払いながらDBを再編する技法を詳細に解説している。永らく使われてきたDBの保守を受身でなく前向きに取り組む上での心構えを含めて考えさせられる本である。
日本でも、銀行とその系列のノンバンクに波及する合併・再編は普通の出来事となり、それに伴って、銀行の情報システムのトラブルもマスコミで数多く取り上げられている。
銀行をはじめとする金融分野に限らず、既存システムの再構築にあたってSEが読むべき本として推奨したい。
データベースもアジャイルに作ろう!
そのために必要な、データベースの変更に関する
各種テクニックを紹介した本です。

表の変更、列を追加する、表の名前を変える、
参照整合性を追加する・・・などなどの
データベースに関する変更が対象となっています。
物理的な設計、実装が対象となっています。

変更内容ごとに、
変更するためのSQL、移行の方法、移行に必要なSQL、
AP側の処理の変更、移行等で利用するストアードプロシージャ
等が紹介されています。
SQLやストアードは、Oracleのものです。

別にアジャイルでなくても、アプリケーション開発や保守
を行っていれば、必ず直面する問題だし、
DBAをやっていれば、同じような解決策をとってるような
印象を受ける内容が多かったです。

これからDBAとして、腕を磨くぞ!という本でしょうか。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead Firstシリーズのデザインパターン編。
刺激的なレイアウト、思わず膝を叩く見事なたとえ、引き込まれる小話、楽しいクイズやパズルで飽きることなく読み進むことができます。
複雑難解なデザインパターンの概念が面白いほどよくわかる、目からウロコの画期的な書籍です。  
内容サンプル
 
User Voice
典型的な初心者が書くコードとデザインパターンを導入したコードを比較することでどのような効果を得られたのか理解できるようになっている。並行して、アーキテクチャの説明がなされている。スクリプト言語のユーザーであればオブジェクト生成に関連するパターンを一通りやっておけばよいだろう。2009年に GoF のメンバーのインタビュー (Design Patterns 15 Years Later) によれば、GoF のカタログの改定版には Null Object、Type Object、Dependency Injection、と Extension Object/Interface が追加され、Singleton が削除された。
息子に薦められて購入。全部で13章あり3章の途中まで読んだ。これは面白い!デザインパターンというコトバ、聞いたことはあったが内容は今まで知らなかった。期せずして随所に「再利用」というコトバが登場していて心強い。デザインパターンを適用して課題を解決していく例題はJavaで記述され説明されている。自分にはJavaの経験はないのだが、オブジェクト指向プログラムの考え方(概念)を例題で学ぶことにもなっている。
重要なデザインパターンとその背景にある考え方を分かりやすい実例を通して学べる良書です。
Java初心者の私にも簡単に読めました。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   
本書の内容
さらにわかりやすくなった! デザインパターン入門書の決定版!!

GoFの『デザインパターン』で紹介された23個のパターンを、オブジェクト指向の初心者にもわかるようにやさしく解説。
すべてのパターンについて、Javaのサンプルプログラムを掲載。「デザインパターンQ&A」を新たに加筆。


●第1部 デザインパターンに慣れる

第1章 Iterator--1つ1つ数え上げる
第2章 Adapter--一皮かぶせて再利用

●第2部 サブクラスにまかせる

第3章 Template Method--具体的な処理をサブクラスにまかせる
第4章 Factory Method--インスタンス作成をサブクラスにまかせる

●第3部 インスタンスを作る

第5章 Singleton--たった1つのインスタンス
第6章 Prototype--コピーしてインスタンスを作る
第7章 Builder--複雑なインスタンスを組み立てる
第8章 Abstract Factory--関連する部品を組み合わせて製品を作る

●第4部 分けて考える

第9章 Bridge--機能の階層と実装の階層を分ける
第10章 Strategy--アルゴリズムをごっそり切り替える

●第5部 同一視

第11章 Composite--容器の中身の同一視
第12章 Decorator--飾り枠と中身の同一視

●第6部 構造を渡り歩く

第13章 Visitor--構造を渡り歩きながら仕事をする
第14章 Chain of Responsibility--責任のたらい回し

●第7部 シンプルにする

第15章 Facade--シンプルな窓口
第16章 Mediator 相手は相談役一人だけ

●第8部 状態を管理する

第17章 Observer--状態の変化を通知する
第18章 Memento--状態を保存する
第19章 State--状態をクラスとして表現する

●第9部 無駄をなくす

第20章 Flyweight--同じものを共用して無駄をなくす
第21章 Proxy--必要になってから作る

●第10部 クラスで表現する

第22章 Command--命令をクラスにする
第23章 Interpreter--文法規制をクラスで表現する
 
内容サンプル
 
User Voice
拙者プログラミング初心者、
デザインパターンのデの字しか知らないのに、
友人たちがシングルトンが好きだのファクトリーだというから悔しくなって
デザインパターン本を買ってみた

古めの本にもかかわらず、
ランキングで高い位置に居るだけ合って内容はとてもわかりやすく、
サクサク読み進めることができた。

卍デザインパターン完全に理解した卍

とてもおすすめです。
Javaを仕事で使用していて、それなりの規模のプログラムを開発するとき、デザインパターンの知識は必須です。
特に、既存のプログラムの保守や拡張をするとき、既存のプログラムがデザインパターンを利用しているかどうか見分けて、そのパターンの意図を理解できないといけません。
逆に、パターンを知っていると、コード内にパターンを示す命名や使われていたり、コメントが残されていると、それだけで何をしているコードなのか理解も推測もしやすいです。
この本はまずパターンを利用するプログラム例を解説し、その後で抽象的な説明となっています。
内容としては上手くまとめられていて非常にわかりやすく,object指向のプログラミングを学びたい方にお勧めできる一冊となっています。
ただしjavaという言語に触れたことのない方が読んで理解するのは難しいと思います。そのような方はこの本の作者である結城浩先生が書かれた,"Java言語プログラミングレッスン"の上下巻を読んでからこの本に入った方がよいかもしれないです。私がそうでしたがプログラミングを多少やっている方ならサクサク読み進めることができます。
 
   
本書の内容
オブジェクト指向ソフトウェア設計の際に繰り返し現れる重要な部品をデザインパターンとして記録し、カタログ化。改訂版ではこれにCD−ROMを添付、現場でブラウザを通して即利用できるパターンカタログデジタル版を収録。特別付録として、原書にはないJavaのサンプルコードを追加。
【技術書翻訳名著シリーズ】
ソフトウェア開発のバイブル群! 弊社がこれまでに刊行した翻訳技術書の中から、長年読者から支持され続けている名著を厳選したのが、本シリーズです。移り変わりの激しいコンピュータ業界で、普遍性を保ち続ける定番をお届けします。ソフトウェア開発の上流から下流まで、入門書からエキスパート向けまで、技術者に求められる選りすぐりの情報がここにあります。
 
内容サンプル
 
User Voice
確かにこの本は予備知識なしに読むのは難しいですね。
まず、"デザインパターン"とは何かということを、そしてその記述の仕方(パターン名、問題、解決、結果)を第1章で説明されていますが、事前に知っておいたほうが読みやすいと思います。
第2章ではLexiというTexに似たドキュメントエディタのなかにどんなデザインパターンが使われているか書かれています。個人的にもデザインパターンを説明するにはテキストエディタや描画エディタが最適だと思い、2章も押さえておくと以降も理解しやすいです。
第3章以降でやっとそれぞれ(生成、構造、振る舞い)のデザインパターンが紹介されています。"生成"、"構造"、"振る舞い"というのが何を意味しているのか初めはよくわかりませんでしたが、各パターンを見ていくうちにこの区別の仕方が理解できます。
ただし各章を順番どおりに読んでいくのではなく、後へ先へページを何度もめくっていく中で理解していくことができるでしょう。
「デザインパターン」を学ぶ上で、結城浩氏の「Java言語で学ぶデザインパターン入門」やW.J. ブラウンの「アンチパターン―ソフトウェア危篤患者の救出」もお勧めです。
この本は、SEがプログラムの詳細まで指示をして、末端に極力考えさせないようにする日本のIT土方には全く不要だと思う。
ではSEならば初期のスクラッチモデルを作るとき、この本が役に立つかというと、それもそうではない気がする。

いまの日本ではデザインパターン自体を直接プログラム製造に生かす機会は少ないのではないだろうか。
スクリプトもマシンの力業でパターンを使わずに作れる。

この本の用途としては、オブジェクトに対する感覚といった、プログラムのセンスを磨くための本であると私は考えている。例えばFlyweightにあるIntrinsicとExtrinsicのように、プログラムの全体要素を多数と少数の部分に切り分けるといった、全体の中の大小のトレードオフをする感覚といったものを(今となっては)磨くことができるのではないだろうか。あとライブラリを作る時にも参考になると思う。
ウェブサイトでまとめてある物では何故その設計思考に至ったのかが書かれていなかったり、
どの様なときに使うべきかなどが曖昧だったりする場合が多く、表面だけ真似て批判する人も多いので、この本を買った。
予想通り、何故この様な設計に至ったのかが書かれていてよかった。
現代では言語仕様に組み込まれている場合もあり、意味のないデザインパターンも存在するが、考え方を学ぶには良さそうです。
設計の話を巻き起こした原点とも言えるので一読の価値あり。
 
   
本書の内容
新品未使用品です。店頭陳列しておりましたので、表紙にスレ傷などございますが、商品には問題ございません。一部ヤケ、スレなどがある場合がございますので、完全に新品が良い方はご遠慮下さいませ。ご注文後、Amazon.co.jp 配送センターより迅速に発送されます  
内容サンプル
 
User Voice
VB.NETで書かれた案件では、中途半端なオブジェクト指向に遭遇することがあります。
可読性の悪いコードでも、辛抱して改修や機能追加をしてきましたが、
この本を読んで、「まずはリファクタリングしてから取り掛かる」価値を知りました。
実際にやってみると、確かにそのとおり。
今では可読性の悪いコードに遭遇しても、気が重くなることはなくなりました。

また実装中には、常にリファクタリングの習慣が働くのでコードの無駄が減りました。
それに以前は、複雑な動作を設計段階で定義しようとして工数を割いていましたが、
今では設計で定義し辛い部分は適当に切り上げ、
実装で解決して設計ドキュメントに戻すやり方でプロジェクトの進捗が早くなりました。
良い設計や実装は、クラスの構造やメソッドの動作を理解していなくても、
「コードの形」を真似るだけで機能追加や変更ができるのは、皆さん周知のところと思いますが、
この本に従って作業すると、そのようなコード部分が増えて生産性が向上するのが実感できます。

値段で購入をためらっていましたが読んでみて、それだけの価値がある本だと感じています。
この本は著者のXPでのリファクタリングの経験をカタログ形式でまとめたもので、ソフトウェアを少しずつ日々改善し、ソフトウェアが肥大化が修正を困難にしないようにする小さな手法の集まりを紹介しています。ソフトウェアの構造に日々手を加える(部分的な再設計の)ための、問題点の発見の仕方、直し方がカタログ化されています。
書いてあることの個々の内容は比較的単純なものばかりですが、まずい設計が示唆する問題点、改善による効果、リファクタリングが可能な条件、リファクタリング時に見落としがちな点の指摘などが十分に書かれていて、リスクと効果をよく考えながらリファクタリングが出来るようによく配慮された内容になっています。プログラミング初級者にとって、とても勉強になる内容だと思いますが、経験を積んだプログラマにも日々のプログラミングのチェックリストとして非常に役に立つのではないかと思います。
JAVAでかかれているため、C++を使っている人には多少違和感がありそうですが、.NETプログラミングにはうってつけの内容だと思います。
これはイイです。
なんというか、プログラミングのベストプラクティスが載っているわけではありません。
しかし、
「最初からすげぇプログラムなんてできるわけないじゃん。とりあえず作って、後から体質改善すれば~?」
みたいなノリでプログラムってやっていいんだ。って感じです。
体質改善の為の基本的な処方箋が、ここにはあります。
ケント・ベック著の「テスト駆動開発入門」も、あわせて読めば、効果的かも。
 
   
本書の内容
 
内容サンプル
 
User Voice
 GoFデザインパターン解説書の体裁をとった「オブジェクト指向設計」入門。コンパクトにまとめられた良書だと思う。

 対象読者は、Javaの文法を一通り理解しており、プログラミングにも慣れてきた頃のJavaプログラマ。GoF本のデザインパターン23種類を順に取り上げ、各パターンの目的・効果・背景・サンプルプログラム・注意点を簡潔に述べていく。ただし、デザインパターンをすぐに使いこなせるように読者を導くことが本書の狙いではなく、デザインパターンを教材として「良いクラス設計とは何か」の指針を与えることに主眼を置いている。

 そのため、各パターンの解説では、そのエッセンスだけを簡潔に伝えることに注力されている。サンプルプログラムは全てJavaで記述されているが、どれも「Hello, World!」レベルなので、Javaプログラマでなくても内容を理解できると思う(巻末に、サンプルプログラムを理解するために最低限必要なJava言語仕様が25ページ程度にまとめられている)。

 開発の現場から生まれた本、という印象を受けた。各パターンの解説の最後に置かれた「注意点」が秀逸で、「そのパターンを用いる場合、何に注意しなければならないか」「そのパターンを用いない方がいいのはどのような場合か」「そもそも、デザインパターンを適用することで解決できるような問題はそれほど多くない」といった類の指摘に説得力がある。また、デザインパターン万能論とも言える数々の「誤解」について述べた最終章「デザインパターンの難しさを理解する」も面白い。
デザインパターンの入門書はたくさんありますが、どれもそのパターンが生まれた経緯など、理屈ばっかりなところが多くわかりづらいと感じていました。
一方、この本では、どんな時に使うパターンかが一言、そのパターンを使うと何がよいか、簡単なサンプルコードという構成で完結にまとめられていて、非常にわかりやすいです。

他の本を数冊読んだので、すでにパターン使えるようになっていましたが、最初にこれを読んでおけば遠回りしなかったのかな・・・と思いました。
デザインパターンを初めて勉強する人向けには★5つです!
「徹底攻略」とタイトルにあるが、どちらかというとデザインパターンとはどういうものかを解説した入門書に近いものがある。したがって、初めてデザインパターンを学ぶ方には適していると思われる。サンプルソースはごく平易なものを採用しているが、やはり基本的なJava知識は必須。また、デザインパターンに対する過剰意識(誤解)なども後半にまとめられているのも嬉しい。実践に繋げていくためには、本書を読破するだけでは難しいが、発想の手助けになってくれる一冊である。
 
   
本書の内容
 
内容サンプル
 
User Voice
 
   

リファクタリング 高評価のおすすめ本 ランキング

人気 1位
本書の内容
ソフトウェア開発の名著、第2版登場!
リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。
本第2版では、約20年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードがJavaからJava Scriptになるなど、現代的にアレンジされています。  
内容サンプル
 
User Voice
1版、Java版は蔵書としてあるのですが。所属している会社ではフロントエンド寄りの業務が多く、プログラムというとwebでJavaScriptのみ(たまにPHP)で完結することが多い環境にいる人です。

JSで1ファンクションが長くても100行、200行程度、ランディングページとかで継続的メンテナンスは求められない。
なのでどうしても「ベタ書き、とりあえず動けばいい、なるはやで」というコーディングが重宝される。
そんな環境です。(でした?かな。それだけではやっていけなくなっているので)

はい。”ブラックボックス”だらけです。大半のコードを書いた人たちはもう社内にいません、よくある話です。
・長大なファンクションを、入れ子ファンクションできりわける
・一時変数の特定、いらないやつは撲滅
・異常系の検出がおろそかだったので、オブジェクト自身に異常検出機能をつけてみた
などを、「夏休みの宿題・工作」みたいな感じでメンバといっしょに取り組んでいます。

本書について。
文章の言い回しは固くはないのですが、あつかっている処理ちょっと難しい話なので、誰でもがさらっとよめる本ではないようです。しかしサンプルがJavaScriptなので、とりあえず「記載されているコードの意味」はわかってもらえているようです。

最後に。
本書に盲従する必要はないとは思います。いろんなスタイルの一例です。
ただ、本書を通じることで、ある程度の共通認識を持ったうえで、コーディング職人の間での意見交換や価値観論争などは良いことかな、と思いました。

最後の最後に。
急激な変化を嫌う人もいるので、「押し売り」にならないように気を付けて。
コードを書くうえでなんとなく汚い、綺麗でない、もっとよく書けるのでは?と疑問を持った時に読むととても参考になる本だと思います。2版になり現在の主流ともいえるJavascriptで書き直されている点も高評価の要因です。
高いけど良い本です。
 
   
人気 2位
本書の内容
C言語開発をモダンにしよう!

本書は、統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションなどのモダンな開発スタイルを組込み開発に適用する方法を解説します。  
内容サンプル
 
User Voice
組込み系開発では、このご時世になってもC言語が主流です。
そのため、C言語に関する書籍は数多く出版されていますが、着目する箇所が他の書籍と異なります。
特に、以下の点です。
・環境構築法の記載
・オブジェクト指向的な実装方法
・ツールを活用した開発方法

・環境構築法の記載
環境構築の方法がしっかり記述されていることに驚きました。
書籍によって、各自で構築というケースも少なくないため、手間取ることも多かったと思います
本書では、様々なツールの導入方法がキャプチャ画像付きでしっかり記述されていました。
非常に助かりました。

・オブジェクト指向的な実装方法
エンプラ系では、オブジェクト指向が主流のご時世ですが、C言語でうまく実装できないか悩んでいました。
本書では、多態性や継承、デザインパターンなどをC言語で記述する方法がしっかり記述されています。
特に、C言語を極めたいエンジニアには良いと感じました。

・ツールを活用した開発方法
一番勉強になった点は、ツールの活用方法がしっかりかかれている点でした。
特に、googletest、カバレッジ測定、Valgrindの使い方は、組み込み系エンジニアなら役に立つはずです。
著者の目の付け所がすごいです。

一通り読んでみて、C言語を使いつづけるエンジニアには、読むべき書籍です。
著者の10年分の知識が、一瞬で身に付きます。

なお、対象はC言語中級レベルだとスラスラ読めます。
2回通して読みました。自分には大当たりの技術書です。

C言語、という書名ですが、C言語に固有の本ではありません。
ソフト設計に共通して当てはめられる本質的な考え方やノウハウが、
Cを例に使って説明されてる、というのが正しいです。(実際この著者はJavaの本も書いてるようです)

恐らく、10年以上 真剣に設計に向き合ったソフト屋しか知り得ないようなノウハウが
惜しげもなく詰め込まれています。
いくつかは、世のベテランも独自に会得して、いざという時の秘策や切り札にしているような知識まであるのでは…。

理論倒れでなく、開発の現場で地に足を着けて苦労の末に気づく本質、
あるいは余程のことがなければ他人には教えないような秘訣も、書いてしまっているようです。

年寄りと見なされつつ、経験とノウハウで必死に若い理解力や柔軟性に負けじと踏ん張る身としては
こんなことまで教えてしまったら困る、という思いさえ心をよぎらずには居れません。
数千円で、誰でも買えてしまって良いものか。

そう言う自分自身も、今まで洞察しえなかった知識を多く得て、何というか、
著者には感謝のような思いも感じます

良書、と言ってよいと思います。
昔日の日々、C言語とは文法を覚えて書くだけ(まあコンパイルされたアセンブラレベルとかわかるとすごーい、なんて言われてたり)、それだけでプロとして認識された。
しかし学生ではなく職業としてコードを書く人の求められるスキルレベルは現在非常に高い。デザインパターンを知らないコード書きはありえない。継続的インテグレーションをちゃんと理解してないコード書きもありえない。もちろん現代のリファクタリングテクニックはXPにおいて必須である。
でもそんなの知らずにコード書いてる人がたくさんいるのは、事実であり日々むかつく。そんな昭和なコード書きに投げつけてやりたい本である。
 
   
人気 3位
本書の内容
■「ITエンジニア本大賞 2020」技術書部門大賞受賞!

レガシーコードとは、バグを多く含み、壊れやすく拡張が難しいコードを指します。
このようなコードの保守と管理には多大な労力がつぎ込まれることになります。
しかも一度作ってしまったレガシーコードの質を上げるには、初めから質の高いコードを作るよりも膨大なコストがかかります。

本書では、ソフトウェア開発において、初めからレガシーコードを作りださないためのプラクティスを9つ挙げて解説します。
プロダクトオーナーは目的を語り、やり方は開発者に任せること、小さなバッチで開発を進めること、継続的に統合すること、チームメンバーで協力することなど、日々の開発に取り入れる考え方と具体的な実践について各章で分かりやすく解説します。
信頼性や拡張性が高いソフトウェアをリリースしたい開発者、運用管理者、マネージャに必携の一冊です。  
内容サンプル
 
User Voice
ベストセラーになってますし、すでに読まれた方も多いと思います。間違いなく定番本の一つです。
著者がXP(エクストリームプログラミング)のコーチらしく、述べられているプラクティスの多くはXP由来となっています。
ただ、アジャイル開発手法に変わりはありませんので、スクラムでも適用できる内容です。ウォータフォール?そんな開発手法は存在しませんよ?
副題の9つのプラクティスは以下の通りです。

- やり方より先に目的、理由、誰のためかを伝える
- 小さなバッチで作る
- 継続的に統合する
- 協力しあう
- 「CLEAN」コードを作る
- まずテストを書く
- テストでふるまいを明示する
- 設計は最後に行う
- レガシーコードをリファクタリングする

自分のプロジェクトでも、これらのプラクティスは(ややアレンジはあるものの)実施しており、適切なシステム開発を行うためのミニマムセットになっています。
逆に、できてないものがある場合は、そのシステム開発は何らかの問題を抱えているということになります。
プロジェクト管理者はもちろん、システム開発に関わる全ての人が知っておくべき内容が詰まっています。
システム開発プロジェクトの新規参画者に対しては、オンボーディングで最初に読んでもらうのがいいと思います。
C言語やBASIC言語は学校の座学で知っている程度、営業職などを経て、ここ最近、実務でjQueryありきのJavaScriptコードを数年ほど扱っている末端コーディング人です。

読んだ後の感想。
「自社の財産」とされているコードの大半(率直にいうとほとんど全部)が、この本で言われている「レガシーコード」だと気づくことができました。
オーダーされて旧コードに「機能拡張」などもしているのですが、それがハック的に割り込みしているだけだと自覚できました。

雑談などでもしゃべりやすい同僚から先に、本書を布教しています。わりと共感してもらえて、半年後が楽しみです。

目先の目標としては
・マネージメントの人にも読んでもらう
・本書から共通認識として取り入れられそうなことを、チームとして共有してとりくむ
・会社の経費でオライリー本を買ってもらう

というところです。
今の私にとっては、得るものが多すぎる、とても良い本です。
ちと3千円という価格に躊躇したが買ってよかった。アジャイルでもwater fallでも情報はwebや本に溢れている。でもそれらは本質を得ているかと言うと、初心者のための入門書である。しかしプロジェクトに従事し、そのプロジェクトが継続的なプロジェクトになると話は違ってくる。コメントが書いてない誰が書いたかわからないコード、当然単体テストなんてものはないし、あったとしても単体テストがなにをやってるかわからない。コード品質にしても、なんでクラス関数が50個もあるの?クラス使ってる意味ないじゃん!みたいな組織は多いのではないか。そういったプロジェクトを管理する人には最適であり、日本語で読める唯一の本のような気がする。「レガシーコード改善ガイド」とかマーティンファウアーの本とかはいい本だが、コード書く人よりのガイドであるので、この本とはちょっと方向性が違う。数年間同じ製品を開発し、努力しても製品品質があがらないマネージャ向けだが、若い開発者も読んで損はない本だと思う。
 
   
人気 4位
本書の内容
※このKindle本はプリント・レプリカ形式で、Kindle Paperwhiteなどの電子書籍リーダーおよびKindle Cloud Readerではご利用いただけません。Fireなどの大きいディスプレイを備えたタブレット端末や、Kindle無料アプリ (Kindle for iOS、Kindle for Android、Kindle for PC、Kindle for Mac) でのみご利用可能です。また、文字列のハイライト、検索、辞書の参照、引用については、一部機能しない場合があります。文字だけを拡大することはできません。
※プリント・レプリカ形式は見開き表示ができません。
※この電子書籍は紙版書籍のページデザインで制作した固定レイアウトです。

ソフトウェア開発の名著、第2版登場!
 リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。
 本第2版では、約20年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードがJavaからJava Scriptになるなど、現代的にアレンジされています。


第2版翻訳にあたって
初版の「本書に寄せて」
はじめに
Chap.1 リファクタリング-最初の例
Chap.2 リファクタリングの原則
Chap.3 コードの不吉な臭い
Chap.4 テストの構築
Chap.5 カタログの紹介
Chap.6 リファクタリングはじめの一歩
Chap.7 カプセル化
Chap.8 特性の移動
Chap.9 データの再編成
Chap.10 条件記述の単純化
Chap.11 APIのリファクタリング
Chap.12 継承の取り扱い
文献リスト 
訳者あとがき
索引  
内容サンプル
 
User Voice
1版、Java版は蔵書としてあるのですが。所属している会社ではフロントエンド寄りの業務が多く、プログラムというとwebでJavaScriptのみ(たまにPHP)で完結することが多い環境にいる人です。

JSで1ファンクションが長くても100行、200行程度、ランディングページとかで継続的メンテナンスは求められない。
なのでどうしても「ベタ書き、とりあえず動けばいい、なるはやで」というコーディングが重宝される。
そんな環境です。(でした?かな。それだけではやっていけなくなっているので)

はい。”ブラックボックス”だらけです。大半のコードを書いた人たちはもう社内にいません、よくある話です。
・長大なファンクションを、入れ子ファンクションできりわける
・一時変数の特定、いらないやつは撲滅
・異常系の検出がおろそかだったので、オブジェクト自身に異常検出機能をつけてみた
などを、「夏休みの宿題・工作」みたいな感じでメンバといっしょに取り組んでいます。

本書について。
文章の言い回しは固くはないのですが、あつかっている処理ちょっと難しい話なので、誰でもがさらっとよめる本ではないようです。しかしサンプルがJavaScriptなので、とりあえず「記載されているコードの意味」はわかってもらえているようです。

最後に。
本書に盲従する必要はないとは思います。いろんなスタイルの一例です。
ただ、本書を通じることで、ある程度の共通認識を持ったうえで、コーディング職人の間での意見交換や価値観論争などは良いことかな、と思いました。

最後の最後に。
急激な変化を嫌う人もいるので、「押し売り」にならないように気を付けて。
コードを書くうえでなんとなく汚い、綺麗でない、もっとよく書けるのでは?と疑問を持った時に読むととても参考になる本だと思います。2版になり現在の主流ともいえるJavascriptで書き直されている点も高評価の要因です。
高いけど良い本です。
 
   

Copyrights hogehoge