ネむティブたたはハむブリッド Yandexのスペシャリストがモバむル開発の䞻な質問に答えたす

2回目のYandexの「Mobilization」ぞの参加申請の受け付けが完了するたで、文字通り4日間が残っおいたす。 たた、4぀のサマヌスクヌルを初心者向けに統合したす。管理孊郚 、 モバむルデザむン孊郚 、 むンタヌフェヌス デザむン孊郚 、 Android甚モバむル開発孊郚です 。







䜕癟䞇人ものナヌザヌにアプリケヌションを䜜成するYandexの埓業員だけでなく、招埅された専門家も参加者ず経隓ず知識を共有したす。 理論だけではありたせん。 実際の補品には倚くの緎習ずチヌムワヌクがありたす。 い぀ものように、授業料は無料で、Yandexはすべおの非居䜏者の孊生の旅費ず宿泊費を支払いたす。 アプリケヌションを送信しおいない堎合、送信する時間はほずんどありたせん。 授業は7月3日に始たり、Yandexの20呚幎の日である9月23日に終わりたす。



モバむル開発では、最も熱烈な議論のいく぀かはネむティブ開発ずハむブリッド開発に関するものです。 私たちは、このテヌマに぀いお掚論する動員教員3人を䞎えるこずにしたした。 開発の初心者ず既に遞択を決めおいる人の䞡方にずっお興味深いかもしれない短いむンタビュヌが刀明したした。







ナヌリ・ポドロゞュニヌ 。 Yandex Mobile Geographic Information Services Development Servicesのヘッド。 Yandex.MapsおよびYandex.Metroで動䜜したす。 8幎以䞊モバむル開発に埓事。 2014幎にYandexの䞀郚になったスタゞオAny Voidの創蚭者。







セルゲむはベレズノむを育おた 。 2005幎以降、Yandexの怜玢むンタヌフェむス開発郚長。 怜玢、メヌル、ブログ怜玢、Ya.ru、写真、ビデオに取り組むこずができたした。 さらに、サむトを䜜成するための内郚ツヌルの開発にも積極的に取り組んでいたす。













ロヌラ・クリスタリンスキヌ 蚭蚈郚門の責任者は、2008幎からYandexず協力しおおり、蚭蚈者の採甚、管理、開発、郚門のコミュニケヌションず教育プログラム、および瀟内の蚭蚈゚コシステム党䜓を担圓しおいたす。 Lolaずずもに、Yandexのデザむナヌずデザむン研究者のチヌムが始たりたした。 入瀟前は、Artemy Lebedev StudioのWebサむト開発郚門を率いおいたした。









ロヌラ・クリスタルリンスカダ

最初に、ネむティブ開発ずハむブリッド開発の䞀般的な定矩ず、それらの違いを説明したしょう。



ナヌリ・ポドロゞュニヌ

2007幎にはiPhoneが登堎し、2008幎にはAppleがアプリケヌションを䜜成できるようになりたした。これがネむティブ開発の出発点でした。 これは、1぀のモバむルプラットフォヌムに限定された開発環境を備えたコンパむル枈みプログラミング蚀語です。 iOS甚のObjective-CずSwift、Android甚のJava。 アプリケヌションは、特定のプラットフォヌムの法埋に埓っお、これらの「ネむティブ」蚀語のいずれかで䜜成されたす。



ロヌラ

プログラミングに関しおは、それは革呜的な新しいものでしたか



ゆり

もちろん違いたす。 「ネむティブ」ずいう甚語自䜓は、ハむブリッドアプロヌチずは察照的に生たれたした。



セルゲむ・ベレズノむ

ハむブリッド開発ずは、完党にたたは郚分的にレンダリングされ、Webテクノロゞヌを䜿甚しお動䜜するアプリケヌションを䜜成する方法を意味したす。 ぀たり、内郚で䜿甚されるものは、HTML、CSS、JavaScriptを䜿甚しお実装されたす。



ゆり

実際、今はきれいなWebアプリケヌションを䜜成するこずはできたせん。 iOSたたはAndroidアプリケヌション内にWebビュヌを配眮する必芁がありたす。぀たり、いずれの堎合でも、Java、Swift、たたはObjective-Cを䜿甚しお蚘述されたコンテナが必芁です。 そのため、ネむティブコヌドの䞀郚はただ残っおいたす。 クリヌンなWebアプリケヌションは、おそらくiPhoneの最初の1幎であり、倖郚から䜜成するこずはただ䞍可胜でした。 そしおAppleは、開発者がWebアプリケヌションを䜜成するためのテヌマを掚進したした。 ずころで、この関数はただそこにありたす。 Safariに移動しお「ホヌム」画面をクリックするず、デスクトップにアむコンが远加されたす。実際、これはクリヌンなWebアプリケヌションです。 もちろん、ストアを通じお配垃するこずはありたせん。



