Refactoring Databases [Methodology]
引越しで出版されたことすら気づかなかった1冊。やっと届きました。
- Refactoring Databases: Evolutionary Database Design(written by Scott W. Ambler and Pramodkumar J. Sadalage)
http://www.amazon.co.jp/gp/product/0321293533/503-8753000-4315106?v=glance&n=1000
元ねたはこれなんでしょうね。と期待してます。
- Evolutionary Database Design
http://martinfowler.com/articles/evodb.html (English)
http://objectclub.esm.co.jp/eXtremeProgramming/evodb-jp.html (Japanese)
要旨を簡単に説明すると、Continuous Integration を database の世界にも拡張したといえばよいでしょうか。
・大きな変更を一気に適用するのではなく、小さな変更を繰り返すべき
・早期に問題を把握するため、実データを最初のイテレーションから導入するよう努力すべき
・コードのリファクタリングと異なる点:同時におこなうべき以下の3つの変更が含まれる。
- DBのスキーマの変更
- DBのデータの移行
- DBのアクセスコードの変更
・NULLを許すカラムをNULLを許さないように変更するというような「破壊的な変更」には慎重に対応
・重要なことは、変更に対してふさわしい作業手順を選択すること。
・マスターDBを更新した場合、プロジェクト全員のDBを自動更新することにより、周知する。
DBのスキーマの影響範囲を容易に把握できるように、データベースアクセスコードを明確に分離しておく。DBA がレビューする範囲を局所化しておく。
変更という行為を容易化するためには、ツールによる自動化が必要。
本書に記載の Refactoring の一覧はWebPageからも閲覧可能です。
ミーハーに、ついでにこれも買ってみました
The Pragmatic Programmer [Methodology]
達人プログラマー(The Pragmatic Programmer)
The Pragmatic Programmer: From Journeyman to Master(by Andrew Hunt, David Thomas)
http://www.amazon.com/exec/obidos/tg/detail/-/020161622X/ref=ase_codinghorror-20/102-2767497-2013769?v=glance&s=books
The Pragmatic Programmer Quick Reference Guide(Summary)
http://www.codinghorror.com/blog/files/Pragmatic%20Quick%20Reference.htm
http://kaimei.org/note/book_out/tatujin.html
若干抜粋です。
- 1. Care about your craft.
自らの技術に関心を持つこと - 2. Think! about your work.
- 3. Provide Options, Don't Make Lame Excuses.
できないというのではなく、代替案であればなにを提供できるのかを示してください。 - 4. Don't live with broken windows.
Broken window theory(軽犯罪等を放置しおくことにより(窓が割れたままに放置しておくことにより)、徐々に地域は荒廃し、深刻な犯罪地域に発展する。)ソフトウェアに対しても、同様のことがいえるでしょう。 - 5. Be a catalyst for Change.
変革を強いるのではなく、どのように将来なるのか、そしてそれを作り上げることに参加することがどのような助けになるかを示してください。リーダ論でよく指摘されていますが、これはソフトウェア開発だけでなくどのようなプロジェクトでもいえることでもあります。 - 6. Remember the Big Picture.
詳細にこだわるのではなく、全体を俯瞰せよ。 - 7. Make Quality a Requirements Issue.
- 8. Invest Regularly in Your Knowledge Portfolio.
ベンジャミン・フランクリンの格言である「知識への投資は常に最高の利息がついてくる」を引用して、ITの進化と技術の陳腐化の速度はすざまじく、市場の変化に追従するには、自分の知識が時代遅れとならないように常に知識ポートフェリオに投資してくださいと述べています。 - 9. Critically Analyze What You Read and Hear
インターネットの普及とともに、正しい情報やそうでない情報を含め、様々な情報が氾濫する時代となりました。我々は、入手した情報に対し全て受け入れるのではなく、常に吟味したうえで判断する姿勢がより重要になってきているといえるかと思います。 - 10. It's Both What You Say and the Way You Say It
プレゼンテーションする内容は同じでも、その話し方次第で受け入れられるか、ごみとなるかが変わることを理解せなばならない。 - 11. DRY–Don't Repeat Yourself
信頼性の高いソフトウェア開発のためには繰り返しを避ける原則に従うことにある。コンポーネント設計でよく指摘される事柄ですね。 - 12. Make It Easy to Reuse
- 13. Eliminate Effects Between Unrelated Things
- 14. There Are No Final Decisions