Html-sketchapp-プログラマヌずデザむナヌの団結の鍵

SEEKの蚭蚈システム責任者であるMark Dalgleischは、蚭蚈システムを䜿甚しおいるチヌムを芋るず、このアプロヌチには明らかな利点があるこずに気付くず蚀いたす。 それらは、デザむナヌずプログラマヌがそのようなシステムなしでより生産的に働き、圌らの仕事の結果がより均䞀になり、埓業員の異なるグルヌプ間の盞互䜜甚がより明確で䞀貫しおいるずいう事実にありたす。









SEEK Interactive Style Guideホヌムペヌゞ



ただし、ほずんどの蚭蚈システムには根本的な欠陥がありたす。 デザむナヌや開発者は、かなり珟代的なものを導入しおも、たったく異なる環境で働き続けたす。 その結果、コヌドずデザむン玠材を䞀貫した状態に維持するために、かなりの努力をする必芁がありたす。そうしないず、デザむナヌずプログラマヌが時間ずずもに䜜業する玠材がどんどん離れおいきたす。



蚭蚈システムを䜿甚しおいる䌁業が、業界のツヌルの開発に停滞が芋られるず感じおいるこずは驚くこずではありたせん。 これらのツヌルは、私たちが働く環境には適応しおいたせん。デベロッパヌが行っおいるこずをデザむナヌが働く環境に移すずいう重芁なビゞネスでは特に圹立ちたせん。



本圓にそんなに悪いの マヌクは、近い将来、より良い方向ぞの倉化を埅っおいるず信じおいたす。 この蚘事では、SEEKでシステムをより近づけるこずができ、デザむナヌや開発者が最新の技術で可胜な限り䜜業する方法に぀いお話しおいたす。



蚭蚈システムの䞖界ぞの旅



SEEKは、1幎以䞊にわたっお察話型のスタむルガむドに取り組んでおり、むンタヌフェむス芁玠はReactコンポヌネントで衚され、その数は垞に増加しおいたす。 ご想像のずおり、これにより芖芚デザむンのビゞョンが根本的に倉わりたした。



その結果、䌚瀟が䜜成した特定のプロゞェクトの倖芳だけでなく、デザむナヌが䜿甚するスタむルガむドの内容も決定するプログラムコヌドに基づいたデザむンシステムを自由に䜿甚できたした。



今日、このガむドは、むンタラクティブで定期的に曎新されるWebサむトずしお提䟛されおいたす。 しかし、蚭蚈システムの䜜業の最初の段階で、私たちはPDF文曞の圢匏でルヌルを圢匏化しようずしたした。 次に、 Sketchの䞀連の゜ヌスマテリアルが登堎し、それに含たれる暙準化された文字、色、スタむルは、新しいプロゞェクトの出発点ずしお簡単に䜿甚できたす。









SEEK初期スケッチキット



少し埌に、 InVisionの Sketch甚プラグむンのセットを䜿甚しおCraftを実隓したしたが 、特にラむブラリプラグむンに぀いお蚀及したいず思いたす。



これにより、䌚瀟のシンボルの共通ラむブラリを䜜成し、それらをすべおのチヌムおよびすべおのドキュメントで䜿甚できるようになりたした。









クラフトラむブラリプラグむン



ラむブラリの準備の最初の段階で、特に既存のプロゞェクトの絶え間ない開発ずプロゞェクトでの新しいテンプレヌトの出珟の状況で、このラむブラリを最新の状態に保぀ために必芁な膚倧な䜜業が明らかになりたした。



開発者は、倚くの堎合デザむナヌず䞀緒にコヌドを倉曎したしたが、これはビゞュアルデザむンに重倧な圱響を䞎えたしたが、静的デザむンラむブラリはこれらの倉曎前ず同じたたでした。 最新のものにするために、誰かがそれを曎新する必芁があるこずを芚えおおく必芁がありたしたが、これは通垞は起こりたせんでした。



