恐れを止めおQMLを再発明した方法

なに



こんにちは、Habr ここに曞いおから䜕幎も経ちたした。 あなた/私の時間があたりにも/あたりにも軜くおいないこずを願っおいたす。



QMLのアむデアを再考した経隓に぀いお曞きたいず思いたす。 Qtは優れたラむブラリであり、内郚構造によっおは疑問が生じたすが、クロスプラットフォヌムのUIツヌルキットだけでなく、デザむナヌ、クリ゚むタヌ、蚀語孊者、そしおもちろんQmlの䞍可欠なプロフェッショナルツヌルキットも䞖界に提䟛したした。 この再考の結果、私たちのささやかなプロゞェクトが実珟したした。このプロゞェクトでは、qmlをさたざたなプラットフォヌム甚のhtml5 / javascriptに倉換し、 Cordovaを䜿甚しおシンプルなAndroidアプリケヌションを構築するこずもできたす。



Qmlは垞に、むンタヌフェむス開発の芳点からの絶察的な衚珟力で私たち私たちは自分たちず呌んでいる、QML匁護士の小さな未知のグルヌプを魅了しおきたした。したがっお、私たち䞀人䞀人がそれらを䜿甚しおナヌザヌむンタヌフェむスずサむトを開発しおいたす。



私たちは、新しいものすべおに開かれたhabrコミュニティのその郚分に非垞に䌌おおり、ささやかな機䌚を詊しお評䟡し、フィヌドバックを受け取り、補品を改善するこずができたす。



゜ヌスコヌドはgithubで入手できたす。サむトの゜ヌスコヌド、䟋、すべおのプロゞェクトで䜿甚するコントロヌルのラむブラリもありたす。 ドキュメントずチュヌトリアルは、圓瀟のりェブサむトpureqml.comでご芧いただけたす。

わからないこずがあれば、Telegramのサポヌトグルヌプに参加できたす。すべおの質問にリアルタむムで回答しようずしたす。



私たちが䜜った無料のアプリケヌションの1぀はFontaneroゲヌムの移怍版で、LG / Samsung垂堎で利甚できるはずです。



さお、あなたは読むこずができたせん



どうしおそんな人生にたどり着いたのか



すべおが珟圚利甚可胜なすべおの皮類のプラットフォヌム䞊のカラフルなデバむスのラむンのための1぀の倧䌁業で組み蟌み゜フトりェアおよびナヌザヌむンタヌフェヌスの蚘述を開始したずき、それはすべお2010幎に始たりたしたarm、mips、x86、sh4、sparcのみが欠萜しおいたした...



私たちは次のように自分自身の䞻な問題を定匏化したしたUIは高速で、安䟡で、良いものでなければなりたせん。したがっお、これら3぀から2぀だけを遞択する必芁はありたせん。 リ゜ヌスが非垞に少ないため1.5人のプログラマヌ、UIプログラミングを簡単で楜しいものにしたかったのです。プログラマヌは苊劎せず、泣かないで逃げたせんでしたが、座暙を手動で远跡するのではなく、ビゞネス䞊の問題を解決するこずに専念したした。 HTMLはすぐに消えたした。これは、最初のデバむスがarm926xxxarmv5䞊にあり、32 MBのRAMが搭茉されおいたためです。そのうち23 MBのみがナヌザヌスペヌスアプリケヌションで䜿甚できたしたたた、armv5はすべおのナヌザヌの2G仮想アドレスに察しおずんでもない制限がありたすプロセス党䜓で、私が間違っおいる堎合は修正しおください、怜玢の範囲を倧幅に狭めたす。



既存の゜リュヌションを分析した埌、Qtでの前向きな開発経隓を考えるず、比范的新しい圓時の蚀語ずテクノロゞヌであるQMLを遞択したした。これはたったく驚くこずではありたせんでした。 非垞にシンプルで盎感的なので、私たちはすぐにこれが必芁だず刀断したした。 1週間で登堎した非垞に機胜的なプロトタむプで、ファッショナブルなアニメヌションがきらめき、正しい遞択をさらに確信させたした。



QML- 十分良い



QMLの玠晎らしい点は、実際にはUIを陀くすべおをプログラマから隠しおいるこずです。 蚈画を自分の手に取り、キャンバスに吹き付けるだけです



宣蚀的アプロヌチは非垞に明確で䜿いやすいです。 コンポヌネントの再利甚は盎感的であり、単玔な堎合には非垞に簡朔です。 これにより、文字通り数か月で2人のプログラマヌが本栌的なUIメニュヌ、アプリケヌション、蚭定、スケゞュヌルなどを䜜成するこずができたした。



私たちはQtのトランプルに倚くの時間を費やしたしたが、カスタムビルドでさえ、過剰なドロップがなければ、8 MBたたは16 MBのフラッシュメモリに収たらないこずがわかりたした。 Qt QMLがなかった時代を思い出しお、組み蟌みむンタヌフェヌスが退屈しおresしなくなった䞖界にすでに䜏んでいたため、私たちの悲しみには限界がありたせんでした。



その倜、同僚ず私は深センのホテルの1぀48階で青島のボトルで倜を過ごしたした。QMLを䜜成できるかどうかを考えたすが、C ++で、同時に、その非垞に悲しい可胜性の匷さを確認しおください。 arm926のプラットフォヌム。 すべおがそれほど悪くないこずがわかり、プロセッサには゜フトりェアでも透明な矎しいりィンドりを描画するのに十分な機胜がありたすが、2Dグラフィックスハヌドりェアアクセラレヌタもありたした



袖をたくり、青島を捚おお、私たちは激しくコンパむルし始めたした。そしお数週間埌、私たちはすでにjavascriptではなくC ++でQMLを手に入れたした。 これは私たちの最初のQMLであり、最埌たでかなり長い間磚きたした。



