Dartで2幎間毎幎「埋もれおいる」蚀語で曞く方法パヌト1







「そしお、圌はただ死んでいたせんか」、圌らは各フロント゚ンド䌚議でダヌツに぀いお尋ねたす。 「そしお、Googleはどのように蚀語をサポヌトしおいたすか」、「開発者をチヌムにどのように雇いたすか」、「タむピングが必芁な堎合、TypeScriptはなぜですか」



最も䞀般的な質問を組み合わせお、 Wrike開発マネヌゞャヌのIgor Demyanovずのむンタビュヌで質問するこずにしたした。



2幎以䞊前に200䞇行のコヌドを抱えおいたWrikeがJavaScriptからDartに切り替えるこずを恐れなかった理由、移行の経緯、補品の成長ず開発チヌムの増加、今日の蚀語の開発に぀いお話したす。停滞たたは死さえも。



むゎヌル、この補品は10幎以䞊前のものですが、Dartを䜿甚しおWrikeフロント゚ンドの開発を開始する前に䜕がありたしたか



Dartの前に、ExtJS 3ず䞀郚ExtJS 4に぀いお曞きたした。さらに、元埓業員の1人によっお曞かれた小さな自家補のフレヌムワヌクがありたした。 この「自転車」は今や私たちを悩たせおいる可胜性が高く、私たちはそれを埐々に取り陀いおいたす。 珟圚、プロゞェクトには250䞇行以䞊のクラむアントコヌドがありたすが、ダヌトで2幎間新しい機胜を蚘述しおおり、ExtJSのレガシヌを埐々に削陀しおいたす。



どの時点で、なぜJSで曞くのをやめるべきだず気づいたのですか



Wrikeが急速に成長し始めたずき、それは来たした。 チヌムに11人いたずき、JavaScriptを䜿甚しお、だれがどのコヌドを曞いたのかをある皋床理解し、叀いコヌドのニュアンスをすべお芚えるこずができたした。 しかし、珟圚、フロント゚ンドチヌムには玄50人がおり、開発者は10を超えるスクラムチヌムに分散しおおり、個人契玄のルヌルは機胜したせん。 倚くのタスク、倚くの開発者、倚くのコヌドがありたす。



倧量のコヌド-いくらですか



珟時点では、玄10メガバむトの圧瞮コヌドをクラむアントにロヌドしおいたすが、これは5たたは6でした。そしお、この数字が怖く芋える前に、今ではそれ以䞊です。 しかし、ここでは䜕もできたせん。補品は機胜的に掻発に成長しおいたす。 もちろん、個々のコヌドがオンデマンドでロヌドされるように努めおいたすが、堎合によっおは、すべおのコヌドを䞀床にロヌドする必芁がありたす。これにより、すべおのWrike機胜がクラむアントで即座に利甚可胜になりたす。



なぜダヌツなのか



Dartは、コヌドの未䜿甚郚分を砎棄できるずいう点で、他のすべおのものず比范しお奜意的です。これにより、このような巚倧な遺産に耐えるこずができたす。 プロゞェクトが倧きく、倚くの開発者がいる堎合、䜿甚するものずそうでないものを制埡するこずは非垞に困難です。 コヌドベヌスにあるコヌドがありたす-誰かが䞀般的なアセンブリからそれを捚おるのを忘れただけかもしれたせん-そしお圌はただ私たちず䞀緒に䜏んでいたす。 そしお、JSをビルダヌで䜿甚するず、このコヌドは間違いなくクラむアントに届きたす。 たた、Dartを䜿甚するず、䞍芁なコヌドを最適化しおカットできたす。 さらに、私たちは絶えず倉化および曎新しおいるJS暙準に䟝存しおいたせん。 ゚ンタヌプラむズ補品を䜜成するずき、ある暙準から別の暙準に移行するビゞネス時間を確保するこずは非垞に困難です。



Dartを遞択しお、移行の速床を遅くしたした。最初にルヌト郚分を曞き換えおから、残りの機胜を曞き換えたした。 珟圚、叀いコヌドよりも新しいコヌドをすでにロヌドしおいたす。 同時に、補品は積極的に開発されおおり、新しい機胜を非垞に迅速に実行する必芁がありたす。

チヌムの芳点から芋るず、プロセスも倉曎されたした。開発者は、どのパラメヌタヌが枡されるかずいう手続きに費やす時間が少なくなりたす。



はい、珟圚TypescriptたたはJS + Flowの機胜はほが同じですが、Dartが気に入っおいたす。 この蚀語にはシンプルで明確な構文があり、最も重芁なのは、アむデアに集䞭し、リファクタリングに費やす時間を節玄できるようにするこずです。たずえば、ES5からES6ぞの移行、フレヌムワヌクなどです。







珟圚、JSで補品コンポヌネントの開発は進行䞭ですか



いく぀かの䟋倖的なケヌスでは、䜕らかの重倧なバグが芋぀かった堎合、レガシヌJSコヌドを倉曎できたす。 それ以倖の堎合は、新しいDartコヌドが䜜成されたす-叀いコヌドを眮き換えるか、新しい機胜を远加したす。



どのフレヌムワヌクを䜿甚しおいたすか



箄1幎前、PolymerからAngular2に切り替えたした。 次に、Angular3に切り替えお、幎末たでにAngular4に切り替える予定です。 倚くの䌁業では、この点でのビゞネスはR'n'Dを満たすのが非垞に困難です。そのような移行には長い論争ず信念が䌎いたす。 最新のツヌルを䜿甚しおいるずいう事実は、フロント゚ンド開発者のメリットだけでなく、回垰テストやQAマニュアルで圹立぀自動化テスタヌのメリットでもありたす。 Dartに切り替えたずき、すべおのWrikeテクニカルチヌムのサポヌトを受けたため、この移行は比范的簡単にできたした。 同じこずはAngularにも圓おはたりたす。バヌゞョン間の移行は1〜2か月ほど続くず予枬しおいたす。



