プログラマが知るべき97のこと
本記事は、株式会社オライリー・ジャパンより出版された『プログラマが知るべき97のこと』の中からひとつのエッセイを取り上げ、そのエッセイをクリエイティブ・コモンズ表示3.0の条件下で転載したものです。
本書の各々のエッセイは、オープンソースモデルに従い、ほぼ無制限で利用が可能です。クリエイティブ・コモンズ表示3.0の条件下で、自由に使用することができるのです。つまり、どのエッセイも、著者の名前を明記すれば、自由に転載、改変が可能であるということです。
『プログラマが知るべき97のこと』はじめに(p.XII)
なお、原書(英文)のエッセイは、下記のWebサイトで公開されています。
Contributions Appearing in the Book – Programmer 97-things
20 すばやくデプロイ、こまめにデプロイ
スティーブ・P・バーチャック (Steve Berczuk)
インストールやデプロイ作業は後回しにされがち
インストールやデプロイに関わる作業というものはどうしても後回しにされ、プロジェクトの終了間際になってから始めることになりがちです。インストールツールを書く作業を丸投げされたリリースマネージャが、その作業を「必要悪」として考えている、などということも珍しくありません。
レビューやデモで、デプロイやインストールが一応正しくできていることを確認はするのですが、そのための環境が単なる「間に合わせ」で、適切なものではないことも多いのです。これでは、チームのメンバーは、デプロイのプロセスやデプロイ先の環境などに関してまったく学ぶことができませんし、改善したいときには手遅れということになってしまうでしょう。
顧客のためのデプロイ
インストール/デプロイ作業こそが、顧客がはじめて製品に触れる機会です。この作業自体は簡単なものかもしれませんが、信頼できる(少なくともデバックしやすい)本番環境を作り上げるための第一歩です。
顧客が実際に使うのは、デプロイされたソフトウェアです。デプロイの際にアプリケーションが正しく設定できなければ、顧客は本格的に使い始める前に、製品に対して疑いを持ってしまうでしょう。
インストールやデプロイが簡単にできるように考える
プロジェクトの最初の段階からインストールプロセスに関する作業を初めていれば、十分な時間を確保し、製品の開発サイクルに連動してプロセスを進化させていくこともできるでしょう。
アプリケーションのコードを、あらかじめインストールやデプロイが簡単にできるように考えて書くこともできます。クリーンな環境でインストールやデプロイのプロセスを定期的に走らせ、テストをしていれば、コードが開発環境やテスト環境に依存したものになるのを防ぐこともできます。
デプロイ作業がどんなものかを早めに知っておく
デプロイ関連の作業を後回しにすると、コードが開発環境やテスト環境に依存したものになりやすくなります。それを回避するための対策を講じることは容易ではなく、大変な労力が必要になってしまいます。
こう言うと「IDEを利用すればいいのでは」と考える人もいるでしょう。確かにIDEを使えば環境を自在に扱うことができるため、デプロイ作業が少しは楽になるかもしれません。
しかし、いずれにしろトレードオフはあるので、それが具体的にどんなものかを早めに知っておくに越したことはないでしょう。
デプロイ作業の実験、評価、リファクタリングを必要なだけ行う
プロジェクトの初期には「デプロイができる」ということよりも、開発者のコンピューター上でアプリケーションが動作する(一応、正しく動作しているように見える)ことの方に価値が置かれがちです。
しかし当然のことながら、ターゲット環境でのデモができるようになってはじめて、ソフトウェアはビジネス上の価値を持ちます。「開発者のコンピュータで一応動作する」という状態から、「デモが可能である」という状態にするまでには、相当な作業が必要になるのです。
それなりの理由があってデプロイ作業を後回しにしているのかもしれませんが、よほどの理由でない限り、ともかくデプロイ作業を早い段階から始めるべきでしょう。その方がコストが少なくて済みます。
「作業が複雑すぎる」あるいは、「不確定要素が多すぎる」という場合には、アプリケーションコードを書くときと同じことをすれば良いのです。つまり、デプロイ作業の実験、評価、リファクタリングを必要なだけ行うのです。
インストールやデプロイは、テストやリファクタリングと同等
インストールやデプロイのプロセスは、顧客やプロフェッショナルサービスチームの生産性に大きく影響します。早い段階からプロセスのテストやリファクタリングに取り組み、プロジェクトの進行と連動して作業を進めていくべきです。
私たちプログラマはコードのテストとリファクタリングを常に行いますが、インストールやデプロイのプロセス自体もその例外ではないのです。
コメント