連載:VB研公開ゼミ議事録

第5回 VB開発者がWebアプリで失敗しない方法

デジタルアドバンテージ 一色 政彦
2008/03/11
Page1 Page2

3. WebやASP.NETをどうやって学んでいけばよいのか?

小川 WebやASP.NETを学ぶうえで何か良いリソースはありますか?

宮崎 マイクロソフト・コンサルティング本部の赤間さんが書かれている『.NETエンタープライズWebアプリケーション 開発技術大全』のシリーズ(通称「赤間本」)はお勧めです。これを読めば、ASP.NETをより適切に活用するための知識はほぼすべて得られると思います。また翻訳本では『プログラミング Microsoft ASP.NET 2.0』がよいと思います。

小川 マイクロソフトのサイトでお勧めのものはありますか?

マイクロソフト株式会社
デベロッパー&プラットフォーム統括本部
Visual Studio マーケティンググループマネージャ
近藤 和彦

近藤 基本的にすべてのドキュメントはMSDNライブラリに入っていますので、まずはMSDN Japanサイトを押さえていただきたいと思います。それ以外に、スタートアップ向けに『「300 秒でズバリ !!」「10 行でズバリ !!」シリーズ』などを提供しています。

 個人的には、宮崎さんも挙げられた『プログラミング Microsoft ASP.NET 2.0』と、さらに『プログラミング Microsoft .NET Framework 第 2 版』という書籍がお勧めです。あと冒頭の話でも出てきたように、どのような開発でもUIと業務ロジックは切り分けるべきですが、その指針として『アジャイルソフトウェア開発の奥義』がお勧めです。この本は@IT/Insider.NETの『.NETで始めるデザインパターン』という記事でも紹介されていますので、ぜひ参考にしてください。

一色 ところでひとえにWebを学ぶといっても、「URLアドレス」「Submit(送信)」などのインターネット・ユーザーならある程度は知っている利用者レベル、アプリケーション・レベルの仕組みから、「HTTPプロトコルのGET/PUTコマンド」などのより下位にあるWebサーバ・レベルの仕組みまで、さまざまなレベルがあると思いますが、これからASP.NETについて学ぶ開発者はこれらすべてのレベルについて知っておく必要があるのでしょうか?

宮崎 昔はWebサーバ・レベルの知識も要求されましたが、現在のASP.NETではそれほど下位レベルの知識は恐らく必要ありません。それよりは上位レベルのASP.NETが持つ仕組み、例えば「セッション」「ポストバック」などを重点的に学ぶ必要があると思います。

一色 確かに、宮崎さんの「連載:VB6開発者のためのASP.NET開発入門」はそのあたりが詳しく書かれていましたね。先ほど挙げられた赤間さんの『.NETエンタープライズWebアプリケーション 開発技術大全』は内容が比較的高度なうえにすごく分厚い本なのでASP.NETの初学者にとっては読むのが大変だと思いますので、まずはこの宮崎さんの記事でASP.NETを学び始めるとよいのでしょうかね?

宮崎 ちょっと「はい」といいづらい……。

会場 (笑)

宮崎 わたしは社内でいろいろなASP.NETプロジェクトにかかわっていますので、さまざまな失敗事例も目にしてきました。今回の連載では、そのような失敗をしないために気を付けるべき点をまとめましたので、そこに注目して読んでいただけるとうれしいです。

八巻 宮崎さん本人からはいいにくいと思いますので(笑)わたしからコメントしたいと思いますが、わたしは昨日、連載全5回分を読みましたが、お世辞ではなく、VB6をメインに開発してきた方がASP.NET開発を始めるに当たって一番欲しい情報があの連載には詰まっていると感じました。わたしもサポート業務でVB6からASP.NETに移行した方の質問を受けることがありますが、まさにあの連載に書かれているようなことが問題となっているケースはいくつもあります。

小川 あのこれ……、事前に打ち合わせをしたわけでもないんですけどね……。

会場 (笑)

4. ASP.NETでありがちな失敗とは?

一色 VB6開発者がASP.NETに携わるとき、実際にはどのような失敗をすることが多いのでしょうか?

