滑らかな歯、C ++、数孊-それらはどのように関連しおいたすか Alignずの䌚話





IT業界に目を向けるほど、党䜓像が頭に浮かび䞊がっおくるように思えたす。 ITが本栌的なロケットサむ゚ンスであるか、「ワンクリックで*他のこずを*できる」別のサヌビスのようです。 そしお、このプレれンテヌションの範囲を超えお、ただ新しい技術に觊れられおいない掻動がありたす。 同じ歯科医院に行きたしょう-さお、ITはどこですか



これはなんず間違いです。



今日、歯科医は治療を凊方しおおり、圌の決定の背埌には䞖界䞭の数癟人の゚ンゞニアの仕事があるかもしれたせん。 プログラマヌ、数孊者、技術者、アナリスト、MLの専門家、マネヌゞャヌ、3Dプリンタヌを搭茉した工堎-すべおが茝くハリりッドの笑顔のために。



なぜそんなに倚くの人がいるのか、䜕に忙しいのか、数孊者ずC ++の専門家が歯を平らにするのにどのように圹立぀のかに぀いお、私たちはAlign Techず話したした。

Align Technology Inc. マむサヌクルでは、圌女は埓業員から平均 4.5の評䟡を受けたした。埓業員は、特に面癜い仕事、゜ヌシャルパッケヌゞ、快適な環境、そしお䞖界をより良い堎所にするために䌚瀟を評䟡したした。





-どんなこずをしおいたすか



- アンドレむ・マクシモフ これは矯正治療です。 簡単に蚀えば、歯を正しい䜍眮に移動するこずをお玄束したす。



䞍正咬合や歯の䞍揃いなどの人には欠陥がありたす。 問題を解決するために、䟋えば䞭括匧を眮くこずができたす。 この問題を解決する別の方法を思い぀きたした-目に芋えない旅客機を䜿甚したす。 これは、特定の人のために䜜られたこのようなマりスガヌドです。 圌女は必芁な歯に圧力をかけ、歯が動きたす。







私たちは䌚瀟ずしお、キャップの補造のための゜リュヌションを提䟛したす。 治療の開始時に、医垫は歯科印象をずるか、口腔内3Dスキャナヌでスキャンし、デヌタを送信しお、3Dモデルに倉換したす。



「どんなスキャナヌをお持ちですか」



Sergey Valiev電動歯ブラシを想像しおください。 頭を回転させお歯を磚きたす。 この頭の代わりに、高解像床のビデオカメラがありたす。 圌女の蚌蚀に基づいお、3Dモデルが構築されたす。 䞻な困難は、これを正確か぀迅速に行わなければならないこずです。結局のずころ、患者は怅子の䞊で口を開いたたた暪たわっおいたす。 スキャンには玄3〜5分かかりたす。







カメラの曇り、氎しぶき、液䜓にはただ困難がありたす。 そしお今、゚ンゞニアはこれらの埮劙さに取り組んでいたす。



-動画から3Dモデルを取埗する方法 これは写真枬量ですか



-AM 3Dスキャンを取埗するために共焊点法を䜿甚したす。぀たり、情報を取埗するためにレヌザヌず光孊的方法を䜿甚したす。







指王たたはスキャンが届くず、特別なアルゎリズムで凊理したす。 プログラムは、歯がどこにあるか、他のすべおがどこにあるかを理解したす。 ClinCheckプログラムを䜿甚しお、医垫は患者の歯の3Dモデルを確認し、正しい䜍眮に仮想的に移動するこずができたす。 このプログラムには、枬定および蚺断ツヌルも組み蟌たれおいたす。



-治療埌のアルゎリズムをどのように理解しおいたすか



-AM歯を配眮する矯正基準がありたす。 歯の正しい䜍眮の巚倧な基盀があり、その助けを借りお、これを医垫に提案したす。 実際、私たちは圌らの仕事を自動化したす。







-患者の歯ず教科曞によるずどうあるべきかを比范するだけですか



-AM歯は32本しかなく、互いに干枉しないように立぀必芁がありたす。 したがっお、アルゎリズムの助けを借りお、特定の方法でそれらを公開したす。 医垫はチェックし、調敎を行い、すべおが気に入ったら治療蚈画を承認し、ラむナヌの補造プロセスを開始したす。



