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

エピソード4:顧客の無理難題と闘う!

―― ASP.NETはどこまで『ファンタジー』なのか? ――

小田原 貴樹(ハンドル・ネーム:うりゅう)
2005/01/26
Page1 Page2

Webの限界? 果てなき顧客の要望

顧客担当者: 「今度、メルマガを発行しようと思ってましてね」
筆者: 「ええ。それはサイトの売り上げを向上させる意味でもよいことだと思います」
顧客担当者: 「そうでしょう? そこで、なるべくたくさんメールアドレスを収集したいんですよ」
筆者: 「それは、広告を打ったりとか、そういうことですか?」
顧客担当者: 「そういう経費がかかることじゃなくて、サイトの訪問者から集めたいんですよ」
筆者: 「プレゼント付きのアンケートをやったりとかですか?」
顧客担当者: 「そういう手間のかかることじゃなくて、
サイトの訪問者のメールアドレスを自動的に収集できますよね?
筆者: 「いえ、無理です」
顧客担当者: 「えー、ASP.NETなのに?!」
筆者: 「それはもう全然関係ないです。というか、それでメルマガ出したら大問題になると思いますけど……」

 2005年4月より「個人情報保護法」が施行されるが、そんな問題でなく、アクセスされたら自動的にメールアドレスを抜かれてしまうようなサイトなんか作ってよいわけがない。というか、そんなサイトがもしあったら筆者は絶対に行きたくない。さらにいえば、そんな方法で取得したメールアドレス宛にメールマガジンを発行したら、どんな反発を食らうか分かったものではない。

 「そんな要望をいってくる顧客なんて本当にいるの?」と、思った読者の方がいるかもしれないが、筆者はそういう要望をまったく異なる複数の顧客からいわれたことがあったりする。現実問題として「そんなふうにして抜き取ったメールアドレス何に使うんだ……」とは思わないでもないのだが、顧客担当者にはそれなりにプランがあったのかもしれない。

 あらためていうまでもないことなのだが、われわれの顧客の大部分は企業であって、企業というのは「利益の追求」を目的とした集団である。集団が利益を追求する場合、往々にして非人道的な見地に立ってしまうことは当然ながらあり得るし、一歩間違えれば非合法的な手段スレスレとなることすらあると思う。実際、上記の要望などは比較的クリーンな方で、もっと激しくアンダーグラウンドな要望を投げ掛けられたことも一度や二度ではない。

 一方、開発側であるこちらとしてもボランティアで開発しているわけではなく、利益の追求を目的としている以上、基本的には顧客の要望を叶えてなんぼである。仕事の内容が少々アンダーグラウンドであろうと、もしかしたら非人道的であろうと、開発しなければならないときというのはある。こうした物理的・技術的な問題ではなく、道義的な問題である場合の「無理難題」をどこまで引き受けるべきなのかの線引きは、非常に難しい。

 もちろん、法に抵触しそうな案件を引き受けるのは、開発側自身のリスクから見ても決して肯定できるものではない。どんな理由を付けてでもお断り申し上げるべきなのだが、Webあるいはネットワークの世界においては法整備が完全ではない部分がいまだ多々あり、「いまのところ明確に違法ではない」というグレーな領域が広大に残っているのも確かである。

 クライアント/サーバの業務システムと異なり、インターネット向けのWebアプリケーションはネットワークにつながっているからこそ、一歩間違えるとユーザーに多大な迷惑をかけるようなシステムを開発してしまうこともあり得る。これは筆者自身の考えであるが、ユーザーや特定の個人・団体に迷惑をかけるようなシステムというのは道義的に「無理難題」なのではないかと思っている。顧客担当者は純粋に企業活動として利益を追求しているだけであり、決して悪意があるわけではないと思うが、そうしたシステムを開発した結果、必ず顧客にも開発側にも何かしらの悪影響が及ぶに違いないからだ。

