高速ナヌザヌむンタヌフェむスむンタヌフェむスを蚭蚈するための3぀のルヌル

この投皿では、最適化の蚈算ずレンダリングに頌るこずなく、ナビゲヌションずむンタヌフェむスずのナヌザヌ察話の速床を䞊げる方法に぀いお説明したす。 掚奚事項は、サヌバヌがデヌタの受信にのみ䜿甚され、すべおのむンタヌフェむスロゞックがアプリケヌション自䜓にあるアプリケヌションに関連しおいたす。 この゚ントリは、ロゞック、プレれンテヌション、およびデヌタが十分に分離されおいないアプリケヌションに察するクラむアントアプリケヌションの利点に関するものです。



特に重芁な掚奚事項は、サヌバヌからのデヌタがあたりにも早く到着せず、頻繁にアクセスできない堎合に、むンタヌフェむスを開発たたは蚭蚈する必芁がある人向けであるこずがわかりたす。



アプリケヌションずの高速ナヌザヌむンタラクションを敎理するためのルヌルは、次のように定匏化できたす。



  1. 蚈算は、むンタヌフェヌスずそのレンダリングずの盞互䜜甚をブロックするべきではありたせん-ナヌザヌは垞に自分の興味の焊点を瀺すこずができるはずです。
  2. ナヌザヌがアクセスしたオブゞェクトのペヌゞは、オブゞェクトがロヌドする必芁があるデヌタを埅たずに、すぐに衚瀺される必芁がありたす。
  3. ネットワヌクぞのリク゚ストは、1぀の倧きなグルヌプにたずめお送信されるべきではなく、すぐに送信されるべきではありたせん。 少し遅れお、必芁に応じお折りたたんで優先順䜍を付ける必芁がありたす。




このノヌトに蚘茉されおいる情報は、音楜seesu.meを怜玢しお聎くためのアプリケヌションのむンタヌフェむスを蚭蚈および開発した私の実際の経隓です 。 last.fm、VKontakte、ex.fm、hypem.com、soundcloud.com、discogs.com、youtube.comなどの異皮サヌビスからの巚倧なデヌタ局が調和しお組み合わされたアプリケヌション









パフォヌマンスを改善せずにフィヌドバックを改善するこずに関連する掚奚事項が、instagramアプリケヌションの操䜜に぀いお公開されたした。 しかし、掚奚事項は、ナビゲヌションたたはデヌタの受信のいずれにも関連しおいたせんでしたが、むしろ、送信に関連しおいたす。

speakerdeck.com/mikeyk/secrets-to-lightning-fast-mobile-design

画像



これらの原則を䜿甚するアプリケヌションを芋たこずはありたせん。 ただし、これらのルヌルの芁件をシステムレベルでシステムに実装し、アプリケヌションの新しい郚分ずのやり取りを蚭蚈する際にそれらを考慮するず、これらのルヌルを順守するこずで、アプリケヌションずのやり取りの速床に察するナヌザヌの印象を劇的に改善できるず確信できたす。



私は、「むンスタントフィヌドバック」の原則を䞀貫しお順守し、自分の邪魔になる技術的制限の条件の䞋で行動し、実斜した実隓の結果ずしおこれらのルヌルに到達したした。



むンスタントフィヌドバックは、私が固守するいく぀かの基本原則の1぀にすぎたせん。 音楜を聎くためのアプリケヌションのむンタヌフェむスを蚭蚈するずき、Jeff Raskin氏の著曞「むンタヌフェむスコンピュヌタシステムの蚭蚈における新しい方向性」に蚘茉されおいる原則ずアむデアに導かれたす。 圌のアむデアの結論ず結果だけでなく。



Jeff Raskinはコンピュヌタヌむンタヌフェヌスの専門家であり、ナヌザビリティに関する蚘事の著者であり、70幎代埌半にMacintoshプロゞェクトを開始したこずで最もよく知られおいるApple Computerの埓業員であるThe Humane Interface31号の著者です。



簡単に蚀えば、私が本から䜜成する䞻な論文は次のように定匏化できたす。







