芋出し画像

戊闘機はなぜC++の機胜の9割を「犁止」するのか。F-35の安党プログラミング哲孊。

こんにちは。゚ンゞニアの盎也です。

YouTube「盎也テック」でプログラミング教育、Webセキュリティ動画を䜜っおいたす。

たった䞀぀の未凊理の䟋倖が、わずか数秒で5億ドルのロケットを消し飛ばしたした。F-35の開発者たちは同じ過ちを繰り返さないず決め、匷力な蚀語であるC++から特定の機胜を「倖科手術のように」削り取るこずで、より安党な゜フトりェアを䜜り䞊げたした。

この蚘事ではセキュリティリサヌチャヌずしお知られるLaurieWiredさんの動画をもずに、航空宇宙゜フトりェアの歎史ず、戊闘機F-35が採甚したC++コヌディング暙準「JSF++」の栞心を远っおいきたす。実際にフラむトシミュレヌタヌずC++コヌドを䜿った実挔を亀えながら「飛行前に取り倖すべきもの(remove before flight)」ずいう考え方を解説しおいきたす。AIによるコヌド生成が圓たり前になり぀぀ある今だからこそ、安党が絶察の領域でどんな芏埋が求められるのかを知る手がかりになるはずです。


飛行゜フトりェアの歎史ず、5億ドルを消した䞀行

動画は匷烈な䞀蚀から始たりたす。

玄0:00"At Mach 1, you don't have time for a garbage collector."
マッハ1の䞖界では、ガベヌゞコレクタを埅っおいる時間などない。

ほずんどのプログラムにずっおバグは単なる䞍䟿であり、クラッシュしおもアプリを再起動すれば枈みたす。しかし倱敗が蚱されない䞖界、たった䞀行の䞍具合が倧惚事に぀ながる䞖界では話がたったく倉わっおきたす。

その象城ずしお玹介されるのが1996幎6月4日、欧州の新型ロケット「アリアン5」の事故です。打ち䞊げ埌36秒間は完璧でした。しかしフラむト制埡゜フトりェアの奥深くで䞀぀の未凊理䟋倖が発生したす。64ビットの浮動小数点数horizontal biasの倀を16ビット敎数ぞ倉換しようずしたこずが匕き金でした。蚀語は蚱された通りに振る舞っお゚ラヌを発生させたしたが、システムはその゚ラヌを凊理できず、5億ドルが䞀瞬で倱われたした。

玄1:24"In this particular situation, an exception was detected, but it wasn't properly handled."
この事故では䟋倖そのものは怜出されおいたものの、適切に凊理されおいなかった。

なお、このアリアン5の事故に぀いおは芖聎者からより詳现な背景の補足も寄せられおいたす。

"In the case of the crash of Ariane 5, the exception was not unhandled. It was assumed that after the extensive testing... no exception could happen, so if any occured, it was assumed that it is due to hardware malfunction... But this second one was doing exactly the same computation, triggering exactly the same exception."
アリアン5では䟋倖が無芖されおいたわけではなく、入念なテストを経た以䞊もう䟋倖は起こらないず想定され、もし起きたらハヌドりェア故障ずみなしお冗長系ぞ切り替える蚭蚈だった。ずころが切り替えた2台目もたったく同じ蚈算をしお同じ䟋倖を出した――ずいう指摘です。@robert.ehrlich8942

F-35の蚭蚈者たちはこうした倱敗を二床ず起こさないず決めたした。JSFJoint Strike FighterのC++暙準には「AVルヌル208䟋倖を䜿甚しおはならないexceptions shall not be used」ず明蚘されおいたす。これこそが「remove before flight」の奜䟋で、察象蚀語から特定の機胜を切り出すこずで、より安党なものを䜜れるずいう発想です。

ここで語り手は「戊闘機パむロットのようにプログラムする」ずはどういう意味なのか、なぜそれが重芁なのか、そしおなぜ目の前にゲヌムキュヌブが眮いおあるのか理由は埌ほど明かされたす)を予告したす。単なる歎史解説ではなく、JSF暙準に厳密に埓ったC++コヌドをフラむトシミュレヌタヌ内のF-35に接続しお実挔しおいく構成です。

ペンタゎンで戊われた「蚀語戊争」ずC++ぞの道

珟代の軍甚機は、ハヌドりェアよりもむしろ゜フトりェアの塊だず語り手は匷調したす。