セルゲむ

珟圚、PhoneGap / Cordovaなどのプラットフォヌムのフレヌムワヌクがいく぀かありたす。これらのプラットフォヌムでは、比范的蚀えば、このコヌドフラグメントはすでに蚘述されおいたす。 単玔にそれらを基瀎ずしお開発し、あなたの裁量でそれらをWeb芁玠ず組み合わせたす。



ゆり

ハむブリッドアプロヌチは、おそらく、モバむル開発が勢いを増し始めたずきに時間ずリ゜ヌスを節玄したいずいう自然な欲求から生たれたした。 たずえば、特定の若いOSがあり、Webから生たれたさたざたなテクノロゞヌがあり、倚くはそれらを䜿甚しない理由に誘惑されおいたす。 しかし、正盎なずころ、私には理由がわかりたせん。 私の意芋では、Webテクノロゞヌを䜿甚した単䞀の通垞のアプリケヌションは実行できたせん。



単玔なタスクのハむブリッド、耇雑なネむティブ



ロヌラ

この堎合、遞択の問題はたったく関連しおいたすか たずえば、私はマネヌゞャヌであり、補品を所有しおおり、モバむルバヌゞョンを䜜成する必芁がありたす。 ハむブリッド開発ずネむティブのどちらを遞べばいいですか



セルゲむ

タスク、その実装に必芁な衚珟手段、および利甚可胜なリ゜ヌスから進める必芁がありたす。 人生の䞭で圌らが音楜を挔奏するように頌み、あなたが色だけを持っおいるなら、それは難しいでしょう。 カメラからのビデオをリアルタむムで凊理し、3Dアニメヌションや同様の耇雑なものを䜜成する必芁がある堎合、ネむティブプラットフォヌムの栞技術なしでは実行できたせん。 それどころか、単玔な癜黒の鉛筆で衚珟手段ずしお十分な堎合、Webテクノロゞヌは時間ずお金を節玄できたす。



ゆり

私は同意したす、それはすべおタスクに䟝存したす。 しかし、私の意芋では、りェブはいく぀かの堎合にのみ関連しおいたす。 たずえば、これが完党に新しい補品であり、垂堎がそれを知芚するかどうか、誰かがそれを必芁ずするかどうかがただ明確でない堎合、タスクは特定の仮説をテストするこずです。 たたは、少量のコンテンツを衚瀺しおいるだけで、むンタヌフェヌスずの積極的なやり取りが予想されない堎合は、画面ずセクション間で移行したす。 たずえば、Meduzaアプリケヌション。 ニュヌス画面に移動したす。これは単なるWebビュヌです。 りェブずたったく同じシンプルなレむアりトで、コンテンツを準備する必芁もなく、すべおがモバむルバヌゞョンですぐに衚瀺されたす。







セルゲむ

タスクに応じお、サむトは完党に異なる堎合がありたす。 か぀おは、Flashサむトを䜜成するかHTMLサむトを䜜成するかの遞択があったこずを思い出しおください。 そしお、あなたが望むなら、円で描かれたテキスト、ビデオが内偎にあり、すべおが矎しいず蚀ったので、フラッシュするだけでいいです。 ここにありたす。



ゆり

もちろん、ハむブリッドアプリケヌションの成功䟋もありたす。 たずえば、Basecampには興味深いモデルがありたすナビゲヌションの䞀郚がネむティブに実装されおいるため、遷移が迅速か぀スムヌズに実行され、タスクリストのコンテンツがHTMLで衚瀺されるため、タッチバヌゞョンずモバむルバヌゞョンで同じテンプレヌトが䜿甚されたす。 しかし、Yandex.Mapsでは垞にネむティブアプロヌチを採甚しおいたした。Webテクノロゞを䜿甚しお生産的で䟿利なマップを䜿甚しおアプリケヌションを䜜成するこずは䞍可胜だからです。 Webを䜿甚する唯䞀の堎所は、ラむセンス契玄の締結です。



ガむドラむンに瞛られた



ロヌラ

理想的には、もちろん、すべおが、意味、あなたが必芁ずするものず理由、どの補品、そしおそれにずっお䜕が重芁であるかから来るべきです。 しかし、私たちは珟実の䞖界に䜏んでおり、原則ずしお必ずしもすべおの人が遞択できるわけではありたせん。 誰かが開発者チヌム党䜓を雇うのに十分なお金を持っおいないので、あなたは独創的でなければなりたせん。 テクノロゞヌを遞択する䞊で、他にどのような芁因が圱響したすか



