見出し画像

日本で一番ROSの発展に貢献しているエンジニア、藤田智哉さんと語ってみた【コモさんの「ロボっていいとも!」第11回】

画像1

こんにちは、コモリでございます。

おひるやすみはロボロボウォッチング、ロボティクス業界のキーパーソンの友達の輪を広げるインタビューコーナー「ロボっていいとも!」のお時間となりました。


前回のゲスト、株式会社Preferred Networksの近藤豊さんには、かつて主宰を務めたROS Japan Users Groupの成長譚を、たっぷりと語っていただきました。

今回はまたまたROSの繋がりで、近藤さんも「密かに目標にしている」と話す、あの方に来ていただきました!

日本人で最もROSにコントリビュートしているエンジニアであり、その功績が認められて、現在はROS2 TSC(Technical Steering Committee)のメンバーにも名を連ねていらっしゃいます。ロボティクス界隈で、日頃からROSコミュニティに出入りしている方なら、彼の名前を見かける頻度に驚いた経験は、きっと一度や二度ではないと思います。


……それではそろそろお招きしましょう。本日のゲストはPreferred Networksの近藤豊さんからのご紹介、ソニーグループ株式会社のエンジニア・藤田智哉さんです!

画像2

藤田 智哉
ソニーグループ株式会社 エンジニア

藤田:こんにちは。「いいとも‼️って言いたい」って近藤さんにリプライを飛ばしただけで、ホントに回ってくるとは思いませんでした(笑)

コモ: 近藤さんには「ワールドワイドなROS界隈で最も存在感のある日本人の一人」だと藤田さんを推していただきましたが、私も本当にそう思っていて。いつかお話を聞けたらなと、前々から機会を探っていました。今日はどうぞ、よろしくお願いします!


僕の師匠はソースコード

藤田:その、企画的に僕で大丈夫ですか? というのも、正直なところ、ロボット分野だけに注力しているわけではなくて、むしろ「ロボットを動かしているシステムがどう構築されているのか、カーネルがどう動いているのか」に興味がある人間なので。

コモ:お、いいですね。「ロボっていいとも」では珍しいパターンです。そんな藤田さんが、日本人で唯一のROS2 TSCメンバーに選出されるまでの変遷、ぜひお伺いしたいです。システムやカーネルへの興味は、いつ頃からあったのでしょうか?

藤田:社会人になって、SEとして働き始めてからですね。僕、プログラミングに関しては本当に後発の人間なんですよ。大学の専攻は電磁気学で、ソフトウェアにはまったく触れていませんでしたから。

コモ:なんと、そうだったんですか! そこからSEになったのは、何かきっかけが?

藤田:それもあまり明確な理由がなくて、強いて言えば“不景気”がきっかけかもしれないです(笑)。僕が社会人になってすぐ、リーマンショックが起きました。その影響で、入社した会社で当時好調だった半導体領域の業績が落ち込んで、全社的に「ソフトウェア領域に人を流そう」という機運が高まったんですよ。

その流れで、上司から「ソフトウェアやらないか?」って声をかけられて、ノリで「やりまーす」って言ったのが、今の仕事のスタートラインですね。是が非でもやりたい領域も他になかったので、必要とされているところに行ってみようかなと。

コモ:藤田さんのターニングポイントが、リーマンショックとノリだったとは(笑)

藤田:当時はiPhoneが世に出始めた頃で、そういう動きを見て、「おそらくこれからは、ハードよりソフトのインテグレーションが進むだろうな」とは感じていたんですよね。

案の定、ソフトウェアに触り始めたらどんどん面白くなって、将来的にもずっとニーズが尽きない分野だなと思いました。「もっと深い知識を、レベルの高いことを」と独学で追いかけていったら、OS、そしてカーネルへと、どんどん基幹の領域に下りていった感じですね。

コモ:カーネルまで独学で修められたのはスゴい……! 自習する際に参考にされた、藤田さんにとってのバイブル的な本って、何かあったりしますか?

藤田:いや、そういう教本みたいなものは読んだことなくて。

コモ:えっ、マジですか(笑)。どんなふうに勉強されたんですか?

藤田:今もなんですけど、ひたすらソースコードを読んでいます。

コモ:おお、設計図を直に見て学ぶ、と。

藤田:SEになりたての頃、先輩に「仕様書ばっかり見てるな。実際に動いているのはソースコードだ、ソースコードを見ろ」とアドバイスをもらったことがあって、その言葉がすごく刺さったんですよ。確かにそうだよなって。

