「垞に進化する必芁がありたす」Evgeny KuvshinovManyChatずのスタヌトアップ開発に関するむンタビュヌ





倧䌁業では開発がどのように芋え、小䌁業ではどのように開発ず異なるかを倧たかに想像したす。 しかし、䌁業の芏暡が急速に倉化し、埓業員数が数幎で10倍に増えた堎合はどうなりたすか スタヌトアップが急速に成長し、倖出先で新しい状況に適応する必芁がある堎合、これはすべおプロセスからテクノロゞヌたでにどのように圱響したすか



ManyChatは、HolyJS䌚議に参加する予定です。 そのため、フロント゚ンドのEvgeny Kuvshinovの開発 、特にManyChatの技術サポヌト、および䞀般的にスタヌトアップでの開発フロント゚ンドの開発に぀いお技術サポヌトを䟝頌したした。



-たず、ManyChatで䜕をしおいるか、䌚瀟自䜓が䜕をしおいるかを簡単に教えおください。



-私はちょうどフロント゚ンド開発者ずしお䌚瀟に来たした。6か月埌、私はフロント゚ンドチヌムリヌダヌに成長したした。 その埌、フロント、バック、テスト、補品などの機胜的なチヌムがただありたした。 そしお、LeSSですべおのプロセスを再構築した埌、開発に戻りたしたが、以前の組織的なタスクはほずんどありたせんでした。 私はナヌザヌ゚クスペリ゚ンスに携わっおおり、補品の郚分に関係するよう努めおおり、䞀郚は補品マネヌゞャヌずしお成長しおいたすが、同時にコヌドを垞に曞いおいたす。



䌚瀟ずしお、私たちは䌁業が比范的新しいコミュニケヌションチャネルであるFacebook Messengerの䜿甚を支揎しおいたす。 ManyChatは、メッセンゞャヌ甚のチャットボットをすばやく簡単に䜜成するためのプラットフォヌムです。 これは人工知胜に関するものではなく、人間のコミュニケヌションを゚ミュレヌトする詊みに関するものではなく、これが䞍芁なシナリオに関するものです。 ボットの助けを借りお、ニュヌスレタヌを䜜成したり、泚文、予玄、ロむダルティプログラムなどのより耇雑なむンタラクティブな蚭定を行うこずができたす。 たた、芖芚的か぀明確に行われたす。これは、かなり高床なビゞネスオヌナヌたたはプログラミングスキルのないマヌケティング担圓者が行うこずができたす。



特定の䟋を䜿甚しお、Messengerでのボットの䞀般的な動䜜を確認できたす。HolyJSに合わせお、 特別なボットを䜜成したした。







-確かに「数幎前にチャットボットは倱敗したした」ずいう蚀葉を垞に聞きたす。 あなたの経隓は、䞀般的に、特定の状況においお、それらが非垞に適切であるこずを瀺しおいたすか



-はい。 おそらく䜕よりも、䟿宜性は私たちの堎合でさえ蚌明されず、WeChatプラットフォヌムによっお蚌明されたす。 これは䞭囜ではほずんどすべおの人が䜿甚しおいるメッセンゞャヌであり、倚くのビゞネスがあり、䞭囜でのピザやタクシヌの泚文などがWeChatを通じお掻発に行われおいたす。 そしおこれは、人間ずビゞネスのコミュニケヌションの特定のむンタラクティブなシナリオが本圓にうたく機胜するこずを瀺しおおり、䞡者にずっお䟿利です。



そしお、数幎前に誇倧宣䌝されおいた䜿甚法-あなたが人間ずしおボットず話すこずができ、圌が飛行機ぞのフラむトの最高のバヌゞョンを提䟛するように-そう、それは本圓にうたく機胜したせん。



そしお、WeChatに近いものを実装しおいたすが、他の垂堎でも、そもそも、米囜でも、䞖界䞭にありたす。 ペヌロッパにはかなりの数の顧客がいたす。䞭囜に近い囜では、倚くの人がFacebook Messengerを䜿甚しおいたす。



-成長のトピックに移りたす。䌚瀟はどのくらいの期間登堎し、その瞬間から珟圚たでどのように成長したしたか



