TECH MEDIA

テックメディア


ノウハウ
ブログ

~w2のエンジニア紹介~「新装版 達人プログラマー」を読んだ話

エンジニア
目次
  1. 01|はじめに
  2. 02|全体の感想
  3. 03|気になった部分
  4. 04|さいごに

1. はじめに

こんにちは! 今回は「W2のエンジニア紹介」と題して、W2のエンジニアメンバーが日々学んで発信していることを、私から紹介していくコーナーです☆ミ さっそく中身に入りたいところですが、まずはメンバーの紹介を少ししたいと思います。 末武さんは、W2で2年目のエンジニアです。主にパッケージの機能追加や、バグの対応などを行っています。 末武さんは、エンジニアリングの知識を集める過程で本を読むとのことで、先日読んだ「新装版 達人プログラマー 職人から名匠への道(Andrew Hunt, David Thomas (著))」の内容が面白かったと発信をしていましたので、その内容を一部紹介していきます!

2. 全体の感想

アジャイル開発手法の先駆者である二人の著者によって1999年に書いた書籍で、かなり古い本だったので、今とは事情が違うことや古いツールなどが紹介されているのではないかなーと思い読み進めていましたが、現在のシステム開発においても全く遜色なくためになりました。

3. 気になった部分

・ソフトウェアのエントロピー

初見ではなんだか難しい言葉ですが、要は「システムは次第に複雑で無秩序になっていってしまうよ」ということらしいです。

新たな仕様、機能の追加などでシステムを弄っていくと、当初は美しかったのに次第にソースにゴミがたまりメンテナンスがしづらくなっていく、とのこと。

「割れた窓を放置すると町がどんどん汚くなる」割れ窓理論を引用して、システムでも同様のことが起こらないように割れた窓はこまめに直して行こう、という教訓が書かれていますいます。

・DRY原則・直交性・デメテルの法則

システム開発の有名な原則についてこの本では度々言及されています。

特にDRY原則(すべての知識はシステム内において、単一、かつ明確な、そして信頼できる表現になっていなければならない)について著者は「信頼性の高いソフトウェアを開発して、開発そのものを簡単に理解したりメンテナンスできるようにする唯一の方法」と語り、最も重要な原則の一つと説いています。

ソースコードの二重化だけでなく、仕様やデータベーススキーマの二重管理や、同じ作業を二度以上やることもDRY原則に反し、情報のマスタはひとところに置き、各所で使用するときはコードジェネレータなどでテストやドキュメントを自動生成する手法が紹介されています。

なんとなくの感覚で理解した気になっていたシステム開発の原則について、実例を交えながら嚙み砕いてくれているので、私はこの部分が一番面白くて印象に残っています。

・プレインテキスト・メタプログラミング

システムで変更が起きそうな部分は、ソースコードとは別に管理し、プログラムではその情報を読みだすようにしようというアプローチの紹介。

具体的な情報はXMLなどのプレインテキストに記述し、コードには抽象的なロジックのみを書くことで、メンテナンスをしやすくしようというものですね。

人間が読んで理解できるプレインテキストにビジネスロジックを記載しておくことで、仕様の変更や新たなビジネス要求に対して柔軟に対応ができることが説明されています。

・不可解なパズルを解く

「問題の本質を見極めるように常に注意しましょう」教訓や心構えです。

問題を解決しようとプログラムを作っているとたまに陥る、「もっと簡単な方法があるんじゃないの? 問題を難しくしてない?」という現象のことを「不可解なパズル」と表現しています。

私も大規模な開発をしているといつのまにか、本質的に問題解決には必須ではない部分に躍起になって時間を取られてしまうことが時々あります。

そういった時に、一度冷静になって「その手段でなければ解決はできないのか」「些末な問題に固執してしまっていないか」を、自分に問いただすようにしようということです。

4. さいごに

テクニック集というよりは、教訓や抽象的な心構えが詰まった本なので、一度読んだだけでは理解できない部分も多く、時間をおいて読み返すとまた新しい発見がありそうです。電子書籍化もされており読みやすい本になっていますので、興味があれば是非読んでみてください!

今回は、末武さんのアウトプットをご紹介しました!
次回以降もW2で行われている発信をドシドシ皆さんへお届けしていきます!お楽しみに^^

RECRUIT 採用情報

「eビジネスに関わる全ての人を幸せにする」
私達とともに新たな時代をつくりませんか?