そのアドバイスを受けてからはずっと、仕様書とソースコードを読み比べながら、ソフトウェアのみならず、それが積まれるCPUのアーキテクチャまでしっかり理解しようと努めてきました。とはいえ、最初は読み方さえ全く分からなくて、先輩からは「本当に役に立たねえな」って何回も言われましたけど(笑)

コモ:いやいや、未経験ならしょうがないですよ。慣れるまで大変だったと思いますが、それでも続けてこれたのは、きっとそれが楽しかったからですよね。

藤田:そうですね。複雑な仕組みで動いているものの全体像や構造を理解するのが、根本的に好きなんだと思います。



新生「aibo」開発の裏側で、ROSが劇的に改善された件

コモ:その後、ソニーに転職されるわけですが、ここには何かきっかけがあったのでしょうか?

藤田:前職では、ずっとエンタープライズ系の業務をやっていたのですが、その領域では一通りやりきったと感じたのが転機でした。

明確にやりたいことがあったわけではないですが、ずっとクライアントワークをやってきたので、漠然と「コンシューマー向けの仕事ができたらいいな」という思いがあって、ソニーに興味を持ったんです。

コモ:なるほど。藤田さんと言えば、ロボティクス界隈では「ROSCon 2018 Madridでaiboのプレゼンをしたスゴい人」と認知している方も多いかと思います。aiboのプロジェクトには、自ら希望して参画されたのでしょうか?

藤田:aiboのプロジェクトでは、基幹のシステムフレームワークの立ち上げの面倒を見る役割をしていましたが、これも上司にアサインされたのがきっかけでした。自分で話してても、「本当にノリと流れでいろいろ決めてるな」って思いますよ(笑)。

コモ:そうだったんですね。

藤田:無事にベースのシステムは立ち上がったのですが、アプリを書き込み始めたら問題が発生してしまって。アプリの通信処理のCPU使用率が高すぎたことが原因で、その改善のために、僕も駆り出されて、そこで初めてROSを触ることになったんです。

コモ:ソニーがROSのようなOSS(オープンソースソフトウェア)を用いて開発を行なった前例は、ほとんどなかったかと思います。aiboの開発にROSを用いることは、藤田さんがジョインする前から決まっていたのですか?

藤田:はい、そこは決まっていました。社内的にも、ひとつの大きな挑戦だったのかなと。ただ、aiboのOSはLinuxとROSを併用していて、やはり組み込みの製品にROSを搭載するためには、最適化が必要だったんですよね。

コモ:それが通信周りでできていなかったので、問題が発生していたと。藤田さんはそこで、どのような対策を?

藤田:まず、該当部分のソースコードを読みにいきました。そうしたら「このROSのコード、明らかに書き換えた方がいいのでは?」という部分が見つかったんです。

ROSは自分たちが1からつくったものではないので、コードを部分的に改変すると、イレギュラーなエラーが発生し得る。その原因追求と対策が必要になれば、かなりのコストもかかるでしょう。こうした不確定なリスクを取って、オープンソースであるROSのコードをいじりたくない気持ちも理解できます。

コモ:それはおっしゃる通りですね。

藤田:ただ、僕は「改変した際に発生し得るリスク」と「改変した際に得られるメリット」を天秤にかけたとき、後者のほうが圧倒的に大きいだろうなと確信していました。実物のパフォーマンスを見せて議論する方が早いと思い、1週間くらいでプロトタイプを作って、速度の検証データをプロジェクトのメンバーに見せることにしました。

コモ:1週間、というペースが素晴らしいですね。1か月だといろいろ準備段階で余計な議論が入ってきそうですが。

藤田:アプリケーションを変更しなくてもCPUの使用率が確実に減るというメリットの大きさが分かれば、多少の面倒はあっても、コードを改変する方針が採用されるだろうと踏んでました。案の定、検証データを出したら、すぐに採用されることになりました。


まだ75%をゼロから自分らでつくろうとしてるの?

コモ:藤田さんはその技術をROS Conで発表されて、OSSのパッチとしてGitHub上にも公開されたのですよね。ROSの基盤的な役割を果たす「ノード間通信」の遅延を20%以上も高速化できるということで、当時のROSコミュニティが沸いたのも記憶に新しいです。

