TERASOLUNA for .NETフレームワーク概説

高品質なWindowsアプリケーション構築ポイント

株式会社NTTデータ
技術開発本部 ソフトウェア工学推進センタ 
立見 博史
2009/01/06
Page1 Page2 Page3 Page4

【本稿の読者ターゲット】
・.NETを使った業務システムの開発者
・その開発者の中で特に、どのようなフレームワークを構築すればよいのかを検討する方

 連載第1回の「.NET開発でもオープンソース・フレームワークを使おう」では、.NETでの業務システム向けフレームワークに必要な“3+1”の条件として、機能面から3つの条件と、.NET開発の特性を踏まえた1つの条件を提示しました。

  • 機能面の3つの条件
    業務システム全体のアーキテクチャを統一する
    複雑な処理を隠ぺいする
    .NET Frameworkでは足りない機能を強化する

  • .NET開発の特性を踏まえた1つの条件
    .NET FrameworkとVisual Studioの仕組みをそのまま利用する

 第1回はこれらの条件を踏まえたフレームワークとして、「TERASOLUNA for .NET」(正式名称「TERASOLUNA Server/Client Framework for .NET」)の概要を紹介しましたが、本稿では、TERASOLUNA for .NETを活用して、いかに保守性が高く、高品質なWindowsアプリケーションを開発するかということについて、より深く突っ込んで解説していきたいと思います。

 題材としてはスマート・クライアント型アプリケーションを取り上げます。TERASOLUNA for .NETを使って開発した場合と、そうでない場合の実際のプログラム・コードを比較して、TERASOLUNA for .NETがどのような思想のもとに高品質なWindowsアプリケーションの開発を実現しているのか、ということについて見ていただきたいと思います。

 この思想はTERASOLUNA for .NETを使ってWindowsアプリケーションを開発しない場合でも、必ず皆さんのお役に立つはずです。ぜひ、最後までお付き合いください。なお、コードはC#で記述しています。

Windowsアプリケーション開発で起こり得る問題点

 業務システムとしてWindowsアプリケーションを開発する際によく起こる問題として、システム全体の保守性の低下と品質の低下が挙げられます。

 原因はいろいろ考えられますが、大きな要因の1つとして、「.NET Frameworkを使うことによるWindowsアプリケーション開発の容易さ」が挙げられます。Windowsアプリケーションの開発には、通常はWindowsフォームを利用します。Windowsフォームでは、画面上のボタンのクリック・イベント・ハンドラなどにさまざまな処理を実装するのが基本的な手順です。この実装方法は非常に直感的で分かりやすく、多くの人がWindowsアプリケーションの開発は簡単だと感じるのではないかと思います。確かにそのとおりで、この方法によりイベント・ハンドラに業務処理のコードの多くを実装してしまいがちです。

 このようにイベント・ハンドラに業務処理までを実装することは、数人で開発を進めるような小規模な業務システムではあまり問題にならないかもしれません。しかし、数十人から数百人が同時に開発に携わるような大規模な業務システムでは、顕著にシステム全体の保守性と品質の低下につながります。

 例えば、各プログラマーがさまざまな画面のイベント・ハンドラに、同時に並行して業務処理を実装していく場合を考えてみましょう。この場合、一見似ているけれども、よく見ると各プログラマーによって実装方法が異なるプログラム・コードが、たくさんのイベント・ハンドラに散在してしまいます。同じようなプログラム・コードを各プログラマーがさまざまな場所で実装するのは無駄なので、共通化したいところでしょう。

 また、Windowsアプリケーションでは非同期処理、通信処理、例外処理などの複雑な処理の実装がよく必要となりますが、これらを複数のプログラマーに委ねる場合、プログラマーのスキル・レベルがシステム全体の品質に大きな影響を及ぼすことになります。複雑な処理の多くを複数のプログラマーが独自に作り込んでいけば、品質の低いシステムができてしまう可能性も高くなります。

 このように、Windowsアプリケーションを開発するうえで、いかにして安定して保守性が高く、高品質なシステムを開発するかということは、大きな課題となっています。

いかにして保守性が高く、高品質なWindowsアプリケーションを開発するか?

 では、いかにして保守性が高く、高品質なWindowsアプリケーションを開発していけばよいのでしょうか? そのための1つの方法が、アプリケーション・フレームワーク(以後、フレームワーク)を活用することです。

 フレームワークで以下のような機能を提供することで、保守性向上と品質向上を実現できます。

  • フレームワークに必要な機能
    典型的な処理を定型化
    非同期処理や通信処理などの複雑な処理の隠ぺい化
    の処理中での統一的なエラー・ハンドリング処理

 については、前回の記事でその必要性を述べましたので、そちらを参照してください。本稿ではについて、もう少し深掘りしていきます。

 エラー・ハンドリング処理とは、業務エラーや例外をシステムとして適切に処理することを指します。業務エラーや例外は、ユーザーが不正な入力を行ったり、システムに不具合があったりした場合に発生します。このようなエラーの内容は、システムを使用中のユーザーに適切に伝えなければなりませんし、不具合を改修する開発者のためにその詳細を記録しておく必要があります。

 このようなエラー・ハンドリング処理は、小規模な開発であればtry-catch句やWindowsフォームのApplication.ThreadExceptionイベントを活用して、各フォームのイベント・ハンドラに実装しても問題ありません。

 しかし、数十〜数百の画面という大規模開発になると、システム全体で統一的なエラー・ハンドリング処理を各画面個別に実装していくことは至難の業です。すべての画面でいかにエラー・ハンドリング処理を統一化して効率的に実装していくかは、保守性の高い、高品質なアプリケーションを開発するうえで必ず検討しなければならない重要な課題となります。

 これらの重要課題を業務システム開発の初期に検討することは非常に重要です。そして重要課題を解決するためのフレームワークを整備することが、さらに重要となります。これらの課題を解決するためのオープンソースの業務システム向けフレームワークとして、TERASOLUNA for .NETがあります。TERASOLUNA for .NETでは、NTTデータが過去に行った大規模開発でのノウハウを踏まえてアーキテクチャを設計しているため、開発初期にこれらの重要課題の検討を一から始めることが不要です。

 ここからは簡単なスマート・クライアント・アプリケーションの実装を例として、TERASOLUNA for .NETを活用したWindowsアプリケーションの開発思想について解説していきます。


 INDEX
  [TERASOLUNA for .NETフレームワーク概説]
  高品質なWindowsアプリケーション構築ポイント
  1.保守性が高く、高品質なWindowsアプリケーションの開発
    2.TERASOLUNA for .NETを活用<しない>スマート・クライアントの開発
    3.TERASOLUNA for .NETを活用したスマート・クライアントの開発
    4.TERASOLUNA for .NETの応用例

インデックス・ページヘ  「TERASOLUNA for .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 記事ランキング

本日 月間