WebAssemblyの生産ずスマヌトテレビの「地雷原」Andrey Nagikhずのむンタビュヌ





WebAssemblyぞの関心は倧きいですが、これたでのずころ、䜜業䞭のプロゞェクトでこのテクノロゞヌを䜿甚しおいる人々に䌚うこずはほずんどありたせん。 スマヌトTVのアプリケヌション開発も「異䟋のJavaScript」であり、誰もが䜕かに぀いお聞いたが、個人的にそれを詊した人はほずんどいなかった。



Andrei andreynagih Nagihは䞡方の分野での経隓がありたす。以前はPeers.TVプロゞェクトのスマヌトTVアプリケヌションに取り組んでおり、ここ数か月でWebAssemblyに粟通したため、最終的にHolyJS䌚議で報告したした。 たた、HolyJSオンラむンブロヌドキャストで、䞡方に぀いお質問したした。



そしお今、圌らはそれがHabrの読者にずっおも興味深いものになるかもしれないず刀断し、むンタビュヌの線集されたテキスト版を䜜成したした。



誰かがビデオ圢匏に慣れおいる堎合は、投皿を読む代わりに、 元のビデオを芋るこずができたす。



Evgeny phillennium TrifonovあなたはここでWebAssemblyに぀いおプレれンテヌションをしたした-倚くの聎衆の質問があり、それらは「理論的に興味がある」からですか



アンドレむ・ナギフ報告の埌、私はディスカッション゚リアでたったく異なる質問に1時間答えたしたが、スペクトル党䜓に非垞に倚くの質問があったこずに驚いおいたす。 ほずんどの質問は「奜奇心just盛」な人からのものでしたが、すでにそれを䜿甚しおいる人もいたした。 驚くべきこずは、そのような人はこれたでのずころ少ないからです。 かなり実甚的な質問がありたした。



Eugene以前は、圌らはWebAssemblyに぀いお「これが成熟しお適甚可胜になるずすぐに」ず蚀っおいたした。 そしお今、技術はどのように「熟す」のですか



Andreyテクノロゞヌ自䜓はすでにかなり機胜しおおり、本番環境で䜿甚できたす。 私たちはそれを䜿甚しおいたす。 しかし、問題はツヌルにありたす。 コンパむラ自䜓は、テクノロゞ自䜓よりも叀いこずが刀明したため、かなり優れおいたす。以前のバヌゞョンからasm.jsで入手できたす。 しかし、デバッグツヌル、゜ヌスマップ、デバッガヌ-これはただ難しいです。 来幎たたは2぀のブラりザでこれらのポむントを匕き䞊げるず思いたす。



ナヌゞヌンそしお、最初にWebAssemblyが必芁だったもの-どんな皮類のプロゞェクトで、この利点は䜕ですか



Andrey私たちのプロゞェクトの1぀であるByteFogは、P2Pビデオコンテンツ配信のためのテクノロゞヌです。 WebAssemblyに぀いお考えるこずができる最も理想的なナヌザヌケヌスがあるでしょう。 すでにC ++で倧きなコヌドベヌスがあり、他の蚀語に曞き換えたくはなかったので、ブラりザヌで必芁でした。 したがっお、この技術はここに100収たるようです。



最初は、それを取埗しおコンパむルするだけで機胜するず考えたした。 しかし、もちろん、これは人生では起こりたせん。だから、レヌキに぀いおのこのレポヌトず、実際には、それをすべおプロダクションにドラッグする方法に぀いおのレポヌトが生たれたした。



Oleg olegchir Chirukhinそしお、生じた䞻な問題は䜕ですか



Andrew䞻な問題は、システムにアクセスできないこずです。 ネむティブアプリケヌションがあり、䜕でもできたす。 ブラりザに移怍する堎合、JavaScript以倖のこずはできたせん。 そしお、どうにかそれず䞀緒に暮らす必芁があり、ブラりザAPIを䜿甚する必芁がありたす。



アプリケヌションを移怍するプロセスは、条件付きで8か月かかりたした。 確かに、この期間䞭にコヌドベヌスのリファクタリングを適切に行いたした。これは䞀般的には良いこずです。 そしお今、私たちはそれをどこかに移怍するこずができたす。



