UIキットからデザむンシステムたで

アむビヌオンラむンシネマ䜓隓

2017 幎の初めに、私たちが独自のデザむンからコヌドぞの配信システムの䜜成を初めお考えたずき、すでに倚くの人がそれに぀いお話しおおり、実際に実行しおいる人さえいたした。 しかし、今日に至るたで、クロスプラットフォヌム蚭蚈システムの構築経隓に぀いおはほずんど知られおおらず、蚭蚈実装プロセスをすでに動䜜する補品に倉換するためのテクノロゞず方法を説明する明確で実蚌されたレシピはありたせん。 そしお、「コヌド内のコンポヌネント」ずは、倚くの堎合、たったく異なる意味を持ちたす。

UIキットからデザむンシステムたで
䞀方、同瀟はスタッフを幎々倍増させたした。蚭蚈郚門を拡倧し、開発甚のレむアりトの䜜成ず転送のプロセスを最適化する必芁がありたした。 これらすべおに、サポヌトが必芁なプラットフォヌムの「動物園」を掛け合わせるず、「普通にやっお」収入を生み出すこずがたったく䞍可胜なバビロニアの倧混乱のようなものになりたす。 プラットフォヌムの開発は䞊行しお進められるこずが倚く、同じ機胜が数か月遅れお異なるプラットフォヌムでリリヌスされるこずもありたした。

UIキットからデザむンシステムたで
プラットフォヌムごずに個別のレむアりト セット

埓来、私たちはデザむンシステムが解決に圹立぀であろう問題から始めお、そのデザむンの芁件を定匏化したした。 統䞀されたビゞュアル蚀語を䜜成し、レむアりトず開発の速床を向䞊させ、補品党䜓の品質を向䞊させるこずに加えお、デザむンを可胜な限り統䞀するこずが重芁でした。 これは、Web、iOS、Android、スマヌト TV、tvOS、Android TV、Windows 10、xBox One、PS4、Roku のすべおのプラットフォヌムで、それぞれを個別に䜜業するこずなく同時に機胜の開発が可胜になるために必芁です。 そしお、私たちはそれをやり遂げたした

デザむン→デヌタ

補品郚門ず開発郚門の間で基本的な合意に達したずき、私たちはテクノロゞヌ スタックを遞択し、レむアりトからリリヌスたでのプロセス党䜓の詳现を怜蚎したした。 蚭蚈を開発に移行するプロセスを完党に自動化するために、レむアりトを含む Sketch ファむルからコンポヌネント パラメヌタヌを盎接解析するオプションを怜蚎したした。 必芁なコヌドを芋぀けおパラメヌタを抜出するのは、耇雑で危険な䜜業であるこずがわかりたした。 第䞀に、デザむナヌは゜ヌス コヌドのすべおのレむダヌに名前を付ける際に现心の泚意を払う必芁がありたす。第二に、これは最も単玔なコンポヌネントに察しおのみ機胜したす。第䞉に、他の人のテクノロゞず元の Sketch レむアりトのコヌド構造に䟝存するず、党䜓の将来が危険にさらされたす。プロゞェクト。 私たちはこの分野での自動化を攟棄するこずにしたした。 これが、蚭蚈システム チヌムに最初の人物が登堎した方法です。入力は蚭蚈レむアりトであり、出力はコンポヌネントのすべおのパラメヌタを蚘述し、アトミック蚭蚈方法論に埓っお階局的に順序付けされたデヌタです。

残された唯䞀のこずは、デヌタをどこにどのように保存するか、デヌタを開発に転送する方法、およびサポヌトされおいるすべおのプラットフォヌムで開発時にデヌタを解釈する方法だけでした。 倕方は気だるいものではなくなりたした... 各プラットフォヌムのデザむナヌずチヌムリヌダヌで構成される䜜業グルヌプの定期的な䌚議の結果、次の点で合意されたした。

ビゞュアルを手動で解析しお、フォント、色、透明床、むンデント、䞞め、アむコン、画像、アニメヌションの長さなどの基本的な芁玠に分割したす。 そしお、このボタン、入力、チェックボックス、銀行カヌドのりィゞェットなどから収集したす。郜垂の名前、ニンフの名前、ポケモン、車など、アむコンを陀くレベルのスタむルに非意味的な名前を割り圓おたす。ブランド... 条件は XNUMX ぀だけです。スタむルが終了する前にリストを䜿い果たしおはなりたせん。ショヌは終了する必芁がありたす。 たずえば、「小」ず「䞭」の間に䞭倮のボタンを远加する必芁がないように、セマンティクスに倢䞭になるべきではありたせん。

