特集:.NETアーキテクトの実用プラクティス

.NET開発のITアーキテクトになるための極意

クロノス 亀野 弘嗣
2008/08/27
Page1 Page2 Page3

.NETアーキテクトの具体的な作業

 それでは.NETアーキテクトの具体的な作業内容を、以下に挙げていこう。

 ただし実際の作業内容は、プロジェクトの工数や、旧データ移行の有無などの状況によって増減するので注意してほしい。各項目に筆者の【経験談&実践ポイント】を付けているので、プラクティスの1つとして活用していただければと思う。

.NETアーキテクトの作業内容

アーキテクチャ

  • 言語選択
      .NET開発を前提としているので、基本的にC#またはVB(Visual Basic)から選択する。
【経験談&実践ポイント】

C#とVBのどちらを選択すればよいかを、アーキテクトとして答えなくてはならないシチュエーションによく遭遇する。プロジェクトの状況によりどちらを選択するか決めるのだが、筆者は基本的にC#を推奨している。理由は、ECMAISOJISという標準化団体で認定されていることと、マイクロソフトの.NET構想の中核言語であるためだ。

  • ツール選択
      帳票ツール、静的解析ツール、テスト・ツールなど、使用するツールのメリット、デメリットの比較をして選定する。選定の際には、機能はもちろん、コスト、ライセンス(サーバ、クライアント)にも注意する。
【経験談&実践ポイント】

いざツールを導入してみると、ツールの不具合が後になって発覚して問題となることが多い。ツールの経験者から意見が得られることや、WebにFAQが存在すること、不具合報告のしやすさなどをあらかじめチェックしておくとよい。また、導入を決定してから「実は不具合により要件に対応できなかった」ということもある。要件に対応できるかは事前調査を徹底的に行おう。

  • インフラ設計
      インフラ全体の詳細な設計をすることはあまりないが、アプリケーションに必要なインフラの設計は行う必要がある。例えば、ロード・バランサの使用や、MSDTC(分散トランザクション・コーディネータ)の設定など。
【経験談&実践ポイント】

あるWebアプリケーションのプロジェクトで、アクセス数の増加によるパフォーマンス低下の発生を懸念する声が上がった。そのため、アプリケーションのパフォーマンス・チューニングで対応を検討するとともに、スケール・アップ、スケール・アウトで対応できるようにするために、サーバ構成に関する設計を行う必要があった。

  • UI設計
      .NET Frameworkの特性を生かしたUI(ユーザー・インターフェイス)設計を行う。
【経験談&実践ポイント】

あるプロジェクトで、.NETの標準から外れた独自のコントロール機能など、「作ろうと思えば作れる。ただし、工数がかかる」というようなUI設計の画面ばかりを顧客に提案していたSEがいた。.NET Frameworkを使用したUIでの得意、不得意をSEに説明することにより手戻りを減らすことができた。

  • コンポーネント設計
      仕様変更に強いコンポーネント設計を行う。
【経験談&実践ポイント】

少ない開発工数で仕様変更に強い設計にするため、Enterprise Libraryなどのライブラリを使用したことは効果があった。

  • セキュリティ設計
      インターネットを使用するアプリケーションの場合は特に注意する必要がある。また、セキュリティはユーザビリティとトレード・オフになる場合がある。
【経験談&実践ポイント】

ASP.NETでは、「<」文字などのタグに該当する文字の入力を禁止するための、@PageディレクティブのValidateRequest属性が、デフォルトでtrue(禁止状態)になっている。しかし、「<」文字の入力が必要な場合に柔軟な対応ができない場合や、ValidateRequest属性の設定によって禁止される文字がマイクロソフトから明示的に公開されていないため、エンド・ユーザーに入力が禁止される文字を提示することができない場合がある。このため、VaidateRequest属性をfalseに設定して、独自にサニタイジング(無害化)処理を実装したことがあった。

  • 障害設計
      アプリケーション側とインフラ側で漏れがないように、障害設計を行う。
