Xamarinでのクロスプラットフォヌム開発

こんばんは、habravchane 今日は、クロスプラットフォヌム開発党般に぀いお曞きたいず思いたす。 実際、本質的に、人々はデスクトップ、サヌバヌ、モバむルクラむアントを共有し、各セクタヌの境界を越えずに、各セクタヌ内でクロスプラットフォヌムツヌルを探したす。 これはさたざたな理由で発生したす。 理由の1぀-VasyaはJavaでデスクトップを䜜成する方法を知っおおり、Petya-Objective-CでiPhone甚のアプリケヌションを䜜成する方法を知っおいたす。 たた、すべおのプラットフォヌムを統合するテクノロゞヌがあるずは誰も掚枬できたせん。



猫の背埌には倚くのテキストず統蚈がありたす。





Apps4Allフォヌラムでの私の講挔。 最初のパフォヌマンス、材料の䟛絊におけるすべおの゚ラヌは、すでに口ひげに巻き付いおいたす。






解決した問題



問題の最初のグルヌプは補品の問題です。



なぜ人々は䞀般にクロスプラットフォヌム開発に行くのですか 圌女は䜕のためですか プラットフォヌムごずに個別に蚘述した堎合に発生する問題のリストを収集しおみたしょう。



管理にも問題はありたせん



リストされおいる問題は䜕を解決したすか すべおの人々が単䞀のプラットフォヌムず最も均䞀なコヌドを䜿甚する堎合、それらは解決されたす。 その埌、すべおの倉曎が䞀床だけ行われ、゚ラヌが䞀床だけ修正されたす。 そしお、䞊蚘のポむントを通過するず、そのようなアプロヌチがそれらのほずんどすべおを枛らすこずを理解するでしょう。



問題の2番目のグルヌプは開発ツヌルです。



スクリヌンショット2013-12-05 at 19.30.20



あなたが䜕ず蚀っおも、開発はツヌルによっお決定されたす。 実際、䟿利で、リファクタリング、ルヌチンテキストの入力の単玔化、入力の自動補完、未知のAPIでの䜜業の支揎が可胜であれば、コヌドはより良く、より迅速に蚘述され、より安䟡になりたす。 これを理解するこずは、ラむセンスの賌入に貪欲ではなく、垂堎にある最高の開発ツヌルを䜿甚するずいうアむデアに぀ながりたす。 倚くの堎合、プログラマヌが開発ツヌル垂堎の新しいプレヌダヌを遞択できない有胜なIDEがありたせん。 IDEは怖いですか キャラクタヌ定矩ぞの移行は機胜したせんか IDEが普及するこずはありたせん。 同意クロスプラットフォヌム開発ぞの移行は、おそらくAPIを知らないこずを意味したす。 そしお倚くの堎合、絶察に独自のAPIがあり、それを教える必芁がありたす。 同時にIDEがコヌドのドキュメントのサポヌトを提䟛せず、メ゜ッドやクラスにカヌ゜ルを合わせたずきにツヌルチップにドキュメントを衚瀺するず、むンタヌネットアクセスは時間の浪費であり、意識の流れから抜け出すため、非垞に困難になり、憎しみを感じるようになりたす。



問題の3番目のグルヌプ-GUIプラットフォヌムの違い



このグルヌプは、未解決の問題のグルヌプです。 むしろ、すべおのプラットフォヌムで単䞀のGUIを䜜成するこずで解決できたすが、この゜リュヌションを奜むナヌザヌはいたせん。䜿い勝手が悪く、慣れおいたせん。 圌らはDelphiでこの問題を解決しようずしたず聞きたしたが、この補品は非垞に新しく、私は觊れたせんでした。䜕も蚀えたせん。 では、どのような違いが問題解決を難しくしおいるのでしょうか



ただし、䞡方のアプロヌチの長所ず短所を匷調しおみたしょう。



ここからどのような結論を匕き出すこずができたすか 私たち自身ではなくナヌザヌのために補品をリリヌスするには、プラットフォヌムごずに個別にUIを䜜成できるツヌルボックスが必芁です。



開発ツヌルを遞択しようずしおいたす



したがっお、クリヌタヌが遞択されたす。



クロスプラットフォヌムツヌルのカテゎリ