それと合わせて、個人的にはソニーのaiboの取り組みが、藤田さん個人のリポジトリに載ってるのが、なんか大胆でスゴいなって思いました(笑)。そもそも「ソニー独自の優位性として外部に公開しない」という選択肢もあったかと思うのですが、このパッチの公開について、会社とは議論されたのでしょうか?

藤田:お察しの通り、当初は「別に公表しなくてもいいんじゃないか」という意見もありました。ただ、部分的に改良したソースコードを内部だけで保持しておくことのメリットって、そんなに大きくないと思うんですよね。そもそもROSは “オープンなソース”ですし。

カンファレンスで発表してみんなに使ってもらったほうが、業界全体の発展につながり、回り回ってソニーの成長にもつながるはず。「公開したほうがシンプルにソニーに利するのでは?」と思い、そう会社にも伝えて、OKをもらいました。

コモ:あのパッチの公表は、ロボティクス業界でのソニーの存在感を確実に大きくしたと思います。ROSの導入を新たに検討する企業も増えそうだなと。

藤田:そうなったらいいなと思っています。「オープンソースは信用できない」という人もいますが、どんなツールやシステムも、取り入れるメリット・デメリットがある。最終的には、そのバランスで合理的に判断するべきと僕は思います。

たとえば、少々の手間とリスクを取るだけで、自分たちが満たしたい要件の75%を満たすことができるなら、使わない手はないはず。OSSって、まさにそういう存在だと思うんですよね。

コモ:すごく共感します。僕らもUnityが存在する理由を、クリエイターの皆さんには創造的な部分に集中できるよう、開発に必要な共通機能・要素や難しい問題解決をUnityがサポートすべき・・・と考えています。

藤田:だからこそ、基本的に共通項の多い要件については、みんなで力を合わせてブラッシュアップできるのが理想です。「ほしいものの75%がタダで手に入るのに、それを採用しないで、自分たちだけ0からでつくる」という判断は、よほど特殊な事情がない限りはしないと思うんですよね。その75%を、自分たちだけで独自につくり出すとしたら、一体どれだけの月日と費用がかかることか……。それに、あらゆるインターフェースを実装できるように、みんなで議論してつくりこんでいけば、みんなの利益になるわけで。

コモ:藤田さんのお話、敏腕システムベンダーの社長みたいで、すごく気持ちがいいです(笑)

藤田:えっ、そうですか。会社を経営する根性なんて絶対ないですけど(笑)。企業のOSSの有効活用は、今後どんどん広がっていってほしいですね。


基幹のアーキテクチャを制する者が、システムを制す

コモ:現在、藤田さんは、ソニーのサンノゼにある研究拠点に籍を置きながら、ROS 2 TSCメンバーとしてROSコミュニティに貢献されていますね。ソニーの看板を背負いながら、正式にROSにもコミットされることとなったわけですが。

画像3

藤田:言葉にすると大仰ですが、ROS 2 TSCメンバーとしてやることは、基本的に今までと変わっていません。時間のあるときにソースコードを読んで、改善点が見つかれば手を動かしてアップ、という。

コモ:TSCは、世界のロボティクスを牽引する企業や研究機関から集められた、ROSのエキスパートたちで構成されていますよね。アヴェンジャーズみたいでカッコいいなあと思ったりするのですが、TSCのメンバーってどうやったらなれるんでしょうか?

藤田:誰でも応募はできると思います。ただし、TSCになるための規定があるのと、最終的には現メンバーによって検討されます。
僕はちょっと特殊なケースで、現メンバーの皆さんから「なんでそんなにコントリビュートしているのにTSCにならないんだ?」と声をかけていただいて、入ることができました。

コモ:すごいエピソードですね……!

藤田:でも、ホントに特別なことは一切やってないんですよ。ROSへのコントリビュートに関しても、会社の通常業務の一環で、「この部分をそのまま放置したらソニーの製品に影響が出そうだな」と感じた部分を直していっただけなので。

ただ、ROSのAPIを叩く人たちは大勢いる一方で、ROSの本体をいじろうとする人は、今でも少ないです。僕は後者に興味を持ってアプローチしてきたので、強いていえば、そうした点で、メンバーの目に留まったのかもしれません。

コモ:プレイヤーが少ないということは、今後その領域で活躍できるチャンスは広がりそうですね。

藤田:そうですね。どんなに技術が進んだとしても、あらゆるシステムは基幹となるCPUのアーキテクチャからは逃れられないので。カーネルやOSの構造や動き方まで理解して、ハードやソフトとの調整、そして仮想化までできるプレイヤーは、今後も重宝されると思いますよ。

