読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

30. そのコードに触れてはならない! Cal Evans:『プログラマが知るべき97のこと』

以下の記事は,オライリージャパン社から出版された

プログラマが知るべき97のこと』

の中から1つのエッセイを選び,

そのエッセイを,クリエイティブコモンズ3.0の条件の元で転載したものです.

Creative Commons ― 表示 3.0 アメリカ合衆国 ― CC BY 3.0

本書の内容は,オープンソースモデルに従い,

ほぼ無制限で利用が可能です.

クリエイティブ・コモンズ表示3.0の条件下で,

自由に使用することができるのです.

つまり,どのエッセイも,

著者の名前を明記すれば,自由に転載,改変が可能であるということです.

ーー"はじめに"から抜粋 pXII


もし,他のエッセイを読みたい場合には,

記事末のリンクを辿るか,

以下のリンク先のTwitterアカウントのつぶやきからお探し下さい.

Twitter Account: 97 Things Bot



また,元の英文によるエッセイを読みたい方は,

こちらを参照して下さい.

Contributions Appearing in the Book - Programmer 97-things


30. そのコードに触れてはならない! カル・エヴァンス (Cal Evans):『プログラマが知るべき97のこと』

ステージングサーバでのシステムテストに入ってから,

自分の書いたコードに問題が見つかり,

それを知らせるメールがテストマネージャから届く,

そんな経験はプログラマなら誰もがしていると思います.

そのメールを見た時にプログラマが最初に思うことは,

「すぐにそっちへ行って直させてくれ

 どこが悪いかはわかっているから」

ではないでしょうか.



プログラマがステージングサーバを触ってもいいじゃないか」

そう考えるのは一見,間違ってはいないように思えます.

しかし,大局的にとらえるとやはりそれは間違いなのです.

なぜでしょうか?



Webシステム開発プロジェクトの環境は,

次のようにアーキテクチャ分割されているのが普通です.



・開発者のマシン上の,ローカル開発・ユニットテスト環境

・統合テストを手動,あるいは自動で行う開発サーバ

・品質保証(QA)チームや顧客が受け入れテストを行うステージングサーバ

・本番環境



もちろん,

実際にはこれですべてではなく,

他にもソースコード管理(SCM)や

問題管理システム(ITS)などのサーバやサービスなどが色々と関わるのですが,

大まかには上記の通りと考えていいでしょう.

上記のように分割されている場合,

開発者は,

たとえ上級開発者であっても,

決して,開発サーバより後の環境に触れるべきではありません.

開発の大半は,開発者のローカルマシンで行われます.

開発者はローカルマシン上で自分に合ったIDE仮想マシンを利用し,

その他にも独自のツールを使うなど個々に工夫して,

良いコードを書くために最善を尽くします.



SCMへチェックイン後は(自動であれ,手動であれ)

開発サーバに配備させて,

そこで必要に応じてテスト,修正を行うことになります.

そのテストにより,

全体が問題なく機能するのかを確認するのです.

ここで注意すべきあのは,

チェックイン以降は,

開発者は基本的にはプロジェクト進行の

「傍観者」になるということです.



コードをパッケージングして,

QAチーム向けのステージングサーバに配備するのは,

ステージングマネージャーの仕事です.

開発者が開発サーバより後の環境に

アクセスするべきではないのと同様,

QAチームおよび顧客は,

開発サーバ上のものには手を触れるべきではありません.

あくまで受け入れテストができる状態が整ってからリリースし,

配備するのです.

例えば,

「開発サーバ上のシステムをちょっと見てくださいませんか?」

と顧客に頼んではいけません.

そのプロジェクトでコードを書いている人が一人だけであれば,

話は変わってきますが,

普通は他にもコーディングをしている人がいるはずです.

全員が

「いつユーザに見られても大丈夫」という状態でいるとは限りません.

開発サーバとステージングサーバの両方にアクセスできるのは,

リリースマネージャだけにするべきです.



そして,

たとえどんなことがあっても,

開発者は本番環境に触れてはなりません.

問題が起きた場合でも,

それを修正するのは基本的に運用チームの仕事であり,

仮に開発者が修正にあたるとしても,

それは運用チームから依頼があった場合のみであるべきです.

そして,修正をSCMにチェックインした後で,

彼らがSCMからパッチを作成して適用するのです.

私がプログラマとして,経験した中でも

「最悪」と言える時間は,

誰か(まあ,それは私なんですが...)が

この「必ずSCMへのチェックインをしてSCMからパッチを作る」.

