
マイケル
みなさんこんにちは!
マイケルです!
マイケルです!

エレキベア
こんにちクマ〜〜〜

マイケル
今回は久しぶりに読んだ書籍についての感想と紹介をしようと思います!
今回紹介する書籍はこちら!!
今回紹介する書籍はこちら!!


マイケル
「達人プログラマー」!!
定番オブ定番の名著です!!
定番オブ定番の名著です!!

エレキベア
で、出た〜〜〜〜〜〜

マイケル
よく見かけるので存在自体は知っていたのですが、
読んだことがなかったので、これを機会に読んでみました!
ざっくりとした感想としては、評判通り「エンジニアなら一度目を通しておいて損はない」内容になっていたと思います!
読んだことがなかったので、これを機会に読んでみました!
ざっくりとした感想としては、評判通り「エンジニアなら一度目を通しておいて損はない」内容になっていたと思います!

マイケル
そして時折ジョークの効いたユニークな表現も盛り込まれているので
単純に読み物としても面白かったです!
単純に読み物としても面白かったです!

エレキベア
爬虫類脳なんかはよく聞くクマね

マイケル
とはいえ最初に読み始めた時は少し分かりにくい箇所もあったので、
その辺りも踏まえつつ、感想と内容のまとめをしてみようと思います!
その辺りも踏まえつつ、感想と内容のまとめをしてみようと思います!

エレキベア
楽しみクマ〜〜〜〜
各章ごとのカテゴリ

マイケル
達人プログラマーでは、9章にわたって100個のプログラマーにまつわるTipsが紹介されており、基本的にはどこから読んでも分かるようになっています。
長年続けているプログラマーならあるあるの事項から普段意識していなかった点についても見直すことができると思いますし、始めたばかりの人であればこれから関わる広い範囲の知識をざっくりと得ることができるので、全プログラマーにおすすめの内容になっています。
長年続けているプログラマーならあるあるの事項から普段意識していなかった点についても見直すことができると思いますし、始めたばかりの人であればこれから関わる広い範囲の知識をざっくりと得ることができるので、全プログラマーにおすすめの内容になっています。

エレキベア
100個はボリュームがすごいクマね〜〜〜

マイケル
しかし、自分が読みながら分かりにくいな・・・と思った点もありまして、それはユニークな表現にしているが故に各章の題目だけで何が言いたいのかが読み取りにくかったことです。
この辺りのイメージをざっと踏まえておくと頭に入りやすいので、これから読み始めようと思っている方の参考になればと思います。
この辺りのイメージをざっと踏まえておくと頭に入りやすいので、これから読み始めようと思っている方の参考になればと思います。

マイケル
ざっくりにはなりますが、各章は下記のようなカテゴリに分かれています。
章 | カテゴリ |
---|---|
1. 達人の哲学 | マインド |
2. 達人のアプローチ | 設計(設計の考え方、進め方) |
3. 基本的なツール | ツールの活用 |
4. 妄想の達人 | 設計(先を読んだ設計) |
5. 棚に雪折れ無し | 設計(コーディングの設計原則) |
6. 並行性 | 設計(並行処理の設計) |
7. コーディング段階 | コーディング手法 |
8. プロジェクトを始める前に | マネジメント |
9. 達人のプロジェクト | まとめ |

エレキベア
確かに「妄想の達人」「棚に雪折れ無し」あたりはパッと見でどんな内容なのかが想像つきにくいクマね・・・

マイケル
この辺りのイメージを把握しておくだけでも、かなり理解しやすくなると思います!
また、こうしてみると設計に関しての話が大半を占めていることも分かります。やはり設計も含めて行えるというのが、達人プログラマーになるために必要なことなのが伺えますね。
また、こうしてみると設計に関しての話が大半を占めていることも分かります。やはり設計も含めて行えるというのが、達人プログラマーになるために必要なことなのが伺えますね。

エレキベア
言われたままにコードを書くだけではとても達人とは言えないクマ〜〜〜
カテゴリごとのまとめ、感想

マイケル
それではざっくりとカテゴリ分けが出来たところで、
分けた5つのカテゴリごとにいくつかピックアップして、その感想についてまとめていきます。
分けた5つのカテゴリごとにいくつかピックアップして、その感想についてまとめていきます。
- マインド
- 設計
- ツール
- コーディング
- マネジメント