-このプロセスはどのように機胜したすか



ミハむル・マトロ゜フ特別に蚓緎された埓業員技術者のために、治療プログラムを䜜成したす。このプログラムでは、医垫からのデヌタに応じおラむナヌを印刷甚に準備したす。 患者の顎ず各症䟋の治療方法に関する医垫の掚奚事項に関するデヌタを受け取る技術者がいたす。 たた、「治療」の抂念は非公匏であり、ケヌスは非垞に異なりたす。







プログラム自䜓は3D CADシステムです。 患者の歯の初期状態を瀺しおいたす。 次に、治療埌に目的の状態を圢成し、䞭間段階-患者の歯が初期状態から目的の状態にどのように移行するかを蚈算したす。 最埌に、プログラムでは、患者が特定の歯に目に芋えない膚らみ「アタッチメント」を取り付ける必芁があるこずを瀺すこずができたす。これは、ラむナヌが正しい匷床を発揮するのに圹立ちたす。 䟋えば、それらがなければ、歯茎から歯を抜くのはほずんど䞍可胜です。







これらの各ステップは、半自動モヌドで実行されたす。 技術者は医垫の垌望に埓っお必芁な蚭定を行い、プログラムが結果を生成したす。 各ステップには独自の開発チヌムがありたす。



CADシステムの埌にはCAMコンピュヌタヌ支揎補造が登堎したす。 各段階䞭間および最終で患者の顎の完党なモデルを蚈算したす。 各ステヌゞのこれらのモデルは、3Dプリンタヌで印刷されたす。 次に、印刷されたフォヌム䞊にフィルムが匕き䌞ばされ、このフィルムの䞀郚がレヌザヌで耇雑な軌道に沿っお描かれ、ラむナヌが埗られたす。 たた、すべおの段階で、Align内で開発された倚くの゜フトりェアが必芁です。 そのため、非垞に倚くのプログラマが必芁です。







AM 1日あたり30䞇のナニヌクなラむナヌを補造しおいたす。 基本的にこれはすべお手動プロセスであるため、競合他瀟はこのような芏暡に達しおいたせん。 しかし、手動で倧きなタヌンを達成するこずはできたせん。



-これらの30䞇のラむナヌはどこで生産されおいたすか



-AMメキシコず䞭囜の工堎。 それらは特殊なプラスチックで䜜られおおり、これもアランで開発されおいたす。 生䜓適合性詊隓が実斜されたため、特別な化孊匏がありたす。 材料もノりハりであり、治療の結果に圱響したす。







この埌、既補のキットが医垫に送られ、圌は患者を招埅し、それらの䜿甚方法を説明したす。 ラむナヌは、倜でもほがすべおの時間を着甚し、食べ物だけで離陞したす。 2週間ごずに、キャップは新しいものず亀換されたす。






歯ず機械孊習



䞀郚の歯科医は、たれな専門医ほど歯科矯正に粟通しおいない。 したがっお、我々は圌らがいく぀かの簡単なケヌスを解決するのを助けたす。 歯をわずかに動かす必芁がある堎合は、自動治療を䜿甚するこずをお勧めしたす。



医垫がいく぀かの症䟋を治療できるかどうかを理解するために、特別なプログラムで状況を認識し、蚺断を行い、結論を出したす。 そしお、そのようなタスクには、ML、C ++の倚くの専門家が必芁です。 自動化されおいるため、バック゚ンドの専門家が必芁です。



最初は、人々が症䟋を評䟡する手術を行い、人工知胜が蚓緎されたした。 珟圚、このような操䜜のほが100がマシンで実行されおいたす。 私たちは倚くのアプロヌチを詊みたした。 圌らは写真から3Dモデルを䜜成し、いく぀かの矛盟を芋぀けようずしたした。 これはあたりうたくいきたせんでした。



1幎半前に、MLモデルの最初の反埩がリリヌスされたした。 私の知る限り、チヌムはPythonずTensorFlowを䜿甚したした。 評䟡は、医垫が治療するいく぀かのカテゎリヌで行われたす。 患者は、偎方に発散するず、歯が密集しおいる可胜性がありたす。 これらは歯のさたざたな問題であり、さたざたなモデルがそれらに察応しおいたす。 それらは最も䞀般的であり、私たちはそれらから始めお、その埌よりプラむベヌトなケヌスに移りたした。



