Preferred Networks を退職します
2022-02-24
今日はPreferred Networksの最終出社日でした。アルバイト期間含めて6年間、大変お世話になりました! pic.twitter.com/klMbe5mct8
— Yuki Igarashi (@bonprosoft) February 18, 2022
2月末をもって Preferred Networks を退職します。 フルタイムでは4年間、アルバイトも含めると6年間お世話になりました。
ここ数年間、おかげさまで私としては毎日楽しく(精一杯)過ごしてきたのですが、日頃の情報発信を怠っていたこともあり周りからどう思われているのか考えるときがあります。 ちょうど良い機会だと思うので、この数年間で何をやっていたかをまとめようと思います。
単なる自己満足でしかないのですが、私がこの4年間に取り組んでいたこと、PFNでの経験が本当に素晴らしいものであったということが一人でも多くの方に伝わればと思って書いています。 ネガティブなことは特に書いていないので、予めご了承ください(ご安心ください)。
タイムライン
- 2016年5月: PFNでリモートからアルバイトとして働き始める
- 7月: (大学院入試)
- 8月〜9月: 大手町オフィスで勤務(2016年のインターンさんと一緒になる)
- 2017年2月〜3月: 大手町オフィスで勤務
- 8月〜9月: 大手町オフィスで勤務(2017年のインターンさんと一緒になる)、採用面接
- 2018年3月: 正社員としてPFNへ入社(大学院の修士課程は継続、2019年3月に修了)
- 2018年3月〜10月: 全自動お片付けロボットシステムの開発
- 10月16日〜10月19日: CEATECにてデモ展示
- 2018年11月〜2019年1月: (修論執筆のため休暇)
- 11月: (書籍「スラスラわかるC# 第2版」の発売)
- 2019年3月: 大学院修士課程修了
- 2019年2月〜9月: パーソナルロボット向けのソフトウェア基盤の開発
- 4月: 首相官邸で行うお片付けロボットシステムのデモを担当する
- 8月: (IIDX SP皆伝を初取得1)
- 2019年10月〜2021年7月: 建設現場で動く自律移動ロボットの開発
- 2020年4月: pysenのプロトタイプを作成
- 2021年8月〜2022年2月: 物流事業でデパレタイジングロボット用コントローラーの開発
アルバイト時代 (〜2018年)
Preferred Networks との出会い
Preferred Networks (正確には、当時はスピンオフする前の Preferred Infrastructure )という会社の存在を知ったのは大学1年生の頃でした。 東北大学では産学連携講義が毎年開講されており、ちょうどその年の枠の1つとしてPFIからの講義があったことがきっかけです。 2013年は私の上司である海野さんが講演をされていて、その時に知り合って2から今年で9年3が経過していることになります。 その後、学部4年に入るまでは PFN と直接的な関わりはありませんでしたが、プライベートやアルバイトなどで Jubatus や Chainer などの PFN が公開している技術にはお世話になっていました。
私にとっての PFN に対するイメージは「第一線で活躍している人たちが集う会社」です。 特に当時は PFN が作るライブラリにお世話になっていたこともあり、まだ論文にしかなっていないような最先端の技術を普通のエンジニアが使えるまで上手に落とし込んで世の中へ送り出している様子を見て、技術者としての強い尊敬と憧れを抱いていました。
話は前後しますが、このイメージは会社に入ってからも変わることはありませんでした4。 これは海野さんをはじめとした一緒に働いてきたメンバーに大きく影響されたと思っていますが、私自身の仕事に対する価値観において、何をやるかだけではなく誰と働くかも非常に重要な要素だと思っています。 PFN に入社してから様々な人と働ける機会をいただきましたが、技術者として・人間として尊敬できると素直に思える瞬間は退職する最後まであり、本当に人に恵まれていたと思います。 各分野の第一線で活躍しているような人たちと同じ組織にいるという誇りや期待、素晴らしいと思える人たちと一緒に仕事ができる居心地の良さ、そのうえで周りのメンバーからも評価・信頼をしてもらえているという充足感。 このような環境は私にとってはかけがえのないもので、この環境を去るということは転職を決断するうえで最後まで悩んだ点でもありました。
仙台からリモートでのアルバイト
さて、話を戻して大学4年生の頃、アルバイト先(乾研究室)のつながりで小林さんから PFN でアルバイトを募集しているというお話をいただきました。 「自分に何ができるだろう、そもそも面接受かるかな…」といった不安もありつつ、絶対ここなら楽しいことができるという期待に心を踊らせながら、海野さんとのやりとりの末に面接へ進みました。 アルバイト面接は複数回ありましたが、最後で岡野原さんへ質問する時間があったため、簡潔データ構造に関する内容を話した記憶があります5(あとは何故かNIC bondingの話もした)。
アルバイト合格のお知らせを頂いてからは、海野さん・福田さんグループ(IIP6チームと社内で呼ばれています)で入社までの2年間アルバイトをしました。 業務内容としては普段はチームで使えそうなツールやライブラリの作成が主で、長期休暇の間はもう少し研究寄りのタスクに取り組みました。 大学の都合で仙台に住んでいたために働き方は少々特殊で、普段はリモートでアルバイトをし、長期休暇だけ東京のオフィスでアルバイトをしていました。 特に夏の長期休暇ではインターンさんたちとも一緒に過ごすことができ、同じ学生とは思えないほどの優秀さに焦りを感じつつも、非常に良い刺激をいただいていました。 また、CEATEC 2016の打ち上げパーティーや毎年の忘年会などにも呼んでいただき、社員やアルバイトの皆さんに暖かく接していただいたことを覚えています。
PFNでのアルバイトでの経験は、当時の私の中での “将来なりたいエンジニア像” を確実に変えてくれました。 いま思い返すと、これが私の人生の転機だったと思います。
社会人修士
2回目の長期休暇でのアルバイトを終えて、私は PFN の、そして IIP の虜になっていました。 「アルバイトの枠を超えてもっと働きたい」「もっと会社のいろんな議論に混ざりたい」といったぼんやりとした欲望を抱きつつ、アルバイトなどへ自由に使える時間を極力増やせるように、修士1年の前期は単位取得と研究に勤しみました。
3回目の長期休暇アルバイトのある日、IIP の飲み会でこの不満を打ち明けました。 ハッキリとした経緯は覚えていませんが、そこから「社会人博士という制度があるのであれば、社会人修士も可能ではないか?」という話が出て、海野さんを筆頭に社会人修士の話を調整していただけることになりました。 会社で前例のないことでしたが、チームの皆様、人事・コーポレートサービスの皆様の多大なるお力添えをいただき、最終的には「週4日東京勤務、週1日仙台へ大学院通学」という勤務形態で入社することが実現できました。
私もまた、長期休暇から帰ったあとは所属先研究室および研究科の先生方へ説明を行い、社会人修士となっても同期と一緒に修了できるよう、より一層研究に励みました。 結果として先生方からはご快諾いただき、研究室のメンバーにも背中を押していただきました。
こうして私のワガママは実現し、2018年3月からは晴れてフルタイムとして働き始めることとなりました。
ご報告が遅くなりましたが、2018年3月1日付で株式会社Preferred Networksに入社しました。約2年間アルバイトをしていましたが、この度、正社員として働けることとなりました。現在、修士課程在学中ですが、大学院とも相談したうえで、修士課程は続けつつ働く予定です。今後ともよろしくお願いします!
— Yuki Igarashi (@bonprosoft) March 3, 2018
所属先研究室・研究科の先生方と研究室の皆さま、そして海野さんをはじめとする会社の皆さまのご理解がなければ実現できなかった事だと思っています。心から感謝しています。
お片付けロボット (2018年〜2019年)
ロボットを初めて触ったきっかけ、“インテグレーション"というタスク
会社に入って最初に携わったプロジェクトはお片づけロボットシステムでした。 アルバイト時代にロボットに関する話題が一切出たことがなかったために、当時は非常に衝撃的でした。
プロジェクトのなかは分け隔てがなく、好きな領域に関わらせてもらうことができました。 入社直後だったため、まずは一番貢献できそうなことを自ら探した結果、Visionグループでデータセット収集のための仕組み作りに携わることにしました。 詳細は割愛しますが、VRデバイスやトラッキングデバイスと大量のカメラを組み合わせた撮影環境を作って、大量のデータセットを生成するためのシステムを構築しました7。
夏頃にもなると仕事にもだいぶ慣れ、自分のタスク以外にもプロジェクト全体を見渡せる余裕が出てきました。 また、自分の中で「チームメイトに働きぶりを認めてもらえた」という安心感が出てきたのもこの頃であり、精神的にもかなりリラックスして働けるようになっていました。 当時はプロジェクト全体を見ると、それぞれの要素技術を実際のロボットへつなぎ合わせるインテグレーション部分の人手が足りていない状況でした。 これが私がロボットを初めて触るきっかけとなりました。
ロボットを触った経験はそれまで一切なく、ソフトウェアエンジニアとしても未熟であった私は “インテグレーション” という単語を聞いたときに、どことなく「単にインターフェイス同士を合わせてつなぎ合わせるだけ、つなぎ合わせればシステムはだいたい動く」と考えている節がありました。 実際に取り組んでいると、その考えはすぐに打ち砕かれました。 そもそも大規模なソフトウェアは全体を意図したとおりに動かすだけでも難しいことで、そのソフトウェアが実世界を扱うようなものであれば容易に破綻するのです。
インテグレーション部分を担当するようになってからは、要素技術となる部分の様々なソースコードを読んでシステムへインテグレーション(データの表現形式やセマンティクスが合うように変換するロジックを追加、必要に応じて外乱に対する対策の実装)するだけでなく、機能の追加や変更によって問題が生じた箇所のアーキテクチャを部分的に再設計したり、時には要素技術となるようなロジックやオペレーション用UIなどを実装したりしました。 また開発終盤では、メンバーと協力し合いながらほぼ毎日オフィスでシステムを動かし続け、安定性の改善や律速部分の解消など、全体のクオリティをあげる部分に注力しました。 忙しくもありましたが、毎日が驚きと発見の連続で充実感を得ていました。
結果としてCEATECでのデモは大成功を収め、システムも5日間ほぼ停止することなく動き続けました。 私は毎日会場に来てバックヤードで見守っており、時にはMCとして来場者様の前でシステムの説明もしました。
- Autonomous Tidying-up Robot System https://projects.preferred.jp/tidying-up-robot/
そんな中でも、4日間問題なく動き続けたネットワーク・物体認識・音声認識をはじめとした様々なコンポーネント、そしてそれらを組み込んで動かしているシステムの完成度にも是非注目してほしいです。そして何より、今回特に故障なく動き続けてくれたHSRは本当にすごい!
— Yuki Igarashi (@bonprosoft) October 20, 2018
CEATEC終了後も引き続きロボット事業に携わり、パーソナルロボットで動くアプリケーションのためのソフトウェア基盤の設計と実装に注力しました。 全自動お片付けロボットシステムも常にこの基盤の上で動くよう追従させ続け、いかにして実用的なロボットのプログラミングを容易にするかについて考え続けました。
全自動お片付けロボットシステムは、CEATEC終了後も多数のメディアに取り上げていただきました。 私自身が表に出て話すことはほぼなかったですが、様々な取材の裏でデモを見守り、システムが安定して動くように日々の開発で支えてきました。 (せっかくなので触れておくと、中学2年生向けの英語の教科書 NEW HORIZON でシステムを取り上げていただき、副教材DVDに私が話している場面が少しだけ収録されました。個人的にも非常に良い思い出となりました。)
首相官邸でのお片付けロボットシステムのデモ
CEATEC後で最も印象に残っているデモは、首相官邸で開催されたベンチャー企業大賞の授与式で行ったデモです。 ロボットを授与式当日にはじめて首相官邸へ搬入し、数時間の調整で本番に挑みました8。 一切動かしたことのない環境でロボットのデモを行うというのは、いま思い返してもかなりヒヤヒヤしますが、デモは無事に成功しHSRから安倍首相へニンジンのおもちゃを手渡すことに成功しました。
- 第5回 日本ベンチャー大賞 内閣総理大臣賞 を受賞 https://www.preferred.jp/ja/news/pr20190524/
【発表】第5回日本ベンチャー大賞 内閣総理大臣賞 受賞!
— Preferred Networks (@PreferredNetJP) May 24, 2019
首相官邸での表彰式で、安倍総理に全自動お片付けロボットシステムのデモをお見せするため、CEATEC2018で展示したシステムのソフトウェア基盤を改良し、初めての場所でも動くお片付けアプリを開発しました!大成功!https://t.co/v9hOHnOBff
余談ではありますが、せっかくなのでロボットのプログラミングがどのように難しいかというお話をしましょう。 オフィスではほぼ問題なく長時間動き続けているお片付けロボットシステムを新しい場所へ持っていくとき、皆さんならどんな問題が発生すると考えますか? 実際に発生したかどうかに関わらず、以下に考えられる問題の一例を挙げてみます。
- 窓から差し込む日光によって深度カメラの点群が欠損する
- 報道関係者のフラッシュによって画像が白飛びする
- カーペットがふかふかで Wheel Odometry (車輪の回転数からロボットがどれくらい進んだかを観測する方法)が信頼できず、自己位置がわからなくなる
- 場面に合わせて大勢の報道関係者が同時に移動するため、2D LiDAR Odometry(周囲をある高さの2次元平面でセンシングして、ロボットがどれくらい進んだかを観測する方法)も信頼できない
…このなかで思い浮かばなかった項目はありましたか? 少なくとも私がロボットを初めて触ったときは、ほとんどの問題を実際にその環境で動かすまで想定できませんでした。 実世界で破綻せずに動くロボットを目指して、こうした斜め上とも言えるような問題を想定して解決・対策することは、技術者としてはおもしろい課題であり、製品開発している者としては常に頭を悩ませる課題でもあります。
建設現場で動く自律移動ロボット (2020年〜2021年)
2020年になると状況が変わり、私は自律移動技術を研究開発するチームに所属しました。 このチームでもインテグレーションを主軸にUI開発・クラウド連携・要素技術の開発に取り組み、具体的には以下の製品開発に携わりました。
- 建築現場用ロボット向けにAI技術を搭載した自律移動システムを開発 https://www.preferred.jp/ja/news/pr20210304/
ここ最近は建設現場向けのロボットを頑張っていました!!僕自身は、前回お披露目したお片付けロボットと同様、全体のインテグレーションまわりを重点的に関わってます。https://t.co/TEQzIkOn6v
— Yuki Igarashi (@bonprosoft) March 4, 2021
また、これまでの経験からチーム全体でインテグレーションに取り組める仕組みが重要だと考えるようになり、ソフトウェア一式を簡単にデプロイ・起動できるような仕組みの整備や、自社クラスタ上での開発環境の整備、実環境がなくとも大まかなロジックを検証できるようにするためのシミュレーターの作成にも取り組みました。 このプロジェクトとは別に開発したものですが、以下の動画で同様のシミュレーターが動作している様子が公開されています。
一緒に働くメンバーもこれまでとは一変しました。 チーム内の日本語話者数は全体の半数以下になり、チームでは英語を使って議論するようになりました。 入社以来はじめての大きな環境の変化であり、入社直後とはまた違った視点で環境の違いを捉えることができました。 また、このあたりからプロジェクトの一部を切り出した小規模なタスクフォースを任せていただく機会もありました。 これまでに所属していたプロジェクトにおける反省点などをふまえて、プロジェクトや仕事の進め方、問題へのアプローチの仕方、コミュニケーションの取り方、周りをどのように巻き込んでいくかなど、開発技術以外のことについても目を向け始めるようになりました。 この時期に一緒に働いたメンバーからは良い意味で大きな影響を受けたと考えています。
プロジェクトの成果物としては、最終的には現場の人が使えるレベルまで技術を安定させる必要があったため、技術的なスキルも大きく成長できたと思っています。 特に現場でのトラブルシューティングスキルはかなり鍛えられた9と思っていますし、全く知らないソースコードを読むことに対する抵抗感もこの頃から少なくなりました。
また、この頃はメインのプロジェクトのほかにも複数のプロジェクトに少しずつサポートとして入るという働き方をしていました。 そのおかげか、それぞれのプロジェクトで似たような問題や苦労を抱えていることに問題意識を持つようになり、開発効率をあげるためツールの作成や導入支援などをプロジェクト横断で行っていました。 現在社内の多数のリポジトリで使われている pysen もこの頃に開発をはじめました。 詳細な問題意識や経緯については以下のブログで書いています。
- Pythonのlinter/formatterを誰でも手軽に設定できるようにするためのPFN社内ツール “pysen” の紹介 https://tech.preferred.jp/ja/blog/pysen-is-the-new-sempai/
【ブログ】先日公開したPython向けlinter/formatter設定・実行用のPFN社内ツール「pysen (パイセン)」について、PFNエンジニアでpysen開発者の@bonprosoft が解説します。 https://t.co/DdOSoDWFKh
— PFN-tech account (@preferred_jp) March 26, 2021
物流事業 (2021年〜)
そして、退職するまでは物流事業で働いていました。
- 物流ソリューション事業を開始 - 株式会社Preferred Networks https://www.preferred.jp/ja/news/pr20210514/
このチームでは開発タスクだけでなく、これまでの経験を活かしてチームの開発プロセスの改善に努めました10。 幸いにも、これまでのチームでうまくいっていた開発プロセスが物流チームにもうまくマッチし、(あくまで自己評価ですが)チームの働きやすさや生産性の向上に貢献できたのではないかなと思っています。
私には他人からどう思われるかをとても気にする癖があり、度々これが仕事で悪いほうに働く場面があるのを自覚していました。 そういった観点でこの役割は私にとって精神的な負荷が高く、当初はあまり気持ちよく仕事をできていませんでした。 そんなときに上司との 1on1 ミーティングで「自己評価と他己評価を分けて考えよう」というフィードバックをいただき、そこからはかなり楽になったことを覚えています。
また、このプロジェクトで会社外の方と話す機会も増えました。 出張先で業界が全く異なる社外のエンジニアと共同で作業を進めることもあり、社外の文化に触れる機会も多くありました。 こうした経験から、会社や自分がいまいる業界を新たな視点で見つめ直すことができました。
おわりに
ここまで、私がPFNでどんなことをしてきたか、何を感じたかを長々と書いてきました。 この章まで飛んできた方向けに、私がPFNで働いて印象に残っている3つのポイントを以下にまとめておきます。
- 仕事内容と同じかそれ以上に人間関係が重要
- 「何をやるかだけではなく誰と働くか」
- それ故に、チームの一員としての働き方、特にコミュニケーションは非常に重要
- (上では触れていないが)Onboardingをしっかりとやることも重要だと感じる出来事もあった
- 自己評価と他己評価を分けて考える
- 心理的安全性とも関係する話だとは思うが、自らの心の持ち方として重要
- 他人が考えていることを想像するのは案外当てにならない11、くらいの心持ち
- 実社会で動く製品を作ることはとても大変
- 要素技術開発以外にも “インテグレーション” というタスクがあり、これによって最終的な完成度も変わる
- 問題解決の手段として、ソースコードを気軽に読む癖は有用
最後になりますが、素晴らしい仲間と上司に恵まれ、この6年間とても充実した日々を過ごすことができました。 自分がかなり恵まれている環境で働けていたと思っていますし、退職する今となっても、私にとってPFNは「また働きたい」と思える魅力的な会社です。 今まで本当にありがとうございました!
全く関係のないゲームの話だが、会社の同僚にかなり相談に乗っていただき大変お世話になったため書いた。当時は穴冥に苦労しており、Rootage終了時の未難は29、発狂七段くらいまでやりこんだ。 ↩︎
当時、東北大学の乾研究室(当時は乾・岡崎研究室)でアルバイトをしていたので、そのつながりで産学連携講義終了後の飲み会に参加させてもらった。居酒屋でジュースを飲みながらコンパイラの話をした記憶がある。 ↩︎
9年間ずっと連絡を取り合っていたわけではないが、言語処理学会の年次大会などで度々お話をしたりご飯を食べにいったりしていた。また、スマートニュースで3週間ほどインターンをしていた期間中に偶然にも週1度お話する機会があった。 ↩︎
それ故に、正直に話すと入社当時は本当にいっぱいいっぱいで「私はここで何ができるんだろう、ここまで良くしてくれた人の期待を裏切らないだろうか」と不安だった。 ↩︎
当時は「高速文字列解析の世界」を読んで感動し、何かのアプリケーションで簡潔データ構造を使いたい欲に駆られていた。 https://www.iwanami.co.jp/book/b257894.html ↩︎
Intelligent Information Processing (知的情報処理部門)の略。 ↩︎
以降長年苦しみ続けてきたRealSenseの安定性問題に初めて遭遇したのもこの頃。 ↩︎
ロボットを搬入したのは当日がはじめてだが、正確には授与式の前に見学させていただいた。 ↩︎
偉い人の前では何故か動かなくなる ↩︎
改善と言いつつ、基本的には前のチームでうまくいっていた開発プロセスを真似て当てはめただけですが… ↩︎
この時期に何かの本で読んだ ↩︎