Webインターフェース:開発またはその逆?

もちろん、ユーザーインターフェイスとその開発の低下についての考えは長年にわたって紡がれてきました。今日、それらを共有したいと思います。 多くの人々は、スパース機能と限られたユーザビリティを備えた古いテキストモードの疑似グラフィックインターフェイスを覚えています。 その後、グラフィカルモードのウィンドウインターフェイスに置き換えられ、現在はWebインターフェイスになりました。 しかし、アプリケーションの消費者、ユーザー、入力オペレーターの速度は向上していますか? 画面とレポートの開発速度は向上しましたか? 多くの人があなたにしっかりと「いいえ」と言うでしょう-プログラマーとユーザーの平均的な生産性は、テクノロジーの新しい一歩が進むごとに減少しました。 そして、これには多くの客観的な理由があります。 それらに加えて、生産性を向上させる方法について今日停止します。

テキストモード


テキストインターフェイスの欠点については説明しませんが、明らかです。 しかし、テキストモードでは、否定できない利点がありました。

画面を完全に制御します 。 画面全体がアプリケーションプログラムインターフェイスで完全に覆われており、パンやフリルの余地はありませんでした。実行中のプログラム、コミュニケーターのポップアップウィンドウ、オープンソーシャルネットワークを備えたブラウザーは数十もありませんでした。

キーボードの使用率が高い 。 特殊なパッケージでは、キーの組み合わせの知識がなければ不可能であることは誰もが知っています。 しかし、マウスの出現により、ユーザーはホットキーやカーソルさえも学習せず、多くのプログラマーはキーボードを使用してアプリケーションのフルコントロールの実装を学習しませんでした。

行動の曖昧さ 。 通常、各時点でテキストモードのアクションの数は非常に限られているため、プログラム、その開発およびテストを簡単に操作できます。 異なる機能は実際には重複せず、改善中に何かが壊れるという事実に関する問題ははるかに少なくなります。

ウィンドウインターフェース


グラフィカルユーザーインターフェイス、OOPとウィンドウシステムの使用、ビジュアルコントロール間のメッセージ送信、マウスとタッチスクリーンの使用に基づいて、多くのことができましたが、さらに時間がかかりました。
ウィンドウアプリケーションの利点:

今批判:

もちろん、経験豊富な開発者ははるかに優れたインターフェイスを作成し始めましたが、ほとんどの開発者とユーザーはリラックスして異端に夢中になりました。
結論: 過度の自由は大衆にとって破壊的です。

Webアプリケーション


そして、すべての人幸福が訪れました。ユーザーにコンピューターにクライアントをインストールする必要がなくなり、DLLバージョン、.NETバージョン、およびコンピューターの多くの設定を心配する必要がなくなり、ユーザーコンピューター上のソフトウェアの競合を処理する必要がなくなりました。 すべてはブラウザで行われ、現在でも標準はすべてのブラウザでかなり許容範囲内でサポートされています。 ソフトウェアを更新する必要はありません。 データセキュリティの側面:すべてがサーバーに保存され、一元的にバックアップおよび保護されます。 プロトコルに関しては、心配する必要はありません。HTTPSとJSONがあり、すべてが便利で保護されています。 不正なバージョンのアプリケーションソフトウェアは使用できません。 コンピューターにはインストールされませんが、ネットワーク上のSaaSモデルで使用されます。

しかし、すべてがとても良いですか?
ネットワークが存在しない場合、私たちは仕事をすることができません。まあ、それはどういうわけか耐えられます。ネットワークは常にあるべきです。そうでなければ、グループワークやコミュニケーションはありません。 入力中に何かがフリーズしたり、ネットワークが失われた場合-入力されたデータが失われ、ネットワーク経由で送信することはできませんが、ローカルに保存する場所はありません(ローカルストーリーとWeb SQLはまだどこでも利用できません)。 RESTイデオロギーの封印、状態の完全な欠如。 資金不足さまざまなブラウザとその機能には、追加のテストとデバッグが必要です。 メイクアップはIE用に個別に行われることもあります(他のブラウザ用のバージョンはあまりありません)が、これには非常に注意が必要なマークアップがあります。

ウィンドウインターフェイスから何が継承されますか?

OOPとパターンをほんの少しだけ再考しましたが、他の人は考えずに取りました。 ただし、Webの特異性は、サーバーアプリケーションが1秒未満でライブを行うことです。一方、サーバーアプリケーションはステートレスであり、ユーザーインターフェイスはページの更新時にその状態(フォーム、変数、オブジェクトの値)を保持しません。 一般的に、RESTは私たちのやり方ではありません。ユーザーインターフェイスやデータベースアプリケーションでは、空気のような状態が必要です。また、多くの人が解決策を見つけています。セッションメカニズムとCookieサーバー側のキーバリューDBMSであるHTML5のローカルストレージとWeb SQL。