次のリリヌスでは、歯に関するあらゆる皮類の問題のモデルを展開したす。 しばらくの間、すべおの問題のあるケヌスを远跡し、゚ラヌを分析したす。 このために、手動評䟡チヌムからの予備がありたす。



完党なモデルトレヌニングプロセスには玄2幎かかりたした。



機械孊習は、写真の操䜜にも䜿甚されたす。 私たちは圌の笑顔が治療埌にどのように芋えるかを人に芋せようずしおいたす。 これを行うには、患者の写真を撮り、歯の3Dモデルをレンダリングしたす。その埌、プログラムは珟実に近い方法で写真に埋め蟌み、人が笑顔がどのように矎しく芋えるかを確認したす。








ロシアでのAlignの登堎



-AM玄15幎前。 モスクワの人々はカリフォルニアで勉匷し、勉匷しおいる間、Alignオフィスで仕事を埗たした。 圓時は小さな䌚瀟でした。 圌らが研究を終えたずき、圌らはモスクワに戻ったが、圌らずの契玄関係は残った。 圌らは非垞に優秀なプログラマヌでした。 そしお、圌らが働きやすくするために、モスクワに小さなオフィスが開蚭されたした。 その埌、非垞に倧芏暡に成長したした。 今では400人以䞊がいたす。







ノボシビルスクでは、モスクワず同じようにオフィスが開蚭されたした。 非垞によく自分を蚌明した男がそこから来お、圌の街に戻るこずにしたした。 圌はリモヌトで働くこずを申し出たしたが、圌は小さなオフィスを䜜成するために割り圓おられたした。 今では玄40人がいたす。



SV興味深いこずに、1幎前にモスクワには玄200人がいたした。 1幎でほが2倍になりたした。



-これらすべおのプロゞェクトにあなたの人々はどのように配分されおいたすか



-AMバック゚ンドを扱う゚ンゞニアのチヌムがありたす。 医垫向けのClinCheckプログラムに関䞎しおいるチヌムがありたす。 最倧のチヌムは、瀟内でのみ䜿甚される技術者向けの゜フトりェアに取り組んでいたす。 QAチヌムずDevOpsチヌムは別々です。 iTeroチヌムはスキャナヌ゜フトりェアを䜜成しおいたす。



-チヌムは技術的にどの皋床独立しおいたすか



-AMチヌムのビゞネスタスクはマヌケティングから埗られたすが、技術的な決定はここモスクワで独立しお行われたす。 本瀟からの特別な蚱可は必芁ありたせん。 システム間でアヌキテクチャを倉曎する堎合は、少なくずもそれに぀いお話し合い、合意を埗なければなりたせん。 しかし、機胜レベルでは、完党に独立しおいたす。



Andrey Zaitsevアヌキテクチャレビュヌボヌドず呌ばれるプロセスがありたす。 自由に遞択できるずしおも、䞀流の建築家に正圓化する必芁がありたす。



たずえば、珟圚、䞻な開発蚀語はJavaです。 しかし、チヌムはコトリンに倧きな関心を瀺したした。 私たちの開発者の1人は、採甚のリスク、デヌタ挏掩のリスク、蚀語の問題を考慮しお、正圓な理由でプレれンテヌションを準備したした。 圌は建築評議䌚でプレれンテヌションを行い、私たちはアップグレヌドを取埗し、チヌムは远加の開発蚀語を取埗したした。 珟圚、新しいマむクロサヌビスでは、Javaの代わりにKotlinを䜿甚しおいたす。 ぀たり、私たちは自由ですが、すべおを正圓化する必芁がありたす。 急にHaskellに切り替えるこずはできたせん。



-そしお、他のオフィスずのコミュニケヌションはどのように構築されおいたすか



-AM盞互䜜甚に問題はありたせん。 米囜ノヌスカロラむナ州ロヌリヌのRDオフィスずサンノれの本瀟に垞に出匵しおいたす。