セルゲむ

無限のお金があれば、すべおのプラットフォヌムに適したネむティブバヌゞョンを䜜成する開発者を3人雇いたす。 しかし、私は貪欲すぎお、このような無駄遣いを蚱したせん。 ハむブリッドアプロヌチを䜿甚するず、お金を節玄できたす。1぀のオプションを䜜成しお、それをどこでも䜿甚できたす。 しかし、将来、タスクがより耇雑になり、たずえばリアルタむムでビデオに写真をオヌバヌレむする必芁が生じた堎合、3人の開発者にお金を費やす必芁がありたす。



さらに、アプリケヌションごずに3぀の異なるデザむンを3回描画するかどうかずいう疑問が生じたす。 結局のずころ、オペレヌティングシステムのガむドラむンは互いに非垞に異なっおおり、癜鳥のように、ガンずカワカマスは小さなこずで異なる方向に移動したす。 Windows Phone、Android、iOSのガむドを泚意深く読んだ堎合、各プラットフォヌムでナヌザヌタスクが最適に解決される方法に぀いお慎重に怜蚎する必芁があるこずがわかりたす。



ロヌラ

ガむドに埓っおアプリケヌションが䜜成されおいない堎合、ストアでのチェックはパスしたせんか



ゆり

もちろんできたす。 Appleがテストしたすべおのアプリケヌションが蚭蚈者のガむドラむンに察応しおいるわけではありたせん。 これらのルヌルの遵守を実際に監芖しおいる人はいたせん。



セルゲむ

しかし、私たちはアプリケヌションA +ずAAAクラス、倧リヌグに぀いお話しおいる。 これらを行うず、各プラットフォヌムのネむティブデザむンの問題が必ず発生したす。



ロヌラ

たた、ネむティブ開発では䞀般的な蚭蚈は䞍可胜です。独自のボタンずコントロヌルがある堎合はどうでしょうか。



セルゲむ

それはあなたがどのキャンプに属しおいるかによりたす。 アプリケヌションはプラットフォヌム内にあるべきだず考える人もいたす。 別の芳点-各ブランドはすべおのプラットフォヌムで同じように芋えるはずです。 InstagramやFacebookを芋るず、これらはプラットフォヌムに関連したブランドの自己識別をめぐる闘争のほんの䞀䟋です。 圌らはどこでも特別に芋えるようにアプリケヌションを特別に蚭蚈しおいたす。







Yandexでのアプリケヌションの実行方法



ロヌラ

倚くの人にずっお、FacebookがWebテクノロゞヌに幻滅し、ネむティブ開発に移行したずいう事実は、Web開発の優䜍性の蚌拠になっおいたす。 これはどれくらい合理的ですか



セルゲむ

これは、すべおのプラットフォヌムで補品を分離するために奜きなだけ倚くのプログラマヌを雇うこずができれば、Facebookであるこずが良いずいう事実に぀いおの物語です。 ちなみに、このような動きに察応しお、スタゞオを宣䌝する人の䞭には、Facebookがアプロヌチを倉えたずいう䞍利な点なしにFacebook Webアプリケヌションを䜜成した人もいたした。 ぀たり、ここではすべおが明確ではありたせん。 Webテクノロゞヌが悪いからではなく、プログラマヌができるこずをすべおやらなかったからかもしれたせん。



ゆり

最初のバヌゞョンのFacebookには完党にネむティブなアプリケヌションがありたしたが、その埌HTMLに切り替え、ストアで2぀の星を数幎間䜿いたした。補品が本圓に遅くなり、みんながoldり、結局ネむティブに戻ったからです。 これは、善意で優れたWebベヌスのむンタヌフェむスを䜜成する方法を瀺す掻発な䟋ですが、結局、生産性が䜎䞋したり、開発資金が䞍足したりしたす。



ロヌラ

しかし、たずえば、Yandex怜玢アプリケヌションはハむブリッドです。 なぜ、Webテクノロゞヌに倚くの欠陥があるのでしょうか



セルゲむ

圓瀟のサヌビスは䞻に情報の問題を解決するため、゚ンタヌテむメントゲヌム補品の堎合よりもむンタヌフェむスがシンプルになりたす。 ですから、私たちは実際にはパフォヌマンスに䌑みたせん。 そしお、巧劙に䜿甚されたWebテクノロゞヌの衚珟手段はそれほど貧匱ではありたせん。 さらに、ハむブリッドアプロヌチの柔軟性により、Web䞊で以前に行った成果の䞀郚を完党に曞き盎すこずはできたせんが、その成果には倚くの劎力が必芁です。 そしお、時間ずお金を節玄したす。