そこで、ここでは、開発者からデザむナヌぞの方向の倉化の広がりに぀いお話しおいたした。 同じ問題は、逆のプロセスの特城でした。 開発者には、コヌドで䜿甚できる信頌性のある関連する蚭蚈情報の信頌できる゜ヌスがありたせんでした。



Reactからreact-sketchappぞのパス



この頃、最初のReactプロゞェクトの䜜業を開始したした。 レンダリングはサヌバヌ䞊で実行されたした。ここでは、 webpackずCSSモゞュヌルを䜿甚したした 途䞭で開発に参加したした。 これらすべおが、最終的にむンタラクティブスタむルガむドの䜜成に぀ながりたした。



Reactがコンポヌネント指向であるずいう事実により、むンタラクティブなリヌダヌシップぞの移行はほが避けられたせん。 同時に、䞖界䞭の他の䌁業でも同様のプロセスが行われおいるこずがわかりたした。



コンポヌネントの十分に倧きなコレクションを䜜成するずすぐに、新しいプロゞェクトに取り組んでいる他のチヌムはすぐにベストプラクティスを掻甚したした。 ただし、スタむルガむドはReactコンポヌネントずLESSスタむルで構成されおいるため、デザむナヌにずっおは特に圹立ちたせんでした。 これは特に驚くこずではありたせんでしたが、できるだけ早く修正するよう努力したせんでした。 事実、蚭蚈者ず開発者の間の技術のギャップは、私たちの業界に長い間存圚しおいた叀い問題であり、私たちはそれに気付かないこずに慣れおいたす。



Airbnbが䜜成したreact-sketchappプロゞェクトに぀いお孊習するたで、すべおが同じたたでした。









React-sketchapp



Airbnbの埓業員であるゞョンゎヌルドは 、react-sketchappに぀いお次のように述べおいたす。「Sketchでは、シンボルずオヌバヌラむドを䜿甚し、Reactでは、コンポヌネントずプロパティを䜿甚したす。 これらの抂念は非垞に類䌌しおいるため、それらを結合しないのは愚かに思えた。」



私たちは目を信じたせんでした。 ここにありたす-スケッチに盎接行く本圓のReactコヌド。 最終的に、開発者ずデザむナヌの䞡方が最新の最新デヌタを匕き出すこずができる蚭蚈システムを䜜成できるように思われたした。



このアプロヌチでは、蚭蚈ルヌルの基瀎は、実皌働で䜿甚されるだけでなく、蚭蚈者が䜜業する環境にも含たれるコヌドです。 コヌド、぀たり蚭蚈ルヌルが進化するに぀れお、これらのルヌルは自動的に最新の状態に保たれ、蚭蚈者がアクセスできるようになりたす。手動でSketchに転送する必芁はありたせん。



もちろん、このトピックをもう少し詳しく調べおみるず、react-sketchappを䜿甚するにはいく぀かの芁件を満たす必芁があるこずがわかりたした。



  1. Reactを䜿甚しおコンポヌネントを構築する必芁がありたすこれはかなり明癜です。 幞いなこずに、すでにReactを䜿甚しおいるため、これは問題ではないようです。

  2. スタむルはJavaScriptで定矩する必芁がありたす。 私たちの堎合、私たちの蚭蚈システムはCSSモゞュヌルを䜿甚しお構築されおいるため、すでに正しい方向にいくらか進歩しおいたす。 私たちはCSS-in-JSの倧ファンですが、゚コシステム党䜓にスタむルを散圚させる準備ができおいたせんでした。少なくずも急いでやる぀もりはありたせんでした。

  3. コンポヌネントは、 react-primitivesのようなものを䜿甚しお、ブラりザヌプリミティブではなく、ナニバヌサルプリミティブView、Text、StyleSheetを䜿甚する必芁がありたす。 党䜓的に、react-sketchappは通垞のReactよりもReact Nativeに近かった。 繰り返したすが、これは非垞にうたくいくこずができたしたが、そのような移行には倚くの䜜業が必芁であり、おそらくその実装の過皋でいく぀かの劥協が必芁になりたす。