【経験談&実践ポイント】

インフラの設計/実装は、開発とは別のチームが行う場合が多いが、アプリケーション側とインフラ側の情報連携がうまくいっておらず、「MSDTCの設定は、そっちで対応すると思っていた」などの意思疎通ができていない状況が発生したことがある。事前に、発生し得る障害を列挙し、対応範囲を明確にしておく必要がある。

標準化

  • コーディング・ルール作成
      システム全体の品質を維持するために、標準化を行い周知する。
【経験談&実践ポイント】

初級プログラマーがいるプロジェクトで、コーディング・ルールの内容自体が理解されていないことがあった。静的解析や、コード・レビューでチェックすることで、ルールに違反していないかを洗い出した。

技術指導

  • コード・サンプル作成
      プロジェクト・メンバーのスキル不足を解消するように努める。
【経験談&実践ポイント】

プロジェクト・メンバーの経験が浅く、コード・サンプルを提供すると「サンプルとして」書いた簡易なコード部分を、内容を理解せずにコピー&ペーストしてしまい、間違った使い方のコードを大量生産していたことがあった。これを教訓に、以降はあらかじめサンプルに詳細なコメントを記述したり、内容を理解してから利用するように指導したりして、予防するようにしている。

開発環境構築

 効率よく開発ができるように、開発環境を構築する。また、プロジェクトの途中から投入される追加メンバーに対応するため、開発メンバー用の開発環境構築手順もまとめておく。VSTS(Visual Studio Team System)を採用すれば、開発ライフサイクル全体を含めた管理が行える。しかしVSTSの採用は、TFS(Team Foundation Server)の導入が必要なことや、Visual Studioの各エディションのライセンスが必要なため、規模や予算により検討する。

【経験談&実践ポイント】

メンバーの入れ替わりが多いプロジェクトで、入れ替わるたびに開発環境を説明していたことがあった。開発環境構築手順をドキュメント化したことで毎回説明する手間がかからなくなった。

ソース管理

 .NET環境では、Visual Studioとの親和性が高いVSS(Visual SourceSafe)でソース管理することが多い。VSSのデータベースのバックアップも忘れずに行うことがポイントである。

【経験談&実践ポイント】

VSSを使用する場合は、最新のバージョンを使用するようにする。旧バージョンを使用すると、Unicodeファイルを保存すると破損する場合や、クライアントPCのシステム日時がサーバと同期されていないと、ラベル(=特定時点でのソース・コードに付与する名前)やバージョン管理が正しく動作しない場合などがある。

品質管理

 静的解析、コード・レビュー、バグ・トラッキングなどを駆使して、品質管理を行う。

【経験談&実践ポイント】

品質管理を行うには、事前に品質基準を設ける必要がある。また、後述する「テスト設計」の項の「経験談」にもあるように、品質基準はプロジェクトの工数などの状況に応じて決める必要がある。

テスト設計

 単体テストの自動化、ロード・テスト、ストレス・テストなど、ツールなどを使用して、効率的にテストが実施できるようにする。

【経験談&実践ポイント】

すべてのコードを対象に、単体テストの自動化を行うことを義務付けているプロジェクトがあった。しかし、仕様変更などでプログラムを変更、修正する際に、工数の都合できちんと単体テスト・コードを更新できない場合が発生し、結局、自動テストは常にエラーとなる状態になっていた。工数が限られている場合は、複雑なロジック部分のみに単体テストの自動化を検討して、やみくもにプロジェクト全体に適用しないようにするなど、単体テストの自動化を行う範囲を限定する。

 これらの作業を行う際には注意、考慮しておくべきポイントがいくつかある。次にそのチェック・ポイントについて説明する。


 INDEX
  [特集].NETアーキテクトの実用プラクティス
    1..NETアーキテクトの開発現場での役割
  2..NETアーキテクトの具体的な作業
    3..NETアーキテクトのチェック・ポイント/.NETアーキテクトの心構え


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 記事ランキング

本日 月間