.Netでクラサバ開発を10年くらいしてましたが、ここ数年Web系の開発にシフトしています。.Netのクラサバシステムばっかり開発している人はwebについて否定的(私のまわりだけなのか?)なので、VisualStudio、WindowsOS限定ではありますが、いろいろ比較してみたいと思います。
■リリース
・クラサバ
ClickOnceやインストールパッケージを使って、まとめてからリリース。環境構築はクライアント端末ごとに必要。
・Web
ASPやwebAPIはアプリケーションの公開(=ワンクリック) でリリース。フロントをHTMで作る場合は本番環境サーバーにコピペ。
クラサバだと全クライアント端末に環境を仕込む必要があるので大変です。ClickOnceを使ったとしても設定を間違えリリース失敗とかよくあります。ClickOnceの設定も初心者には難しいです。わかっている人は往々にして忙しい。
Webならクライアント端末が100台、1000台あろうともサーバーにリリースするだけで済みます。
結論:不変なシステムならクラサバでもいいけど、不変なシステムなんてないよ。
■動作環境
・クラサバ
クライアントOSに依存する。windoows PC、Mac、Androidはすべて別ものとしてシステムを作る必要がある。Xamarinを使う手もあるが、WindwosFormに開発者にとっては厳しい。スマホで使うにはストアにアップしないといけない。
・Web
ブラウザに依存する。windoows PC、Mac、Androidどんな端末でも使える。Chrome,IE,FireFoxあるけど業務で使う分にはどれかひとつに絞ればいい。クロスブラウザでの利用だとしても、デザインだけの問題なので、各端末ごとにシステム作るより工数はかからない。
結論:色々な端末で同じシステムを使いたいならweb一択。WindowsPCしか使わないならクラサバでも。ただしクラサバシステムはOSアップデートのたびに更新が必要。
■入力の快適さ
・クラサバ
イベント単位でサーバーとやりとりできる。ボタンを押しても画面ロードせずに値が更新される。ファンクションキーを活用して、キーボードのみで画面操作が完結できる。
・Web
PHPやASPなどサーバーサイドで処理する仕組みだとページロードが頻繁におきてしまう。Ajaxなどを使えば非同期でサーバーとやりとりできるので、クラサバと同じ感覚で画面設計ができる。ファンクションキーの使用には注意が必要。
最近はAngularなど、SPA(シングルページアクション)なフレームワークがあるので、非同期を前提にしたWebシステムの開発が楽になりました。HTMLデザイナーにとってAngualrは敷居が高いですが、C#でクラサバ開発していた人なら余裕です。クラサバ開発者にとってはむしろCSSの方が手ごわいです。クラサバ業務系システムでありがちな「Enterキーで次の入力に移動する」はWebシステムでも可能です。
結論:非同期通信により、Webでもクラサバ並みの快適さ。ただし、コンマ秒以下の早さが必要、検索結果に何万件と表示するなど、システム負荷が高いものはクラサバが有利。
■開発コスト
・クラサバ
作り方次第
・Web
作り方次第。フロントはHTML形式で記述できるようにすると、外注の幅が広がる。
■保守性
・クラサバ
作り方次第
・Web
フロントエンドとバックエンドを完全に切り離した方が楽。
■閲覧性
・クラサバ
社内環境のみ。社外からみたい場合はリモートデスクトップ。
・Web
Webサーバーの設置場所次第。
社内のみ:ローカルネットワークにWebサーバーをたてる
外から社内の人間のみアクセス:Webサーバーにwindows認証をつけるなど
だれでも見れる:レンタルサーバーやAzureに公開するなど
結論:クラサバでもリモートデスクトップで社外から使える。社外の人が使うならWebシステム一択。
■帳票
・クラサバ
帳票開発ツールを使って作成
・Web
HTMLtoPDFで帳票作成が可能に。印刷用CSSも設定可能
HTMLでもミリ単位で配置を設定できます。ただし、ページをまたぐような帳票は要素の高さを都度取得して改ページするかしないかを判断する処理が必要です。
結論:webシステムでも帳票は出力可能
■全体
・クラサバ 社内利用&塩漬けするシステムなら問題ない。OSアップデートを乗り越えられるかがカギ。
・Web 表現がクラサバにおいついている。端末を選ばない、OSアップデートによる開発が発生しないので、利用者に有利。
何かを入力するシステムならWebシステムで十分だと思います。デバイス連携があったとしても最低限のクライアントシステムを作って、API連携でサーバーに送信し、メインの閲覧/入力はWebにするとか。
「今までOSアップデートの5年ごとにシステム更新の受注がとれてハードの売り上げもあったのに、Webシステムでクラウドに移行した日には売上たたないじゃないか!」という声もあるかもしれません(笑)