Web アプリは幸せを運んだか
Web の世界が発達したことで俗に言う Web アプリというものが登場しました。それまでのデスクトップアプリ・スタンドアロンアプリといった形式と異なり、作成したアプリケーションの展開が不要なのが大きなメリットでした。それまでのデスクトップアプリでは配布や展開に問題を抱えていたこともあり、また Web 技術の発展によりできることが増えたことも手伝って、利用されるシーンが大きく増えているのはご存知の通りだと思います。
Web 技術の発展は近年殊更にスピード感を増し、数年前と比較するとその進化具合がはっきりとわかります。今では簡単に扱うことができるようになった SignalR に代表されるリアルタイム Web や、jQuery 関係の多くのモジュールなど、日を重ねるごとに進歩を続けています。その速さはデスクトップアプリとは比較になりません。
デスクトップアプリで言えば母体となる OS 側が大きく進化することも減り、ゆるやかな進歩を続けている状況です。Windows 8 のように違う側面から発展しようとしているものもありますが、大体にしてデスクトップアプリ、という枠を大きく広げるものは起きていないように見えます。ある意味で「枯れた」技術となりつつあります。
このように枯れた技術であるデスクトップアプリと、今も進化を続ける Web アプリ。近年ではスマートデバイスの増加も手伝い、Web アプリを選択することも増えていますが実際に作る側の私たちにとってこれはメリットが大きかったのだろうか、と考える機会が増えてきました。
Web アプリはその性質上、Web ブラウザ上で動作させることが最も多くそのためどこからでも利用できることが最も大きなメリットとなります。反面、ブラウザによる挙動の違いがテストを行う量を膨大に増やすことになっています。また企業によっては古いバージョンに依存しているところもまだ多くあり、独特の対応を行う必要に迫れられているところも多いのではないでしょうか。
大きいメリットとデメリットを抱える Web アプリの難しさは、デスクトップアプリとは異なる性質を持っています。恐らく今ではデスクトップアプリの方が、トータルでデメリットが少ないケースも多いでしょう。表現力、操作性という点ではもともとデスクトップアプリの方が優れています。しかしそれでも Web アプリを選択しているところが見受けられますが、そのような選択を何故行っているのでしょうか。
個人的には不特定多数に向けたアプリケーションなど Web アプリでなければならないケースは多数ありますので、それらの場面で選択するのは最もだと考えています。むしろこのケースでデスクトップアプリを選択するのはありえません。それと同様に社内などの限られた範囲であり、デスクトップアプリの方が求められている要件に適しているにも関わらず Web アプリを選択している事も多く聞きます。
これらの誤ったケースで共通しているのは、メリットばかりに目を向けデメリットを考えていない事なのではないでしょうか。
実際に Web アプリの設計や作成を行われている方であればすぐに思いつくであろう、よく考えなければならない点に対してあまり考えずに突き進んでしまったために、大変な状況へと追い込まれた案件は数多くあります。知識を持たない人が、方針の決定を行ってしまう体制の場合によく聞くことができます。
また使う側からの要求も時として多くの問題を含んでいます。一般的なユーザーは Web アプリとデスクトップアプリを分けて捉えていないことも多く、○○というアプリのようにとか□□ではできているんだけど、といった開発側にしてみれば回答に非常に困る要望が出てくることもしばしばです。
これらのケースのように元々適していない要望に対して Web アプリを利用することは使う側・作る側双方にとって良い結果を残すことは殆どありません。それなのにこのような不幸なケースが減らないのは何故でしょうか。
様々な要因が考えられますが、その一つとしては要件定義の場に技術を理解している人間がいないことがあげられると思います。体制的な問題を含みますので難しいところですが、まずはこの位置に就く人間がある程度の知識を持つ必要が大前提ではないでしょうか。色々と不満を抱える人が多いとは思いますが、最初にこの点を解決できなければ、開発側だけでどうにかできる問題ではありません。今、そのようなポジションに関われないのであれば、できるだけ早くに関わることができるように努力する必要は避けられないと思います。誰か知識を持った人間が要件定義を行えるようにならなければ、恐らくこの問題は解決できません。
今回は Web アプリを題材にしていますが、当然デスクトップアプリでも同様の問題は抱えています。アプリの種類に関わらず、私たちが作るもの全てにおいて必ず直面する問題の一つなのだとも思います。何事にも向き不向きがあるように、どのような手段も向き不向きがあります。特に今ではデメリットが目立ち、メリットを帳消しにすることも十分起こりえていますので、手法の選択は可能な限り熟慮の末に行いたいものです。
目的を叶えるために正しい手段を選択できなければ、どのような手法も幸せを運んでくることはないのではないでしょうか。それはエンジニアとしては避けなければならない事なのだと思います。