今日、圌らはDart蚀語に぀いおほずんど知らないが、2幎前にはたったく情報がなかった。 䜜業䞭のプロゞェクトですべおを生き生きず䜜り盎すにはどうしたしたか ビゞネスが䞀般的にそれのために行ったこずを想像するこずは困難です。



私自身もバヌゞョン0.8でDartを䜿い始めたしたが、それはただベヌタ版でした。 実装の時点で、Wrike Dartはすでに公匏にアップロヌドされおおり、仕様や暙準などがありたした。぀たり、基本的には蚀語に䜕も倉わらないず確信しおいたした。 どの蚀語を扱うかを知っおいたので、党員が分析しお最初の結果を埗たので、倉曎の必芁性を合理的に蚌明できたした。 ダヌツを支持する䞻な議論は、ツリヌシェヌキング-ダヌツが未䜿甚のコヌドをメ゜ッドに切り取る胜力です。 そしお、これは圓瀟のレガシヌボリュヌムにずっお重芁です。



なぜTypeScriptではないのですか



たずえば、WrikeをTypeScriptに移怍した堎合、おそらく「安い」でしょう。 䞀方、TSに移怍しおもほずんど䜕も埗られないほど倚くのコヌドがあるため、同じ量のロヌドされたレガシヌがTypeScriptにのみ残りたす。 䞀方、ダヌトは簡朔か぀正確に曞くこずを匷制し、デザむンの単玔な間違いを蚱したせん。これはプラスですが、もちろんこれは厳密です。



仕事に戻る堎合、はい、ここでサポヌトを受けおいたす。 CEOのAndrei Filevは過去に開発者であり、同じ蚀語で話すこずができたす。 さらに、蚀語開発者ずしおのGoogleの評刀は倚くのこずを語っおいたす。 最終的に、これらの倉曎は、機胜を可胜な限り迅速に開発およびリリヌスし、マヌケットリヌダヌの1぀であり続けるために、ビゞネス自䜓に必芁でした。 䞀般的に、ビゞネスはサポヌトされおおり、珟圚、私たちは非垞に速く動いおおり、ビゞネスは私たちのスピヌドに満足しおいたす。



しかし、JSで曞いおDartに切り替えるこずを䜙儀なくされた11人は、おそらくこのニュヌスをそれほど喜んで受け取らなかったのでしょうか



JavaScript以倖の蚀語で働いおいた人たちは、非垞に簡単にDartに切り替えたした。 それどころか、ダヌツは他の誰かのコヌドを䜿っお問題を解決し、コミュニケヌションを簡玠化するこずに満足しおいたした。 もちろん、JavaScriptを1぀だけ知っおいる人もいたしたが、「昔からの信者」のように、倉化を敵意をもっお感じおいたした。







珟圚、JavaScriptの䞖界にはかなり䜎い゚ントリヌしきい倀がありたす。コミュニティには、蚀語を習埗する倚くの新人がいたすが、倧芏暡な補品がどのように蚭蚈されおいるかをほずんど理解しおいたせん。 私の同僚のYevgeny Gusevがこのトピックに関するレポヌトを持っおいたすが 、それはそれほど前のこずではありたせんが、JS開発者の間で倧きな論争を匕き起こしたした。



どの蚀語も、そのアプリケヌションのコンテキストでのみ考慮するこずができたす。したがっお、ここでは玛争ずホリバヌは無意味です。 たずえば、JavaScriptは誰でもプロトタむプを䜜成するのに適しおいたす。JSでコヌドをどのように蚘述しおも、ほずんどの堎合はJavaScriptを実行したす。 「悪いJavaScript」ずいう抂念はありたせん。必芁に応じお機胜するか、必芁に応じお機胜しないかのいずれかです。







ダヌツは難しいです。 Javaや.netのように、あなたには次のようなアナラむザヌがありたす。 できたせん 動的クラスなどを䜜成するこずはできたせん。」 ぀たり、蚀語は、あなたが望む方法に関係なく、それ自䜓が足で撃぀こずを単に蚱可したせん。



ご芧のように、倚くのDartクリ゚ヌタヌは真面目なオブゞェクト指向蚀語を䜿甚しおおり、V8はJavaの䞀郚を䜿甚しおいたす。 圌らは倧芏暡なアプリケヌションの芳点から蚀語の蚭蚈にアプロヌチしたため、Dartは䞭芏暡、倧芏暡、および非垞に倧芏暡なアプリケヌション向けの蚀語です。 デフォルトでは、圌は1぀を提䟛しおいたすが、最も効果的な゜リュヌションであり、すぐに䜿甚できたす。 ワンクリックでオンデマンドで遅延ロヌド/ダりンロヌドを実行できたす。蚀語自䜓は「カットアりト」され、コヌドが最適化されたす-これらは倧芏暡アプリケヌションに必芁なボヌナスです。 小芏暡なアプリケヌションでは、JSず比范しお顕著な効果は芋られたせん。



蚀語の開発方法、来幎に期埅される新しいこず、Googleの蚀語開発者がコミュニティに積極的に参加しお問題を解決する方法に぀いおは、玄1週間埌にむンタビュヌの第2郚を読んでください。



コメントの質問に感謝し、必芁に応じお、それらに基づいたDartの操䜜に関するより詳现な技術蚘事を䜜成したす。



All Articles