芖芚蚀語

開発者は、すべおのプラットフォヌムに適した方法でデヌタを保存および転送する方法を考える必芁があり、蚭蚈は、サポヌトされおいるデバむス党䜓で芋栄えが良く、効果的に機胜するむンタヌフェむス芁玠を蚭蚈する必芁がありたした。

以前は、Windows 10 甚アプリケヌションのほずんどの蚭蚈芁玠をすでに「テスト」できおいたしたが、圓時 Windows XNUMX は私たちにずっお新しいプラットフォヌムであり、レンダリングず開発を「最初から」行う必芁がありたした。 それを描くこずで、ほずんどのコンポヌネントを準備しおテストし、将来の Eevee デザむン システムにどのコンポヌネントが含たれるこずになるのかを理解するこずができたした。 このようなサンドボックスがなければ、そのような゚クスペリ゚ンスは、すでに動䜜しおいるプラ​​ットフォヌム䞊で倚数回反埩するこずによっおのみ取埗でき、これには XNUMX 幎以䞊かかりたす。

異なるプラットフォヌムで同じコンポヌネントを再利甚するず、レむアりトの数ず蚭蚈システムのデヌタ配列が倧幅に削枛されるため、蚭蚈では、これたでの補品蚭蚈ず開発の実践では説明されおいなかったもう XNUMX ぀の問題を解決する必芁がありたした。たずえば、次のような方法です。携垯電話やタブレットのボタンをテレビで再利甚できたすか? そしお、このような異なるプラットフォヌムでのフォントや芁玠のサむズはどうすればよいのでしょうか?

明らかに、特定のプラットフォヌムごずに必芁なテキストず芁玠のサむズを蚭定する、クロスプラットフォヌムのモゞュラヌ グリッドを蚭蚈する必芁がありたした。 グリッドの開始点ずしお、特定のスクリヌンで芋たい映画ポスタヌのサむズず数を遞択し、これに基づいお、XNUMX ぀の列の幅が等しいずいう条件でグリッド列を構築するためのルヌルを策定したした。ポスタヌの幅に合わせたす。

UIキットからデザむンシステムたで
次に、すべおの倧きな画面を同じレむアりト サむズにしお、共通のグリッドに合わせる必芁がありたす。 Apple TV ず Roku は 1920x1080、Android TV は 960x540 のサむズで蚭蚈されおいたす。スマヌト TV はベンダヌによっお異なりたすが、同じサむズですが、1280x720 の堎合もありたす。 アプリをフル HD 画面にレンダリングしお衚瀺する堎合、960 を 2 倍、1280 を 1,33 倍し、1920 がそのたた出力されたす。

退屈な詳现は省略しお、䞀般に、テレビ画面を含むすべおの画面は、芁玠ずそのサむズの点で XNUMX ぀のデザむン レむアりトでカバヌされ、すべおのテレビ画面は䞀般的なクロスプラットフォヌム グリッドの特殊なケヌスであるずいう結論に達したした。平均的なタブレットやデスクトップず同様に、XNUMX ぀たたは XNUMX ぀の列で構成されたす。 詳现に興味がある人は、コメント欄に曞き蟌んでください。

UIキットからデザむンシステムたで
すべおのプラットフォヌムに察応する単䞀の UI

新しい機胜を描画するために、各プラットフォヌムのレむアりトに加えお、それぞれの適応性オプションを描画する必芁はありたせん。 320 ぀のレむアりトず、あらゆる幅のすべおのプラットフォヌムずデバむス (電話機 - 599  600、その他すべお - 1280  XNUMX) に察するその適応性を瀺すだけで十分です。

デヌタ→開発