エレキベア
Tipsの紹介をしている記事が多そうクマが、
ここでは総まとめでいくクマね
ここでは総まとめでいくクマね
マインド
1.達人の哲学 より
- 割れた窓を放置しておかない
- 知識ポートフォリオを充実させる

マイケル
マインドとしては2つピックアップさせていただきました!
1つ目は「割れた窓を放置しておかない」ですが、こちらはソフトウェアの負債や腐敗は放置せずに発見と共に修復しましょう、といったTipsです。
放置された負債は増大したり、チームにネガティブな考えが伝染する、といった内容が「エントロピー増大の法則」「割れ窓理論」といった理論を例に解説されています。
1つ目は「割れた窓を放置しておかない」ですが、こちらはソフトウェアの負債や腐敗は放置せずに発見と共に修復しましょう、といったTipsです。
放置された負債は増大したり、チームにネガティブな考えが伝染する、といった内容が「エントロピー増大の法則」「割れ窓理論」といった理論を例に解説されています。

エレキベア
見なかったことにしよう・・・は一番まずいクマね

マイケル
そして「知識ポートフォリオを充実させる」については、下記のように進めるとよい、と紹介されていました。
・毎年1つは新たな言語を学習する
・月に1冊のペースで技術書を読む
・技術書以外の書籍を読む
・最先端にとどまり続ける

マイケル
まあこの辺りはあくまで目安で、個々人で目標は立てて進めれ馬いいのではないかと思います!
ただ、最先端の技術を学ぶことについては「技術には流行り廃りがあるため賞味期限がある」ことや、「安値で買い、高値で売るとよい」とも書かれていて、確かにエンジニアとしてやっていく上でそこは大事だなと思いました。
ただ、最先端の技術を学ぶことについては「技術には流行り廃りがあるため賞味期限がある」ことや、「安値で買い、高値で売るとよい」とも書かれていて、確かにエンジニアとしてやっていく上でそこは大事だなと思いました。

エレキベア
流行や先を読む力も重要になってくるクマね
設計

マイケル
設計については章が分かれているので、それぞれ簡潔に見ていきます!
2. 達人のアプローチ より
- DRY原則について
- 曳光弾を意識した進め方

マイケル
まず有名な「DRY原則」がここで出てきました。
これは「コードの二重化を避けるべき」といった原則で、コーディングする上では基本となります。
ただ、同じ処理でも表現しているものが異なるのであれば分けたほうがよかったりなど、何もかも共通にすればよいというわけではないので、悩みながら進める難しいところですね!
これは「コードの二重化を避けるべき」といった原則で、コーディングする上では基本となります。
ただ、同じ処理でも表現しているものが異なるのであれば分けたほうがよかったりなど、何もかも共通にすればよいというわけではないので、悩みながら進める難しいところですね!

エレキベア
DRY原則は心に刻んだほうがよさそうクマ

マイケル
そして「曳光弾」については比喩的な表現となっていますが、「狙いを定めてから肉付けしていく形で進める」といった内容になります。
プロトタイプと異なるのは、使い捨てではなく最終的なシステムの骨格となるという点です。
プロトタイプと異なるのは、使い捨てではなく最終的なシステムの骨格となるという点です。

エレキベア
向かう先が曖昧だとどこにも行きつかずなものになってしまうクマからね
4. 妄想の達人 より
- 契約による設計
- 防衛的なコーディング

マイケル
そして次は「妄想の達人」からですが、これは「妄想=予測」ともとらえることができます。
要は先も見据えた設計にしましょう、といった内容になります。
要は先も見据えた設計にしましょう、といった内容になります。

マイケル
「契約による設計」は、機能に対して「事前条件」「事後条件」「不変表明」を設定し、それらを満たしていることを担保する手法です。
「防衛的なコーディング」に関しては、例外は早めにクラッシュ(停止)させる、起こるはずがない事象に関しては表明を入れておく、といったようにどのような事象に対しても防衛的な考えでコーディングを行いましょう、といった考え方になります。

エレキベア
妄想が激しいことも必要なことなのクマね
5. 棚に雪折れ無し より
- 継承、委譲、責務、グローバル変数
- イベント(FSM、Observer、PubSub)
- 変換(パイプライン)
- 外部設定