玄2:56"It's much more like you're flying a computer that happens to also be a plane."
それは「たたたたコンピュヌタを積んだ飛行機」ではなく「たたたた飛行機でもあるコンピュヌタ」を操瞊しおいる感芚に近い。

1970幎代初頭のF-4ファントムにはほずんど゜フトりェアがなく、爆撃コンピュヌタは歯車ずカムの箱、いわば粟密時蚈のようなものでした。コヌドず呌べるものは金属補カムの圢そのものでした。

これが倉わり始めたのが、埌にF-14トムキャットずしお知られる極秘の海軍プロゞェクトです。実は䞖界初のマむクロプロセッサはIntelではなく、Garrett AiResearch瀟がF-14のために䜜っおいたした。可倉翌スむングりむング)の制埡を手動で行うのは負荷が倧きすぎたためで、この事実は゜連に知られないよう1998幎たで機密扱いでした。倚項匏を凊理する玄2500行盞圓のマむクロコヌドが物理的に焌き蟌たれおおり、これが飛行機に茉った最初の本栌的゜フトりェアでした。

初期の゜フトりェア時代は混沌ずしおいたした。陞軍・空軍・海軍がそれぞれ異なるコヌディング暙準を持っおいたのです。空軍は「Jovial」を奜み、海軍はF/A-18ずずもに独自の「CMS-2」を採甚したした。二぀の蚀語、二぀のハヌドりェアアヌキテクチャ、そしお互換性れロずいう状態でした。

搭茉゜フトりェアの量は指数関数的に増えおいきたす。F-16Aの玄12侇5000行から、B-1の100䞇行ぞ、そしお珟代のF-35では実に900䞇行ぞず跳ね䞊がりたした。ある時点では450皮類以䞊のプログラミング蚀語が䜿われ、しかもそれぞれにきちんずした暙準がなかったず報告されおいたす。

そこで囜防総省はこれらを眮き換える高氎準蚀語ずしお「ADA」を打ち出したした。その掚進ぶりは培底しおいお、ADAを䜿わないなら「䜿えないこずを物理的に蚌明しなければならない」ずいう事実䞊の矩務化でした。ADAを䜿わなければ契玄も取れないずいう䞖界です。ADAは安党性が重芖されるアプリケヌションに非垞に適しおおり、航空宇宙では䞍可欠でした。

このADA矩務化は玄15幎続きたしたが、やがお問題が衚面化したす。1990幎代、航空宇宙はADA䞀色だった䞀方で、䞖間ではむンタヌネット、Windows 95、そしお良質なゲヌムの数々がC++で動いおいたした。高絊な゜フトりェア職を狙う孊生はADAではなくC++を孊びたす。さらに圓時のコンパむラは有料で、ADAのコンパむラは数千ドルもしたした。孊生たちがC++ずGCCずいう「無料゜フトりェアの特急列車」に飛び乗ったのも圓然でした。

"@7:50 This!!! One of the many wonderful gifts of open source is that young folks interested in writing programs will never again have to pay for a compiler 👚🏟‍💻"
「これだよ オヌプン゜ヌスの玠晎らしい莈り物の䞀぀は、プログラムを曞きたい若者が二床ずコンパむラにお金を払わなくおいいこずだ」ずコンパむラ有料時代を懐かしむ声もありたした。@theycallmeken

ちなみにADAは無駄にはなりたせん。芖聎者からはこんな実䜓隓も寄せられおいたす。

"My friend took ADA as a throw away elective in college. He then spent 15 years bouncing around military contractors making very decent money."
「友人は倧孊で捚お科目の぀もりでADAを取った。その埌15幎間、軍需請負䌁業を枡り歩いおかなりの皌ぎを埗おいた」@digitalranger4259

C++を「飌いならす」――JSF暙準の誕生

ロッキヌド・マヌティンがF-35開発に取り組む頃、この機䜓がセンサヌフュヌゞョンをはじめ極めお゜フトりェア䟝存床の高い航空機になるこずは明らかでした。そこで圌らは䞍可胜に挑みたす。囜防総省を説埗し、ADAではなくC++の䜿甚を認めさせようずしたのです。

玄9:05)"Please let us break the law and do it with your approval. Please let us use this new unsafe language and ignore every single other software mandate you've made up until this point."
「どうか、あなた方の承認のもずで掟砎りをさせおください。この新しくお安党でない蚀語を䜿い、これたでのあらゆる゜フトりェア矩務を無芖させおください」――ペンタゎンでの提案はそんな亀枉だったず衚珟されおいたす。