コモ:これからROSの活用を検討していく企業はさらに増えていくと思いますが、ROSのエキスパートである藤田さんより「ROSとの上手な向き合い方」について、何かアドバイスなどいただけたら嬉しいです。

藤田:そうですね……OSSはすべてを自分たちでコントロールできない難しさがあると思います。ROSをつくっていく一員として議論にキャッチアップしていくためには、コミュニケーション能力や語学力、テクノロジーの知識が不可欠です。そこに自信が持てないと、積極的にコントリビュートしようという気持ちも起りにくいかもしれません。

けれども、そこを乗り越えたら、世界中にめちゃくちゃ心強い仲間が増えます。多様な人たちがいて、まとまるのは大変ですが、チームとして一丸となったときのパワーは計り知れないものがあります。なので皆さん、いち使い手に留まらず、ぜひコミュニティで活発に発言してみてほしいなと思います。そこから繋がり、生まれるものがきっとあるはずです。


空の星へと続く“穴”

コモ:お話を伺ってて、藤田さんは何かこう、確固たるブレない思想がシュッと一本通っていて、終始カッコいいなあと感じていました。藤田さんが日々の仕事や生活のなかで大事にされていること、何か思い当たるものがあれば、ぜひ教えてください。

藤田:それで言うと、「完璧を目指すのではなく、日々の進捗を着実につくること」は、いつも意識していますね。

ソースコードを書くときって、最初から理想を追い求めすぎると、途端に手が動かなくなりますよね。一度に全部を完璧にしようとするのではなく、一行でも二行でもいいから「前よりうまく書けた」という進捗をつくっていくことを、ポリシーにしています。

コモ:完璧より着実な日々の進捗、いいフレーズですね。

藤田:あと、もうひとつ大事にしている言葉があって。Linuxの生みの親であるリーナス・トーバルズ氏が、2016年にTEDの壇上でクリス・アンダーソン氏と対談した際に、こんなことを話していたんです。

“……私はビジョナリーではありません。5カ年計画なんて持っていません。私はエンジニアです。歩き回っては雲を見つめ、星を見上げ、「あそこに行きたいものだ」と言う人々と一緒にいるのはまったく問題ありません。でも私の方は地面を見ていて、目の前にある穴をどうにかしたいと思っています——落っこちる前に。私はそういう人間なんです。”

この言葉、すごく理解できるし、共感しています。お話ししていて、コモさんにはバレていると思いますが、僕はそんなにビジョナリーじゃなくて。空の星の輝きよりも、目の前の穴のほうが気になっちゃうし、むしろ穴埋めが好きな人間なんです(笑)

それに、見つけた穴をひとつずつ埋めていったら、それが道になって、最終的に星に繋がっているかもしれない。今の点の積み重ねが線になって、自分の進むべき方向を指し示してくれる――リーナス氏の言葉を聞いて、僕はそういう考え方のほうが合っているな、って思えました。

コモ:すごく素敵だし、まさに藤田さんの今までの歩みを的確に言い表したような表現だなと感じました。

藤田:そう考えると、今の仕事とは、すごく相性がいいんですよ。OSSの穴埋めって、それを使う大勢の人たちの幸せに繋がるので、とてもやりがいを感じています。


さ〜て、次回のお友達はー?

コモ:大変名残り惜しいのですが、終わりの時間がやってきてしまいました。最後は恒例の「お友達紹介」です。藤田さん、どなたをご紹介していただけますでしょうか?

藤田:ティアフォーのエンジニア、片岡大哉さんとかどうでしょう?

コモ:ついに出ましたね、片岡さん。いつかお名前が出ると思ってました!(笑)

藤田: 僕が結構システム寄りの話だったので、次回はぜひ片岡さんから、自動運転などの最先端のアプリケーションの実践など聞いてもらえたらと。僕も気になります!

コモ:片岡さんに何か伝言はありますか?

藤田:ユーザ目線でのROS/ROS2の利用について、激辛なコメントを期待しています!

コモ:ご紹介感謝です。藤田さんのお話、私もひとりのエンジニアとして、大いに勇気づけられました!

それでは、本日のゲストは藤田智哉さんでした。ありがとうございました!

皆様、次回もお楽しみに 😎


※これまでの「ロボっていいとも!」は、こちらからお読みいただけます!


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!

最後までお読みいただきありがとうございます。ぜひTwitterもフォローしてください。