マイケル
そして「5. 棚に雪折れ無し」に関しては、コーディング寄りな話になり、主な設計原則やよく使われるコーディング手法について解説されています。

マイケル
継承や責務の話に関してはざっくりとした内容が書かれています。
より細かいことを知りたくなった方はクリーンアーキテクチャを読みましょう!
より細かいことを知りたくなった方はクリーンアーキテクチャを読みましょう!

【ソフトウェア開発】設計の目的とSOLID原則についてまとめる【クリーンアーキテクチャ】
マイケルみなさんこんばんは!マイケルです!!エレキベアクマ〜〜〜マイケル今日はソフトウェア設計の考え方について、下記の書籍をベースにまとめてみました!Clean Architectur...
↑クリーンアーキテクチャの紹介記事

エレキベア
SOLID原則クマね

マイケル
イベント処理に関しても、プログラミングを行う上で避けては通れない処理です。
これらも過去記事で実際に実装した記事があるので、よければご覧ください!!
これらも過去記事で実際に実装した記事があるので、よければご覧ください!!

【Unity】カニの動きで学ぶ有限ステートマシン(FSM)【ゲームAI】
マイケルみなさんこんにちは!マイケルです!エレキベアこんにちクマ〜〜〜マイケル今日はUnityで 有限ステートマシン(FSM)について実装していくよ!エレキベアステートマシンって何クマ...
↑有限ステートマシン(FSM)の実装

【Unity】MessagePipeの基本的な使い方についてまとめる
マイケルみなさんこんにちは!マイケルです!エレキベアこんにちクマ〜〜〜マイケル今日はUnityのメッセージングライブラリである、MessagePipe の使い方について紹介します!エレキベ...
↑UnityのPubSubライブラリ

エレキベア
うーむ、懐かしいクマ〜〜〜
ツール
3. 基本的なツール より
- コマンドシェルを活用する
- エディターに熟達する

マイケル
次はツールに関して!
「コマンドシェルを活用する」に関しては、文字通りシェルを使いましょう、といった内容です。
「GUIだけで作業を進めるのは、使っている環境の持つ能力全てを使いこなしていないこと」とも書かれており、自分専用のシェルを作ることを推奨されています!
「コマンドシェルを活用する」に関しては、文字通りシェルを使いましょう、といった内容です。
「GUIだけで作業を進めるのは、使っている環境の持つ能力全てを使いこなしていないこと」とも書かれており、自分専用のシェルを作ることを推奨されています!

マイケル
シェルを活用した例だと、下記のようなツールを作ったり等していました。

エレキベア
GUIに使われるのでなく、OSの機能をふんだんに使いたいクマね

マイケル
そして「エディターに熟達する」について、「普段使っているエディターでの作業について、マウス無しで全て行えますか?」といった質問に対してウッとなりました。
ショートカットのみで普段の作業を行える程度には覚えておく必要があると感じました!!
ショートカットのみで普段の作業を行える程度には覚えておく必要があると感じました!!

エレキベア
エディタを使うなら使いこなせということクマね
コーディング
7. コーディング段階 より
- 偶発的プログラミングを避ける
- アルゴリズムのスピードを意識する
- リファクタリング、テストについて
- セキュリティ対策について
- 名前の付け方について

マイケル
そしていよいよコーディングになるのですが、基本的なことが詰まっています。
「偶発的プログラミングを避ける」については、「偶然動いたで進めるのはやめましょう」といった内容です。動く理由をしっかり把握する必要がある、ということですね。
「偶発的プログラミングを避ける」については、「偶然動いたで進めるのはやめましょう」といった内容です。動く理由をしっかり把握する必要がある、ということですね。

エレキベア
確かに最初はやってしまいがちだった気がするクマ

マイケル
「アルゴリズムのスピードを意識する」については、どれだけの数の処理を行うのかを考慮しながら使用するアルゴリズムを選定できるようになりましょう、といった内容になっています。

エレキベア
O(1)、O(n)みたいなやつ(※)をちゃんと把握しろということクマね
※O記法といいます
※O記法といいます

マイケル
そしてリファクタリング、テスト、セキュリティ対策についてもしっかり盛り込まれています。
テストを書きながら進めることは本当に大事です!!
テストを書きながら進めることは本当に大事です!!