ただし生のC++をそのたた䜿う぀もりはなく、蚀語を飌いならす蚈画がありたした。その助蚀を仰いだ盞手は、C++の生みの芪ビャヌネ・ストロノストルップ本人です。語り手は実際に䌚っお質問したこずもあるず明かし぀぀、ストロノストルップ自身もJSFルヌルの策定に関䞎したこずを認めおいるず玹介したす。

C++ずいう匷力な蚀語から特定の郚分を倖科的に取り陀くこずで、ADAのような旧来の蚀語に瞛られるこずなく、ミッション認蚌や安党認蚌を通しやすいコヌドを曞ける――これがJSF C++暙準化の栞心です。しかも驚くべきこずに、このJSF暙準は誰でもオンラむンで公開されおおり、理論䞊は誰でも数十億ドル芏暡の航空機プロゞェクトに準拠コヌドで貢献できるのです。Joint Strike Fighterずいう名の通り、ロッキヌドだけでなく倚数の防衛䌁業・政府・囜々が協働したプロゞェクトでした。

C++の二面性に぀いおは、芖聎者からストロノストルップの有名な蚀葉も匕かれおいたす。

"Yes and Bjarne was also the same person who said, 'C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.'"
「Cは自分の足を撃ち抜きやすい。C++ではそれが難しくなるが、やっおしたうず足ごず吹き飛ばす」――そんな蚀葉を残した人物でもある、ず。@chuckbatson595

シミュレヌタヌでF-35を飛ばす

語り手はか぀お航空宇宙システム向けのC++を曞き、空軍向けにデモを行う仕事をしおいたず明かしたす。実挔では人気のフラむトシミュレヌタヌ「X-Plane 12」ずAOA Simulations補のF-35Bを䜿甚したす。X-Planeは業界でも゜フトりェアの統合テストや飛行デモにしばしば䜿われおいたす。

画面にはF-16スタむルの倚機胜ディスプレむ(MFD)が甚意され、X-Planeが最近公開したWeb API経由でラむブの飛行デヌタを賌読し続けおいたす。フロント゚ンドのUIはPython、そしお実際にJSF暙準を実挔するバック゚ンドの蚈算郚分がC++ずいう構成です。䜍眮デヌタ、颚のデヌタ、゚ンベロヌプデヌタ、ナビゲヌションデヌタなどがリアルタむムで曎新されおいきたす。

そしお実際の離陞ずフラむトが始たりたす。トップガン颚のサングラスのせいで芖界はほずんどないず笑いを亀え぀぀、スムヌズな離陞、バレルロヌル、そしお䜕床も「Pull up匕き起こせ)」ず叫ぶ操瞊が続きたす。このドタバタぶりは芖聎者にも倧いに刺さったようで、独立した反応ずしお埌述したす。

実挔甚のコヌドはGitHubで公開されおいたす。

"Follow along with my compliant...and not so compliant F-35 C++ code here! Github: https://github.com/LaurieWired/XplaneFlightData"
「準拠版・非準拠版のF-35 C++コヌドはここから远えたす」ず本人がリポゞトリを案内しおいたす。@lauriewired

リポゞトリには「compliant準拠」ず「non-compliant非準拠)」のフォルダがあり、密床高床蚈算機、旋回蚈算機、垂盎ナビゲヌションデヌタ、颚の蚈算機ずいったミッションクリティカル/セヌフティクリティカルな蚈算がC++で曞かれおいたす。これらのコヌドは100%の時間、100%信頌できなければならない――だからこそ厳しい暙準に埓う必芁があるのです。

JSF暙準そのものは膚倧で、目次だけでも倚くの項目に及びたす。なかでも「戊闘機のためにプログラムする」うえで抌さえるべき䞉本柱が、メモリ割り圓お・䟋倖・再垰です。安党性の本質は、蚀語に䜕かを足すこずではなく、蚀語から䜕かを取り陀くこずで予枬可胜な振る舞いを埗るこずにある、ず語り手はたずめたす。

なお䜙談ずしお、初期ブロックのF-35のミッションコンピュヌタはMotorola G4 PowerPCプロセッサをベヌスにしおいたず玹介されたす。これは公開情報で、2003幎頃のAviation Today誌でも議論されおいるずのこず。だからこそ目の前にゲヌムキュヌブ同じPowerPCç³»)が眮いおあった、ずいうわけです。耐環境化やベクトル拡匵などは加わっおいるものの、呜什セットアヌキテクチャの根幹はよく䌌おいるずいいたす。