しかし、デザむナヌには困難がありたす。プラットフォヌムに関係なく、ナヌザヌに「共通のYandexむンタヌフェヌス」ずしお認識されるむンタヌフェヌスを䜜成する必芁がありたす。



ゆり

UIに加えお、ナヌザヌの利䟿性の問題がただありたす。 たた、各プラットフォヌムには独自のUXがありたす。 ナヌザヌは、優れたアプリが快適であり、習慣に埓うこずを期埅しおいたす。



ロヌラ

ナヌザヌの利䟿性ず補品のブランド統䞀性のバランスの問題をどのように解決したすか



ゆり

2幎前、Yandexのこの問題はより顕著でした。 すべおのアプリケヌションのスタむルは非垞に異なっおいたした。 その結果、すべおに共通する独自のむンタヌフェむスガむドを開発し、すべおのモバむルガむドラむンから最も成功したパタヌンを遞択し、堎合によっおは独自の最高のパタヌンを考え出したした。 しかし、新しいルヌルを導入するプロセスは非垞に長く、膚倧な数の萜ずし穎があり、ただ確定しおいたせん。



セルゲむ

テクノロゞヌを䜿甚した実隓の䞻な掚進芁因は、開発のための人件費の最適化ず、ナヌザヌに高品質の補品を提䟛するこずです。 最初は、怜玢アプリケヌションをネむティブに䜜成したしたが、たずえば、チヌムずリリヌスの同期など、別の問題が発生したした。 最初に3぀の異なるプラットフォヌムで異なる開発者に投資するこずを決定した堎合でも、将来、管理䞊の問題が発生するリスクがありたす。 新しいUI、これらのプラットフォヌムの新機胜がすべおの堎所で同時に曎新され、このむンタヌフェむスを完党に同期的に理解できるようにする方法は



実践が瀺すように、倧䌁業では、これはすべお開発者の異なる氏族に倉わりたす。䞀郚はモバむルバヌゞョンのアプリケヌションを䜜成し、䞀郚はタッチバヌゞョンのサむトを䜜成し、さらに䞀郚はデスクトップバヌゞョンを䜜成し、䞀郚はAndroid甚のアプリケヌションを䜜成し、䞀郚はWindows Phone甚に䜜成したす。 そしお、これら5぀のチヌムすべおを互いに同期するには、レベル80のマネヌゞャヌが必芁です。 そしお、単䞀のコヌド、぀たり単䞀のコマンドのアプロヌチは、そのような混乱を取り陀くのに圹立ちたす。



ゆり

私の意芋では、これは問題ではなく、問題の状態です。 たずえば、Yandex.Mapsで䜕らかの新しいこずを行う堎合、たず1぀のプラットフォヌムでそれを実行し、次にすべおのレヌキを収集しおから、それらを他のすべおのレヌキに远加したす。







開発者がアプリケヌションの䜜成を開始するために知っおおくべきこず



ロヌラ

ネむティブテクノロゞヌずハむブリッドテクノロゞヌの参入しきい倀はどの皋床異なりたすか 䞀般的に、プログラマヌはモバむル開発にどのような基盀を眮く必芁がありたすか



ゆり

ネむティブアプリケヌション開発者は、Objective-C、たたはSWIFT、たたはJava、たたはC ++を知っおいる必芁がありたす。 しかし、私の意芋では、どの蚀語で曞くかはビゞネスです。ここで重芁なのは、プログラミングの基本的な知識です。 私の人生で応募した人は党員、モバむルの経隓はないが、バックグラりンドの良い孊生でした。 他のすべおは実際に理解されおいたす。 優れた専門家チヌムに参加し、1桁速く成長したす。



セルゲむ

HTML、CSS、たたはJavaScriptを䜿甚しおむンタヌフェむスを開発した経隓がある人は、モバむルブラりザヌの詳现を詳しく調べる必芁がありたす。 むンタヌフェヌスに぀いお話すず、これらは盞互䜜甚パタヌンです-指ではより倚く、キヌボヌドではより少ないです。 ランタむムには、モバむルブラりザヌ甚のJavaScriptずCSSの独自の仕様がありたすが、最近では差がたすたす少なくなっおいたす。 原則ずしお、モバむル向けの開発は、比范的新しい技術ずしおWeb暙準のより近代的な実装を備えおいるため、幅広いデスクトップブラりザよりも簡単です。 しかし、珟圚、モバむルプラットフォヌムが叀くなるず、䞀郚の機胜をサポヌトしおいない叀いブラりザを䜿甚しおいるクラむアントがいる堎合ず同じ問題がデスクトップで発生し始めたす。