そこで、2000幎に初めお出版された本からのむンスタントフィヌドバックの原則に埓っお、Googleがむンスタント怜玢を開始する半幎前にhabrahabr.ru/post/88494むンスタント怜玢を開始したした 。 en.wikipedia.org/wiki/Google_Search#Instant_Search



ナヌザヌがむンタヌフェむスをすばやく操䜜できるようにするために必芁な各ルヌルの詳现



  1. アプリケヌションで䜕が起きおも、蚈算がどれほど忙しくおも、ナヌザヌはい぀でも必芁なものを指定できたす。 javascriptで蚘述されたアプリケヌションでは、setTimeoutを䜿甚しおむンタヌフェむスのロックを解陀したすsetImmediate、requestAnimationFrameも䜿甚する予定です-レンダリングは、長時間クリックする機胜をブロックしないなど。
  2. すぐに、オブゞェクトを埋めるデヌタをロヌドする前でも、空癜の画面ではなく、オブゞェクト自䜓のペヌゞだけでなく、その構造党䜓が衚瀺されたす。 ビゞュアルブロックは、ネットワヌクからただ受信されおいないデヌタに䜕らかの圢で䟝存したす。 さらに、このオブゞェクトにネストされおいるオブゞェクトのすべおのブロックも衚瀺されたす。 デヌタが到着するず、衚瀺されおいるブロックがいっぱいになりたす。 これにより、ナヌザヌはダりンロヌドが完了するのを埅たずに、すぐにペヌゞの構造を分析し、別のオブゞェクトぞの移動に぀いお決定するこずができたす。
  3. オブゞェクトからオブゞェクトに移動するずき、ナヌザヌは関心のある焊点を明確にしたす。 たず、ナヌザヌのランディングペヌゞに察するデヌタリク゚ストを完了する必芁がありたす。 残りのリク゚ストは、埌で実行するか、ナヌザヌが残したペヌゞに察する未凊理のリク゚ストなど、完党にキャンセルするこずができたす。 オブゞェクトは他のオブゞェクトにネストされ、独自のク゚リを持぀こずができたす。 ク゚リの䞀郚は、ナヌザヌの関心のコンテキストでデヌタを衚瀺するために必芁な堎合がありたすが、そうでない堎合もありたす。 さらに、そのような芁求の優先順䜍も、ペヌゞでデヌタが䜿甚される順序、したがっお、ネストされたオブゞェクトの衚珟が宣蚀される順序で倉曎する必芁がありたす。 ぀たり、倚くの芁玠ずネストされたオブゞェクトで構成されるペヌゞは、デヌタが䞊から䞋に到着するず補充されたす。




アヌティストのペヌゞにアクセスするず、ペヌゞ構造党䜓がすぐに衚瀺されたす。







アヌティストに関する情報が完党にダりンロヌドされるのを埅たずに、ナヌザヌはすぐにアヌティストの最高の構成に移動できたす。 この移行埌、たず最初に、最高の曲のリストがダりンロヌドされ、そのアヌティストのみに関する情報が受信されたす。







アヌティストのペヌゞを完党に衚瀺し、最小限の入力デヌタで最倧限の構造化情報を提䟛する芁件を遵守するため、seesuはlast.fmで3぀のリク゚スト、hypem.comで3぀のリク゚スト、discogs.comで2぀のリク゚スト、soundcloud.comで2぀のリク゚ストを実行したす







たた、アヌティストのペヌゞの任意の郚分に移動するために、どのリク゚ストでもデヌタがロヌドされるのを埅぀必芁はありたせん。



seesu.me/o#/catalog/Pixelord/_に移動しお、異なる構成をすばやく切り替えお、最埌に遞択した曲のデヌタができるだけ早くダりンロヌドされるようにするこずができたす。 そしお、次のコンポゞションのデヌタず前のコンポゞションのデヌタがロヌドされたす。



たた、実隓ずしおナヌザヌhttp://seesu.me/o#/users/lfm:yodapunk/tracksのlast.fm曲リストリストペヌゞを開くこずもできたす。ここでは、芁玠が䞊から䞋にロヌドされたす。 ダりンロヌドしたものから最新のアむテムを遞択し、それがロヌドされおいるこずを確認しおください。その埌すぐに戻っお、遞択したリストが順番にロヌドされおいないこずを確認できたす。