-䌚瀟は2015幎に登堎したした。 それは、共同蚭立者のミカ゚ル・ダンが電報でニュヌスレタヌを曞く必芁があったずいう事実から始たりたしたただチャンネルはありたせんでした。 圌はそれが非垞に耇雑であり、特別なツヌルが有甚であるこずを認識したした。 その結果、MichaelずAnton Gorinは、Telegramでボットを䜜成するためのプラットフォヌムを最初に䜜成したした。 プラットフォヌムは十分に急速に成長し始め、バレヌのスタヌトアップアクセラレヌタにヒットしたした。



そしお、圌らがアクセラレヌタヌにいる間、Facebookはメッセンゞャヌ甚のAPIを開きたした。 そしお、Facebook Messenger専甚の新補品を䜜るために、圌らが鋭いピボットをするこずを決めた瞬間でした。 メッセンゞャヌの毎月のオヌディ゚ンスは14億人で、Facebookでは倚くの䌁業が公匏ペヌゞの圢で衚象しおいたす。 これらのペヌゞでは、ボットを䜜成できたす。



圓初、3人の埓業員がいたしたMichael、Anton、およびフロント゚ンドの最初のバヌゞョンを䜜成した別の開発者。 同じ幎の秋に、最初の投資を受けお、チヌムの拡倧を開始できるこずが明らかになりたした。 その埌、私ず他の3人の開発者が䌚瀟に来たので、2016幎の終わりには7人でした。 そしお今、2幎埌、すでに50人以䞊が存圚し、成長が続いおいたす。



プラットフォヌム自䜓の数を芋るず、すでに40䞇を超えるボットが接続されおいたす。 たた、財務指暙の面でも順調に成長しおいたす。すでに収益性の高い䌁業ですが、さらに積極的に成長するために投資を探し続けおいたす。 来幎、少なくずも人数で倍増する予定です。



-スタヌトアップは、詊行錯誀によっお倚くのこずが行われる非垞に実隓的な分野です前述のピボットのように、1぀のコンセプトから始めお、倖出先で倉曎したずき。 これは開発にどのように圱響したすか これは、「実装した機胜が砎棄される」ずいう状況に垞に備える必芁があるずいうこずですか



-確かに、いく぀かの機胜を䜜成できるものがありたすが、最終的にはナヌザヌからの需芁はなく、採甚率は䜎くなりたす。 たたは、圌女は本番にたったく行かないかもしれたせん。私たち自身は、䜕が起こったのかを芋お、私たちはそれが奜きではないこずを理解するからです。



そのような状況の数を最小限に抑えるために、私たちが最初に考えるのは開発䞭であっおも、機胜の補品開発の最初に動機付けです。 なぜ、誰のために、それが既存のナヌザヌにどの皋床圱響するか、自分自身でどれだけ気に入っおいるかそのようなこずが補品に登堎したこずを喜んで誇りに思いたす。 ナヌザヌコミュニティでアンケヌトを行ったり、ナヌザヌずのむンタビュヌを行ったりするこずで、動機付けを決定し、開発を開始したす。 次に、スプ​​リント甚の機胜を準備したす。このようなプロセスはPBR補品バックログ調敎ず呌ばれたす。最初にバックログに入り、次に評䟡で䞊昇し、ある時点で既に十分に説明されおいるように、スプリントに分類されたす。



スプリントで盎接、最初に行うこずは、それがどのように芋えるかを理解しおいない堎合、モックアップずプロトタむプを䜜成するこずです。 しかし、それがどんなに奇劙に聞こえるかに関係なく、時には開発ですでに行われおいたす。 なぜなら、単にレむアりトを䜜成しおむラストを描くだけでは、ナヌザヌがむンタヌフェヌスをどのように感じるかを理解するのが非垞に難しいからです。



フロント゚ンドでは、原則ずしお既に機胜しおいるプロトタむプたたはむンタラクティブ機胜を䜜成するこずが倚く、クリックしおそれらを感じるこずができたす。 そしお、デザむナヌずの緊密な連携により、これらのプロトタむプを実皌働に移行するオプションにしたす。 しかし、それにもかかわらず、ここでこれらのプロトタむプを䜜成するずき、それを䜜成し、芋、そしおあなたが「いいえ、来ない、それは䞍䟿です」ず自分自身を理解するずき、それはたた頻繁な珟象です。 ボットを䜜成するために独自の補品を䜿甚しお、ナヌザヌが問題が発生する可胜性のある堎所を芋぀ける前であっおも、それを詊みたす。 たあ、䞀般的に、私たちはナヌザヌ゚クスペリ゚ンスに焊点を圓お、最も䜿いやすいプラットフォヌムを構築しようずしおいたす。



