カピバラ生活

仕事や日常で感じたことをつらつらと書いていくよ

アプリケーション設計わからんマンが読んだ設計やコーディングに関する本を列挙する

はじめに

IT業界5年目にしてようやくアプリケーション設計やコードの書き方について興味関心が持てるようになりました。こんなアプリケーション設計わからんマンが設計に興味を持ち、以前よりコーディングと向き合うようになるまでに読んだ本を紹介します。

1.コーディング全般, 2.アプリケーション設計, 3. チーム開発やシステム運用 を紹介します。

正直本を読んだことだけがきっかけではないと考えています。実務での辛い経験や試行錯誤も要因なのは否定できません。しかし、今回は技術書に絞って話します。別のものは別の機会で話すかもしれません。

また、今回は本の内容をがっつり説明することはしません。興味のある本はぜひ手に取って読んでみてください。

コーディング全般

読みやすいコードのガイドライン 持続可能なソフトウェア開発のために

gihyo.jp

命名はどう決めるのか?、コメントアウトをなぜ書くのか?、読みやすいコードとは何か?を愚直に教えてくれる本です。何度読み返しても良い本です。読むタイミングで感じることが変わるでしょう。

Web API The Good Parts

www.oreilly.co.jp 良いWeb APIを作ろうという本です。

WebAPIの歴史について学ぶこともできるので実務で活きる力と技術の歴史について学べるところが良いところです。

ルールズ・オブ・プログラミング より良いコードを書くための21のルール

www.oreilly.co.jp 大規模ゲーム開発での教訓をまとめたものです。ゲーム以外にも言えることがたくさんあります。

サンプルコードがC++なので読み解くのが難しいと感じる方もいるかもしれませんが、解説もあるのでなんとか読めます。Web開発をしている方はピンとこない部分もあるので全部読む必要はないかもしれません。

Tidy First

www.oreilly.co.jp

薄い!わかりやすい!すぐ読み切れる!の三拍子です。「普段の仕事から普通のことをしよう」という内容です。特別なことは何も書かれていません。ただ普通のことを普通にやるというです。

最後の方に他の本ではなかなか紹介されないようなお金の価値の話しが出てくるところが面白いです。

アプリケーション設計

Java言語で学ぶデザインパターン入門

www.sbcr.jp

自分はデザインパターンはこの書籍がおすすめです。そこまで高くなく、サンプルコードも読みやすく重宝しています。

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

gihyo.jp

明日からでも使えるテクニックがあります。実務で「コードをもっと綺麗にできないか」と思っていたら読んで欲しいです。何か一つでも引き出しが増やせるはずです。サンプルコードはJavaJavaのライブラリ、フレームワーク特有の記法が少し出てくるのでコピペだけで他言語対応はできません。少し工夫が必要です。

また、「ドメイン駆動設計」という単語は一切出ませんがドメイン駆動設計の入り口を学ぶことができる本だと考えています。

テスト駆動開発

shop.ohmsha.co.jp

テストコードがあること ≠ テスト駆動開発

テスト駆動開発ってそうだったのか」となります。ここでは多くを紹介しません。

ちょうぜつソフトウェア設計入門 PHPで理解するオブジェクト指向の活用

gihyo.jp

「クリーンアーキテクチャって何?」という疑問が読了したら軽減されます。テストのしやすさや設計の柔軟さを説明する箇所があるのでデザインパターンテスト駆動開発 は先に読んでおくと良いです。

今回紹介している本ですと

  1. Java言語で学ぶデザインパターン入門
  2. 現場で役立つシステム設計の原則 変更を楽で安全にするオブジェクト指向の実践技法
  3. テスト駆動開発

を先に読んでおくことをオススメします。

オブジェクト設計スタイルガイド

www.oreilly.co.jp

ドメイン駆動とまではいきませんがレイアードアーキテクチャをしれます。オブジェクト指向ではなくオブジェクト設計です。責務ごとにクラスを分けよう。クラスでモデリングを正確に行おうという内容になっていて今からでも取り入れられることがたくさん紹介されています。

わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~

booth.pm

イラストが可愛いです。同人誌なのですぐ読めます。すぐ読めるんですがドメイン駆動設計ってなに?の基礎を知ることができます。コーディング、アプリケーション設計の話しだけでなく「ユビキタス言語」など開発を進める上で大事な用語も紹介してくれます。

ドメイン駆動設計 モデリング/実装ガイド

booth.pm

先ほどの本と同様で同人誌なので薄くてすぐ読めます。「なぜドメイン駆動設計をするのか?」を簡単に説明してくれます。疑似コードがあるので実装のイメージがつきます。GitHubにQ&Aがあって書籍で紹介されていない細かい内容を知ることができるので本とGitHub(Issue)両方で学べるのも良いです。

github.com

ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本

www.shoeisha.co.jp

実際のコードを紹介しながらドメイン駆動設計の体現方法を知ることができます。これが正解というわけではないですが、ドメイン駆動設計の概念理解から一歩踏み込んだ理解ができるようになります。

チーム開発やシステム運用

「コーディングやアプリケーション設計じゃないじゃないか!」と感じた方もいるでしょう。自分も思います。

最初にもお話しした通りコーディングや設計に興味を持つのは技術的な背景だけではありません。EXとして何冊か紹介させてください。紹介する本を読んで「ただ開発するだけじゃ三流のままだ。もっと技術を活用して仕組み化や人に働きかけなくてはいけない」と考えられるようになりました。

レガシーソフトウェア改善ガイド

www.shoeisha.co.jp

「レガシーってなに?」から説明してくれます。レガシーがレガシーでなくなるための引き出しが増やせます。

システム運用アンチパターン

www.oreilly.co.jp

属人化の危険性やシステム運用で大事にしたい設計や実装、組織の作り方が書いてあります。システム運用にとどまらず組織運営、組織文化の醸成まで学ぶことができます。

Team Geek

www.oreilly.co.jp

チームで仕事をする上で大事なことはなにかが書かれています。少し面白いのが「チームにとって害になりかねない存在とどう向き合っていくのか」が紹介されていることです。綺麗事だけか書いてないところが個人的に好きです。

さいごに

今回は自分の記憶を辿りながら今の自分を変えるきっかけとなった技術書についてまとめました。何か一冊でも興味を持っていただけたら幸いです。技術の本以外も読むことあるのでその記録も書きたいです。