.NETエンタープライズWebアプリケーション 開発技術大全
― エンタープライズWebアプリ開発に必要な知識と設計セオリー ―


大規模プロジェクトにおける開発環境構築術

マイクロソフト コンサルティング本部 赤間 信幸
2004/09/30

Page1 Page2 Page3 Page4

.NETエンタープライズWebアプリケーション
開発技術大全 Vol.4
セキュアアプリケーション設計編


 本記事は、日経BPソフトプレス/マイクロソフトプレスが発行している書籍『.NETエンタープライズWebアプリケーション開発技術大全 Vol.4 セキュアアプリケーション設計編』より、同社の許可を得てその内容を転載したものです。

 同書はマイクロソフトのコンサルタントが執筆した.NETシステム設計/構築のための技術解説書で、全5巻で構成されています。本シリーズでは、.NETで大規模Webアプリケーションを構築する際に必要となるセオリーやパターンが網羅されています。単なる技術解説にとどまらず、設計/実装の具体的な指針が示されているところが本書の特長です。

  第4巻の内容は2つのパートから構成されており、第1部ではWebアプリケーションにおけるセキュリティ機構の設計/実装手法、第2部では大規模開発における開発環境の構築について解説しています。

 本記事の内容は、第2部の最初の章となる「第5章 開発環境構築の全体像」からの転載です。大規模プロジェクトを成功させるには、設計/実装の技術だけでなく、作業プロセスの標準化やチームによる役割分担の取り決め、開発環境の整備といった作業も非常に重要となってきます。本章では大規模開発のフローに沿って、考慮すべき作業を概観します。すべての内容が単なる机上の理論ではなく、著者である赤間氏が実際の開発現場から得た経験に基づいて記されているという点も本書の特長です。

 なお、書籍の詳細については本記事の最後に表記しています。

ご注意:本記事は、前挙の書籍の内容を改訂することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

 アプリケーション開発では、コーディングやデバッグといった作業が主体となることは確かであるが、その周辺作業やプロセスも非常に重要である。特に大規模開発では、チーム開発におけるソースコード管理はもちろんのこと、共通コンポーネントの配布方法、アプリケーションのバージョニングやパッケージング方法といった周辺作業も検討しなければならない。このような検討を疎かにし、十分な開発環境整備を行わないままにアプリケーション開発をスタートすると、開発現場における混乱を招き、全体の開発効率が悪化することになる。

 アプリケーション開発者が開発作業に専念できる環境を作ることもまた、アプリケーションアーキテクトに欠かすことができない重要なタスクの1つなのである。

 本書第2部では、チームベースでのアプリケーション開発作業をスムーズに進めていくことのできる開発環境の構築方法と、それに付随する周辺作業に関して解説を行う。

開発環境構築の全体像

 第5章では、大規模開発におけるアプリケーション開発の流れを概観する。まずは大規模開発のイメージと、そこで求められる主要な周辺作業を概説する。

5.1 大規模開発における全体の作業の流れ

5.1.1 アプリケーションアーキテクチャとアプリケーションフレームワークに基づく開発

 さまざまな開発者が関与する大規模なシステム開発では、アプリケーション品質をいかにして一定に保つかが非常に重要になる。その際、コーディング標準のような低水準のルールだけでは、設計品質や実装品質を維持することは困難である。このために用いられる特に効果的な手法として以下の2つがあることを、本シリーズ第1巻「.NET Framework導入編」で解説した。

  • 全体を通して一貫すべき設計思想(アプリケーションアーキテクチャ)を定めておき、これに基づいた設計を行う

  • 適切なアプリケーションフレームワークを作成しておき、それに基づいた実装を行う

 アプリケーションアーキテクチャやアプリケーションフレームワークは、開発作業を進めていくためのいわば「お膳立て」である。アプリケーション開発者がそのつど「当該業務にのみ特化・最適化された実装」を選択すると、アプリケーションの実装品質や設計方針にばらつきが発生してしまい、長期的なアプリケーションの保守性を損なう原因となる。このような事態を避けるためには、一定の設計ルールに則ったアプリケーションを、フレームワークとして提供されている共通的な処理や部品類を利用しながら開発を行う。これにより各開発者の作業負荷を軽減しつつ、一定の設計品質を保ったシステムを作っていくわけである(図5-1)。