-䌚瀟の急速な成長に䌎い、数十人に切り替えたずきに、数人のために働いおいたプロセスが機胜しなくなるずいう事実に気付くでしょう。 組織の芳点から開発はどのように倉化したしたか



-難しかったです。 幎の初めには、かなり困難な状況がありたした。数か月間、いく぀かの機胜を実行したずき、それらは垞に「もう少し仕䞊げお運甚環境に展開する」こずができたしたが、この「ただ少し」は発生したせんでした。



私たちが最初に始めたずき、私たちは7人いたした。 スクラムがあり、スプリントがあり、すべおが構築され、十分にうたくいきたした。 20〜30人に成長したずき、倚くの䌁業ず同様に、機胜チヌムバック゚ンド、フロント゚ンドが登堎したした。 独自のプロセス、内郚に独自のスプリント、独自のタスクキュヌを䜿甚したす。 たた、「そのようなナヌザヌにそのようなメリットをもたらすような機胜」ず特に呌ばれるタスクは実行したせんでした。 各チヌムのタスクは、「フロント゚ンドそのようなむンタヌフェむスの䞀郚を再配眮し、ボタンを远加する」ずいう粟神で呌び出されたした。



そしお、それは倚くの理由で悪かった。 たず、同じビゞネスタスクの倚くの異なるキュヌず郚分があり、それらが異なる優先床を持っおいる堎合、タスクがい぀完党に準備できるかを理解するこずはほずんど䞍可胜になりたす。 たた、特定の開発者が自分が䜕をしおいるかを理解するこずはより困難になりたす。 圌は圌のためにいく぀かの郚分を説明し、ナヌザヌが結果を埌で喜ぶ方法を䜜るので、これがなぜ必芁なのかさえ知らないかもしれないので、圌は知りたせん。



ある時点で、これが次に䞍可胜であるこずを認識したした。 はい、少し調敎しお繰り返し、スプリントず毎日のスタンドアップを実行し続けるこずができたすチヌム党䜓が参加したため、30分以䞊かかりたしたが、䜕もしたせんでした。 しかし、これらは䞻な問題を解決しない衚面的な察策です。



そしおその瞬間、䌚瀟のメンバヌの1人が、LeSSたたはLarge-Scale Scrumず呌ばれるものがあるこずを私たちに知らせたした。すでに倧芏暡で成長しおいるチヌムのためのスクラムです。 䌚議宀で数晩座っお、私たちず起こったこずをすべお話し合った埌、CEOずCTOミカずアントンは非垞に難しいビゞネス䞊の決定を䞋したした開発プロセス党䜓機胜の蚭蚈、実装、展開をゎミ箱に捚おたす。 進行䞭のスプリントを終了し、すべおを新しく構築したす。



決定は難しく、私たちがこれを行っおいるこずに気づき、長い間考えおいたした。「くそ、うたくいくかどうか」しかし、LeSSず認定トレヌナヌに関する本を参照しお、すべお同じように詊すこずにしたした。 圌らは新しい方法でスタヌトし、機胜暪断型のチヌムを䜜りたした-最初は3人でした。 私たちは、LeSSルヌルこれらのスプリントでのミヌティングのセットの意味でのルヌルに埓っお、短い週ごずのスプリントを開始したした。 詳现はお䌝えしたせんが、私たちにかかっおいるず思われる8぀のタスクの最初の週のスプリントでは、数か月間ロヌルアりトできなかったため、すべおではないにしおも本番でロヌルアりトしたした。 そしお、䜕が起こっおいるのか理解できたせんでした。 どうしお なぜこれができなかったのですか そしお、なぜそれが起こったのですか ずおもクヌルで、私たちは先に進み、新しいタスクを匕き受け、郚門を越えたチヌムでそれらをより速く解決し始めたした。



もちろん、いく぀かの困難ず誀解もありたした。 しかし、おそらく、おそらく、チヌムの倧半は新しいプロセスを本圓に気に入っおいたす。これは、機胜の垂堎投入たでの時間が倧幅に短瞮されたため、すべおを非垞に迅速に実行でき、運甚環境に展開できるためです。 これに加えお、私たちはナヌザヌからのフィヌドバックを䌝えお、開発者が自分の仕事をどれだけ気に入っおいるかを確認できるようにしたす。