というルールを守らなかったために起きたものでした.

たとえシステムのどこかが壊れても,

本番環境でそれを修理しようなどと考えてはなりません.




■著者データ

[カル・エヴァンス (Cal Evans)]

IbuildingsのPCE担当ディレクタを務める.

プログラマとしては,

すでに25年の経験を積んでおり,

使用してきたプログラミング言語は多数に上る.

またいくつもの言語の様々なトピックに関して,

雑誌への寄稿,書籍の執筆もしている.

国籍は米国だが,現在はオランダのユトレヒトに住み,

講演,執筆などを行うほか,

グローバルなPHPコミュニティの活動にも参加している.

ブログも参照のこと.

Postcards From My Life


関連記事

1.分別のある行動 Seb Rose:『プログラマが知るべき97のこと』 - MY ENIGMA

2.関数プログラミングを学ぶことの重要性 Edward Garson:『プログラマが知るべき97のこと』 - MY ENIGMA

3.ユーザが何をするかを観察する (あなたはユーザではない) Giles Colborne:『プログラマが知るべき97のこと』 - MY ENIGMA

4.コーディング規約を自動化する Filip van Laenen:『プログラマが知るべき97のこと』 - MY ENIGMA

5.美はシンプルさに宿る Jorn Olmheim:『プログラマが知るべき97のこと』 - MY ENIGMA

6.リファクタリングの際に注意すべきこと Rajith Attapattu:『プログラマが知るべき97のこと』 - MY ENIGMA

7.共有は慎重に Udi Dahan:『プログラマが知るべき97のこと』 - MY ENIGMA

8. ボーイスカウト・ルール Robert C. Martin:『プログラマが知るべき97のこと』 - MY ENIGMA

9. 他人よりまず自分を疑う Allan Kelly:『プログラマが知るべき97のこと』 - MY ENIGMA

10. ツールの選択は慎重に Giovanni Asproni:『プログラマが知るべき97のこと』 - MY ENIGMA

11. ドメインの言葉を使ったコード Dan North:『プログラマが知るべき97のこと』 - MY ENIGMA

12. コードは設計である Ryan Brush:『プログラマが知るべき97のこと』 - MY ENIGMA

13. コードレイアウトの重要性 Steve Freeman:『プログラマが知るべき97のこと』 - MY ENIGMA

14. コードレビュー Mattias Karlsson:『プログラマが知るべき97のこと』 - MY ENIGMA

13. コードレイアウトの重要性 Steve Freeman:『プログラマが知るべき97のこと』 - MY ENIGMA

14. コードレビュー Mattias Karlsson:『プログラマが知るべき97のこと』 - MY ENIGMA

15. コードの論理的検証 Yechiel Kimchi:『プログラマが知るべき97のこと』 - MY ENIGMA

16. コメントについてのコメント Cal Evans:『プログラマが知るべき97のこと』 - MY ENIGMA

17. コードに書けないことのみをコメントにする Kevlin Henney:『プログラマが知るべき97のこと』 - MY ENIGMA

18. 学び続ける姿勢 Clint Shank:『プログラマが知るべき97のこと』 - MY ENIGMA

19. 誰にとっての利便性か Gregor Hohpe:『プログラマが知るべき97のこと』 - MY ENIGMA

20. すばやくデプロイ,こまめにデプロイ Steve Berczuk:『プログラマが知るべき97のこと』 - MY ENIGMA

21. 技術的例外とビジネス例外を明確に区別する Dan Bergh Johnsson:『プログラマが知るべき97のこと』 - MY ENIGMA

22. 一万時間の訓練 Jon Jagger:『プログラマが知るべき97のこと』 - MY ENIGMA

23. ドメイン特化言語 Michael Hunger:『プログラマが知るべき97のこと』 - MY ENIGMA

24. 変更を恐れない Mike Lewis:『プログラマが知るべき97のこと』 - MY ENIGMA

25. 見られて恥ずかしいデータは使わないこと Rod Begbie:『プログラマが知るべき97のこと』 - MY ENIGMA

26. 言語だけでなく文化も学ぶ Anders Noras:『プログラマが知るべき97のこと』 - MY ENIGMA

27. 死ぬはずのプログラムを無理に生かしておいてはいけない Verity Stob:『プログラマが知るべき97のこと』 - MY ENIGMA

28. 「魔法」に頼りすぎてはいけない Alan Griffiths:『プログラマが知るべき97のこと』 - MY ENIGMA

29. DRY原則 Steve Smith:『プログラマが知るべき97のこと』 - MY ENIGMA