.NETによる大規模システム開発で失敗しないために

マイクロソフト株式会社コンサルティング本部
赤間信幸

聞き手、文責:デジタルアドバンテージ
2004/06/30
Page1 Page2

システム構築を成功させるための設計テクニック

―― 今回の『.NETエンタープライズWebアプリケーション開発技術大全』シリーズですが、これを執筆した経緯はどのようなものだったのでしょうか。

 

 冒頭でお話ししたように、前職ではJ2EEを利用したシステムのアーキテクチャ設計や方式設計を担当していました。このとき、実用に堪えないアプリケーションを構築してしまったという苦い経験があります。

 当時はJ2EEの先進性や開発容易性をうたった雑誌記事が多かったのですが、大学院卒業後の駆けだしだった自分は、そういった記事をある意味うのみにして、それでプロジェクトを乗り切ろうとしてしまいました。ところが、いざ出来上がってテストしてみたら、とても使い物にならない。今にして振り返ってみると、それはJ2EEというテクノロジのせいではなく、方式設計の基本ともいえる部分を私自身が全く実践できていなかったせいなのですが、個人的には相当手痛い思いをしました。

 幸い、小規模で試験的なプロジェクトだったということもあり、それ自体は事なきを得たのですが、マイクロソフトに移ってコンサルタントとしていろいろな情報システム開発の現場を見ていると、大規模なプロジェクトで、私が過去に経験したものと同じような課題に直面しているケースが非常に多いことが分かりました。

 コンサルタントの経験を通じ、さまざまなプロジェクトに参加させていただいて分かったのですが、どのプロジェクトでも、業務設計とプログラム設計をいかにつなげるのかという部分で困っているのです。ところが、現状はその部分を学習することが極めて困難です。米国にはそういった書籍は何冊か存在するのですが、日本では断片的な資料はあっても、まとまった形になっているものがなかなか見つかりませんでした。ここ数年、この部分について、何かしら手を付けたいとずっと考えていました。

 そこで今回、書籍という形で1つ問い掛けてみたいと思い、この企画についてマイクロソフトプレスと相談しました。

―― では、きっかけは赤間さんからなのですか。

 

 そうです。

 マイクロソフトプレスの担当者も認識していたのですが、一般的に日本のデベロッパ向け書籍は、2つの課題を抱えています。1つは、入門者向けの情報と、上級者向けの情報のレベルに大きな格差があることです。

 例えば、マイクロソフトプレスを例にすると、入門者向けにはアプリケーションの実装方法やツールの使い方を細かく紹介しながら説明する『ステップバイステップ』シリーズがあります。一方で、ハイエンド向けには『patterns & practices』と呼ばれるシリーズがあります。これらは両極端な書籍なのですが、ちょうどこれらの間を埋める中級者向けの書籍が少ないのです。日本のデベロッパ向け書籍には、入門ユーザーから、中級開発者、上級開発者になるための、いわゆる教科書となり得る書籍が少ないのです。

 
 
 

 もう1つは、先に述べた、開発における業務設計とプログラム設計の断絶です。日本には、翻訳書も含めて、これらの間を埋める書籍がほとんど見当たりません。拙著が目指しているのはこの領域なのですが、この領域を勉強するための教材がないと思ったのです。これは.NETに限ったことではなく、Javaにせよ、それ以外のテクノロジにせよ、日本のデベロッパ向け書籍の状況は同じようです。この領域を、日本市場に特化させながら解決していけないかと思いました。

 こうした問題の解決のためには、設計時の基本となるセオリーやテクニックなどを理由つきで学習し、それを少しずつでも使いこなせるようになっていただく必要があります。マイクロソフトやパートナー企業が日常的に当たり前のように利用しているセオリーなどを、学習しやすい形にまとめ直してお伝えするもの、それが本シリーズだと考えていただけると分かりやすいと思います。
 

