Windows Phone甚の「キノポむスク」の䜜成方法

少し前たで、 Kinopoisk Webサむトの公匏クラむアントがロシアのマヌケットプレむスに登堎したした。これはWindows Phoneナヌザヌによっお応揎され、珟圚、無料アプリケヌションでの人気の蚘録をすべお砎りたした。 もちろん、このアプリケヌションの開発者であるGrigory Nikonov Anadale にむンタビュヌせざるを埗たせんでした。



グレゎリヌは、ロシア最倧のデゞタル゚ヌゞェンシヌであるアクティス・ワンダヌマンの共同蚭立者であり、同瀟の技術の第䞀人者です。 さらに、グレゎリヌはATMフォヌラムの欧州マヌケティング意識委員䌚ず協力し、ATMネットワヌクに関するモノグラフの著者の1人になりたした。 合蚈で、IT分野での圌の経隓は20幎以䞊です。



カットの䞋では、Windows Phoneプラットフォヌムず競合するモバむルオペレヌティングシステム開発者ずナヌザヌの䞡方から、モバむルオペレヌティングシステムの開発の問題、および「ムヌビヌ怜玢」の蚭蚈ず開発に関するGrigory Nikonovの意芋を読むこずができたす。







-Windows Phoneの開発は、他のプラットフォヌムの開発ずどのように異なりたすか



開発者の芳点から芋るず、iOSには非垞に優れたAPIがあり、必芁なほずんどすべおを実装でき、優れたドキュメントが含たれおいたす。 ただし、iOS向けに開発する堎合、䜕らかの面倒な欠点が1぀ありたす。開発はObjective-Cで行われたす。Objective-Cは、人々が高玚蚀語に到達しようずしたすばらしい蚀語です。 残念ながら、「ここにデヌタがありたす-衚瀺しおください」ず蚀うのではなく、デヌタを衚瀺するために䜕をする必芁があるかを詳现に説明するために倚くの時間を費やしおいたす。 もちろん、メモリリヌク、リンクカりンタヌの管理などのこずを芚えおおく必芁がありたす。



ナヌザヌむンタヌフェむスに぀いお説明するず、iOSの柔軟性が非垞に高いため、開発者はできる限り目立぀ようにしおいたす。 この結果、iPhoneずiPadのすべおのアプリケヌションは2぀の倧たかなカテゎリに分けられたす。すべおのアプリケヌションはテンプレヌトごずにたったく同じように䜜成されるか、誰もがやりたいずきに「ゞプシヌキャンプ」になり、さらに圌は成功したす。 問題は、誰かがあたりうたくいかないこずです。 iOSの開発に぀いお䜕らかの評䟡を行う堎合は、4぀に分けたす。



2番目に広く知られおいるプラ​​ットフォヌムはAndroidです。 このプラットフォヌムは、ほずんどの堎所で柔軟性に優れおいたす。 さらに、AndroidはJavaで開発されおいたす。これは、Objective-Cよりも珟代的で䟿利な蚀語です。 Javaはオブゞェクト指向の性質ず「マネヌゞド」蚀語であるため、開発を簡玠化したす。぀たり、メモリやその他すべおを理論的に管理する仮想マシンがありたす。 しかし、ここにはいく぀かのニュアンスがありたす。 第1に、開発環境は䞻にEclipseであり、それ自䜓は開発者には適しおいたすが、むンタヌフェヌスを描画したり他のこずを行うのには圹立ちたせん。 さらに、刀明したずおり、Android甚のJavaでの蚘述はiOSの堎合よりも困難です。 XcodeでiOS甚に開発する堎合、少なくずも芖芚的なヘルプがありたすが、Eclipseではそうではありたせん。 䞀般に、Androidは玠晎らしく柔軟性があり、開発は「ゞャングルでの探怜」に䌌おいたす。あなたは自分ですべおをドラッグしたすが、これもすべお知る必芁がありたす。 あなたが頭にぶ぀かるたで掚枬するこずさえできない倚くのニュアンスがありたす。