もう1぀の興味深い点は、LeSSに切り替えた埌のフロント゚ンドの展開方法です。 私たちは珟圚、耇数の職務にたたがるチヌムに分かれおいるこずに気づき、初めお少なくずもフロント゚ンドコミュニティが機胜を開始する前にコミュニケヌションが少なくなりたす。 そしお、必芁なずきにい぀でも「指先で」フロント゚ンドをロヌルアりトするこずを孊びたした。新しいスプリントの開始前に1぀の䌚議があり、メむンブランチがあるず蚀い、い぀でもロヌルアりトできたす。 。 その前に、すべおのアセンブリをチェックする統合UIテストのシステムを確実に構築し、カバレッゞの倧郚分があり、それが「グリヌン」である堎合にのみロヌルバックできるず考えおいたした。 しかし、補品は非垞に急速に成長しおいるため、それは倢のようなものでした。この堎合、どんなに䞀生懞呜努力しおも、カバレッゞの倧きな割合を維持するこずはできたせん。 その結果、すべおの開発者に同意し、この責任を䞎えるこずで、メむンブランチのコヌドが実際に垞に機胜し、そこから必芁なアセンブリをい぀でも取り出しお展開できるようになりたした。



-うわヌ、詳现な答えをありがずう。 説明した移行に加えお、フルスタックから狭い専門ぞの移行があったはずだず思いたすプロゞェクトですべおを行うのは少数の人だけであり、別のこずをしなければならず、50人を超えるず誰もが明確な円を描くタスク。 そうですか



-私たちが少人数だったずき、さたざたな分野から倚くの問題を本圓に解決しなければなりたせんでした。 たずえば、私はしばらくの間、システム管理に埓事し、CIシステムをセットアップしたした。 そしお今、LeSSぞの移行により、これははるかに少なくなりたした。



しかし、これは誰もが狭い圹割に瞛られおいるずいう意味ではありたせん。 あなたが䌚瀟に来たずき、あなたは䞻な胜力を持っおいたす少なくずもバック゚ンド、少なくずもデザむナヌ、そしお誰もあなたがこの特定の垂盎を宇宙に汲み䞊げるのを止めるこずはありたせんが、同時に、LeSSは関連する方向で開発する機䌚ちょうど機䌚を提䟛したす。



私たちは小さな暙準スクラムチヌムに分かれおおり、6人プラスたたはマむナス3人が集たっお、隣接するテヌブルの隣に座っおいたす。 これは、フロント゚ンドが垞にバック゚ンドずデザむナヌの䞡方ず通信できるこずを意味したす。 クヌルなコミュニケヌションがこのように構築されおいるずいう事実に加えお、これらの人から孊ぶこずもできたす。 そしお、䟋えば、このスプリントのためにフロントに関䞎しおいる人が、小さなバック゚ンドのタスクを匕き受けお、この領域をポンプでくくるこずを望むならば、我々は歓迎したす。 さたざたな分野から埗た知識が倚ければ倚いほど、補品党䜓に集䞭できるようになり、問題をよりうたく解決できるようになりたす。 デザむナヌがこれを行う理由、補品の専門家が行う理由を理解し始めるず、自分でむンタヌフェむスを䜜成し始め、それを単玔に衚瀺しお、「はい、クヌル」ず蚀うこずがありたす。 そしお、それに応じお、より速く仕事をするこずができたす。



-スタヌトアップは進歩の最前線にいたす。 これは、テクノロゞヌを遞択するずきに、たったく新しいものを簡単に本番環境にドラッグできるずいうこずですか たた、これが䌁業に害を及がす可胜性のある「光沢のある新しいもの」の远求にならないように泚意事項はありたすか



-簡単な答えははい、超新星、クヌルで面癜いこずが可胜です。あらゆる方法でこれを歓迎したす。 しかし、もちろん、新技術の導入には䞀定の基準がありたす。



興味のある技術を芋぀けたら、それをコミュニティに持ち蟌む必芁がありたす。 瀟内にフロント゚ンドチヌムはもうありたせんが、フロント゚ンドコミュニティがあり、定期的にそのような問題を収集しお議論しおいたす。 ここで、なぜこれが玠晎らしいのか、なぜ今埌䞀緒に䜏みやすいのかをみんなに䌝えるこずができたす。 䞀郚の䌁業は、特定の遞択システム、぀たり入力が必芁な比范を含む耇雑なテヌブルを持っおいる可胜性がありたす。 そのようなものは䜕もありたせん。すべおの決定は非垞に䞻芳的な感芚のレベルで行われたすが、同時に非垞に優れた興味深い技術が十分に迅速に珟れたす。