ロヌラ

プログラマヌはモバむルず非モバむルに分かれおいたすか たずえば、蚭蚈垂堎では、これは必須の远加スキルになりたした。 たぶん、あなたは実際に毎日モバむルむンタヌフェヌスを扱っおいないかもしれたせんが、モバむルデザむンの基本的な知識がなければ、むンタビュヌず遞択に合栌するこずはほずんど䞍可胜です。



ゆり

プログラミングには非垞に倧きな応甚分野があり、C ++で䞀郚のサヌバヌコンポヌネントを開発しおいる人は、モバむル開発に぀いお䜕も知らないかもしれたせん。



セルゲむ

マむクロコントロヌラヌやナヌザヌむンタヌフェヌスの開発は倧きく異なり、あるボヌトから別のボヌトにゞャンプするのはそれほど簡単ではないこずに同意したす。 しかし、モバむル開発に぀いお話す堎合、Yandexでは、デスクトップ版ずモバむル版のサむトをすぐにタむプセットする人を連れお行きたす。 ぀たり、レむアりト、HTML、CSS、およびJavaScriptがデスクトップブラりザヌでどのように機胜するか、モバむルでどのように機胜やニュアンスがどのように機胜するかを理解する必芁がありたす。 デザむナヌず同様に、フロント゚ンド開発者の远加スキルが刀明したした。



ロヌラ

たた、モバむル分野では、プラットフォヌムに応じおスペシャリストの郚門はどの皋床厳栌ですか



ゆり

AndroidずiOSは、たったく異なる2぀のストヌリヌです。 もちろん、垌望する堎合は、䞡方を行うこずを孊ぶこずができたす。 しかし、私が䞀緒に働いた人たちの䞭には、プラットフォヌムを倉える人はいたせんでした。



セルゲむ

各プラットフォヌムはかなり深い゚コシステムであり、機胜するには実甚的な経隓が必芁です。 しかし、Androidテクノロゞヌの知識があり、iOSアプリケヌションを扱うチヌムでAppleのチヌムを孊びたいむンタヌンを簡単に取埗できるず思いたす。 違いは、マむクロコントロヌラヌのプログラミング間の差ほど倧きくありたせん。



アダプティブレむアりト-䞇胜薬ではありたせん



ロヌラ

貧しいけれどもcな人には、アダプティブレむアりトのようなものがただあるず聞きたした。



セルゲむ

デスクトップずモバむルで異なる動䜜をし、それらに適応できるように、Webテクノロゞヌのむンタヌフェヌスを䜜成する技術的な機䌚がありたす。 しかし、残念なこずに、䞀郚の補品のゎム性は無限ではなく、この適応性の範囲内の倉動性は非垞に限られおいたす。 このようなラバヌレむアりトの䞻な利点は、1぀のコヌドを䜜成し、それをどこでも䜿甚できるこずです。



Yandexでは、少し異なる方法で䜜業を行いたす。どこでも䜿甚する共通の郚分がありたすが、異なる必芁があるものがあり、サむズごずに別々に蚘述したす。 したがっお、2぀の怅子に座りたす適応性の抂念にあるコヌドの再利甚ず、タッチプラットフォヌムおよびデスクトッププラットフォヌムの特定の再定矩によるより埮劙な適応性の導入。







ロヌラ

マネヌゞャヌ、デザむナヌ、開発者がこれらすべおのニュアンスをどのように考慮するかをたずめたしょう。



セルゲむ

私は頑固な狂信者ではなく、毎回意識的な遞択をするこずをお勧めしたす。あなたの頭に可胜な限り広い文脈を持ち、すべおの芁因を考慮したす。 「Facebookがハむブリッドアプロヌチからネむティブアプロヌチに切り替わったので、それが必芁だ」ずか、「YandexがWebテクノロゞヌを䜿甚しおアプリケヌションで出力を䜜成したので、そうする必芁がある」ずは思わないでください。 トピックに飛び蟌む必芁がありたす。



ゆり

このためには、少なくずも䞡方を理解する必芁がありたす。 正しいアプロヌチはないため、䞖界の仕組み、仕組みを理解しおください。 いく぀かのむンタヌフェヌスずセクションがWeb䞊に䜜成されるネむティブアプリケヌションを䜜成するこずは非垞に可胜です。 各タスクを個別に分解しおから、決定を䞋す必芁がありたす。 ここには魔法の薬はありたせん。



All Articles