エレキベア
クマはTDDを推奨するクマ

マイケル
そして「名前の付け方について」は、リーダブルコードを読みましょう!!

エレキベア
これもエンジニア必読書クマ〜〜〜
マネジメント
8. プロジェクトを始める前に より
- プログラマの仕事は、人々が欲しているものを自らで気づいてもらえるよう支援すること
- 使う人の手に馴染むツールが正しいツールである
- ペアプロ、モブプロについて
- アジリティーについて

マイケル
そして最後はマネジメント!
マネジメントといってもチーム管理よりはどちらかというと、要求に近づいていけるようなアジャイル的な考え方についての内容がメインとなっています。
アジャイルやスクラムについて知りたい方は、下記記事にまとめてあるのでこちらもよければご参照ください!
マネジメントといってもチーム管理よりはどちらかというと、要求に近づいていけるようなアジャイル的な考え方についての内容がメインとなっています。
アジャイルやスクラムについて知りたい方は、下記記事にまとめてあるのでこちらもよければご参照ください!

マイケル
一つ目の「プログラマの仕事は、人々が欲しているものを自らで気づいてもらえるよう支援すること」に関しては読んで字の如くです!
「最初の要求は本当の要求であることはない」とされており、相談者の現場を見てなりきることや、フィードバックを繰り返して学んでいきましょう、といった内容になっています。
「最初の要求は本当の要求であることはない」とされており、相談者の現場を見てなりきることや、フィードバックを繰り返して学んでいきましょう、といった内容になっています。

エレキベア
フィードバック、振り返りを通して改善していくのはまさしくアジャイルの考え方クマね

マイケル
そして「使う人の手に馴染むツールが正しいツールである」についてもそのままの意味で、ツールを作る上でのゴールは忘れてはいけません。
逆を言えばいくら機能を詰め込んだところで使う人が微妙に感じればツールも微妙ということになります。技術に目を奪われて以外と見失いがいちな点なので、気をつけるようにしましょう!!
逆を言えばいくら機能を詰め込んだところで使う人が微妙に感じればツールも微妙ということになります。技術に目を奪われて以外と見失いがいちな点なので、気をつけるようにしましょう!!

マイケル
その他、ペアプロ、モブプロといったXPのプラクティスや、アジャイルな考え方についてもしっかり解説されています!
これは第2版で追加された内容のようですね!
これは第2版で追加された内容のようですね!

エレキベア
現代の進め方を盛り込んでいるのは素晴らしいクマね
ユニークな表現

マイケル
まとめと感想は以上になるのですが、それ以外でもユニークな表現が多く読み物としても面白いものだと感じました。
個人的にはこのような表現は大好きなので、いくつか載せておきます!
(意味まで書くと読んだ時の楽しみが薄れそうなのでそこは省いています)
個人的にはこのような表現は大好きなので、いくつか載せておきます!
(意味まで書くと読んだ時の楽しみが薄れそうなのでそこは省いています)
- 猫がソースコードを食べちゃった
- 石のスープとゆでガエル
- 象を食らう
- 爬虫類脳からの声に耳を向ける
- ゴムのアヒルちゃん
- ドードー鳥なコードは記述しない
- ココナツでは解決できない

マイケル
それぞれどんな意味が込められているか想像できますでしょうか?
気になった方は是非本を手に取って読んでみてください!!
気になった方は是非本を手に取って読んでみてください!!

エレキベア
シャレが効いて記憶にも残りやすいからこういうのは楽しいクマ〜〜〜
おわりに

マイケル
というわけで達人プログラマーの紹介でした!
どうだったかな???
どうだったかな???

エレキベア
読み終えたことでなんだか達人に近づいた気がするクマ〜〜〜〜

マイケル
全部実践できるのは中々難しいだろうけど、せっかくやるなら達人と呼ばれるくらいを目指したいね!!
取り入れることができる点は実践してみよう!!
取り入れることができる点は実践してみよう!!

マイケル
それでは今日はこの辺で!!
アデューー!!
アデューー!!

エレキベア
クマ〜〜〜〜〜
【書籍紹介】「達人プログラマー 第2版」の内容をカテゴリ分けして感想をまとめる 〜完〜
コメント