宮崎 実装レベルでいうと、操作性を高めるためにUIで何か工夫しようとして行き詰まることが多いです。例えばWebではその仕組み上、Windowsアプリのようにメッセージ・ボックスを表示できないためJavaScriptのalert関数を使う必要がありますが、ここで行き詰まったりしています。

 ほかにはセッション関連です。Webでフォーム間のデータのやりとりを行う際にセッションはとても便利ですが、それゆえに使いすぎてしまうというケースが多々あります。Webサーバはたくさんのユーザーから同時に利用される可能性があるので、セッションをあまり使いすぎるとサーバに負荷がかかりすぎたり、リソース不足になったりします。

 設計レベルでは、データベースへのアクセス関連で多いですね。データベースをロックしたいけど、どうすればよいのかといったことです。ここで設計を間違えれば、(ロックをはずすタイミングがなく)ロックしたままになったりする危険性があります。基本的にはロックをしなくて済む設計をすべきです。

近藤 わたしもお客さんのトラブルのお話を聞く機会が多々あるのですが、ASP.NETで問い合わせが多いのはパフォーマンス関連です。データセットに100万件ものデータを入れてページの表示が極端に遅くなってしまったり、1つのフォーム上に異常な数のコントロールを貼り付けたためにページの初期表示にすごく時間がかかってしまったり。このようなWebの特殊な事情に基づく失敗が多いです。

 また、ありがちなのが、物理的な配置を3階層に分けたシステムでユーザーの認証情報を渡そうとして失敗するケースです。例えばデータベースのアクセスにWindows認証を使う場合、開発時はデータベースとWebサーバを同じマシンに入れているためにうまくいきますが、実際の運用で物理的にデータベースとWebサーバのマシンを分けると、Webサーバ(UI層)から業務ロジック層、業務ロジック層からデータベース層へと、2つの境界をまたいで認証情報を渡すことができずに失敗します。このような問題に対しては先ほども挙がった『.NETエンタープライズWebアプリケーション 開発技術大全』を読むとよいです。

小川 Web/ASP.NET開発で失敗を犯さないためには、やはり正しいWebとASP.NETの知識を身に付けたうえで、Webアプリを設計・実装することが大切なのですね。

5. 業務Webアプリはこれから将来どうなるのか?

小川 最後のテーマになりますが、現在、ASP.NET AJAXやSilverlightなど、さまざまな新Webテクノロジが登場しています。これからの業務Webアプリはどうなるのでしょうか?

宮崎 Webの歴史は常にコンシューマから始まっています。最初にWebが登場したころ、誰が現在のように業務アプリで普通に使われるようになると想像できたでしょうか? 恐らくその当時の大多数の人はWebは個人や研究室で使われる、言葉は悪いですが「お遊び・趣味感覚の技術」としてしかとらえていなかった。しかしいまやAJAXについても多くのコンシューマ・サイトで使われるようになってきています。明言はできませんが、これまでの経験からいうと、AJAXやSilverlightのようなテクノロジも、いつのまにか普通に業務Webアプリの中で使われていくのではないだろうかと思います。

小川 Webアプリもよりリッチになっていくことになりそうですが、一方のWindowsアプリもClickOnce機能などで展開・運用機能を高めてきています。WebアプリとWindowsアプリの差異が見えなくなってきて、どちらを採用すべきなのかというのもだんだんと分かりにくくなってきているように感じます。

近藤 そうですね。テクノロジを進化させるときには、「長所を生かして短所を埋める」ということをしますので、異なるテクノロジが徐々に似通ってくる部分はあると思います。ですが、根本的な特性は変化しないはずです。テクノロジ同士がいくら似通ってきても、ハードウェアやネットワーク環境において、その特性がより生かせる場面は明らかに異なっていると思います。WebアプリとWindowsアプリが発展・進化していかに似通ってきても、その特性からおのずとどちらを採用すべきかは決められると思います。

小川 時間となりました。今日はどうもありがとうございました。End of Article


 INDEX
  VB研公開ゼミ議事録
  第5回 VB開発者がWebアプリで失敗しない方法
    1.Web開発に本当に移行すべきなのか/移行時に発生する問題点
  2.WebやASP.NETの学習方法/Web開発で起こりやすい失敗/業務Webアプリの将来

インデックス・ページヘ  「VB研公開ゼミ議事録」


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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH