Tinkoff設計システムの作成。 UIキット、バージョン管理、コンポーネントショーケース

画像



以前の出版物で 、設計システムを作成する必要性を理解する方法、およびその実装から得られる利益について話しました。 そして、もちろん、作成と実装のプロセスは、一見したほど単純ではありません。 私たちは解決しなければならないいくつかの深刻な問題に直面しました。 この記事では、作成プロセスと問題について説明します。



UIキットとビルドの問題



デザインハングアウトまたはデザインに近いハングアウトに参加している人は、UIキット(以下「キット」と呼びます)の概念に既に精通しています。 知らない人のために、これはページを構築するために設計された同じスタイルのインターフェース要素のセットです。 通常、これらはSketchまたはPhotoshopファイルであり、コンポーネントが棚にレイアウトされて配置され、既成のレイアウトが得られます。 しかし、私たちはまさにそのクジラに興味を持っています。クジラはデザイナーだけでなく、開発者、管理者、技術者によっても使用されています。 それは食料品会社の本格的な作業ツールと呼ぶことができます。



私たちのケースでは、いくつかのクジラを入手しました:1つのベースといくつかの食料品。 基本キットでは、すべての製品に共通のコンポーネント、または少なくとも2つの製品で使用されるコンポーネントのいずれかを入力します。 特定の製品に固有のコンポーネントは、食品キットに分類されます。



以下に、基本クジラの最初のバージョンのアセンブリの一部として解決しなければならなかった問題をリストします。





2700個のコンポーネント、カール!



基本キットでどの特定のコンポーネントを実行すべきかという疑問が生じました。 ボタン、ナビゲーション、基本的なコントロールは疑いの余地はありません。 他に何?



私たちは、Tinkoff.ruプラットフォームで最も頻繁に使用されるコンポーネントを追加する道を歩みました。 開発チームは、すべてのコンポーネントのリストと参照数の統計をアップロードするのを手伝いました。



画像



コンポーネントの頻繁な言及は、クライアントの最も一般的なシナリオで使用されることを意味しないため、これは十分ではありませんでした。 私たちは反対側から行かなければならず、あまり自動化されていない方法を取りました。製品で最も訪問されたページを取り、手で再利用できる最も重要なコンポーネントを書き出しました。 これは、Tinkoff.ruの外部ページとインターネットバンクの内部ページの両方に関係していました。



製品の典型的な使用パターンに関係するコンポーネントから始めます。


結果はすぐに来ました:





グリッドとレイアウト



Tinkoff.ruでは、個人アカウントに個別のゾーンはありません。ログインして、サイトの製品ページでサーフィンを続けることができます。 許可されたゾーンのセクションはメインメニューに表示され、ボードでは、クライアントはカード、アカウント、その他の製品にアクセスできます。



当時存在していたレイアウトは、技術的に困難で重くなりました。 彼には耳のパーセンテージがあり、彼の個人アカウントを入力すると、コンテンツは動的に狭くなり、右側に残っている暗いボードのスペースを空けました(そう、ボードは暗く右側にありました)。 その結果、コンテンツエリアのこれらすべての動的な変更のレンダリングが前面にあったため、個人アカウントの入り口で速度が低下しました。 さらに、一部のページでは、どこかで適合しないバグが検出されました。 しかし、そのような状況はほとんどありませんでした。



何が行われた:





コンテンツが動的に狭まることはなく、単に右にシフトするだけで、ボードのどの状態がアクティブ、最小化、最大化されているかは関係ないため、行われた作業により生産性が向上しました。 新しい動作、修正、およびコンテンツ領域のわずかな増加により、ページのテストが簡素化され、どこかが適合しなかったという小さなバグから救われました。



バージョン管理と同期



基本的なクジラの作成の初期段階で、開発者がコードを操作して経験を生かし、デザイナーキッチンでそれを実装したいことに気付きました。 私たちがクジラに持っているものは彼らと一緒にいるはずです。 矛盾はないはずです。 クジラの関連性を維持するために、単一のスペースを作成する必要がありました。



ツール



長い間、開発者はこれでうまくやっています。 バージョン管理システム(Git、Github、SVN、Mercurial)なしでは、主要なプロジェクトはできません。 設計に関しては、ここでツールが登場し始めており、そのうちの1つがAbstractです。 その利点:







画像



基本クジラのバージョン管理には、Abstractを積極的に使用しています。 これを使用すると、変更の履歴を監視および保存できるだけでなく、必要なときに任意のコンポーネントの任意のバージョンにアクセスできます。 アブストラクトは絶対にすべてを記録します。

任意のバージョン。 任意のコンポーネント。 いつでも。


アプローチ



設計と開発の観点から、1つのアプローチ-コンポーネントのセマンティックバージョニング(semver)を使用します。 これは、バージョンがピリオドで区切られた3桁の整数として表されることを意味します(2.4.1など)。 最初の数字はメジャーバージョン、2番目はマイナーバージョン、3番目はパッチです。



デザインのバージョンを変更します。





開発者向けのバージョン変更:





各コンポーネントは、このアプローチによってバージョン管理されます。



画像



同期する



重要なタスクの1つは、設計チームのコンポーネントが開発者が使用するコンポーネントに完全に準拠することです。 設計者と開発者が各コンポーネントをバージョン管理しているという事実を考えると、3つのレベルのどれで同期が可能かを理解する必要がありました。



設計と開発で発生する可能性のあるバグは大きく異なるため、パッチバージョンに従ってコンポーネントを比較しても意味がありません。 ただし、コンポーネントレイアウトに新しい状態が表示される場合は、生きているアナログに表示されるのは当然です。 この点について開発者と話し合ったので、マイナーバージョンから始めてコンポーネントを同期し、パッチバージョンが異なる可能性があるというルールを作成しました。



このような単純な操作の結果:





ショーケース



React Storybookを使用してコンポーネントを表示および使用しますが、元の形式では、開発者以外のすべての人にとっては不便です。 そして、設計システムに関するすべての情報を1か所で収集し、誰でも利用できるようにしたいと考えました。







このツールは、設計者、開発者、管理者、技術者など、絶対にすべてのチームメンバーに役立ちます。





画像



設計システム用に独自のショーケースの開発を開始し、次の機能を提供しました。





あとがき



設計システムの作成と実装は複雑ですが、多数の異なる製品を持つ大企業にとって必要なプロセスです。 そして、私たちが直面しなければならなかったすべての落とし穴について話をしようとします。 以下の記事は、規制、ビジネス、および設計プロセスに専念します。



All Articles