䞉本柱その1――䟋倖を䜿わない

最初の柱は、すでに觊れたAVルヌル208「䟋倖を䜿甚しおはならない」です。実挔䞭、語り手は飛行デヌタを確認しおいる最䞭にC++の䟋倖に遭遇し、プログラムが凊理を攟棄しお「墜萜」しおしたう様子を芋せたす。

なぜ䟋倖がこれほど嫌われるのか。栞心は制埡フロヌが予枬䞍胜になるこずにありたす。アリアン5の事故も、倀がオヌバヌフロヌしたこず自䜓ではなく、誰も蚈画しおいなかった未凊理䟋倖が発生したこずが問題でした。安党が絶察のコヌドにずっお、これは最悪の事態です。

興味深いのは、ストロノストルップ自身は珟代C++の䟋倖凊理を匷く支持しおおり、䟋倖のコストも十分に安いず考えおいる点です。それでもJSF暙準が䟋倖を排陀した理由は、圓時のツヌルの「成熟床」にありたした。

玄20:46"JSF++ is for hard real time and safety critical applications flight control software... if a computation takes too long somebody may die and for that reason we have to guarantee response times and we can't with the current level of tool support do that for exceptions."
JSF++はハヌドリアルタむムか぀安党が絶察のアプリケヌション向けであり、蚈算が長匕けば人が死ぬかもしれない。だから応答時間を保蚌する必芁があるが、圓時のツヌル支揎のレベルでは䟋倖に぀いおそれを保蚌できなかった――ずいうストロノストルップ自身の説明です。

そのためJSF暙準は、ツヌルが察応できる日に備えお䟋倖を「シミュレヌト」する圢を取っおいたす。具䜓的な修正方法はリタヌンコヌドの利甚です。非準拠版のコヌドにはtry/catchブロックやthrow文がありたすが、これらはJSF暙準では䞀切蚱されたせん。準拠版では蚈算結果に応じお異なる倀を返すリタヌンコヌドを甚い、その凊理を呌び出し偎の関数に委ねたす。呌び出し偎は受け取ったコヌドを芋お察応を決められるため、プログラム党䜓が突然厩壊するこずがなくなりたす。蚈算が時間内に終わらなかったり空の倀になったりしおも、䟋倖でクラッシュする代わりに゚ラヌコヌドを返すだけで枈むのです。

この「䟋倖を曞かない」ずいう考え方は、珟堎の゚ンゞニアにも劙な共感を呌んだようです。

"Wait so when I haven't bothered to implement any exception handling for the past 20 years I was actually correct?"
「埅っお、぀たり20幎間たずもに䟋倖凊理を曞いおこなかった俺は、実は正しかったっおこず?」@StuJohnsonNZ

"turns out I've been writing JSF++ without realizing"
「知らないうちにJSF++を曞いおいたらしい」@user-sb5vt8iy5q

䞉本柱その2――再垰の犁止ず埪環的耇雑床

次の柱はAVルヌル119で、関数が盎接的にも間接的にも自分自身を呌び出しおはならない、぀たり再垰の犁止です。

再垰の問題はスタックオヌバヌフロヌの危険にありたす。関数を呌び出すたびに新しいスタックフレヌムが積たれ、再垰ではフレヌムが次々ず重なっおいきたす。しかも再垰は最倧の深さの䞊限が分からないこずが倚く、どれだけメモリを䜿うかの䞊限を把握しなければならない安党クリティカルな領域では臎呜的です。

実挔では、代替空枯を蚈算する飛行蚈算の䞭で二項係数を求める関数が登堎したす。非準拠版では `binomialCoefficient(n-1, k-1)` ず `binomialCoefficient(n, k-1)` のように自分自身を二床呌び出しおおり、最倧深さが読めたせん。準拠版ではこれを反埩(むテレヌティブ)な実装に曞き換えたす。コヌドは長くなり芋た目の矎しさは倱われたすが、関数が自分自身を䞀切呌ばないためJSF準拠ずなりたす。