Web開発のトレンド


すべての問題と新しい機会を考慮に入れて、ネットワークの高度な部分全体によって積極的にサポートされている主流が現れました。


視覚的なコントロールとソリューションをさらに詳しく考えてみましょう。


スクロールゾーン -コントロールのあるすべてのコンテンツが1つのトラックバーを右に(または右から左に左に)一度にスクロールする場合、典型的なスクロールは全画面表示です。 ただし、Webアプリケーションの場合、これは便利ではなく、より適切な解決策は「パネルの接続」の原則です(ウィンドウアプリケーションで通常行われます)。たとえば、ツールはブラウザウィンドウの上部の境界に接続され、全幅に引き伸ばされるパネルに配置されます。左側には、動的にロードされたツリーがウィンドウの左端に接着されたパネルがあり、下部にはステータスバーがあり、右側にはコンテキストタスクがあるパネルがあり、画面の中央部分全体がドキュメント、マップ、テーブル、画像などの作業オブジェクトで占められています 各ゾーンには独自のスクロールがあります。 もちろん、中央部分のゾーンのみがスクロールし、他のすべてのパネルはスクロールしないか、トラックバーではなく、1つの軸に沿ってのみスクロールが実行されることが理想的です。

スプリッター。 ウィンドウアプリケーションの場合、マウスでドラッグできるパネル間の動的なセパレータが一般的です。 また、Webインターフェース用に実装されましたが、あまり使用されておらず、スプリッターはモバイルアプリケーションではすでにまったく適用できません。 いくつかの解決策があります。複数の状態を持ち、コントロール要素をクリックすると状態を切り替える「離散スプリッター」。 「スマートスプリッター」-解像度と接続のためにパネルのサイズを調整します。マウスでドラッグすることは非常にまれです。 「フローティングスプリッター」-パネルが長時間非アクティブの場合、パネルが非表示になり、マウスを上げると元に戻りますが、タッチスクリーンに問題があり、マウスカーソルがありません。

グリッド -テーブルおよびより複雑な複合グリッド。 それらには多くの問題があります:

グリッドに入れたいもの:


ツリー -完全な幸福のために、ツリーはグリッドとほぼ同じリストを満たす必要があります:動的にロードする、マウスとキーボードで制御する、その場で編集するなど

メインメニュー -悪夢のように忘れてください! Web上のウィンドウアプリケーションからのこのアタビズムには、生命権はありません。

ツールバー -ボタンとコンボボックスをダンプする代わりに、ツールバーは徐々に適応性のあるコンテキストになり、アプリケーションの現在の状態またはフォーカスされている要素に適用できる機能のみが表示されます。

Combobox-標準のhtmlコンボボックスは、完全に再定義できないデザインと機能の両方でひどいものであり、行の単なるドロップダウンリストに制限されています。 多くのモードとインクリメンタル検索を備えたコンボボックスが必要です。これにより、大きなディレクトリから選択できるようになり、複数の値を選択できるようになり、グループ、写真(および通常、リッチHTML + CSSデザインの要素)を使用できるようになります。

おわりに


私たちのチームは、私たち自身だけでなく、Webアプリケーションのコントロールのセットを形成し、一部を作成し、一部を取得し、一部を購入します(これは時間がない場合のみです)が、使用済みおよびテスト済みのセットを常に拡張しています。 この記事はレビューに過ぎません。誰かが興味を持っている場合は、空き時間にベストプラクティスについて簡単に公開できます。たとえば、最近、いくつかのコントロールと欠落した曲線を使用してjQuery UIを完成させました。 また、概要を示したアプローチ、優れたコントロール、デモ、スクリーンショット、およびアプリケーションへのリンクについて、ご意見をお寄せいただきありがとうございます。

追加:瞑想のために写真を削除しました。あなたはそれが気に入らないと思います。
近日中にイラストの収集を試みます。

図1:GMailの例でツールバーを残すのがいかに面倒か


図2:GoogleDocsの例を使用して美しいレイアウト、ツールバー、スクロールを作成する方法


図3:デフォルトのコンボボックスのいくつかのオプション


図4:仮想スクロールとページング-誰が気にしますか?


図5:スクロール内のスクロールが悪い


図6:利用可能な領域全体に広がるグリッド(1つのスクロールがあるように)-良い

Source: https://habr.com/ru/post/J120318/


All Articles