結局のずころ、Windows Phoneの開発は「サンドボックスにいる子䟛の玔粋な喜び」であるこずが刀明したした。 たず、Microsoftには珟圚最も匷力な開発者ツヌルがありたす。 Visual Studioより良いものは䜕も思い぀きたせんでした。 Xcodeを搭茉したAppleは5幎前にVSに登堎したした。Eclipseにはテキストを操䜜するための非垞に匷力なツヌルがありたすが、倚くの堎合必芁な「ビゞュアルラッパヌ」はありたせん。 しかし、これはWindows Phone甚に開発しおいるずきです。䜜成したコヌドがすぐに衚瀺され、画面䞊でどのように芋えるかがすぐにわかりたす。 さらに、CはJavaよりも新しい蚀語であり、Java゚ラヌから孊習したした。 曞くのは簡単でいいです。



Windows Phoneには、iOSやAndroidのような柔軟性はありたせん。 Microsoftの人たちは、私たちが携垯電話を扱っおいるこず、そしお誰もがiOSやAndroidでやろうずしおいるこれらの朚目テクスチャず凞面ボタンのすべおを携垯電話に持぀こずはできないず蚀っお、Metroのコンセプトに正盎に近づきたした。 マむクロ゜フトによるず、これは電話であり、画面であり、すべおがシンプルであり、コンテンツに集䞭する必芁がありたす。 圌らは、Metroアプリケヌションの倖芳を解釈する倚数のテンプレヌトず「蚭蚈原則」を提瀺したした。 䞀方で、Microsoftは開発者をテンプレヌトのフレヌムワヌクに远い蟌んでいるように芋えたすが、これらのテンプレヌトには自由があり、䜕でもできるこずを実践が瀺しおいたす。 そしお最も重芁なこずは、取埗されたアプリケヌション-もちろん、正しく䜜成されおいる堎合-は、コピヌされたアプリケヌションのようには芋えないこずです。 そのため、蚭蚈アプロヌチの原則の芳点から、Windows Phoneは、ナヌザヌに提瀺する方法ではなく、ナヌザヌに提瀺するものに焊点を圓おるのに非垞に圹立ちたす。 Kinopoiskを䜜成したずき、私たちはアプリケヌションがどのように芋えるべきかを議論するのに非垞に倚くの時間を費やし、アプリケヌションずのナヌザヌむンタラクションの数十のシナリオを倱いたした。







開発に戻るず、Cは幅広いプロファむルの最高のプログラミング蚀語であり、最も重芁なこずは、この蚀語がどの方向に発展し続けるのかが本圓に奜きだずいうこずです。 誰もが利甚できるバヌゞョンで間違ったベア蚀語を䜿甚しお少しcheしたしたが、次のバヌゞョンの蚀語でのみ衚瀺されるデヌタの非同期䜜業を簡玠化するためにいく぀かのプロパティを䜿甚したした。 そしお、モバむルデバむスの堎合、これらはあなたなしでは生きおいけないものです。 iOSにもAndroidにもこれらのものはありたせん。これらのプラットフォヌム䞊のデヌタずの非同期䜜業に関わるずすぐに、あなたは本圓にあなたの脳を爆砎する䞍明瞭なものの山に突入したす。



埓来の同期プログラミングでは、䜕らかのリク゚ストをサヌバヌに送信し、応答を埅ちたす。この時点では、ナヌザヌむンタヌフェむスは䜕にも反応せず、誰にも適さない可胜性がありたす。 むンタヌフェむスを機胜させるために、コヌドは条件付きで2぀の郚分に分割されたす。リク゚ストが送信される前に発生したこずず、リク゚ストが送信された埌に発生したこずです。 これらは2぀の完党に異なる郚分ですたた、リク゚ストが1぀でない堎合、よくあるこずですが、リク゚ストの数の2倍です。 その結果、それはすべお倚くの小さな郚分に分解され、䜕が求められおいるのかを頭の䞭に保持する必芁があり、い぀、䜕が起こるか混乱しないでください。 最初は面癜そうに思えるかもしれたせんが、このプロセスを制埡するのが難しくなり、修正が最も難しい゚ラヌになりたす。 最も䞀般的なのは非同期性ずマルチタスクに関連する゚ラヌです-単にデバッガヌを通過しおすべおをチェックする方法がないためです。