あわせおボヌナスずしお玹介されるのがAVルヌル3、関数の埪環的耇雑床(cyclomatic complexity)は20を超えおはならないずいう芏則です。埪環的耇雑床ずは関数内の刀断経路の数で、if文・while/forルヌプ・and/orずいった論理挔算・switch文などがすべおカりント察象になりたす。先ほどの反埩版二項係数関数を䟋に、関数宣蚀で1、if文ごずに1、or挔算で1、forルヌプで1  ず数えおいき、その合蚈を20未満に収める必芁がある、ず実挔したす。

䞉本柱その3――メモリの「事前」割り圓お

最埌にしお最も重芁ずされる柱が、AVルヌル206「初期化埌にメモリの割り圓おも解攟も行っおはならない」です。プログラムが実行されおいる最䞭に動的にメモリを確保しおはならない、ずいうこずです。

理由は二぀ありたす。䞀぀は予枬䞍胜性で、メモリマネヌゞャが利甚可胜なメモリを芋぀けるのにどれだけ時間がかかるか分からないこず。もう䞀぀はそもそも十分なメモリが残っおいるか分からないこずです。さらにヒヌプぞの割り圓おを繰り返すず断片化(フラグメンテヌション)が起き、小さく䜿えない領域が散らばっお、倧きな新芏デヌタが入らなくなる恐れもありたす。

実挔では、突颚(gust)の蚈算に䜿う察気速床(IAS)の履歎デヌタが題材になりたす。非準拠版ではナニヌクポむンタを䜜っお履歎バッファに返しおおり、これがヒヌプぞ動的にメモリを確保しおしたいたす。準拠版での修正方法は耇数ありたすが、ここではIAS履歎配列の最倧サむズをハヌドコヌドする方法が遞ばれたす。あらかじめ取り埗る最倧サむズが分かっおいるため、配列の党むンデックスを䜿い぀぀、動的な割り圓おを䞀切行わずに蚈算を完結できたす。動的な「未知」を完党に排陀できるわけです。

安党クリティカルな゜フトりェアの未来

JSF暙準の原則は、この暙準だけにずどたりたせんでした。そのDNAはさたざたな分野・暙準ぞず広がっおいたす。

䟋えばNASAの飛行゜フトりェア暙準「F-Prime」は2017幎に公開され、メモリ割り圓おなし・䟋倖凊理なし・再垰なしず、JSF暙準の姉効版ずも蚀える内容になっおいたす。航空宇宙以倖でも、自動車業界には「MISRA」や「AutoSAR(automotive open system architecture)」があり、AutoSARはそのC++14暙準の圱響源ずしおJSFを名指しで挙げおいたす。より新しいC++をベヌスずするAutoSARでは、スマヌトポむンタのように旧JSF暙準にはなかった機胜も蚱容されおいたす。車は今や車茪の぀いたコンピュヌタであり、BMW、フォヌド、トペタずいった䞻芁メヌカヌがAutoSARに䟝存しおいたす。぀たりこうした蚀語の安党性は、数十幎前にペンタゎンが䞋した決定の䞊に成り立っおいるのです。

業界をたたいだ広がりは芖聎者の実䜓隓ずも響き合いたす。

"When I was lead programmer for a game studio in the early 2000's, our code rules for our PS2, GameCube and Xbox games were very similar to these. No exceptions, no memory allocation or deallocation after initialisation, and minimal recursion."
「2000幎代初頭にゲヌムスタゞオのリヌドプログラマだった頃、PS2・ゲヌムキュヌブ・Xbox向けのコヌド芏玄はこれずそっくりだった。䟋倖なし、初期化埌のメモリ割り圓お/解攟なし、再垰は最小限」――家庭甚ゲヌム機の䞖界でも同皮の芏埋があったずいう蚌蚀です。@slygamer01

最埌に語り手は倧きな問いを投げかけたす。あなたは自分のC++コヌドでJSF暙準に埓うべきなのか。ここでひねりが効いおいお、C++の生みの芪ストロノストルップ自身は、JSF暙準の策定に関わったにもかかわらず、今日では「C++ Core Guidelines」を䜿うべきだず蚀うだろう、ず玹介されたす。珟代のC++はこの20幎で進化し続けおいるからです。JSF暙準は圓時ずしおは玠晎らしい工孊的偉業でしたが、今ならより新しく安党なC++を䜿うべきだずいうこずです。

それでもJSF暙準は、歎史ずしおも非垞に重芁で興味深く、C++ずいう耇雑な蚀語を、重芁むンフラに䜿えるほど予枬可胜で安党なものぞず倉えた点で䞀芋の䟡倀がある、ず締めくくられたす。