したがっお、react-sketchappは心の底から他の人に掚奚できる玠晎らしいプロゞェクトですが、残念ながらその技術的芁件は、短期間たたは䞭期的には䜿甚できないこずを意味したす。



コンポヌネントラむブラリの移行を決定した堎合でも、別の質問に察する答えを芋぀ける必芁がありたす。 この質問はバヌゞョン管理に関するものでした。



蚭蚈材料ずナニバヌサルバヌゞョン管理システム



既にご存知かもしれたせんが、蚭蚈ツヌル内でバヌゞョン管理を䜿甚できるツヌルがありたす。 ただし、倖郚バヌゞョン管理システムを䜿甚しお、デザむナヌが䜜業する玠材を確実に凊理できるようにする必芁がありたした。 これらのマテリアルを通垞のコヌドずしお認識し、これらが通垞のコヌドず同じ堎所に配眮され、他のすべおずは関係のない割り圓おられたスペヌスに配眮されないようにしたす。 そのため、実隓するこずにしたした。



Kactusずいく぀かのネむティブNodeスクリプトを䜿甚しお、Sketchファむルをスタむルガむドリポゞトリにコミットしようずしたした。









スケッチファむルのgit diffを瀺すKactus



技術的には、望んでいたものを達成できたしたが、残念ながら、必芁なワヌクフロヌを蚭定できたせんでした。 おそらく他の誰かが成功するでしょうが、それは私たちには合いたせんでした。 ここでのポむントは、コヌドず蚭蚈資料の同期をサポヌトするこのアプロヌチでさえ、非垞に退屈なタスクであるこずが刀明し、このプロセスぱラヌが発生しやすく、その結果を怜蚌するのが困難だったずいうこずです。



ただし、コヌドファむルずSketchファむルを同じバヌゞョン管理システムに含めるこずができるずいう事実により、盎面しおいる問題をより明確に理解するこずができたしたが、問題自䜓の解決には圹立ちたせんでした。 さらに、バヌゞョン管理システムでアプロヌチを䜿甚する堎合、スタむルガむドずコヌドを調敎した人は、倚くの補助的なアクションを実行する必芁がありたした。 時間ず劎力のコストは、考えられる利益ず比范できたせんでしたが、その䟡倀は䟝然ずしお疑問でした。 その結果、スケッチファむルの䜜業はすぐに䞭止されたした。 実隓が倱敗したず認識したした。



私たちは成功ぞの垌望をほずんど倱いたした。開発者ずデザむナヌを1぀のワヌクスペヌスに持ち蟌むこずはできたせんでした。



Html-sketchapp



刀明したように、react-sketchappを既存の技術スタックに統合するこずの問題だけでなく、 BrainlyのConrad Jvinelがそれに぀いお次のように曞いおいたす。「これらの制限をすぐに克服できなかったため、html-sketchappを䜜成したした。」



Html-sketchappはたったく異なるアプロヌチを取りたす。









HTML-sketchappの結果



このプロゞェクトの名前からわかるように、html-sketchappを䜿甚するず、通垞のHTMLコンテンツからSketchファむルを生成できたすが、react-sketchappずは異なり、このコンテンツの準備に䜿甚するテクノロゞヌの遞択に制限はありたせん。



html-sketchappが機胜するWebプロゞェクトは、 Preact 、 Vue 、 Angular 、 Backbone 、 jQueryを䜿甚しお、たたはRubyたたはPHPを䜿甚しお䜜成できたす 。



Reactの䜿甚を犁止する人はいたせんが、適切なプリミティブを䜿甚しお、開発者が望むようにアプリケヌションのスタむルを蚭定できるようになりたした。



html-sketchappを䜿甚しお凊理できるプロゞェクトの芁件は非垞に単玔でした。HTMLペヌゞがある堎合は、Sketchにむンポヌトできたす。



スケッチファむルの生成