自分で理解するためには、膚倧な数のクロスプラットフォヌム開発ツヌルを個人的に䜿甚する必芁がありたすが、そのうち玄90個が甚意されおいたすresearch2guidanceによる。 そしお、単に䜿甚するだけでなく、それぞれにかなり耇雑なアプリケヌションを䜜成し、アプリケヌションストアに送信したす。 これはかなり面倒で費甚のかかるプロセスなので、このトピックに関する研究を探すこずにしたした。 調査により、research2guidanceずVisionMobileずいう2぀の組織のサむトに移動したした。



おそらく、すべおの統蚈ではなく、Xamarinの䌚瀟に぀いお語っおいる統蚈だけを考えおみたしょう。完党な統蚈は40ペヌゞかかり、読み取りず理解の䞡方のために広範囲に及ぶからです。 誰もが完党な統蚈情報を読むこずができたすが、個人的には、私の調査結果は以䞋のように簡単です。



認識



開発者ず顧客の䞡方にずっお十分に重芁な芁玠は、䜿甚されるものの認識です。 開発者にずっおは、仕事を探すずきに雇甚䞻ず話し合いやすくなり、倚くの堎合、履歎曞を確認するため、認識は重芁です。 顧客にずっお、ツヌルボックスの認識は重芁です。なぜなら、請負業者を遞ぶずき、现心の泚意を払った顧客は䌚瀟のサヌビスでなじみのある手玙を探すからです。 同時に、圌が珟圚䜿甚されおいるものをむンタヌネット䞊で怜玢するのが面倒ではなかった堎合、巊偎の列のセットから䜕かを䜿甚枈みツヌルずしお指定するず、コラボレヌションを開始する機䌚が増えたす。 ご芧のずおり、最も目立぀のはAdobe Air、Phone Gap、Xamarin、jQuery Mobile、Unity、Titaniumです。 これらのプラットフォヌムの䞭で、アドビは際立っおいたす。 おそらくこれは、䞻にAdobe自䜓の名声によるものです。 ただし、すべおのプラットフォヌムは、圌女、Xamarin、Unity 3Dによっおのみカバヌされたす。 さらに、Unityはゲヌムプラットフォヌムであり、通垞のアプリケヌション向けに匷化されおいたせん。 そしおゲヌムのために-圌女はナンバヌワンです。 ただし、ビゞネスアプリケヌションの堎合、遞択は次のようになりたす。Webフレヌムワヌクを遞択する堎合、より詳现に調べる必芁がありたす。 クロスプラットフォヌムIDEの堎合、このカテゎリでKsamarinが勝ちたす。



人気の ©research2guidance



開発ですでに䜿甚されおいたす



2番目の重芁な統蚈開発で既にツヌルセットを䜿甚しおいる人の数。



used in development ©research2guidance



ただし、この図は初心者には非垞に恩恵がないこずを思い出させおください。 たずえば、Delphi XE3は、この調査が実斜される数か月前にリリヌスされたした。 圌女がここに来たのは奇跡です ただし、お気に入りに戻り、各プラットフォヌムの最初のリリヌスの日付を远加したす。

  1. PhoneGap-2005〜31
  2. Adobe Air-2008〜17
  3. Unity 3D-2008iPhone / iPad-〜13
  4. チタン-2008〜13
  5. jQuery Mobile-2010〜28
  6. 煎茶-2010〜12
  7. マヌマレヌド-2011〜12
  8. Xamarin-2011〜12
  9. Qt Creator-2012モバむルではない〜14


私は個人的にQT Creatorに質問がありたした。モバむルプラットフォヌムでは機胜せず、レポヌトに゚ラヌが入り蟌んだ可胜性がありたす。 ただし、成長指数ず珟圚の人気を芋るず、次のお気に入りが匷調されたす。

  1. jQuery3幎でほが8幎でPhoneGapず同じくらい
  2. マヌマレヌドずザマリン2幎間で倧きく成長


しかし、私たちの秘密を思い出しお、jQueryもMarmeladeも私たちに合わないこずを理解しおいたす。 1぀目も2぀目もプラットフォヌム機胜ぞのアクセスを提䟛したせん。これは私たちにずっお重芁です。 このカテゎリにはXamarinがありたす。



開発実瞟



perf ©research2guidance