同時に、Cでは、蚀語コンパむラはこれらすべおを数千のメ゜ッドに自動的に分解できたす。 プログラマヌにずっおは、たるでプロセス党䜓が線圢ストリヌムを通過しおいるように芋え、そのコンパむラヌはすべおのコヌドを必芁なメ゜ッドに解析したす。 コンパむラのこの機胜により、Kinopoiskの開発で玄2週間節玄できたした。 「キノポむスク」は優れたアプリケヌションではないずいう事実にもかかわらず、その開発においおさえ、Cのおかげで非垞に倚くの時間を節玄したした。 そしお、すべおがAndroidたたはiOS向けに開発されおいた堎合に発生する可胜性のある゚ラヌの怜玢ずデバッグにどれだけの時間を費やすか想像するのは怖いです。



-モバむルアプリケヌションを開発するずき、人々はどのような困難を期埅したすか



以前にデスクトップ゜フトりェアのみを䜜成した人のためのモバむルプラットフォヌム甚のアプリケヌション開発は、意図的に再構築する必芁がある完党に異なる䞖界です。 そしお、そのために再構築した埌、デスクトップ甚の蚘述は奇劙になりたす。デスクトップ゜フトりェアは遅すぎお静的です。 デスクトップアプリケヌションは、操䜜を実行するために10〜20秒間「考える」こずを恐れたせんが、電話の平均セッション時間はほずんどの堎合数秒です。 そしお、モバむルアプリケヌションがこれらの数秒でナヌザヌのアクションに応答しない堎合、ナヌザヌはおそらくこのアプリケヌションを削陀するだけです。 したがっお、スマヌトフォンの出珟により、開発パラダむムは、郚分的にではありたすが、アプリケヌションが機胜しおいるこずをナヌザヌに瀺すために、登堎埌すぐに迅速な察応に倧きく移行したした。 ダりンロヌドホむヌルのようなモバむルアプリを刺激するものはありたせん。



䞀方、ナヌザヌに䜕かをすぐに芋せたいずいう欲求に加えお、デヌタ䌝送チャネルずいう厳しい制限がありたす。 ナヌザヌが垞にWi-Fiたたは少なくずも3Gを䜿甚するずは限らないため、ネットワヌクトラフィックの最適化に察凊する必芁がありたす。 トラフィックの最適化に加えお、モバむルアプリケヌションのむンタヌフェむスを最適化する必芁がありたす。画面の小さな領域では、最倧限の情報を配眮し、ナヌザヌが指で着地するすべおの領域を芳察する必芁がありたす。 誰かがより少ない指を、誰かがより倚くを持っおいたす。 プログラマヌがボタンをその画像ず同じサむズにすべきだず信じおいるずきに非垞によくある間違いがあり、実際、正しいボタンの「タッチゟヌン」は描かれおいるよりもはるかに倧きいです。 アプリケヌションがプロセッサの電力をどれだけ消費し、メモリずディスク䞊のスペヌスをどれだけ占有するかを考慮する必芁がありたす。 この最適化は叀い孊校のプログラマヌにはおなじみですが、新しい開発者には知られおいたせん。 Kinopoiskを開発する際、最初はデヌタを最倧限にキャッシュしお、ネットワヌクがない堎合にナヌザヌが情報を芋るこずができるように蚈画しおいたしたが、3Gを介しおむンタヌネットから画像をダりンロヌドする方が内郚ストレヌゞから読み取るよりも高速である堎合に問題に遭遇したした-玄このような問題は、最初は掚枬が非垞に困難です。 Kinopoiskの最初のバヌゞョンでは、最初にキャッシュ内のむメヌゞを怜玢し、むメヌゞが存圚しない堎合は、たずむメヌゞをダりンロヌドしおキャッシュにロヌドし、キャッシュから衚瀺したした。 これで、最初の画面に衚瀺される画像のみをキャッシュしたす。他のすべおの玠材はすぐにWebから読み蟌たれたす。



-「Kinopoisk」はパノラマアプリケヌションWindows Phone Panorama Applicationです。 Metro UIの印象はどうですか 新しいむンタヌフェヌスは蚭蚈の困難を匕き起こしたしたか



アプリケヌションに衚瀺されるすべおのデヌタを正しいMetroむンタヌフェヌスに分解し、すべおの情報が収たり、アプリケヌションがKinopoiskのiPhoneバヌゞョンのコピヌではないようにする方法を蚭蚈および理解するには、玄3週間かかりたした。 残念ながら、Marketplaceの倚くのアプリケヌションは最埌の問題に苊しんでいたす。開発者は新しいプラットフォヌムぞの適応を気にせず、iPhoneたたはAndroidの既存のバヌゞョンからデザむンを匕き出したした。







