ASP.NET Webアプリ開発の裏事情

エピソード1:「ASP.NETってナニ?」と闘う!

―― 普通の言葉でASP.NETを啓蒙する ――

小田原 貴樹(ハンドル・ネーム:うりゅう)
2004/10/23
Page1 Page2

著者略歴
8年間のベンチャーIT企業勤務を経て、フリーのプログラマとして独立。専門はWebアプリケーションの設計・開発。相当にマイクロソフトに偏った技術者として地元では有名。「生涯一プログラマ」を目標に、常に中小事業者を対象とした現場に立ち続けている。

 「ASP.NETでWebアプリケーションの開発」などというと、「最先端の技術を用いた最も華やかな開発」と思われがちだ。しかし、実際の現場ではクライアント/サーバの業務処理システム開発をはるかにしのぐ「泥仕合」が展開されていたりする。どれだけデジタル化されたシステマチックな開発だろうが、結局のところ「人間関係」の上に成り立つコミュニケーションの結果でしかない。本稿では、そうしたASP.NET開発の現場の実情(というか悲劇?)のほんの一部を紹介していく。

「ASP.NETってナニ?」

 どんなシステム開発の案件であっても必ず存在するのが、クライアント(顧客)とのコミュニケーションである。システムの代価を支払ってくれる直接のお客さまとなるクライアントとの人間関係というのは、現場では最も重要な部分なのだが、最も気が重いところでもあったりする。

 コミュニケーションの相手は、顧客によって企業の代表者であったり、システム担当者であったり、総務担当者だったりするのだが、筆者が主におつきあいしている中小事業者では、相手がITに精通しているということはまず期待できない。特に「Webアプリ」のようにLANあるいはインターネットなどのネットワークが絡むシステムには、妙に「迷信・風説」が飛び交っているようで、相手がまったく無知でない場合においても(むしろ無知でない場合に)、ちぐはぐなコミュニケーションが交わされたりすることになる。

 顧客とのコミュニケーションにはいくつかの段階があるが、あるシステムをASP.NETで開発しようとしたとき、最初に問題になるのが、顧客の「ASP.NETってナニ?」という問いとの闘いである。これは開発に先立つ、提案段階・見積もり段階などに発生することが多い疑問だ。この疑問に対して明確な回答ができないようでは、案件そのものが受注できなくなってしまう。

 だが上述したとおり、ITに関する知識の面では一般人と何ら変わらない顧客が多い。「ガベージ・コレクタがどうした」だの、「動的キャッシュがこうした」だのという技術用語を並べ立てて説明したところで、まったく伝わるわけがない。こうした局面で技術者に求められるのは、ASP.NETの魅力を普通の言葉に翻訳できる能力ということになる。

 言葉でいうと単純なのだが、これがなかなか難しい。一般的に、新しい技術について語られる場合、開発者にとってのメリットについては詳細に表現されているが、一般ユーザーにとってのメリットが語られることはそれほどないか、あったとしてもあまりに抽象的すぎて(「処理性能や可用性、柔軟性が驚くほど向上します」といったたぐい)、良さを実感するにはほど遠いからだ。そのため、開発元のサイトや技術解説書は、技術用語のオンパレードになってしまっている。

 結局のところ、コミュニケーションというものはケース・バイ・ケースなので、唯一の正解があるわけではない。相手によっても時期によっても変化するので、大事なことは「相手の納得が得られるかどうか」というところになる。技術者として、うそをつくのはさすがに肯定できないが、どうしたところで誇張や言葉の装飾は避けられないところがあるだろう。

 ここからは実際に、筆者がある案件の提案段階で顧客から質問された内容を紹介しよう。

 この案件は、顧客のホームページ・リニューアルに関するもので、ASP.NETによるホームページの更新システムを提案していた。具体的にはある宿泊施設のホームページ内の、新着情報やイベント情報、施設の空き具合などの情報を、HTMLを編集することなく、データベースに書き込まれた内容から動的に更新するシステムだ。顧客の担当者はホームページの運用担当者も兼ねており、インターネットに関する基本的な知識は持っている。そういう前提を踏まえて、以下を読んでいただきたい。