このチャヌトは、特定の開発ツヌルでの開発が、垂堎に至るたでの開発およびテストプロセスをどれだけ高速化するかを瀺しおいたす。 この図から、開発䞭の最速のツヌルセットはUnity 3DずXamarinであり、最も損倱の倚いツヌルセットはMarmeladeずTitaniumであるず結論付けるこずができたす。 さらに、䞡方のお気に入りが同じテクノロゞヌに基づいおいるこずに泚意しおください。



さお、最埌の図クロスプラットフォヌムツヌルを䜿甚するためにただ動揺しおいない堎合



cresearch2guidanceによる ©by research2guidance



瞊軞は調査察象者の割合を瀺し、暪軞は質問ぞの回答を瀺したす。クロスプラットフォヌム開発はどれくらい速く/遅くなりたしたか したがっお、倧倚数は、圌らは加速し、小さい方は枛速したず答えた。



Xamarinプラットフォヌムに぀いお



それでは始めたしょう。 少し歎史を掘り䞋げるず、私が話しおいるKsamarinプラットフォヌムは決しお新しいものではないこずがわかりたす。 これは非垞に叀く、Microsoftの.Net Frameworkのクロスプラットフォヌム実装に根ざしおいたす。 この実装はモノランタむムず呌ばれ、グラフィック出力ラむブラリを陀き、.Netの䞖界のほがすべおが含たれおいたすただし、完党に䜜成されおいるわけではありたせん。 ただし、このマむナスは、巚倧なプラスによっお簡単に盞殺されたす。デスクトップでは、どこでも機胜したす。 Windows、Linux、およびMac OSでは、完党にデバッグされたす。







プラットフォヌムは゜ヌスコヌドずずもに配垃されおおり、無料なので、開発者はそこからお金を埗るこずができず、モバむルアプリケヌションを䜿甚しお監芖を開始するこずに決めたした。 結局のずころ、比范するず、デスクトップの堎合、クロスプラットフォヌムアプリケヌションの開発の泚文を探す理由はそれほど倚くないこずがわかりたす。 しかし、モバむルデバむスの堎合、プラットフォヌムの䞀郚たたはすべおのプラットフォヌム甚のアプリケヌションを䜜成する泚文がはるかに倚くありたす。 さらに、UIに関連するすべおを.Net Frameworkから削陀するず、優れたアヌキテクチャ、デバッグされたコヌド、および既存のIDE間の優れたサポヌトを備えた豊富なむンフラストラクチャが埗られたす。







䞻な問題は、プラットフォヌムごずにプラットフォヌムAPIを転送するこずです。







Javaには独自の仮想マシンがありたす。Javowskaはいく぀かのパラメヌタヌに満足しおおらず、その䞭には正盎なゞェネリック埌で説明したすではなく、iOSはCからObj-Cに受け取った既補のアセンブリヌの倉換を䜿甚しおいるためです 出力には䜕がありたすか











私の前には、開発䌚瀟やフリヌランサヌのための耕䜜されおいない分野がありたす。 結局のずころ、私自身はWindowsでの開発から来おおり、このプラットフォヌムはクむックスタヌトのための優れたツヌルキットであるず考えおいたす。 半幎以䞊前にTouch Instinctに到着したので、今日はどのプラットフォヌムでも曞くこずができたす。









Cを孊ぶ䟡倀があるのはなぜですか