オレグタリングに぀いおはすでに蚀及したしたが、より詳现に可胜ですか デバッグ、トレヌス、プロファむリング、それだけです。



アンドリュヌ芁するに、すべおが悪い。 しかし、良いものの小さなフラッシュがありたす。



たあ、コンパむラは倚少萜ち着きたしたそれはEmscriptenです他のランタむム-Rust、Go、Kotlin / Native-のC ++に぀いお話しおいる。



デバッグFirefoxは゜ヌスマップをサポヌトしおいたすが、それ自䜓は悪くありたせん。 Google Chromeでは、アセンブラコヌドを衚瀺するだけで、ブレヌクポむントを蚭定できたすが、これはたあたあです。



プロファむラヌは、Firefoxではより良く、Chromeでは少し悪くなりたす。 違いは、Firefoxが名前を解く、぀たり、゜ヌスコヌドにある名前にするこずです。 Chromeはマングルされた名前を衚瀺したすが、それが䜕であるかを理解するには目を现める必芁がありたす。



Oleg人々はJavaScriptからC ++に、たたその逆にどのように適応したすか



Andreiあなたはおそらくここで私を芋るこずができたす-最初はフロント゚ンドでしたが、今ではネむティブコヌドに觊れたした。 しかし、正盎なずころ、プロゞェクトの前でさえ、私はネむティブに䜕かをおしっこしようず思っおいたした。 だから私はおそらくあたり代衚的ではありたせん。



私たちはC ++偎のプロゞェクトで話す同僚のYuraずたくさん話したした。圌は「プラス」に぀いお私に話し、JavaScriptに぀いお圌に話したした。 そしお圌はJavaScriptに興味がありたした。 偶然-10人䞭10人ネむティブはJavaScriptがい぀だったかを孊びたいですか そしお、私たちには良いチヌムがいたす。



ただサヌドパヌ゜ンがいたす-これは、䞀般的にアセンブラコヌドを芋おアヌキテクトのKolyaです。「みんな、ずにかくデバッグできたす。 さお、芋お、すべおが明らかですこれはスタックされたマシンです、ここではメモリを操䜜し、ここでは算術...みんな、なぜ゜ヌスマップが必芁なのですか」圌は空き時間に組み蟌みシステム甚に曞くこずができたす。



オレグそしお、C ++からの特別な驚きはありたしたか蚀語、䜿いやすさ、C ++からの䜜業ですか



アンドリュヌたあ、もちろん、私はこれの準備ができおいたした。 最も重芁な驚きは、プロゞェクト䞭にプラスず話し合った埌、JSずC ++には倚くの共通点があるこずに気づいたこずです。 完党に異なる蚀語のように芋えたすが、亀点を芋぀けるこずができたす。 このトピックに぀いお別のレポヌトを䜜成するこずもできたす。それに぀いお考える必芁がありたす。



ナヌゞヌンそしお今、䞡方の埌、あなたは䜕を曞きたいですか



アンドリュヌ実際、私はC ++のプロダクションで曞く準備ができおいたせん。 私は自分で䜕かをしたす。 しかし、JavaScript-どこに行きたすか



OlegC ++が高速で、テンプレヌトのようなクヌルな機胜がたくさんあるずいう事実はどうですか いく぀かの超暙準的なコヌドを䜜成するずきに、テンプレヌトはフロント゚ンドに圹立ちたすか



アンドレむ冗談がありたす「問題があり、正芏衚珟を䜿甚しおそれを解決したい堎合、おめでずうございたす。2぀の問題がありたす。」 テンプレヌトず䜕かが䌌おいるず感じおいたす。 私たちのプロゞェクトでは、テンプレヌトを䜿甚しないようにしおいたす。C++開発者がそこに䜕かを実装しようずするず、アヌキテクトは非垞に抵抗したす。 問題はデバッグで発生したす。どこで問題が発生したかは明確ではありたせん。



オレグ぀たり、生成されたコヌドで䜕が起こるかは明確ではないのですか 圌は゜ヌスぞの゜ヌスマップを構築できたせんか



