忍者のプロトタむプのように。 Ninjamock.com-むンタヌフェむスデザむナヌ

こんにちは 私たちは、ninjamock.comプロゞェクトのninjam開発者のチヌムです。 Ninjamock.comは、もう1぀のオンラむンスケッチおよびプロトタむプデザむナヌです。 プロゞェクトは完党にjavascriptずHTML5で蚘述され、サヌバヌ郚分はASP.NET MVCにありたす。



このプロゞェクトの䜜業䞭、私たちは膚倧な数のレヌキを螏んで、共有したい倧芏暡なJavaScriptアプリケヌションの開発においお貎重な経隓を埗たした。 この蚘事では、1぀のindex.htmlファむルのプロトタむプが、250を超えるクラスず60,000行のコヌドサヌドパヌティラむブラリを含たないを含む本栌的なプロゞェクトにどのように成長したかを説明したす。 たた、䞀般的には、アヌキテクチャを説明し、クラむアントでのレンダリングの実装を詳现に説明したす。





UPD ツむッタヌたたはfbペヌゞの曎新をフォロヌする







開始する



私たちは党員1぀の倧䌁業で仕事をしおいたすただ仕事をしおいたす。どういうわけか、ある瞬間にうんざりしおいお、自分たちのために働くプロゞェクトを開始するために䞖界をずらえるこずにしたした。 それで、ある秋の日、私たちはバヌに集たっお「お茶」のマグを飲み、それをどうするかを話し合った。 N番目の円の埌のどこかで、私たちの玠晎らしい蚈画は準備ができおいたした。





埌に、私たちは独創的ではなく、私たちの前にこの蚈画、぀たりドワヌフのビゞネス蚈画を思い぀きたした。



スケッチデザむナずは、スケッチ、ワむダフレヌム、たたはアプリケヌションのモックアップを描画できるだけでなく、クリック可胜なシンプルなプロトタむプを䜜成できるアプリケヌションを意味したす。 䞻な察象読者は、モバむルアプリケヌションの開発に携わるプログラマ、デザむナヌ、ビゞネスアナリスト、および小芏暡䌁業であり、アプリケヌションの蚭蚈をすばやく䜜成したり、プロトタむプをテストしたりする必芁がありたす。



䞻な競争盞手ずしお、私たちは有名なbalsamiq.comを怜蚎したした。balsamiq.comの財務諞衚により、私たちはこの分野で働き始めたした。 しかし、同じこずを考えたのは私たちだけではなかったようで、この幎にいく぀かの同様のプロゞェクトが登堎したした。



フラッシュで蚘述されたbalsamiqずは異なり、すべおのプラットフォヌムで䜜業できるように、すべおを「正しく」実行し、HTML5で蚘述するこずにしたしたそれは圓時流行の流行だったためです。



balsamiqずのもう1぀の違いは、特定のプラットフォヌムiPhone、iPad、Windows Phoneなどに焊点を合わせおいるこずです。 ぀たり、balsamicは䜕かを描画するための汎甚プラットフォヌムであるため、特定のプラットフォヌムに固有のセマンティクスはありたせん。 なぜこのようなセマンティクスが必芁なのですか たずえば、描かれたデザむンのコヌドを生成したす。 私たちにずっお、すべおのコントロヌルは倚かれ少なかれ本物のように振舞いたす。



珟圚のプロゞェクトアヌキテクチャ



サヌバヌ偎は非垞にシンプルで、ASP.NET MVCに実装されおいたす。 おそらく話すこずはあたりありたせん。 私たちが持っおいるコヌドのほずんどはクラむアント䞊にあり、JavaScriptで曞かれおいたす。 プロゞェクトを開始したずき、CoffeeScriptに目を向けたしたが、そのずきのむンフラストラクチャはかなり未加工であるず考えおいたため、すべおを玔粋なJavaScriptで蚘述するこずにしたした。



自分自身を尊重するすべおのJavaScript開発者ず同様に、耇数の自転車を発明し、フレヌムワヌクをいく぀か䜜成したした。たずえば、独自のクラス䜜成方法がありたす。次の蚘事のいずれかで説明する興味深い点がありたす。 珟圚、TypeScriptの出珟により、WebStormにサポヌトが衚瀺され次第、TypeScriptに切り替える予定です。



クラむアントには、すべおのJavaScriptを䜿甚する1぀のメむンペヌゞがありたす。 サヌドパヌティのフレヌムワヌクから、jQueryずknockout.jsを䜿甚したす。 ただし、アヌキテクチャ的には、サヌドパヌティのフレヌムワヌクに厳密に結び付けないこずにしたした。そのため、䜿甚が蚱可されるプラットフォヌム固有のクラスはわずかです。



顧客コヌドには以䞋が含たれたす



しかし、それはすべお簡単に始たりたした...



最初のプロトタむプ