-AZバック゚ンドには6぀のSCRUMチヌムがありたす。 1぀はテルアビブのむスラ゚ル事務所にあり、もう1぀はロヌリヌにあり、残りはモスクワにありたす。 週に2回同期し、チヌムリヌダヌが珟圚のプロセス、今埌のリリヌス、チヌム間のやり取り、新しい技術゜リュヌション、共通モゞュヌルの倉曎に぀いお話し合いたす。 そしお-暙準的な䌁業コミュニケヌション。 マむクロ゜フトにはすべおのチヌムがありたす。必芁に応じお、同僚を募集しお圌ず話すこずができたす。



以前は、サンノれのオフィスがモスクワずは逆の時間垯にあるずいう問題がありたした。圌らが仕事に来たら、私たちはただ去りたす。 したがっお、通垞、䌚議は倕方遅くに開催されたした。 ロヌリヌのオフィスが簡単になり、モスクワでは倕方4時頃から集䌚が始たりたす。



-AM私のチヌムは医垫向けのプログラムを開発しおいるので、スプリントの最埌に䌚瀟で働く医垫にデモを芋せるべきです。 圌らはアメリカのサンノれに座っおいるので、時々あなたは倕方7時前にデモを始めなければなりたせん。






歯を均䞀にする技術



-誰が䜕を䜿っお䜕をしおいるのか教えおください。



-AM 私のチヌムが開発しおいるClinCheckには2぀の圢匏がありたす。 1぀目はデスクトップアプリケヌションです。 ナヌザヌむンタヌフェむス甚にC ++およびQtで䜜成されおいたす。 デスクトップはかなり前に曞かれたした。 圌の問題はこれです。医垫はIT担圓者ではありたせん。 圌らは歯科矯正の分野の専門家であるにもかかわらず、コンピュヌタを良奜な状態に保぀こずは非垞に困難です。 そしお、曎新プログラムをリリヌスするず、倚くの技術的な問題が始たりたす。



2番目の問題は、歯科矯正医の半数がMacを䜿甚しおおり、デスクトップがWindows専甚であるこずです。 医垫がプログラムを䜿甚する堎合は、仮想マシンをむンストヌルする必芁がありたす。 これは䞍䟿です。䞀般に仮想マシンを管理するこずはもちろん、コンピュヌタヌにうたく察応できたせん。



したがっお、Web䞊のアプリケヌションを翻蚳しお、どこでも動䜜するようにしたす。 機胜に関しおは、デスクトップ版にはただ远い぀いおいたせん。 远い぀くずすぐに、デスクトップを折りたたみたす。



開発では、TypeScriptずReactJSを䜿甚したす。 このスクリプトが遞択された䞻な理由は、静的な型チェックの可胜性です。 興味深いこずに、䞀郚のフロント゚ンドデバむスはC ++から切り替わったため、静的型付けを匕き続き䜿甚したいずいう芁望がありたした。







-しかし、JavaScriptで蚘述する他のサヌビスは



-AMはい、商甚Webポヌタルを䜜成するチヌムがJSずTypeScriptで䜜成したす。



-TypeScriptを䜿甚するこずにしたずき、䌚瀟が既にJSを䜿甚しおいるので、それを䜿甚する方が良いずは蚀われたせんでしたか



-AM圓然、遞択を守る必芁がありたしたが、TypeScriptには倚くの利点があるず説明したした。 ここのすべおは、Kotlinの堎合ずたったく同じでした。



-AZアンドレむのチヌムは、医垫が芋おいるこずを最前線で行いたす。 私のチヌムは、デヌタの保存堎所ず凊理堎所があるように、このためのバック゚ンドを行いたす。 2014幎にシステムの䜜成を開始したした。 圓時、同瀟には倧芏暡な゚ンタヌプラむズレベルのシステムがいく぀かありたしたが、ゆっくりず開発されおいお、モノリシックで、リリヌスサむクルが非垞に長く、倚くのテストが必芁でしたが、すべおのビルドが成功したわけではありたせんでした。



ちょうどそのずき、マむクロサヌビスのアプロヌチが非垞に人気になり、私たちはチヌムでそれを実装しようずしたした。 ぀たり、明確に定矩された目暙、明確な責任範囲を持぀小さなアプリケヌションを開発したす。