Andrew私の知る限り、テンプレヌトを䜿甚したネむティブC ++であっおも、デバッグは困難です。 WebAssemblyの䞋にドラッグするず、WebAssemblyの䞋でのデバッグで問題が発生したす。 したがっお、それは地獄だず思いたす。 カメラを泚意深く芋おください子䟛たち、C ++テンプレヌトを䜿甚しないでください



オレグテンプレヌトがなければ、圌はCになりたす。 玔粋なCで蚘述するこずが可胜になりたす。



アンドリュヌしかし、オブゞェクトはどうですか



オレグうヌん...「クラスのあるC」、はい。 クラスを䜿甚したCずテンプレヌトを䜿甚した慣甚的なC ++でのコヌドの蚘述は、たったく異なる2぀の方法だず思いたす。



Andrewはい、可胜です。



オレグ哲孊的な質問WebAssemblyをブラりザヌに远加するず、地獄ぞのポヌタルが開くず思いたせんか



アンドリュヌそうですね。 なぜなら、C ++が存圚するすべおのために曞かれたC ++ラむブラリたたはプログラムをブラりザでコンパむルしお、䜕が起こるか芋おみるこずは、おそらく流行になるからです。 今日、私はブラりザでWindows 2000のデモを芋せたした。



オレグ぀たり、これは単なる本栌的なWindows 2000ですか



Andrewはい、これは18幎前のWindows 2000ず同じもので、実行するにはコンピュヌタ党䜓が必芁でしたが、今ではChromeが必芁です。



Olegカヌネルモヌドを必芁ずするものはどうですか



Andrei圌女はQEMU゚ミュレヌタヌで実行され、Fabrice BellarQEMUの著者によっおWebAssemblyによっお個人的に移怍されたした。 もちろん、ファむルシステム、ネットワヌクにはアクセスできたせん。 しかし、これはWindows 2000であり、起動し、散らばり、すべおがそこにありたす。 分かりたす



オレグスマヌトテレビのアプリケヌションのトピックに移りたしょう。 ずころで、そこにあるWebAssemblyで䜕か面癜いこずができたすか



Andrewそこでサポヌトされおいれば可胜です。 スマヌトテレビの問題は䜕ですか スマヌトTVは曎新されおいないため、この開発は10幎前のフロント゚ンドの開発に䌌おいたす。 テレビを買っお壁に掛けた男は、䜕幎もそこに吊るしおいたす。



Olegしかし、私は垞に「埅っお、ファヌムりェアがロヌドされおいたす」ず蚀っおいたす。 すでに怒りたす。



Andreiファヌムりェアがロヌドされおいるかもしれたせんが、私が知る限り、システム、ブラりザを盎接曎新したせん。 その結果、ブラりザがChrome 5ずしお衚瀺される䜕幎も前のテレビを匕き続きサポヌトしおいたす。



オレグ芚えおいたせん。



アンドリュヌ私も芚えおいたせん。 スマヌトテレビ、特に叀いテレビの開発は、ブラりザ戊争のフロント゚ンドに䌌た地雷原です。



Oleg぀たり、叀いバヌゞョンず新しいバヌゞョンの䞡方で動䜜するスヌパヌクロスブラりザヌレむアりトを䜜成する必芁がありたしたか



アンドリュヌはい。 実際には、レむアりトの問題はJavaScriptほどではありたせん。APIによる非互換性です。今はすべおに蚀及したせん。



オレグそしお、スマヌトテレビで䜿甚したいが、䜿甚しないブラりザヌで利甚可胜なものは䜕ですか



Andrew数癟ものもの。フレックスJavaScriptでさえないで始たり、WebRTCで終わりたす。 ByteFogはWebRTCを䜿甚したす。 すでにスマヌトテレビにあるコヌドを匕っ匵っおくれたら玠晎らしいず思いたす...



ナヌゞンそしお、蚀及された問題に加えお、スマヌトテレビの開発-それはどのようなものですか 感芚はどうでしたか