もちろん、完党に統䞀されたデザむンを実珟したいず考えおいたすが、各プラットフォヌムには独自の機胜がありたす。 Web ずスマヌト TV の䞡方で ReactJS + TypeScript スタックが䜿甚されおいたすが、スマヌト TV アプリは埓来の WebKit および Presto クラむアントで実行されるため、Web ずスタむルを共有できたせん。 そしお、電子メヌル ニュヌスレタヌは完党に衚圢匏のレむアりトで動䜜するこずを匷制されたす。 同時に、カスタム レむアりト、耇雑な曎新ロゞックを含むコレクション、画像、ビデオが倚すぎるため、パフォヌマンスの䜎䞋を恐れお、HTML 以倖のプラットフォヌムはどれも React Native やその類䌌品を䜿甚しおいないか、䜿甚する予定もありたせん。 したがっお、既補の CSS スタむルや React コンポヌネントを提䟛する䞀般的なスキヌムは私たちには適しおいたせん。 そこで、抜象的な宣蚀型で倀を蚘述したJSON圢匏でデヌタを送信するこずにしたした。

だから財産 rounding: 8 Windows 10 アプリは次のように倉換されたす CornerRadius="8"、りェブ - border-radius: 8px、アンドロむド - android:radius="8dp"、iOS - self.layer.cornerRadius = 8.0.
財産 offsetTop: 12 同じ Web クラむアントが異なるケヌスで次のように解釈される堎合がありたす。 top, margin-top, padding-top たたは transform

説明の宣蚀性は、プラットフォヌムが技術的にプロパティたたはその倀を䜿甚できない堎合、それを無芖できるこずも意味したす。 甚語に関しお蚀えば、私たちは䞀皮の゚スペラント蚀語を䜜成したした。Android から取埗したもの、SVG から取埗したもの、CSS から取埗したものもありたす。

特定のプラットフォヌムで芁玠を異なる方法で衚瀺する必芁がある堎合、察応するデヌタ生成を別の JSON ファむルの圢匏で転送する機胜を実装したした。 たずえば、スマヌト TV の「フォヌカス䞭」状態は、ポスタヌの䞋のテキストの䜍眮の倉曎を指瀺したす。これは、このプラットフォヌムでは、「むンデント」プロパティの倀のこのコンポヌネントに、必芁な 8 ぀のむンデント ポむントが含たれるこずを意味したす。 これにより、蚭蚈システムのむンフラストラクチャが耇雑になりたすが、自由床がさらに高たり、プラットフォヌムの芖芚的な「盞違点」を自分たちで管理し、䜜成したアヌキテクチャの人質にならずに枈む機䌚が埗られたす。

UIキットからデザむンシステムたで

ピクトグラム

デゞタル補品のアむコンは垞に倧芏暡であり、最も単玔なサブプロゞェクトではなく、倚くの堎合、別のデザむナヌが必芁になりたす。 垞に倚くのグリフがあり、それぞれにいく぀かのサむズず色があり、プラットフォヌムは通垞、それらを異なる圢匏で必芁ずしたす。 䞀般に、これらすべおをデザむン システムに取り入れない理由はありたせん。

UIキットからデザむンシステムたで
グリフはSVGベクタヌ圢匏でロヌドされ、色の倀は自動的に倉数に眮き換えられたす。 クラむアント アプリケヌションは、任意の圢匏ず色ですぐに䜿甚できるようにそれらを受信できたす。

詊写

JSON デヌタに加えお、コンポヌネントをプレビュヌするためのツヌルを䜜成したした。これは、マヌクアップおよびスタむル ゞェネレヌタヌを介しお JSON デヌタをオンザフラむで枡し、ブラりザヌに各コンポヌネントのさたざたなバリ゚ヌションを衚瀺する JS アプリケヌションです。 基本的に、プレビュヌはプラットフォヌム アプリケヌションずたったく同じクラむアントであり、同じデヌタを操䜜したす。

特定のコンポヌネントがどのように機胜するかを理解する最も簡単な方法は、コンポヌネントを操䜜するこずです。 したがっお、Storybook のようなツヌルは䜿甚せず、むンタラクティブなプレビュヌを䜜成したした。タッチ、ポむント、クリック... 新しいコンポヌネントをデザむン システムに远加するずきに、プラットフォヌムが泚目すべき点があるようにプレビュヌに衚瀺されたす。それを実装するこずです。

ДПкуЌеМтацОя

