2020年5月18日からTRI-AD (Toyota Research Institute - Advanced Development, Inc.) にSenior Engineerとして入社しました。所属はMLToolsという部署で、社内の機械学習エンジニア向けにMLOpsの基盤を提供しています。試用期間の3ヶ月が終了したので 本採用になったのかわからないですが 今の時点での仕事内容や感想について述べていきたいと思います。
初出社終わったのでこれから帰宅して家で仕事。 pic.twitter.com/q8N5dfjtBy
— Keigo Hattori (@keigohtr) June 1, 2020
ミッション
TRI-ADは自動運転の企業、という認識が一般的かと思いますが、実際には自動車をソフトウェアにして新しいエコシステムを作る、そんな企業です。Teslaも同様だと思いますが、自動車版Androidを作っている、と例えると分かりやすいでしょうか。Androidのビジネスモデルと同じことが自動車業界で出来たら面白いですよね。実際は自動車だけでなくスマートシティもやっています。
そんな中で私の所属するMLToolsは何をやっているかと言うと、機械学習エンジニア向けの開発基盤を作っています。とは言いつつも、基盤はこれから作っていくというフェーズです。これまでは機械学習をやっている各部署がそれぞれ独自の方法で機械学習の開発環境を持っていました。独自のデータ管理、独自の計算資源、独自の実験管理。当然ながら課題はいくつもあり、それらを解決することをMLToolsという部署は期待されています。MLToolsには3チームあり、ざっくり分けるとアノテーションサービスチーム、組み込みチーム、その他チームです。名前からなんとなく担当領域がわかると思います。その他チームは他の2チームが扱っていない領域全部を担当するチームになっていて、私はその他チームでTech Leadというポジションについています。
文化
従業員は500人以上いるらしいです。トヨタ系列からの出向者と私のような中途採用とで構成されています。毎月流れてくる採用情報を見るに、中途採用はほとんどが外国籍のような気がします。公用語は英語です。ミーティングや文書やチャットは全部英語です。ただし、私の周りは比較的日本人が多いこともあり、日本人と個別に相談するときは日本語を使っています。現時点だと英語よりは日本語の方が多く使っているかもしれません。とはいえ、普段英語を使うので英語力の向上が私の直近の課題のひとつです。
開発体制はチームに依ります。私のチームではスクラムを採用しています。専属のスクラムマスターがチームに付いていて、よくありがちな「開発者兼スクラムマスター」ではありません。SM部隊があり、そこから派遣されています。また、私のチームにはPdMが付いています。こちらもPdM部隊があり、そこから派遣されています。「開発者兼PdM」ではなく専任のPdMなので、会社や顧客の状況を鑑みて数字を見ながらプロダクトの方向性や優先順位をつけます。最後が私の所属する開発チームです。チームには私を含めて4人のメンバーが居ます。PdMからストーリーを受け取り、開発タスクに分解して、2週間のスプリントの中で各メンバーがチケットを切って取り組みます。私はLINEやABEJAでもスクラムで開発していましたが、TRI-ADのスクラムはルールが厳格なように感じています。厳格なスクラムに慣れていない点も私の課題のひとつです。とはいえ、私もPdMもSMも「プロダクトでお客様を満足させることを最重視する」点は一致しています。その点は良かったと思いました。
「トヨタ本体の文化はあるのか?」という質問がよくあります。どういう意味でしょう?私は大企業病とか詳しくないので何のことか分からないです。会社が大きいので他のチームのことは正直わかりませんが、少なくとも私のチームはスタートアップのような文化にしようしています。"Fail fast" とか "Done is better than perfect" などです。前職は開発スピードがとても早かったので、同様のスピードで開発できるような文化と仕組みを作っているところです。
働き方についてですが、コロナの影響があって今の所は出社していません。しばらくは出社する予定もありません。完全にWFHです。前職でもほぼフルリモートでしたから、特に不自由なく働けています。ただし、オンボーディングも含めてリモートだったのでその点はとても大変でした。
開発環境ですが、インフラはAWSです。重課金ユーザーです。PCは入社当時の最新型のMacBook Proです。椅子やディスプレイやキーボードについては、出社していないので分かりません。開発環境はモダンです。開発に必要なものはサービスであれツールであれ購入できます。私はIntelliJが好きなので申請して使っています。ソースコード管理、CICD、チャット、チケット管理、社内wikiなどはモダンなものを採用しています。デバイスについてはBYODも出来るそうですが、今のところは会社貸与のPCを自宅で使っています。オフィスがフル稼働になったらBYODで自宅での開発は済むようにしたいです。
情報公開についてですが、イベントでの登壇については積極的にやってOKと聞いています。イベントのスポンサーも出来るということなので、コロナが収束したらMLPPを開催したいなと考えています。業務の成果物をOSSで公開することについても積極的だと聞いているので、LINEのRekcurdのときのように面白いソフトウェアを作って公開していきたいです。
どうしてTRI-ADにしたのか?
転職活動エントリでは、いくつかの企業を受けたことについて書きました。どれも魅力的で選べませんでした。そんな中でどうしてTRI-ADを選んだかというと、理由は2つあります。ひとつは「MLOpsに集中したかった」ことです。TRI-ADはトヨタの子会社ということもあり、資金は潤沢にあると聞いていました。また既に多くの機械学習エンジニアが働いていることも聞いていました。MLOpsに集中するためにはこれらの環境が非常に魅力的でした。もうひとつの理由は「日本以外の国と文化で働きたかった」ことです。TRI-ADにはexGoogleやexAmazonを始め、世界各国からヒトが集まっています。入社して更に思いましたが、本当に国籍は様々です。グローバルな環境で働くことは正直言って優先順位は高くありませんでしたが、「これから先にこのような文化で働く機会はあるだろうか?」と思い、TRI-ADで働くことを選びました。後者については「意思決定のプロ」であるテラモナギぱいせんの後押しがあったことをここに記載させて頂きます。
テラモナギぱいせんはこんな素敵な方です。
感染するのも人だし媒介するのも人だし飲食店に行かなきゃならないのも人だし旅行に行くのも人だし密になるのも人なので"人であること自体がリスク"。人間をやめよう、私は神となる。
— 幸福のデータ科学㈱教祖テラモナギ (@teramonagi) April 26, 2020
TRI-ADで何をやるのか?
先述の通り、TRI-ADにおけるMLOps基盤はこれから構築していくというフェーズです。つまりやることはたくさんあります。データ管理基盤(データレイク)の構築、計算資源の管理、実験経過・結果の管理、ハードウェア最適化、品質保証、組み込み、など。成果については随時発表していくとして、技術スタックとしてはkubernetesとkubeflowを中心にしていきます。TRI-ADでkubernetesの本番運用を始められることが楽しみです。
我々のチームの顧客はTRI-AD内の機械学習エンジニアです。TRI-ADには複数のMLE部署があり、それぞれがそれぞれのルールで動いています。私が大事にしていることは、彼らのプロセスを変えることなく彼らの苦労を取り除くこと、そして彼らが気づいていない優れた体験と付加価値を彼らに提供すること、です。なので、個別最適化にとどまらず、会社全体のプロセス最適化にとどまらず、汎用的かつ拡張可能な形でプロダクトを作りたいと考えています。これができれば、会社の枠を超えて様々な人々に価値を届けられるはず。成果は積極的にOSS化したいと思っています。
おわりに
我々のチームでは積極的な採用をしています。MLOps x Kubernetesなサービスに興味がある方、グローバルなメンバーとグローバルな環境で開発したい方、おしゃれな日本橋で働きたい方、まずはカジュアル面談からでも!
採用の窓口はこちらから。
— Keigo Hattori (@keigohtr) July 14, 2020
一緒にTRI-ADでUberのMichelangeloっぽいものを作りましょう!https://t.co/aOcnq1ce0r