顧客の無理難題と向き合う!

 この連載のコンセプトについて少し補足するならば、「Webアプリケーションの開発現場ではいろいろと困ったこともあるけど、ASP.NETを利用すれば解決するかも!」といった感じになる。何といっても「ASP.NET Webアプリ開発の裏事情」というタイトルなのだから、その点は大前提としてとらえていただきたい。これまでの連載内容もそういった展開で進めてきたのだが、今回の問題についてはむしろ「ASP.NETを用いるからこそ」起こりやすくなるといえるかもしれない。

 営業の段階から顧客担当者に対して、「ASP.NETはスゴいんです!」とか「ASP.NETを利用することで、これまで出来なかったことが可能になります!」などと売り込んできている背景があるのだから、Webの制約やルールだからといって「いや、それはできないんですよ」という説明に、「ASP.NETなのに?!」といい返されたとしても仕方ない。

 しかし、ASPなど既存のWeb系システム開発言語についてある程度知識を持っている人間や、いろいろなサイトに日頃から触れている人間からしてみれば、ASP.NETでできることというのは「ファンタジー」に近いように感じられることも多い。今回は「えー、そんなこともできないの?」といわれるケースを意図的に集めているが、どちらかといえば「えっ! そんなことができるの!?」と驚かれたことの方がはるかに多いのだ。

 ただ、どれだけASP.NETが先進的なテクノロジであるといっても、Webそのものの制約を完全にブレイク・スルーするわけではないし、度を超してしまえばWebのメリットを殺してしまうことにもなりかねない。Webというインフラの上に構築する以上、今回紹介したような「無理難題」な要望というのは、かなりの確率で飛び出してくる。筆者のこれまでの経験から、プログラマ・サイドでこうした問題に対処する方法としては、大きく分けて以下の3つがあると思う。

  1. Webアプリケーション上での解決は難しいが、Windowsアプリケーションなどほかのソリューションを併用することで解決できる場合には、それを代案として顧客担当者に提案する

  2. Web独特の制約やルールの問題の場合、Webで「できること・できないこと」を分かりやすく説明する

  3. 道義的な問題については、それによって生じるリスクやデメリットを余すことなく伝える

 1に関しては、ASP.NETが解決策となり得るケースであると考えられる。ASP.NETは基本的に、Windowsアプリケーションなどと連携した動作を想定した開発が行いやすいからだ。開発前にそういった前提まで考慮して設計が行えていれば、さらに実現は容易になるだろう。

 2と3に関しては、これはコミュニケーションの問題である。何度でも繰り返すが、この連載ではコミュニケーションの重要性について訴えてきているつもりだ。今回のようなケースではむしろ「啓蒙」といった方が正しいと思えるが、Webというものが広範にしてあいまいであり、多様性を秘めているだけに、開発者およびプログラマには、ユーザーや顧客にそれをできるだけ正しく伝えられるコミュニケーション能力が要求されていると筆者は考えている。

 と、いうことで、今回はWebアプリケーション開発の現場において、顧客から投げ掛けられる「無理難題」について紹介してきた。しかし、開発者として忘れてはならないことが1つある。それは、顧客から「無理難題」が出てきたとき、「それが自分の閉じた世界にとっての無理難題」なのではないか? と常に疑うことだ。特にWebアプリケーション開発の世界では、日進月歩で技術が進化していっており、少し周りから目を離しただけで、「自分にとっての無理が、技術的な無理ではなくなっている」ということになりかねない。

 これは筆者自身にもいえることで、ASP.NETの最新技術動向やASP.NET以外の技術でできることについての勉強をいつも欠かさないようにしているつもりなのだが、ふと気付くと自分のノウハウが時代遅れになっていることに気が付いてしまったりする。コミュニケーション能力を磨いたり、最新技術を追いかけたりと、何かと忙しいことなのだが、それも技術者みょうりに尽きるということなのかもしれない。

 Webに限らず、システムというものに形がなく、概念的であいまいなものである以上、顧客にある一定以上の理解を求めるのは難しい。いつ飛び出してくるか分からない顧客の無理難題と向き合い、解決していけるよう筆者共々、努力していただければ幸いである。End of Article


 INDEX
  ASP.NET Webアプリ開発の裏事情
  エピソード4:顧客の無理難題と闘う!
    1.顧客から投げかけられる「無理難題」
  2.顧客の無理難題と向き合う!
 
インデックス・ページヘ  「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 記事ランキング

本日 月間