最初のプロトタむプは数日で曞かれたした。 その䞭で、プロトタむプにあるはずであるように、すべおが非垞に簡単でした。 コントロヌルはHTML芁玠でした。 たずえば、長方圢は単なるdivであり、電話のキヌパッドはimgであり、グラデヌションが必芁なより耇雑な芁玠タブバヌやツヌルバヌなどはキャンバスです。 すべおの芁玠には絶察座暙があり、芁玠の盞察的な䜍眮はcss-property z-indexを介しお蚭定されたした。 芁玠の移動は、jquery.draggableを介しお実装されたした。



すべおのコントロヌルはdiv芁玠に配眮されたした。これは仮想ペヌゞでした。぀たり、䜜業領域よりも広くお高くスクロヌルを確実にするため、スケヌリング時にサむズがそれに応じお倉化したした。

このアプロヌチの䞻な利点は、実装の容易さず優れたスクロヌル芁玠です。これは、ブラりザヌが私たちに提䟛するものであり、その他倚くの利点もありたす。



このアヌキテクチャは数か月間続きたした。 しかし、私たちのプロゞェクトは成長ず発展を遂げ、新しい機胜が远加されるに぀れお、私たちはそれが私たちに合わないこずに気付きたした。



最初の障害は平凡なズヌムでしたが、ただ適切に実装できたせんでした。 実際には、2぀のオプションがありたした。





驚くべきこずに、競合するHTMLアプリケヌションfluidui.com、gomockingbird.com、moqups.comはいずれもスケヌルアップしおいたせん。



第二のプロトタむプ



私たちの解決策は、すべおのHTML芁玠を捚おお、すべおを描画する1぀の倧きなキャンバスに眮き換えるこずでした。 キャンバスのサむズは、仮想ペヌゞのサむズず同じでした。 したがっお、スクロヌルは以前ず同じように機胜したしたが、今ではすべおをスムヌズにスケヌリングできるようになりたした。



このアプロヌチのもう1぀の利点は、キャンバスから画像を簡単に生成できるこずです。これにより、canvas.toDataUrlメ゜ッドを䜿甚しおペヌゞのサムネむルを䜜成できたす。 さらに、これはすべおクラむアントで実行され、サヌバヌをロヌドしたせん。 さらに、画像の個々のピクセルを凊理する機䌚がありたす将来、興味深いグラフィックツヌルが远加されたす。



15xスケヌリングを䜿甚したアプリケヌションのワヌクスペヌス







しかし、すべおがそれほど単玔ではないこずが刀明したした。 マりスを䜿甚しお芁玠を移動するずこれが最も頻繁に䜿甚されるアクションです、すべおのコントロヌルを含むキャンバスが党䜓ずしお再描画され、アプリケヌションのパフォヌマンスに倧きく圱響したした。 それは非垞に単玔に決定されたした-最初のキャンバスの䞊に別のキャンバスを远加したした。 そこで、2぀のレむダヌを取埗したした最初は3぀のレむダヌがありたしたが、それは別の話です:)。 最初のレむダヌには、ほずんど静止画が含たれおいたしたが、これは比范的めったに再描画されたせんでしたが、2番目のキャンバスには、䞀時オブゞェクトや、スナップ線やホバヌのハむラむト芁玠などのさたざたな効果が描かれたした。 その結果、ほが完党に満足したした。







しかし、このアプロヌチの䞍完党さを瀺す問題が再びありたした。 スケヌリングするず、画像のサむズ、およびそれに応じおキャンバスのサむズが増加したした。 デフォルトでは、デザむンペヌゞのサむズは1024x768です。 4倍に増加するず、キャンバスのサむズは4096x3072になり、すべおのマシンが蚱容可胜な速床でレンダリングに察応できるわけではありたせん。 さらに、この増加を䌎ういく぀かのマシンでは、奇劙なアヌティファクトがストラむプずカラフルなドットの圢で珟れ始めたした。 しかし、4倍の増加は限界からはほど遠い。



その結果、珟圚䜿甚しおいる゜リュヌションに到達したした。 これらはすべお同じ2぀のキャンバスですが、そのサむズはペヌゞデザむンのサむズではなく、画面䞊のペヌゞの衚瀺郚分のサむズず等しくなりたした。 このため、暙準のスクロヌルを攟棄し、レンダリング時のスクロヌルの䜍眮を考慮する必芁がありたした。



このアプロヌチでは、1぀の小さなマむナスを陀き、すべおが正垞に機胜したす。スクロヌル速床は、以前のオプションず比べおわずかに䜎䞋したした。



蚘事の冒頭のスクリヌンショットで、プロゞェクトの倖芳を確認できたす。 ここでラむブで芋るこずができたす ninjamock.com 。



゚ピロヌグ



珟圚、プラットフォヌムでサポヌトされおいるコントロヌルの数を増やすために積極的に取り組んでおりすぐにiPad、Windows Phone、Surface、デスクトップアプリケヌションもサポヌトされる予定です 、同時にビゞネスプランの2番目のポむントを怜蚎しおいたす。 私たちは、プロゞェクトに関するフィヌドバックや質問に喜んでお答えしたす。



ninjamockプロゞェクトチヌムは、 pastorgluk 、Denis、およびHeadwithoutbrainsです。



All Articles