―― すでに第1巻から第3巻までが発売されており、残り2巻が今秋に発売されるということですね。これらはすべてWebアプリケーションについてのタイトルですが、今後はXML Webサービスやスマート・クライアントなどのテクノロジについても広がりを持たせる予定ですか。

 

 このシリーズについては、Webアプリケーションに特化しており、このシリーズ内でほかのテクノロジを取り扱うことはありません。ですが本シリーズは、本質的にはサーバ・サイドの設計の考え方にフォーカスしています。そのため、今後システムがスマート・クライアント系に進むとしても、ビジネス・ロジックより後ろのサーバ・サイドでの設計の考え方やトランザクション制御の考え方はそのまま活用できます。また、第4巻で扱うチーム開発や開発環境、あるいは運用に関連する部分、あるいはセキュリティ関連などについても、その本質的な考え方はスマート・クライアントなどでもまったく変わりません。

 そもそも、Webアプリケーション開発で困っている開発者が多い現状で、スマート・クライアントだけを前面に押し出した解説を進めることは、マーケティング的にはともかくも、本当に開発者に役に立つものになるとは思えません。現状を踏まえたうえで、いま何をいかに勉強していけばよいのかを考えていくと、Webアプリケーションを正しく設計・実装することだろうというのが私の結論です。Webアプリケーションをきちんと学んでおけば、サーバ・サイドのビジネス・ロジック層以下はまったく同じですから、スマート・クライアントでもXML Webサービスでも応用が利くと思います。こうした事情から、今回はWebアプリケーションを取り上げました。

―― 現在Insider.NETでは、VB6プログラマの方々に、いかにして.NETに移行してもらうかということが大きなテーマの1つになっています。いまだに、よく分からない.NETに移行などしなくても、VB6+クライアント/サーバ型のシステムで、それほど困っていないとおっしゃる方も多いようです。私たちとしては、そういった方々にも、次期WindowsであるLonghornなど次世代に向けたコンピューティングのスキルを身に付けていただきたい。そのためにどうすればよいかといったことを考えています。それと、今回の書籍と共通する部分はありますか。

 

 本質的な「思い」の部分は、全く同じではないでしょうか。

 これは私の考えですが、確かに、例えば5〜10人ぐらいの、ごく小規模なエンドユーザー向けのアプリケーションを開発するなら、無理にASP.NETでWeb化したり、論理3階層で開発したりする必要は必ずしもないと思っています。やはりシステムには、個々のシステムの要件に応じた最適なSIソリューションというものが存在するはずです。そのときに、クライアント/サーバ型システム、Webシステム、あるいはスマート・クライアントなど、さまざまなシステム形態のうちのどれがよいかはケース・バイ・ケースです。

 ただ、少なくともいえることは、実装の手間になる部分は、テクノロジやツールの進化によって、おそらく今後どんどん減ってくるということです。

 例えばOfficeでいうと、AccessやInfoPathという製品がありますが、これらを使うだけで、データベースやXMLデータを取り扱うフロントエンド・アプリケーションなど、相当なものが作れてしまいます。こういったテクノロジの進化の中で、いまと同じ技術にすがり続けるだけでは、やがて先細っていくのは間違いありません。

 これはなにも.NETに限ったことではないはずです。IT業界そのものが著しい進化の過程の中にいますから、それに合わせて開発者もスキルをアップし、成長していかなければ生き残っていけないのではないでしょうか。現在でもオフショア開発を初めとして、日本と海外との間の敷居は下がりつつありますが、海外のレベルの高さを見ると、自分自身も日々、戦々恐々としているというのが正直なところです。

 そうした現状を踏まえて将来を考えてみると、アプリケーションは小規模から大規模へ、あるいは単純なものから複雑なものへといったふうに、横に広がっていくか、より深く掘り進んでいくかのいずれかになると思います。どちらの方向でもよいので、より大規模なシステム開発に目を向けていくか、より深く技術を掘り下げていくかといった、大きな指針を決めて自身のスキルアップを図っていくのがよいのではないかと思います。

 今回の拙著は、大規模開発や大規模ソリューション、あるいは大規模トランザクションなどを知るための第一歩としてご利用いただけるだろうと思います。.NET、J2EEといわず、多くの開発者の方々に、ステップアップのための踏み台として拙著を活用してもらいたい。それがこの本に込めた私の思いです。End of Article

 
 

 INDEX
  [Trend Interview]
    .NETによる大規模システム開発で失敗しないために(1)
  .NETによる大規模システム開発で失敗しないために(2)
 
インデックス・ページヘ  「Trend Interview」


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

本日 月間