アンドレむデバッグツヌルは非垞に貧匱で、実際には䜕もなかったため、スマヌトテレビブラりザヌの開発者はスマヌトテレビ甚のアプリケヌションを開発したプログラマヌを奜たなかったようです。 これは、最新のTizenおよびwebOSプラットフォヌムには圓おはたりたせん。 しかし、私は以前にこれを行いたした、そしお叀いプラットフォヌムがありたした、そしお、すべおがそこで悪かったです。 最良のデバッグツヌルはweinreでした 。これは実際にはデバッガヌではありたせん-JavaScriptをそこで停止するこずはできたせん。 これは、Web゜ケットで動䜜するChrome DevToolsのこのようなポヌトです。 䞀般的に、レむアりトをデバッグするこずは可胜でしたが、JavaScriptでは䜕もするこずは事実䞊䞍可胜でした。 どういうわけか私たちは䜏んでいた。



Olegブラりザで実行できるのに、なぜSmart TV自䜓でデバッグするのですか



AndrewブラりザヌにはJavaScriptがあり、ブラりザヌが提䟛するAPIがありたす。 これらは2぀の異なるものです。 同様に、テレビにはJavaScriptがあり、ブラりザヌ゚ンゞンからのAPIがありたす...



オレグほずんどの堎合、これはWebKitです。



アンドリュヌはい、原則ずしお。 たた、別のカテゎリのAPIがありたす-このテレビのプラットフォヌムによっお提䟛されるものです。 たず、これはプレヌダヌであり、次に他の機胜リモヌトコントロヌルなどです。 これらのAPIはブラりザには含たれたせん。



゚ミュレヌタがあり、メヌカヌは実際に提䟛しおいたすが、ハヌドりェアず完党には䞀臎しおいたせん。 したがっお、゚ミュレヌタでデバッグしたものがテレビでも機胜するずいうこずは事実ではありたせん。 逆もたた同様です。゚ミュレヌタヌでは動䜜しない可胜性がありたすが、テレビでは完党に動䜜したす。 そのため、最終的に、゚ミュレヌタを䜿甚せず、実際のハヌドりェアでデバッグしようずするずいう結論に達したした。 それはより速く刀明したすあなたはそこにないバグに時間を無駄にしたせん。



オレグそしお、いく぀のプラットフォヌムに察凊しなければならなかったのですか時間の経過ずずもに、それらは小さくなったり倧きくなったりしたしたか



Andrew私がスマヌトTVに携わったずき、メヌカヌは叀いオペレヌティングシステム条件付きでLinuxず呌ばれ、それぞれ独自の゜ヌスを持っおいたしたから新しいものに移行したした。 次に、Samsung、LG、Panasonicの3぀の異なるアプリケヌションを䜜成する必芁がありたした。 これらのアプリケヌションは、比范的蚀えば、コヌドをコピヌしたした。 そしお、SamsungがTizenに、LGがwebOSに、PanasonicがFirefox OSに移行するずいうニュヌスがほが同時に発衚されたしたその埌、存続しなくなり、Panasonicは珟圚分岐しおいたす。



䞀般的に、誰もがプラットフォヌムを倉曎しおいるように思われたす-なぜ1぀に収束しないのですか それは誰にずっおも、特に開発者にずっおははるかに良いこずです。゜フトりェアが増えれば、ナヌザヌはより䟿利なプログラムを受け取るこずになりたす。 しかし、いや、いただに異なるアプリケヌションを曞いおいたす。



Olegすべおのプラットフォヌムで䜕らかの圢で満杯にするこずは可胜ですか



Andrew最埌に、私たちは単䞀のフレヌムワヌクに到達し、プラットフォヌム固有のものを眮き換えお、クロスプラットフォヌムのビゞネスロゞックを蚘述しようずしたした。 しかし、これは回避できたようです。



OlegAndroid TVはありたすか



Andrew2぀のタむプがありたす。 以前はどうでしたか 通垞のAndroidをテレビに挿入しお攟したした。 そしお、GoogleはAndroid TVの特別なブランチを䜜成し、D-Pad、぀たりリモヌトコントロヌルに最適化されたした。 そのようなテレビもありたす。 しかし、これは別のストヌリヌず別のストアです。



そしお、Androidモバむルデバむスで誰もが勝ち、さたざたなメヌカヌがこのOSに萜ち着いた堎合、Googleはこれをテレビで実珟できたせんでした。 xkcdの図のように、すべおが1぀のプラットフォヌムに制限される代わりに、もう1぀ありたす。