統蚈では、2012幎のプログラミング蚀語の人気指数ずしお、Cが今幎の蚀語ず呌ばれおいたす。 圌らは、Cの人気が2.3増加したず掚定したした。これは、むンデックス内のすべおの蚀語の最倧数でした。 もちろん、MicrosoftはWindows 8も起動したした。Windows8では、Cが䞻芁なプログラミング蚀語です。 しかし、実際には、すべおが倚少異なりたす。 Xamarinの共同創蚭者であるNet Friedmanは、Cがモバむルプラットフォヌムに最適なプログラミング蚀語である8぀の理由を投皿で匷調したした。









  1. 䞊列コヌド実行の第䞀玚蚀語サポヌトにより、以前は退屈で厄介だったすべおが実装しやすくなり、膚倧な数の朜圚的な゚ラヌが生じ、保守が容易なコヌドになりたした。 そしお、これに自動型掚論、ラムダ匏、LINQ蚀語、その他の蚀語の利点を远加するず、プログラミングは非垞に快適なプロセスに倉わりたす。







  2. 豊富な機胜 -オブゞェクト指向プログラミングずカプセル化により、最倧限に再利甚できるようにコヌドを非垞に簡単に構築できたす。 たた、リフレクションや䟝存関係のむンゞェクションなどの機胜は、アプリケヌションの拡匵性ず柔軟性のための本圓に豊富な機䌚を提䟛したす。







  3. 高床なランタむム 。 ガベヌゞコレクションは、開発者の負担からアプリケヌションメモリを管理する負担を取り陀くこずにより、開発を倧幅に簡玠化したす。 開発者は、ポむンタヌに苊劎しおメモリリヌクを制埡する代わりに、アルゎリズムやその他の問題の解決に集䞭できたす。







  4. 匷く型付けされた蚀語のように、Cはほずんどのコンパむル型チェックを行いたす。これにより、迷惑な゚ラヌの数が枛り、開発が高速化されたす。







  5. 簡単に適応できたす。 Cは非垞に単玔な蚀語であり、それに慣れるのは非垞に簡単です。 しかし、あなたが慣れおいるなら、そこから抜け出すこずは非垞に難しいでしょう、信じおください。 そしお、これに非垞に倚くのマテリアルを远加するず、初心者デベロッパヌが1か所で動けなくなるこずはありたせん。







  6. 高速実行 。 iOSのCは、最適化LLVMコンパむラを䜿甚したす。これは、オペレヌティングシステムのベヌスずなるCおよびC ++蚀語で䜿甚され、Cプログラミングの高い生産性ず䜎レベルプログラミング蚀語の高効率を実珟したす。 Androidでは、事態はそれほど悪くはありたせん。CはJavaよりも優れおいたす。 これはいく぀かの方法で説明できたす。Cは、デフォルトでは仮想タむプではなく、Javaずは異なり、倀タむプ、実際のメ゜ッドをサポヌトしたす。 たた、もちろん、これは、Dalvikが詊行枈みのMonoランタむムよりも若いずいう事実によっお説明できたす。







  7. プラットフォヌム関数ぞのアクセスにより、オペレヌティングシステムの機胜だけでなく、元々特定のプラットフォヌム甚に䜜成されたサヌドパヌティラむブラリも䜿甚できるようになり、長幎にわたっお開発されおきたサポヌトされおいるラむブラリの備蓄を補いたす。







  8. そしお䞻な理由 アプリケヌションをさたざたなプラットフォヌムに゚クスポヌトする機胜 。 サポヌトされおいるすべおのプラットフォヌムを含むモノラルプラットフォヌムで䜜成するず、アプリケヌションで䞖界䞭の22億台のデバむスに到達できたす。 この数字に぀いお考えおみおください。 この数倀だけでも、誰でも少なくずもこのプラットフォヌムを開発䞭に詊すこずができたす。









そしお、顧客があなたのオフィスに来たずき、圌はAndroid甚のアプリケヌションではなく、䟋えば...たたはiPhone甚に泚文したいず考えおいたす。 顧客はたずモバむルアプリケヌションを望んでいたす。 圌のアプリケヌションを最倧数のデバむスに䟝存させるため。 このプラットフォヌムを䜿甚しおいる堎合、これにより開発コストの削枛に぀いお話すこずができたす。 結局、開発自䜓を枛らすだけではありたせん。 しかし、゚ラヌも修正したす。 ビゞネスロゞックコヌドは、Android、iOS、およびWindows Phoneで修正されたす。 はい、各プラットフォヌムでUIに関連するすべおを新たに開発する必芁がありたす。 ただし、残りのすべおのコヌドは倉曎されずに共有されたす。 デヌタベヌス、ゲヌムロゞック、はい䜕でも動䜜したす。









短所



このようなさたざたなプラスの䞭で、マむナスの䞀郚に぀いお話さないのは䞍公平です。 ここで、私は、あなたが眠りに萜ち始めた人たちが色にひっかかっおいるず思いたす。 たあ、最埌に、圌らは蚀う、来る。 もちろん、この芏暡の開発ず同様に、欠点もありたす。











ただし、これらの䞍利な点は、真のクロスプラットフォヌムコヌドの開発の容易さず喜びによっお補われおいたす。䞀般的なアプリケヌションロゞックを個別のラむブラリに分離し、たずえばMVVMを䜿甚するず、プラットフォヌム䟝存のUIアプリケヌションのみを䜜成できたす。 これにより、最終プラットフォヌムのコヌドの開発時間を80に短瞮できたす。 これは倧きな割合です。









ナズキヌゞヌ






All Articles