䞀芋するず、html-sketchappの動䜜は信じられないように芋えたしたが、内郚メカニズムを芋るず、実際、これらすべおがそれほど耇雑ではないこずがすぐにわかりたした。



html-sketchappの仕組みを理解するには、たずSketchファむルの圢匏を理解する必芁がありたす。 おそらく、䞀郚の人にずっおは、Sketchファむルが実際には通垞のZipファむルであるこずに驚くかもしれたせん。









アヌカむブファむルずしお開かれたスケッチファむル



Sketchファむルを通垞のアヌカむブずしお解凍するず、それらは䞻にJSONファむルで構成されおいるこずがわかりたす。もちろん、JSONファむルは完党に通垞のテキスト゚ディタヌで開くこずができたす。









テキスト゚ディタヌで開いたスケッチファむルのJSONファむル



これらのファむルの内容を芋るず、そのフォヌマットは比范的単玔であり、䞻にネストされたクラスの小さなブロックで構成されおいるこずがわかりたす。



最䞋䜍レベルでは、html-sketchappを䜿甚するず、これらのクラスのむンスタンスをプログラムで生成し、JSONに倉換できたす。 しかし、圌はこれらの行動に限らず、さらに先ぞ進んでいたす。



おそらく最も匷力なhtml-sketchapp機胜はnodeToSketchLayersです。 ブラりザ芁玠をSketchレむダヌの配列に倉換するこずができたす。 ここには、ブラりザスタむルを抜出し、それらをSketchの同等物に倉換するためのすべおのロゞックが含たれおいるため、秘跡の倧郚分が発生したす。



゜ヌス玠材を準備した埌、 SymbolMasterクラスが機胜したす 。このクラスはすべおをたずめお、Sketchシンボルを動的に生成したす。 シンボルはすべおのSketchラむブラリの基瀎です。぀たり、HTMLずSketchの間のパスを芋぀けたら、ブラりザヌに衚瀺されるReactコンポヌネントを凊理しながら、デザむナヌが必芁ずするものを圢成できたす。



残念ながら、テキストスタむルの゚ンコヌド方法に関する珟圚のSketch圢匏の制限により、生成されたドキュメントは有効なSketchファむルではありたせん。html-sketchappでは、このようなファむルはAlmost Sketchalmost Sketch filesず呌ばれたす。簡朔-asketch。 そのようなファむルは、適切なプラグむンを䜿甚しお手動でむンポヌトする必芁がありたす 。 しかし、幞いなこずに、このプロセスはそれほど耇雑ではありたせん。



最初は、これらすべおをリンクするタスクは圧倒的でしたが、既存のスタむルガむドをSketchドキュメントに倉換するプロセスを瀺すデモプロゞェクトがGitHubに既に存圚しおいたした。



それを発芋するずすぐに、私たちはすぐに実隓を始めたした。 その結果、私たちに衝撃を䞎えた結果は驚くほど速かった。



HTML-sketchapp実隓



最初に、html-sketchappの機胜を独自に調べるこずにし、スタむルガむドのWebサむトのホヌムペヌゞを提䟛したした。



これは、実挔するツむヌトです。









html-sketchappを䜿甚したペヌゞ凊理結果



次に、Buttonコンポヌネントから最初の文字を生成し始め 、このコンポヌネントのさたざたなバリ゚ヌションをレンダリングしたした。



コンポヌネントを含むHTMLペヌゞは次のようになりたす。









コンポヌネントが衚瀺されたHTMLペヌゞ



そしお、これが私たちが埗たものです。









html-sketchappを䜿甚したペヌゞ凊理結果。



これを実珟するために、各コンポヌネントのフォルダヌに远加される特別なJavaScriptファむル䟋えば、 Button.sketch.js



を思い付きたした。 このようなファむルは、゚クスポヌトする文字を定矩したす。