EugeneAndroid TVの䞋に4K画面のテレビがありたすが、HDMI入力からは実際に4Kを受け入れたすが、組み蟌みのAndroidは720pにありたす。 なぜこれが起こっおいるのですか テレビは4K芏栌で予算に優しいため、メヌカヌはおそらくハヌドりェアを節玄しおいたすか



Andrewはい、ここでは、オペレヌティングシステムがこのハヌドりェアで4Kの画像をレンダリングできないずいう事実に反論しおいたす。 実際、これは、スマヌトテレビ぀たり、アプリケヌションのテレビ郚分が党画面解像床を䜿甚しない堎合の䞀般的な状況です。 FullHDはHD Readyに、4KはFullHDに、たたは720pにさえ挏れおいたした。 これは、テレビずコンテンツの䞡方があるにもかかわらず、4Kテレビで4Kコンテンツを衚瀺できない非垞に興味深い瞬間です。



テレビは䞀般的にむンタヌフェヌスを持っおいるこずが倚い-残念ながら、これはスマヌトTVプラットフォヌムの惚劇です。 さらに、Yandex.Marketでは、「スロヌダりンしないテレビ」をチェックしおフィルタリングしないでください。 どうやら、店に来おそこで遞択するこずは残っおいるようです。



オレグそしお、これはアプリケヌション開発にどのように圱響したすか 倚数のdivを远加した堎合、アプリケヌションはどんどん遅くなりたすか



アンドリュヌもちろん。 倧きなリストをレンダリングする必芁がある堎合は、すべおではなく郚分的にリストを倉圢しおレンダリングする必芁がありたす。 チャンネルのリストに200を含めるこずができたすが、リスト党䜓をレンダリングするこずはできたせんでした。スクロヌルするずきにブレヌキがかかりたした。



私は数幎前の状況に぀いお話しおいる。 珟圚リリヌスされおいるテレビでは、事態はさらに改善される可胜性がありたす。 しかし、再び、人々はめったにテレビを倉えたせん。



オレグあなたはどう思いたすか、私たちが珟圚スマヌトテレビで芋るすべおの未来は䜕ですか



アンドレむ私は悲芳的です。 私の予枬が叶わないこずを願っおいたすが、テレビで3Dテクノロゞヌの倕日が芋えたした。すべおのメヌカヌがこう蚀いたした。 私は望みたせんが、スマヌトテレビはこの運呜に苊しむようです。



オレグそれから、スマヌトテレビを持っおいない堎合にこのこずを䜿う䞻なパタヌンは䜕ですか 倧きな倪ったPCをテレビに貌り付けたすか



アンドリュヌ倧型コンピュヌタヌ、だれも固執しないず思いたす。 コン゜ヌルが最善の遞択かもしれたせんが、スマヌトテレビずコン゜ヌルには共通点が1぀ありたす。それはリモヌトコントロヌルです。 たた、適切なリモヌトコントロヌルを行うこずは非垞に困難です。 加速床蚈でゞョむスティックを䜜成する、぀たり、ゞェスチャヌコントロヌルを実装したり、マりスを゚ミュレヌトしたりするこずもありたすが、これも理想ずはほど遠いものです。 䞀般に、スマヌトTVの問題は、UI / UX領域で発生する可胜性が高くなりたす。 䞀郚では、音声制埡はテレビのUXを支揎するこずができたす-Peers.TVでは、ナヌザヌのスマヌトフォンを䜿甚しおサポヌトされおおり、珟圚、マむク付きの特別なリモコンに取り組んでいたす。



Eugeneはい、Googleは音声制埡の方向でテレビを熱心にリヌドしおいるようです。 これはさたざたな成功を収めお行われおいたす。 しかし、次のように䌚話を締めくくりたす。将来、芖聎者が「HolyJSの配信を開始しおください」ず蚀うだけで十分であるこずを期埅したしょう。



WebAssemblyたたはSmart TVに぀いお読んでいるずきに質問があれば、コメントでAndreyに尋ねおください。



たた、5月24〜25日にサンクトペテルブルクで次のHolyJSが開催されるこずにも泚意を払っおいたす。 圌女のプログラムはただ発衚されおいたせんが、通垞のフロント゚ンドを超える「非定型javascript」の堎所もおそらくあるでしょう。チケットは埐々に高䟡になっおいたす。



All Articles