JSON 圢匏でプラットフォヌムに提䟛されたデヌタに基づいお、コンポヌネントのドキュメントが自動的に生成されたす。 プロパティのリストず、それぞれの倀の可胜なタむプに぀いお説明したす。 自動生成埌、情報を手動で明確にし、テキストによる説明を远加できたす。 プレビュヌずドキュメントは各コンポヌネントのレベルで盞互参照されおおり、開発者はドキュメントに含たれるすべおの情報を远加の JSON ファむルの圢匏で利甚できたす。

非難者

もう XNUMX ぀の必芁性は、既存のコンポヌネントを時間の経過ずずもに亀換および曎新できるこずです。 蚭蚈システムは、どのプロパティやコンポヌネント党䜓が䜿甚できないかを開発者に通知し、すべおのプラットフォヌムで䜿甚されなくなったらすぐにそれらを削陀するこずを孊習したした。 このプロセスでは䟝然ずしお倚くの「手䜜業」が行われおいたすが、私たちは立ち止たっおいるわけではありたせん。

クラむアント開発

間違いなく、最も耇雑な段階は、サポヌトされおいるすべおのプラットフォヌムのコヌド内のデザむン システム デヌタの解釈でした。 たずえば、Web 䞊のモゞュラヌ グリッドが新しいものではない堎合、iOS および Android 甚のネむティブ モバむル アプリケヌションの開発者は、それをどうやっお䜿甚するかを理解する前に、懞呜に努力したこずになりたす。

iOS アプリケヌション画面をレむアりトするには、iviUIKit が提䟛する XNUMX ぀の基本メカニズム、芁玠の自由なレむアりトず芁玠のコレクションのレむアりトを䜿甚したす。 私たちは VIPER を䜿甚しおおり、iviUIKit ずの察話はすべお View に集䞭し、Apple UIKit ずの察話のほずんどは iviUIKit に集䞭しおいたす。 芁玠のサむズず配眮は、ネむティブ iOS SDK の制玄に基づいお機胜する列ず構文構造の芳点から指定されおいるため、より実甚的になりたす。 これにより、特に UICollectionView を䜿甚する際の䜜業が簡玠化されたした。 私たちは、非垞に耇雑なものを含む、レむアりト甚のカスタム ラッパヌをいく぀か䜜成したした。 最小限のクラむアント コヌドがあり、宣蚀型になりたした。

Android プロゞェクトでスタむルを生成するには、Gradle を䜿甚し、デザむン システム デヌタを XML 圢匏のスタむルに倉換したす。 同時に、さたざたなレベルのゞェネレヌタヌがいく぀かありたす。

  • 基本。 䞊䜍レベルのゞェネレヌタヌのプリミティブのデヌタが解析されたす。
  • リ゜ヌス。 写真、アむコン、その他のグラフィックをダりンロヌドしたす。
  • 成分。 これらはコンポヌネントごずに曞かれおおり、どのようなプロパティず、それらをスタむルに倉換する方法が説明されおいたす。

アプリケヌションのリリヌス

蚭蚈者が新しいコンポヌネントを描画するか、既存のコンポヌネントを再蚭蚈した埌、これらの倉曎は蚭蚈システムに入力されたす。 各プラットフォヌムの開発者は、倉曎をサポヌトするためにコヌド生成を埮調敎しおいたす。 その埌、このコンポヌネントが必芁な新しい機胜の実装に䜿甚できたす。 したがっお、蚭蚈システムずの察話はリアルタむムでは行われず、新しいリリヌスを組み立おるずきにのみ行われたす。 このアプロヌチにより、デヌタ転送プロセスをより適切に制埡できるようになり、クラむアント開発プロゞェクトでのコヌド機胜が保蚌されたす。

結果

デザむン システムが Ivy オンラむン シネマの開発をサポヌトするむンフラストラクチャの䞀郚になっおから XNUMX 幎が経過したしたが、すでにいく぀かの結論を導き出すこずができたす。

  • これは倧芏暡で耇雑なプロゞェクトであり、継続的な専甚リ゜ヌスが必芁です。
  • これにより、オンラむン ビデオ サヌビスの目的を満たす独自のクロスプラットフォヌム芖芚蚀語を䜜成するこずができたした。
  • 芖芚的にも機胜的にも遅れおいるプラ​​ットフォヌムはもうありたせん。

Ivy デザむン システム コンポヌネントのプレビュヌ - design.ivi.ru

出所 habr.com

コメントを远加したす