しかし、C ++は十分なハヌドコアであり、さたざたなプラットフォヌムにアプリケヌションを配垃するこずはできたせん。ネむティブコヌドは非垞に長い時間コンパむルされ、プログラマの頭脳により倚くの負担がかかり、より倚くの投資が必芁です。 したがっお、数幎埌、私たち別の同僚がアムステルダムのコヌヒヌショップでパむを食べお倜を過ごしたずき、javascriptv8で衚されるをネむティブコヌドに戻す方法を芋぀けたした。



これらの2぀のQMLは、それらが生たれた䌁業そのものずずもに過去にあるため、この背景はあたり興味深いものではないかもしれたせん。 開発ツヌルずしお䞀般に公開されるこずはありたせんでしたが、毎日玄600䞇人がこの技術に基づいお構築されたUIを䜿甚しおいたす。



私たちの日1幎半前



この倧きくお恐ろしい䌚瀟を蟞めた埌、むンタヌフェむスをすばやく簡単に開発したいず考えおいたした。同時に、5プラットフォヌムですぐにSmartTV甚の倧きくお耇雑なアプリケヌションを䜜成する必芁がありたした。 Android向けTVはただ登堎しおおらず、圓時のほずんどのSmartTVはHTMLベヌスのSDKを提䟛し、そのフレヌムワヌクを促進し、ずにかくプログラマヌの生掻を楜にしたしたたずえば、samsungのcaphなどが、これは実装ずしおプロセスをかなり耇雑にしたす特定のメヌカヌごずに1぀のUIを曞き盎す必芁がありたした。 メヌカヌのテレビがWebベヌスのテクノロゞヌを䜿甚する動機は理解できたすが、アプリケヌションの耇雑さが増すず実装は非垞に苊痛になりたす。 独自のQML゚ンゞンの蚘述に5幎の経隓があったため、別の独自のQMLを䜜成するこずにしたしたより倚くのバむクが必芁ですが 、特にSmartTVおよびHTML党般に䜿甚したす。



私たちのささやかなプロゞェクトが生たれたした。



基本的な本胜原理



すべおがqmlのように配眮され、すべおのコンポヌネントが.qmlファむルに蚘述され、.manifestにアプリケヌションの構造が蚘述されたす。 次に、html5 / javascriptのトランスレヌタヌ/トランスパむラヌQMLが働きたすシグナル、アップデヌタヌ、プロトタむプ、コンストラクタヌが生成され、接続されたす。 ブロヌドキャストの埌、コンパクトで高速なjavascriptファむルが、html-launcherずずもに取埗されたす。Modernizrのみが必芁です。



特城的な機胜は、QMLをQMLで蚘述し、すべおのコアコンポヌネントがツヌルチェヌンを䜿甚しおqmlずjavascriptで蚘述されおいるこずです。トランスパむラヌ自䜓はファむルをネヌムスペヌスに分解し、通垞は手曞きで蚘述したす。



翻蚳の難しさず自転車



䜿甚するQML方蚀は、元のQMLず非垞によく䌌おいたす。 最も重芁な倉曎-フォヌカスロゞックを再䜜成し、よりシンプルで安党なものにしたした。



䞀般的に、Qt QMLずの互換性を維持しようずしたす。たた、䞍䞀臎のためにクロスマッチングキャンペヌンを調敎するこずもありたす。



HTML5をメむンプラットフォヌムずしお䜿甚しおいるため蚀うたでもありたせんが、確かではありたせん 、2Dグラフィックスを描画する単玔なシステムずしおHTMLを䜿甚し、芪に察しお芁玠divを絶察的に配眮したす。 これにより、たずえば、怖いMouseAreaモンスタヌを䜿甚せずに任意の芁玠がホバヌむベントたたはクリックむベントを凊理できるように、䞍玔物を完党に実装できたした。 远加の芁玠を䜜成したり、Item-MouseAreaの束を䜜成したりせずに、Border、Gradient、たたはDrag-n-Dropを任意の芁玠に远加するこずもできたす。



珟状



明らかに、3人の小さな組織プログラマグルヌプによっおQt QMLに含たれるすべおのコンポヌネントず機胜を実装したわけではありたせんが、私たちの意芋では最も重芁な郚分を占めおいたす。



ドキュメントゞェネレヌタヌずそのナビゲヌタヌ、およびドキュメント自䜓のスケルトンが、doxygenず同様の泚釈を䜿甚しお䜜成されたした。 コンポヌネントラむブラリをクリヌンアップする必芁がありたす。

WindowsおよびMacOS甚の手順ずツヌルを調敎したす。



最適化、機胜の構築、プラットフォヌムの改善など、倚くのアむデアがありたす。



それにもかかわらず、プロゞェクトの䞭栞はすでに非垞に安定しおおり、今では、いく぀かの商甚プロゞェクトおよびいく぀かの非商甚プロゞェクトをPureQMLでリリヌスするこずができたした。



私たちはあなたのフィヌドバックを楜しみにしおいたす。誰かが本圓に䜕かをしたいのであれば、それは倧䞈倫です



最埌たでこの告癜を読んでくれたすべおの人に感謝したす



この蚘事に興味がある人は、QMLのビゞョン、䞍玔物の開発、さたざたなレベルのさたざたなプラットフォヌムずの統合、宣蚀的およびそうでない、蚀語の改善、宣蚀ぞの次元の远加、em、ptを匕き続き怜蚎できたす。



これたでのずころ、smartTVプラットフォヌムの゜ヌスコヌドを開かないこずにしたしたが、䞀般に、この可胜性を怜蚎しおいたす。 SmartTVのバヌゞョンを取埗したい堎合は、コメントを曞いおください。それをどのように行うかに぀いお考えたす。



All Articles