HTMLで普通に作ったホームページとどこが違うの?

 この質問は、ASP.NETに限らずWebアプリケーションを開発している方なら、一度はぶつけられたことがあるだろう。「結局は全部HTMLなんですよ」といってしまいたいところなのだが、それでは顧客はさらに混乱すること請け合いだ。顧客にサーバサイド技術の必要性やメリットを感じてもらえなければ、「じゃあ、これまでどおり全部HTMLで作るね」という話になってしまい、プログラマの出番はなくなってしまうことになる。

 ショッピング・サイトのようにHTMLだけでは実現が不可能で、どうしてもサーバサイド技術が必要になる案件であれば顧客の理解も得やすいのだが、ホームページの更新システムの場合には、「運用が楽になる」「コストが下がる」という点を強調しないと、なかなか顧客の理解が得られない。

 以下は、この質問に対して実際に筆者が回答した内容である。模範解答というわけではないが、参考程度にはなるかもしれない。

 基本的には、すべてのホームページはHTMLという言語で記述されています。ASP.NETを利用しても、Javaを利用しても、Webブラウザで表示される際には、必ずHTMLとして表示されます。

 HTMLは、もともとがCERNという研究機関で研究論文の閲覧用に開発された言語ですので、論文などを表現するためには非常に適していますが、きれいなデザインを実現するためには工夫が必要で、それには熟練したテクニックが必要になります。つまり、HTMLは実際には誰にでも扱える言語というわけではありません。

 また、HTMLだけで作成されたページというのは、更新が非常に大変で、少し内容を変更したいだけでも、HTML言語を使用して変更しなければいけません。そのため一般的には、更新の度にHTML言語を扱える技術者に依頼する必要があります。

 そうした理由から、ショッピング・サイトやホテルの予約サイトなど、頻繁な更新処理を担当者が簡単に行えなければならないようなサイトでは、昔からHTMLの機能を拡張できる、JavaやASP.NETなどのプログラム言語が利用されてきました。

Javaと比べて、どういうメリットがあるの?

 たとえ自身がどれだけASP.NETを信奉していても、Webアプリ開発ではJavaの存在を無視することはできない。技術上の仮想敵であり、システム開発の現場では実際の競合相手となることも多い。ASP.NETプログラマにとっての鬼門である。しかも市場的に見れば、ASP.NETよりJavaの方がはるかに知名度があるし、稼働サイト数については比べるまでもない。シェアの実態は分からないが、Webアプリのデファクト・スタンダードといえば、Javaを思い浮かべる人が多いことは否めないだろう。

 そういった現状であるから、顧客にASP.NETを推奨しても、表題のような質問を浴びせられることは少なくない。「僕の好みなんです!」とか、「マイクロソフトについていけば間違いありません」と個人的には押し切りたいところなのだが、そんな回答で顧客が納得するわけがない(というか、そんな顧客がいたらそれはそれで嫌だ)。

 実際、Webアプリの開発言語として「できることの幅」は、総じてASP.NETよりもJavaの方が広いと思われる。例えばJavaであれば、サーバ・サイドの開発も、アプレットなどを利用したクライアント・ベースの開発も、どちらも可能になる。確かに、.NET Frameworkを利用すればブラウザ上で動作するクライアント・プログラムを開発することもできるが、現状において不特定多数に公開するホームページで利用することは難しい。スピードや安定性の面に言及しだすと顧客にとっては話が難しくなるし、一歩間違えれば水掛け論になってしまう。

 ということで、筆者が「対Java」の論戦を張る場合には、開発コストが低く抑えられることと、小回りが利くことを強調するようにしている。これもまた相対的な評価にすぎないが、ASP.NETはそのクラス・ライブラリから開発環境までのすべてがマイクロソフト技術で開発されているので一貫性が高く、Visual Studio .NETという優れた開発環境を使うことで将来的なメンテナンスにも素速く柔軟に対応できるので開発コストが低くなるという点などから、同じWebアプリを開発する場合にはJavaよりもASP.NETの方が総合的な工数は少なくなると筆者は考えている。

 まぁ、何はともあれASP.NETを推奨するプレゼンテーションなので、間違っても「Javaの方が優れている」という印象を与えてはいけない。顧客にとっては一番の落としどころである「開発コスト」の面を強く主張するのは常とう手段だろう。

 以下は、この質問に対して実際に筆者が回答した内容である。苦しさが表れる文面を読み取っていただけると思うが、筆者自身が心の底から「Webアプリ開発言語として、ASP.NETの方が優れている」と信じていることだけは真実である。

 Javaは、サン・マイクロシステムズ社が開発したプログラム言語です。Webブラウザ上で動作するプログラムが作成できるため、古くからいろいろな場面で利用されてきました。

 例えば、オセロのようなゲームから、大規模なショッピング・サイトなど、さまざまなホームページ上で動作するプログラムを作成できます。しかしその分、技術的な難易度が高く、開発にコストがかかる点がデメリットとなっています。

 大規模で一貫したショッピング・サイトなどで用いるのであれば、多少のコストの高さは問題になりませんが、ちょっとしたホームページの更新プログラムに利用する場合には、将来的なメンテナンスがの面から見てASP.NETの方が有利だと思われます。


 

 INDEX
  ASP.NET Webアプリ開発の裏事情
  エピソード1:「ASP.NETってナニ?」と闘う!
  1.「ASP.NETってナニ?」
    2.XMLやJavaScriptとはどう違うの?
 
インデックス・ページヘ  「ASP.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 記事ランキング

本日 月間