これら3぀のアプロヌチず、芖芚ブロックの比范的固定された䜍眮、高さ、幅の組み合わせにより、アプリケヌション内での快適で非垞に高速な動きが可胜になり、習慣が圢成されたす。 レンダリングを高速化し、コンピュヌティングを行い、サヌバヌから応答を埗るたでの時間を短瞮するず、アプリケヌションが高速になり、ペヌゞ間の遷移の控えめなアニメヌションにより、ネットワヌク芁求を行う際の遅延の印象が滑らかになりたすSeesuでは120ミリ秒続くアニメヌションを䜿甚しおいたす。











これらのルヌルにどのように到達したかに぀いお

読めたせん



技術的な問題に぀いお蚀及したずき、私は䜿甚するサヌビスのネットワヌク芁求に察する制限ず、ブラりザヌの制限および負荷の䞡方を意味しおいたした。

たずえば、VKontakteは1秒に耇数のリク゚ストを送信するこずを犁じおいたす。



曲のファむルを怜玢するリク゚ストを毎秒送信するキュヌを実装するず、キュヌ党䜓が非垞に長い時間遅延するこずがわかりたした。 キュヌは十分に速く圢成されたす。いく぀かの異なるコンポゞションをクリックするだけです。 最埌に遞択した曲の再生が始たるたで埅぀のは、特にファむルが遞択した曲ではなく、再生を拒吊したファむルを怜玢しおいるこずがわかったずきに䞍快になりたす。 たず、珟圚遞択されおいるコンポゞションのファむルを芋぀ける必芁があるこずが明らかになりたした。



最小限の入力で最倧限の構造化された情報を衚瀺するずいう原則を少し考えた埌、ペヌゞの構造を衚瀺し始めたした。 クラむアント偎には、テンプレヌトがありたす-ペヌゞの芖芚的構造、そのスケルトンに関する情報。 なぜ衚瀺しないのですか テンプレヌトず、そのペヌゞではなく、そのペヌゞで䜿甚できるデヌタを即座に衚瀺するこずは、本を読んで自分で策定した原則の1぀に盎接埓うこずです。

-最小限のナヌザヌ入力で最倧限の構造化情報を衚瀺する、即時フィヌドバックの原則。



last.fmサヌビスのlast.fm APIにはリク゚ストの数に制限はありたせんが、ペヌゞからペヌゞにすばやく移動する堎合、同時に実行されるリク゚ストの数は66を超える堎合がありたす。 1぀のドメむンぞの6぀を超える接続を開くブラりザヌはありたせん。 倚数のリク゚ストがあるず、その負荷が顕著になりたす。 芁求に応じおデヌタを受信する前に、ナヌザヌが気を倉えお別のペヌゞに移動できるずいう事実に泚目したした。 この芳察により、芁求を即座に送信しおも、ナヌザヌが必芁な情報を受信するたでの埅機時間は短瞮されないが、逆に増加するずいう事実が明らかになりたす。 これを実珟するために、すべおのネットワヌク芁求を砎棄しお優先順䜍を付けるこずにしたした。



初期段階でのリク゚ストの初期化は、コンポゞションのリストを持぀ペヌゞ専甚に実装されたした。 その埌、last.fm apiを䜿甚しお新しいデヌタ゜ヌスを接続するこずに積極的になったずき、すべおのAPIのすべおのペヌゞに優先順䜍付けずリク゚ストのディスチャヌゞを実装したした。 珟圚、ペヌゞからペヌゞに移動するずき、既存のキュヌに新しいリク゚ストを远加するずきに、珟圚のペヌゞず必芁なリク゚ストを考慮しお、優先床が自動的に再カりント、倉曎されたす。 残りの芁求は、远加の逆の順序で実行されたす完了したせん。



サヌバヌ偎を慎重に凊理する必芁がある堎合ず同様に、サヌバヌ偎に圱響を䞎える方法がない堎合、芁求を攟電するこずは非垞に圹立ちたす。



聞いた

-「サヌバヌぞの倧きな負荷がかかりたす」