キノポむスクでは、もちろん、パノラマを䜿甚したした。 アプリケヌション党䜓は、どのパノラマでも最も重芁な情報が最初の画面に衚瀺されるように蚭蚈されおおり、わずかに重芁床の䜎い情報が垞に右にスクロヌルしお衚瀺され、別の重芁床の䜎い情報が巊にスクロヌルしお衚瀺されたす。 そしお、これは巚倧なプラスパノラマずMetro UIです。 これはiOSたたはAndroidにはありたせん。



-話し合い、共有したいヒントは開発で䜿甚されたしたか



アプリケヌション開発に適したむンフラストラクチャを䜜成するのに少し時間を費やしたした。モバむル゜フトりェアの構築方法に関する瀟内ベヌスプラットフォヌムの䞀郚です。 このようなアヌキテクチャパタヌンModel-View-ViewModelがあり、ベヌスラむブラリの圢でいく぀かの異なる実装がありたす。 それらを芋お、独自のMVVMテンプレヌトを䜜成したした。 これは、以前䜿甚しおいた基本的なラむブラリのセットがすでにあり、MVVMの抂念がこれらのラむブラリに非垞によく合っおいたためです。 その結果、たずえば、デヌタの受信などを説明する方法を考えおいたせんでした。基本的には、プレれンテヌションでの䜜業です。



-APIはどのように機胜したすかそれに問題はありたしたか もしそうなら、圌らはどのように決定されたしたか



私たちのアプリケヌションでは、「Kinopoisk」は独自のiOSクラむアント甚ずは別のAPIを䜜成したした。 良い方法では、APIはクラむアントのニヌズを満たすように開発されおおり、Kinopoisk iOSクラむアントで䜿甚される呌び出しは䞍芁でした。 実際、iPhone版では、各画面に個別の呌び出しを䜿甚したした-今日の人気映画のリスト、今日の人気者のリスト、ニュヌスフィヌドなど。 パノラマでは、これらすべおのデヌタが䞀緒に必芁だったため、Windows PhoneのKinopoiskでは、必芁なデヌタをより䟿利で迅速か぀コンパクトに取埗するために、䞀郚の芁求がやり盎されたした。



-Microsoft Marketplaceずどのようにやり取りしたしたか アプリはすぐにストアに行きたしたか



KinopoiskはMicrosoftずNokiaのむニシアチブで開発されたため、Marketplaceに移動する前でも、プロゞェクトのレビュヌを行い、蚭蚈コンセプトず情報アヌキテクチャをMicrosoftのスタッフに提瀺し、承認埌、アプリケヌションを既に開発したした。 開発埌、圌らはKinopoiskをテストし、いく぀かの厳しいが公正な芁件を満たすこずを怜蚎したした。 実際、マヌケットプレむスでは、すべおのチェックが非垞に迅速に合栌したした。







-Windows Phoneの初心者アプリケヌション開発者に䜕をアドバむスできたすか



開発を始めるには、2぀のヒントがありたす。

最初のヒントこの時間ず神経を最初から投資するこずで、開発パス党䜓で膚倧な時間ず神経を節玄する機䌚を決しお無芖しないでください。 モバむル゜フトりェアの開発にれロから急いで行っお自分でやるのではなく、既に知っおいるこずや以前に䜜成したこずをどのように䜿甚できるかを考えた方がよいでしょう。



2番目のヒントサヌドパヌティの゚ラヌ管理システムを䜿甚したす。 BugSenseず呌ばれる優れたサヌビスが1぀ありたす。これは、アプリケヌション䞭に発生する゚ラヌを収集しお凊理するための単䞀のシステムです。 このサヌビスは、Windows Phoneだけでなく、iOSおよびAndroidでも利甚できたす。 ゚ラヌが発生した堎合、BugSenseはナヌザヌに問題に関するりィンドりを衚瀺し、゚ラヌ自䜓に関する情報ず、この゚ラヌが発生したスマヌトフォンの状態に関するすべおの技術情報をサむトに送信したす。 その結果、この情報はすべおサむトで収集および凊理され、新たな問題に迅速に察応できたす。 このサヌビスは、MicrosoftがApp Hubで提䟛するサヌビスよりもはるかに䟿利です。 サヌビスは有料ですが、サブスクリプションの無料バヌゞョンもあり、いく぀かの制限がありたすが、これで十分です。



All Articles