図5-1 アプリケーションアーキテクチャとアプリケーションフレームワークに基づく開発

5.1.2 大規模開発に必要な作業の流れ

 ところが、実際にこのようなコンセプトに基づいてスムーズにアプリケーション開発を続けていくためには、それなりの仕掛けと下準備が必要になる。代表的な問題としては、以下のようなものがある。

A. 業務共通コンポーネントの更新時の問題

 理論上は、アプリケーションアーキテクトや上級デベロッパーたちによるお膳立てが完全に終了してから、各アプリケーションの開発が始まることが望ましい。しかし実際には、各アプリケーションの開発を進めている最中に、業務共通コンポーネントの更新が行われたり、バグフィックスが行われるケースも多い。このような共用モジュールを引渡す際、開発現場が混乱しないようにしなければならない。

B. ユーザアプリケーションの設計品質の確認

 クラスやメソッドの命名規則をはじめとした、各種のコーディングルールを守っているかどうかは、ツールなどによる自動検証が行いやすい。しかし、アプリケーションの設計品質、すなわち定められた設計標準を守っているか否かに関しては、目視などによる確認がどうしても必要となる。何らかの歯止めや確認プロセスがなければ、「設計ルールは存在するがそれが守られていない」状況に陥りかねない。

C. チーム開発におけるソースコード管理問題

 チームでアプリケーション開発を進める際には、何らかのソースコード管理システムがないと、ファイルを誤って上書きしたり、削除してしまうといったケアレスミスが発生しやすい。また、ソースコードのリリース管理や履歴管理、バックアップ作業といったことも問題になるだろう。

D. アプリケーションのリリース問題

 特にサービスインの直前には、頻繁にアプリケーションのバージョンアップとリリースが繰り返されるが、リビルドやリリース作業を力技でこなしている場合、作業のボトルネックとなりやすい。

 ここに挙げたものはごく一部でしかないが、これらの例からも分かるように、大規模アプリケーション開発をスムーズに進めていくためには、設計・実装標準や業務共通コンポーネントの開発だけではなく、デベロッパーが行う作業手順の標準化についても検討しておくことが欠かせないのである。

 一般に大規模開発では、図5-1に示したような、アーキテクトや上級デベロッパーから編成される、開発をリーディングするチームを置くことが望ましい。本書ではこのようなチームをコアチームと呼ぶことにするが、コアチームが各開発チームの作業の「お膳立て」をきちんとしておくことで、全体の開発生産性を向上させることが望まれる。

 そして、開発が終わったアプリケーションは、品質管理やリリース管理を行うチームへと引き渡され、性能テストなどによる品質チェックを経て運用環境へとリリースされる。

 以上をまとめた全体の作業フローを、図5-2に示す。

図5-2 各チームの役割と作業の流れ

 なお実際の開発では、コアチームが品質チェックチームを兼任することもあり、また、各開発チームや運用チームの人手不足を解消するために、社外の協力会社と協業したり、各種のデータセンタへのアウトソースを行ったりすることもある。上記のような作業フローを確立する際には、そうした社外チームとの連携も念頭に置いた上で検討を行う必要がある。

 以上で述べたような作業フローについて、前半部分と後半部分に分けて解説する。なお、ここではあえて解説の粒度を粗くし、最も肝心な作業が何であるのかを明確にするよう心がけた。実際の大規模開発では、より細かなサブチーム化やタスク定義、あるいは各社が持つ開発方法論とのすり合わせなどが必要になることに注意して頂きたい。

 

 INDEX
  .NETエンタープライズWebアプリケーション 開発技術大全
  大規模プロジェクトにおける開発環境構築術
  1.大規模開発における全体の作業の流れ
    2.各開発チームによる分散アプリケーション開発までの流れ
    3.分散開発されたアプリケーションを集約し、リリースするまでの流れ
    4.開発プロセスやその環境構築に利用されるマイクロソフトの製品群

インデックス・ページヘ  「.NETエンタープライズWebアプリケーション開発技術大全」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間