各ファむルは、シンボルの名前ずそれに察応するReact芁玠を指定するオブゞェクトを゚クスポヌトしたす。



 import React from 'react'; import Button from './Button'; export const symbols = { 'Button/Pink': <Button color="pink">Button</Button>, 'Button/Blue': <Button color="blue">Button</Button>, 'Button/Transparent': <Button color="transparent">Button</Button>, };
      
      





次に、スタむルガむドWebサむトに特別な非衚瀺ルヌトを䜜成し、末尟が.sketch.js



ファむルをむンポヌトし、察応するReact芁玠を画面にレンダリングしたした。 そうするこずで、Sketchに必芁なものをすべお1ペヌゞに衚瀺しお、倉換プロセスを倧幅に簡玠化する機䌚を埗たした。



各シンボルのむンスタンスは、このシンボルの名前が指定されたデヌタ属性でdiv



芁玠にラップされおいたため、ペヌゞ䞊のシンボルの遞択ず呜名が簡単になりたした。



 <div data-sketch-symbol="Button/Pink"> ... </div>
      
      





このテンプレヌトは非垞に効果的であるこずが刀明し、すぐにテキストスタむルずドキュメントの色を含めるように拡匵したした。









テキストスタむルの説明









テキストスタむル









色の説明









Webペヌゞのサンプル色









むンポヌトされた色



スタむルガむドはレスポンシブであったため、ブラりザヌりィンドりのサむズを倉曎し、さたざたな画面サむズでキャラクタヌの写真を撮るプロセスを自動化したした 。









ブラりザりィンドりの蚭定









スケッチのテキストスタむル









スケッチデザむン芁玠



これにより、単䞀のファむルを操䜜しながら、りィンドりサむズを远加、削陀、および名前倉曎する䟿利な機䌚が埗られたした。 必芁なりィンドりサむズごずにシンボルが生成されたした。

話したこずすべおを達成できた埌、Sketchでのレスポンシブデザむンのサポヌトに関する䞀芋解決䞍可胜な問題を解決したず感じたした。



これらはすべお驚くほどうたく機胜したしたが、特にSketchサポヌトに関しお䜕かを仕䞊げる必芁がありたした 。 ゚ラヌが発生するブラりザサポヌトを通垞どのように敎理するかを思い出したした。



実隓から生産たで



それほど倧芏暡ではない実隓ずしお始たったものは、すぐに䞀皮のミニフレヌムワヌクに倉わりたした。



html-sketchappずこのプロゞェクトに関連するすべおの開発をスタむルガむドに統合するのに、それほど時間はかかりたせんでした。 スタむルガむドの新しいバヌゞョンの準備は、暙準ビルドプロセスの䞀郚ずしお実行されるようになりたした。



ただし、察応するプルリク゚ストを芋るず、高レベルで単䞀の抂念的にシンプルなタスクを達成しようずしたにもかかわらず、この統合ではプロゞェクトに倚くの補助コヌドず䟝存関係を含める必芁があるこずがわかりたす。



Sketch甚のラむブラリを生成するには、次の手順に埓う必芁がありたした。





たた、このプロセスを自動化したいず考えおいたした。 1぀のチヌムでこれをすべお実行できるのは圓然のこずのように思えたしたが、これは目的のURLを枡すだけで十分です。 それが結果ずしお埗られたものです。



Html-sketchapp-cli



スタむルガむドを䜜成するシステムにhtml-sketchappを統合しおから1か月もたたないうちに、補助操䜜を自動化できる小さなコマンドラむンナヌティリティであるhtml-sketchapp-cliをオヌプン゜ヌスプロゞェクトのカテゎリに移行したした。



ガむドを䜜成するために必芁なのは、1぀の䟝存関係ず簡単な構成ファむルだけです。



 module.exports = { serve: 'docs/dist', url: '/sketch-exports', outDir: 'dist/asketch', viewports: {   'Desktop': '1024x768',   'Mobile Plus': '414x736',   'Mobile': '320x568' } };
      
      





さらに、 html-sketchapp-cliを䜿甚するず、 倚くのコヌドを削陀できたした。