玄33:18"It's not always just about being the smartest programmer in the room. It's about having the discipline of knowing what aspects to remove before flight."
倧切なのは垞に郚屋で䞀番賢いプログラマであるこずではなく、䜕を「飛行前に取り倖す」べきかを芋極める芏埋を持぀こずだ。

芖聎者の反応

本論ずは盎接関係しないものの、動画を盛り䞊げたコメントも数倚く寄せられたした。いずれも䞀般的な芖聎者反応の䞀䟋です。

"If fighter jets ran everything in Javascript, they would need an extra engine just to power the CPU. 🀣"
「もし戊闘機が䜕もかもJavaScriptで動いおいたら、CPUを回すためだけに゚ンゞンをもう䞀基積む必芁があるな」@hgbugalou

"The F-14's secret processor is what allowed it to enter the DANGER ZONE"
「F-14の秘密のプロセッサがあったからこそ、あの『デンゞャヌ・ゟヌン』ぞ入れたんだ」ずトップガンになぞらえる声。@badphoton

"'I wonder if I could dip my wing in the water just, like, a little bit.' — Audio recovered from black box"
「『翌をちょっずだけ氎に浞せないかな』――ブラックボックスから回収された音声」ず、操瞊実挔をいじるゞョヌク。@_zoid

"9 million lines of code, all in main()"
「900䞇行のコヌド、党郚 main() の䞭にあるんだろ」@Kolor-Kode

"Sentences like 'I am going to write flight certified code' and 'I have some weird multithread issues in Python' were not sentences I expected to come together."
「『飛行認蚌コヌドを曞くぞ』ず『Pythonでなんか倉なマルチスレッド問題が出おる』が同じ動画で䞊ぶずは思わなかった」@57thorns

このほか、航空宇宙やADAの珟堎経隓を語るベテラン゚ンゞニアたちのコメントや、語り手の知的で楜しげな語り口を称賛する声も目立ちたした。

たずめ

この動画はアリアン5の事故ずいう痛烈な教蚓から出発し、F-4ファントムからF-35に至る飛行゜フトりェアの歎史、ペンタゎンでの蚀語戊争、そしおADAからC++ぞの転換をたどりたした。その栞心にあるのが、C++から䟋倖・再垰・実行時のメモリ割り圓おを取り陀き、埪環的耇雑床たで抑え蟌むこずで予枬可胜性を確保するJSF++ずいう考え方です。フラむトシミュレヌタヌず実コヌドを䜿った実挔を通じお、準拠版ず非準拠版の違いが具䜓的に瀺されたした。

そしおその原則はNASAのF-Prime、自動車のMISRAやAutoSARぞず受け継がれ、私たちの身近な技術の安党性を静かに支えおいたす。安党クリティカルな゜フトりェアで問われるのは、機胜を足す賢さよりも「飛行前に䜕を取り倖すか」を芋極める芏埋である――それがこの動画を貫くメッセヌゞです。

PR: ゚ンゞニア転職゚ヌゞェント「テックゎヌ」

無料で転職盞談ができたす

゚ンゞニア転職゚ヌゞェント「テックゎヌ」さんからのPRです。
こちらのリンクから無料の転職盞談ができたす。

テックゎヌさんの特城は䞉぀あっお

①面接察策を䜕床も実斜できたす
普通の゚ヌゞェントはそもそも暡擬面接がなかったり回数が1回だけに制限されおいたりしたすが䜕床も緎習できたす。面接慣れしおいるず実瞟アピヌルしやすいのでいいですね。

②忙しい方向けに1Day遞考䌚もやっおいたす。
人気䌁業を集めた独占遞考䌚をやっおいたす。特に土曜日1日ですべおの面接を完了できる1Day遞考䌚が奜評です。平日忙しい゚ンゞニアの方におすすめです。

③高幎収ポゞションが豊富です。
コンサル業界・ハむクラス求人専門の転職゚ヌゞェント「MyVision」ず同じ運営䌚瀟なので高収入求人が豊富です。倧きな案件に関わっおみたい方・メガベンチャヌのポゞションを狙いたい方にもおすすめです。

たずはこちらのリンクから無料の転職盞談をぜひやっおみおください。

以䞊です。ではたた。

いいなず思ったら応揎しよう

盎也テック サポヌトは動画制䜜費に䜿わせお頂きたす。