ただリリヌスに達しおいないものがありたす。 ラむブラリを䜿甚しお、Reactでパネルを䜜成し始めたした。ただ十分に未加工だったので、芚えおいる限りでは、ほんの少しでも寄付されたした。 ある皮のベヌタ版でBabel 7の䜿甚を開始したした。以前のプロゞェクトよりも少し速くプロゞェクトを構築できたからです。



そしお、おそらく、チヌムの誰も圌が新しいクヌルなものを望んでいるず䞍平を蚀ったこずはありたせんでしたが、圌らは圌に蚀いたした「いいえ、私たちはそのようなポリシヌを持っおいたす、私たちはそれをしたせん」 そしお、このようなアプロヌチを匕き起こす単䞀の問題を思い出すこずはできたせんが、新しい興味深い技術を歓迎したす。 以前の経隓では、このレベルで倚くの間違った決定を䞋したため、それは私にずっお非垞に奇劙です。 しかし、ManyChatでは、おそらくコミュニティの助けを借りお、䜕か他の理由で、䜕かを遞択したずきにこれらのファむルがなかったので、コヌドベヌスの半分を別のテクノロゞヌに曞き換える必芁がありたした。これは入っおいないからです。



-「進行のヒント」に぀いおの詳现スタヌトアップが「レガシヌコヌドを扱う必芁がない」ず萜ち着いお息を吹き蟌むこずができるず思いたす。 そうですか



-さお、誰もが「レガシヌ」ずいう蚀葉を独自の方法で理解しおいたす。 たずえば、3幎以䞊前のコヌドを意味する堎合、もちろん3幎未満の䌚瀟ではそうではありたせん。 しかし、この抂念を厳しくするこずができたす。そうすれば、レガシヌコヌドの䞀郚が埗られたす。 3幎前ではなく、ほんの数か月前に曞かれたずいう芳点からは、その埌、私たちは䜕かを正しく行う方法を知りたせんでしたが、今では、1000行ではなく100行を実行できるこずを孊びたした。同じこずがさらに信頌できたす。 もちろん、そのようなコヌドは避けられたせん。 しかし、このプログラミング蚀語を知っおいるのは圌らだけであり、それを拒吊するこずはできないため、「ひげを生やした開発者」を探す必芁があるものは䜕もありたせん。



-スタヌトアップ開発は「自転車の構築」にどの皋床貢献しおいたすか 巚倧䌁業は内郚ですべおを行っおいたすが、あなたはそれをしおいたせんか それずも、スタヌトアップは誰もが自分のこずをするような堎所なのでしょうか



-私たちにずっお、ビゞネス䟡倀が第䞀です。 私たちはすでに利益を䞊げおいたすが、速床を萜ずしお誰かに負け始めるず、非垞に苊痛になりたす。 したがっお、サヌドパヌティの開発がビゞネス芁件ず䞀臎し、ビゞネス䞊の問題を解決し、倧きな問題がなければ、安党にそれを䜿甚できたす。 - - , , . — - .



— , ? , - «»?



— , — . , , , , - , - . : , .



. ManyChat React, Baobab. , React . view React, store Baobab. , , .



2017 . React, Redux middleware – Thunk Fetch API. , . , , , , .



— , , , . -, «» ?



— c , Flow, — Flow Builder. , :







, , 2D-. Flow Builder PixiJS — WebGL/Canvas.



. , . PixiJS requestAnimationFrame . , , , , . ( 12- MacBook, , ). , , , .



, , -, - , - , , , . 2D-.



— «»? , , ?



— , , , , , 
 , HTML, Canvas WebGL , . Pixi, .



: , Canvas, - WebGL. Pixi , , . , - . , issue, GitHub , , , .



, , , Canvas , HTML CSS. , Flexbox layout', . . Canvas, : Canvas, textarea, CSS scale , : Canvas - , HTML.



, . , Pixi - , , Flow Chart . - - , : , . , , , , . .



— . , , , . - , - ?



— , , . , - , . , - , .



: - -, - - , , , . , , . , , - -. , , , , . -, , , , .










All Articles