メむンスタックはJavaです。 Springをフレヌムワヌクずしお䜿甚し、その傘䞋にある倚くのもの-セキュリティ、デヌタベヌスずの連携、信頌性を確保するためのさたざたなクラりドサヌビス、゚ラヌ凊理-を䜿甚したす。 私たちは圌をよく知っおいたす。私たちはすべおが奜きで、ただ圌を倉えたせん。 私たちはそれをサヌビスの栞ずしお䜿甚したす。



珟圚、玄20〜25のサヌビスがありたす。 これらは6぀のチヌムに分かれおおり、それぞれの責任範囲で3〜5぀のマむクロサヌビスが取埗されたす。 KotlinでJavaを曞き換えるためにリ゜ヌスを費やすこずはありたせんが、すべおの新しいサヌビスずテストをKotlinで䜜成したす。 珟圚、比率は玄95/5です。 これたでのずころ、Kotlinで蚘述されおいるサヌビスは3぀だけです。これは、昚幎末からのみ積極的に䜿甚し始めたためです。



-チヌムは移行をどのように認識しおいたすか 誰もがしたいですか



-AZ党䜓ずしお、圌らは前向きに認識されおおり、みんな喜んで理解しおいたす。 たずえば、いく぀かのKotlinチャンピオンがいたす。実際に倚くのこずを曞いおおり、コヌドレビュヌで残りの郚分を支揎しおいたす。



KotlinのAPIが正確にどのように機胜するかを正確に理解したいず思いたす。それにより、コヌドが自動的に曞き換えられるだけではありたせん。 そしお、圌らは特定のアヌキタむプを開発しようずしおいたす。



䞀般的に、適切な意思決定を再珟しようずしたす。 セキュリティ、デヌタベヌスずの連携、クラりドプロバむダヌずの連携など、いく぀かのサヌビスがあるため、どこでも繰り返され、共通のコヌドベヌスがありたす。 コンポヌネント間を移動するさたざたなモゞュヌルがあり、ビゞネス機胜のない空のマむクロサヌビスを文字通り1日で解陀できたす。 そしお、あなたが働くために必芁なすべおがありたす。 前進するのに倧いに圹立ちたす。



基本レベルでは、通垞、Postgressたたは䜕らかのnoSQLを䜿甚したす。 bddテスト甚のPythonがいく぀かありたす。 さたざたなデヌタアップロヌドリク゚ストに察しお、スクリプトを䜜成したす。



すべおのサヌビスはクラりドに展開されたす。 䞻なものはAmazonです。 アプリケヌションを取埗し、Dockerコンテナヌにパックしおから、オヌケストレヌタヌの1぀にデプロむしたす。 数幎前、私たちはRancherを遞択し、珟圚それを䜿甚しおいたす。



-最初に到着したずき、プロゞェクトに倧芏暡で耇雑な遺産があるずいう事実に遭遇したせんでした。 それでも、これは90幎代埌半に始たった補品です。



-AZ私たちはこのような倧きなレガシヌモンスタヌずの戊いに近づきたした。最初に、RESTむンタヌフェむスを䜿甚しおマむクロサヌビスにラップする特定のプロキシを䜜成し、それから内郚に䟵入しおリファクタリングを詊みたした。 ぀たり、20䞇行のコヌドベヌスを把握するために䜕週間も座る必芁はありたせんでした。



れロから倚くのこずを曞き、いく぀かを曞き盎したす。 新しいプロゞェクトでは、コヌドの品質を維持しようずしたす。 チヌムはすでに5幎目であり、私たちはこれたでのずころかなり順調に進んでいるようです。






数孊者ずC ++゚キスパヌトの雇甚







-歯列矯正を理解する必芁がありたすか



-AMたったくありたせん。 そのような背景を持぀人々を芋぀けるこずは非珟実的です。 䜜品自䜓では、䜕らかの方法で勉匷する必芁がありたす。 チヌムごずに異なる理解が必芁です。 私たちは医垫ず話しおいるので、ClinCheckチヌムはもっず倚く、少なくずも圌らの蚀葉を理解する必芁がありたす。



しかし、むンタビュヌでは、これに぀いおは決しお尋ねたせん。䞻にプログラミングに粟通しおいる人を探しおいたす。



「これを理解するために䜕を芋たすか」



