GUIDE / キャリアの意思決定 / 更新 2026-10-30
機械学習エンジニアの転職は、研究寄りと実装寄りで戦い方が正反対

求人票に「機械学習エンジニア」と書かれていたら、だいたい同じ仕事を想像してしまう。だがこの職種名は、実際には二つの別の仕事を同じ袋に入れているだけだ。中を開けると、求められる実績の方向がまったく逆を向いている。
一つは研究寄りの仕事だ。新しい手法を試し、既存の精度を少しでも上回る方法を探す。評価の軸は「新しさ」と「精度」で、論文を読んで再現実装できるか、コンペで通用する発想ができるかが問われる。もう一つは実装寄りの仕事だ。学習済みのモデルを本番環境に乗せ、落ちずに動かし続け、負荷が増えても耐えられるようにする。評価の軸は「安定」と「スケール」で、推論基盤やパイプラインの運用経験、障害が起きたときの対処力が問われる。
この二分法だけなら驚きではない。本当の分岐はその先にある。
評価軸が逆に働く理由
厄介なのは、ただ毛色が違うだけでなく、評価の方向そのものが逆に働くことだ。研究寄りの採用担当者は「まだ世に出ていない工夫」を探している。既存の手法を手堅く運用しているだけの経歴は、悪くはないが物足りなく見える。逆に実装寄りの採用担当者は「枯れていて壊れない構成」を探している。最新手法を次々試した経歴は、挑戦的で面白そうに見える一方、本番を任せて大丈夫かという不安を誘う。同じ経歴の同じ一行が、片方では強みになり、もう片方では懸念材料になる。
この構造を知らないまま転職活動を始めると、ポートフォリオが散らかる。未経験からの転身者ほどこの傾向が強い。コンペの参加記録と、クラウド上での推論APIの構築と、論文の再現実装と、監視・アラートの整備を、一つのGitHubに並べて「機械学習エンジニアになりたいです」と提出してしまう。本人は手広くやったつもりでも、研究寄りの採用担当者からは「どの手法も中途半端にしか追い込んでいない」と見え、実装寄りの採用担当者からは「運用を任せるには経験が浅い」と見える。両方に少しずつ刺さる経歴は、どちらにも深く刺さらない。
面接でも分岐は続く
面接に進んだ後も、この分岐は消えずに続く。研究寄りの面接で聞かれるのは「なぜその手法を選んだのか」「精度が伸びなかったときに何を疑ったか」といった、判断の筋道を試す質問だ。手持ちの実装が中途半端でも、思考の過程が筋道立っていれば評価される。実装寄りの面接で聞かれるのは「本番で障害が起きたときにどう切り分けたか」「負荷が増えたときにどこがボトルネックになったか」といった、現場の勘を試す質問だ。手法の新しさより、落ち着いて原因を特定できるかが見られる。同じ候補者が同じ回答をしても、面接官が期待している答えの形がそもそも違うため、片方の軸で用意した話は、もう片方の面接ではうまくかみ合わない。
自分がどちら寄りか見極める
だからこそ、応募前にやるべきことは、作品を増やすことではなく、自分の実績がどちらの軸に寄っているかを一度言語化することだ。精度を上げるために粘った経験の方が多いなら研究寄り、動くものを壊さずに保ち続けた経験の方が多いなら実装寄りに分類できる。そのうえで、求人票の「機械学習エンジニア」という名前ではなく、業務内容の記述を読む。「精度向上」「新規手法の検証」「論文調査」とあれば研究寄り、「推論基盤」「監視」「スケーリング」「パイプライン運用」とあれば実装寄りだ。名前が同じでも、応募する相手は別の生き物だと考えた方が近い。
未経験者に向けて言えるのはもう一つある。全方位の作品を作る時間があるなら、その時間はどちらか一方の軸を深く掘ることに使った方がいい。研究寄りなら一つのテーマで精度を上げ続けた記録、実装寄りなら一つのシステムを落とさず運用し続けた記録。広さより、どちらの軸で深く掘ったかの方が、面接で聞かれたときに答えられる話の厚みになる。どちらの軸を選んでも、モデルを書くにせよ基盤のコードを書くにせよ、土台になる言語はほとんどの現場でPythonだ。軸を決めた後にどちらへ時間を割くかは人によって違うが、言語の基礎そのものは先に固めておいて損はない。
迷ったときの目安は一つだけでいい。これまでの作業の中で、時間を一番長くかけたのは「数値を1%でも良くする工夫」だったか、それとも「一度動いたものを二度と落とさないための工夫」だったか。前者なら研究寄り、後者なら実装寄りの求人に絞り、もう一方の実績は一旦語らないくらいでちょうどいい。両方を少しずつ見せる経歴書より、一方に軸を定めた経歴書の方が、結局は通りやすい。
tasklogは、エンジニアがどの教材で何を学び、どの技術書が実際に読まれ続けているかを実測データで確認できる場所だ。どちらの軸を選んでも土台になるPythonの学習データは https://s-tasklog.com/learn/python に置いている。