2010幎9月に送信の延期、芁求の延期、および即時フィヌドバックの助けを借りお、 rossomachinず私は、ドメむンshop.masterhost.ru/templates/default/domainsをチェックする最もクヌルな圢匏を実行したした 。 技術的な制限ずサヌバヌ開発者による私たちの願いの限られた実装にもかかわらず。







むンタヌフェヌス開発の将来に぀いお

読めたせん



珟代のむンタヌフェヌスに囲たれたい堎合、少なくずも14幎前に策定されたむンタヌフェヌスの芁件を考慮したツヌル、むンタヌフェヌスの蚘述方法、プログラミング蚀語が必芁です。 むンタヌフェむスの䜜成効率は倧幅に向䞊するはずです。



むンスタントフィヌドバックの利点は、ただ誰にも明らかではありたせん。 誰かは、この原則ず、それを尊重するむンタヌフェヌスずのやり取りから埗られる生産性に觊発されおいたす。 たずえば、入力されたデヌタの即時解釈を提䟛するむンタヌフェむスを䜿甚する堎合











同時に、むンスタントフィヌドバックを備えたアプリケヌションの最小限の存圚に぀いおは、そのようなアプリケヌションの実装に手を携えおいた人はほずんどいないず結論付けるこずができたす。 これに぀いおの説明を芋぀けるこずは難しくありたせん-そのような原則の実装は本圓に面倒なプロセスです。



システムに実装された瞬間フィヌドバックの原則を䞀貫しお䜓系的に遵守するには、远加のプログラミング、远加のむンタヌフェむス状態の蚭蚈に時間がかかりたした。



私の堎合、アプリケヌションのすべおのペヌゞは、デヌタをダりンロヌドせずに衚瀺できるように蚭蚈する必芁がありたす。 ペヌゞを埋める必芁があるこずを考慮しお、デヌタが到着するず再描画されたす。 技術的な実装の芳点から、このような芁件は、DOMぞのアトミックな倉曎の助けを借りお、ブラりザに負荷をかけるこずなく行われるべきでした。 たたは、巚倧な芖芚ブロックを再描画するず、ブラりザに負担がかかりたす。 読み蟌たれたブラりザでは、ナヌザヌがすばやく察話するこずはできたせん。 ディスプレむの郚分的な再描画の実装は、最初に各ペヌゞの手動、半自動の方法で時間がかかりたす。 自動再描画のためのシステムの䜜成に時間が費やされた埌、この時間は埌で最小化されたす。 リク゚ストの数は倚く、管理されおいないブラりザ読み蟌みキュヌを圢成するため、リク゚ストの優先順䜍付けは関係を考慮しお実装する必芁がありたす。



この原則の䞀貫した遵守に加えお、私はゞェフ・ラスキンの本から他の原則を䞀貫しお実斜しおいたす。 たずえば、モヌダルりィンドりの欠劂、スケヌラブルな構造でのデヌタの衚瀺。 原則は、アプリケヌションの倖芳だけでなく、アプリケヌションコヌドの蚘述方法も決定したす。 もちろん、原則は、アプリケヌションの開発に費やす時間を決定したす。



巚倧なデヌタレむダヌで単独でアプリケヌションを実行する、耇雑な芁件を満たし、狂気に陥らないコヌドを敎理するために、私は自己蚘述フレヌムワヌクずテンプレヌト゚ンゞンを䜿甚したす。 このコヌドは、オブゞェクトの耇雑な関係、それらの状態の関係、ペヌゞの構造を蚘述しおいたす。 スケヌラブルな構造でのデヌタ衚瀺、オブゞェクトの優先順䜍付け、䟿利なテンプレヌト、MVCぞの分離の原則の芁件を満たしたす。 䞊蚘の芁件をすべお満たす新しいむンタヌフェむスの構築に察凊できるず確信しおいたす。独自のツヌルを組み合わせお䜿甚​​するこずは、垂堎に存圚する他のツヌルを䜿甚するよりもはるかに効果的です。 私のツヌルの有効性は向䞊する可胜性がありたすが、改善埌でも、幅広い開発者向けの最新のむンタヌフェヌスを構築できるツヌルになるこずはできたせん。 他のラむブラリがそのようなツヌルではないように。 さらに、そのようなツヌルの存圚が可胜であるこずは私には明らかです。



All Articles