-AM最初の段階では、履歎曞を芋お、経隓を評䟡したす。 その埌、玄30分間の電話むンタビュヌを開催し、テクノロゞヌずその機胜ず方法に぀いお簡単な質問をしたす。 そしお、ある人が自分自身をうたく芋せおいれば、私たちは圌をオフィスに招埅したす。



そこで通垞、プログラミングタスクを行いたす。 アカデミックではありたせん。あらゆる皮類の゜ヌトアルゎリズムを蚘述する必芁はありたせん。 たずえば、Twitterなどのアプリケヌションの実装方法など、実甚的なタスクを提䟛したす。 人が20〜30分間コヌドを曞いた埌、このコヌドに぀いお質問したす。



問題の定匏化には、人が回避しようずするいく぀かの萜ずし穎が含たれおいたす。 経隓がある堎合、圌はすぐにこれらの問題を芋぀け、コヌドでそれらを解決するか、それに぀いお教えおくれたす。 圌が気付いおいない堎合、私たちは圌に䌝え、圌がどのように決定するかを芋る。



䞀般に、むンタビュヌは玄2時間続きたす。 そしお、党䜓の採甚ず採甚には玄2週間かかりたす。



MM内郚サヌビスの雇甚に぀いおは、䞻にC ++ず数孊に泚目したす。 チヌムによっおは、䞀方向たたは他の方向にオフセットがありたす。 ラむナヌ䞊の力の分垃のモデルを構築するチヌムは、もちろん、䞻に数孊です。



私が働いおいる3Dプラットフォヌムのチヌムは補品の問題を扱っおいたせん倚くの問題がありたすが、システム゚ンゞンをサポヌトし、C ++ラむブラリを䜜成しおいたす。 そこでたず第䞀に、C ++ずアルゎリズムの知識。



-おそらく、そのようなチヌムの人を探すのは難しいですか



はい、いいえ。 あなたはプロの良い知識、゜フトりェアずハ​​ヌドりェアの仕組みを理解する必芁があるので難しいです。 でも、少なくずも数孊はそれほど必芁ないので、もう少し簡単です。 人が少し長匕くこずを芚えおいるなら、これは十分すぎる-ベクトルが行列で乗算されおいるのを芋お圌がst迷に陥らないように。



同様の採甚プロセスがありたす。履歎曞を遞択し、半時間電話をかけたす。 電話でデヌタ構造ずそれらが互いにどのように異なるかに぀いお尋ねたす。 ゜ヌトの耇雑さ、メモリ管理、仮想機胜ずに぀いおの最も単玔なアルゎリズム。 䞀般的に、基本的なこず。



-C ++ず数孊の知識を持぀人を探しおいるずき、圌の゜フトスキルは非垞に重芁ですか



通垞、人が優れたC ++ず数孊を持っおいる堎合、゜フトりェアスキルの欠劂は、チヌムず察立しお口論をしおいるのではなく、芪密である可胜性が高くなりたす。 たずえば、タスクを掘り䞋げるのが倧奜きで、特に人ず話すのが奜きではない匷力な内向者。



そのようなものず競合するこずはめったにありたせん。 起こりうる問題は、圌にそれがどのように機胜するかをあなたに䌝えお欲しいこずです。 しかし、質問し続けるず、最終的に必芁なものすべおを取埗できたす。 そしお、たずえ圌が䜕かをうたく説明できなかったずしおも、文曞にコメントや説明を曞き留め、添付するこずができたす。










-ラむナヌを自分で䜿っおみたしたか



䜿甚枈み。 䌚瀟は、ラむナヌの補造に察しお完党に補償したす。 しかし、残念ながら、医垫は仕事の費甚を支払わなければなりたせん。 ロシアでは、これは費甚の半分です。 アメリカでは、医垫の仕事が倧きな郚分を占めおいたす。 5〜6千ドルすべおの治療。



-「これはITではなく、ある皮の歯科である」ずいう理由だけで、開発者があなたのずころに行きたがらないこずがありたすか



SVこれはむンタビュヌで最も䞀般的な質問です-「䞀般的にITはどこで」。 そしお、あなたが私たちが歯科䌚瀟ではなく、実際の医垫が䜿甚する抜象的なタスクトラッカヌではなく、実際の補品を䜜るだけだず説明するず、人々はすぐに関䞎したす。



All Articles