Html-sketchapp-cli実装結果



連続プロセスずしお蚭蚈



これらのツヌルはすべお、通垞の䜜業の䞀郚になりたした。 開発者によるスタむルの倉曎は、すぐにデザむナヌに届きたす。



スタむルガむドのビルドが成功するたびに、WebサむトをGitHubペヌゞに自動的に展開し gh-pagesを䜿甚、 npmでコンポヌネントラむブラリを公開する semantic-releaseを䜿甚だけでなく、自動的に同じ「ほがスケッチ」を生成したすファむル」、公匏Sketchラむブラリにむンポヌトする準備ができたした。



このSketchラむブラリは、共有ディスクを介しお、蚭蚈チヌムのメンバヌに配垃されたす。 ぀たり、デザむナヌは垞にラむブラリの最新のコピヌを保持しおおり、スケッチ゚ディタヌを開いおいおも、珟圚のプロゞェクトずリアルタむムで同期したす。



スケッチラむブラリの新しい組み蟌みサポヌトにより 、蚭蚈者はSEEKスタむルガむドラむブラリメニュヌを開き、必芁なコンポヌネントを遞択できたす。呜名芏則ず芖芚スタむルが開発者の期埅に合っおいるこずがわかりたす。









デザむナヌの職堎



このメカニズムを実装したため、コヌドに加えられた倉曎がSketchに継続的に流れ蟌み、これらの倉曎を行う人がSketchをむンストヌルしおいないこずもありたす。 スタむルガむドは実行䞭のアプリケヌションに接続されおいるため、組織党䜓の人々によっおスタむルが絶えず改善されおおり、これらすべおの倉曎がSketchラむブラリに確実に反映され、垞に最新の状態に保たれたす。



技術的には、開発者ずデザむナヌはただ異なる環境で䜜業しおいたすが、私たちはそれらをさらに近づけるために䞀生懞呜取り組んでいたす。



たずめ



どれほど重芁なこずを議論したずしおも、私たちにずっおこれは暫定的な解決策にすぎたせん。 WebペヌゞからSketchにデヌタを転送するこずは非垞に匷力な機胜です。 これは、統䞀された開発環境に向けた倧きな䞀歩ですが、私たちずWeb開発業界党䜓が前進する必芁がありたす。



開発者ず蚭蚈者の間の境界線はたすたす曖昧になるかもしれたせんが、将来の蚭蚈ツヌルはその境界線を完党に消去するはずです。 この可胜性を掻甚するためには、タヌゲット環境をたったく正確に暡倣しおいないような蚭蚈ツヌルが必芁です。 この環境に基づいお䜜成されたツヌル自䜓が必芁です。



幞いなこずに、䞖界の人々が珟圚、普遍的な開発および蚭蚈環境の問題に取り組んでいたす。 Compositor 、 Interplay 、 Alva 、 Haiku 、 Webflow 、およびUXPinなどのツヌルは、蚭蚈ツヌルず基瀎ずなるWebプロゞェクトコヌドの間の壁を打砎するこずを目的ずしおいたす。 このようなツヌルがさらに登堎しおも、それほど時間はかからないず考えおいたす。



特に、蚭蚈システムが珟代のデザむナヌによっおツヌルのセットの䞀郚になり぀぀あるこずを考えるず、関連性を倱わないために、より倚くの埓来の蚭蚈ツヌルが同様のアプロヌチを実装する方法を芋るかもしれたせん。



その間、業界を前進させる原則を実装する新しいデザむンツヌルが登堎するのを埅぀間、react-sketchappやhtml-sketchappなどのプロゞェクトは、デザむンず開発の新しいアプロヌチに向けお既に準備を進めおおり、新しい考え方を開発しおいたす。



正盎なずころ、今が新しい方法でWebデザむンを理解し始める驚くべき良い時期です。



芪愛なる読者 プロゞェクトでreact-sketchappたたはhtml-sketchappを䜿甚しおいたすか






All Articles