論文を書けなかった物理学者がOSS文化に救われた理由。元・京大助教がエンジニアになるまで【フォーカス】

2025年2月12日

レッドハット株式会社 シニアソフトウェアエンジニア

渡辺 優

1984年生まれ。2012年8月から2019年7月まで京都大学基礎物理学研究所で助教を務め、量子情報理論の研究に従事。2015年にGitHub上でsystemdへのPull Requestを送ったのをきっかけに、2016年から本格的にコミッターとして活躍するようになる。2020年5月から現職。systemdへの累計コントリビューション数は、レナート・ポッターリング氏に次いで世界で最も多い。
X
GitHub

趣味でsystemdにコミットしていたら、いつの間にか給料がもらえるようになった――。

自らの仕事について、このようにX上でつづっているのは、Red Hat社のシニアソフトウェアエンジニア・渡辺優さん。業務時間のほぼ全てを、Linux OS用システム管理ツール群「systemd」(※)の開発、メンテナンスやバグ修正に充てています。渡辺さんはもともと、趣味でsystemdコントリビューターとして活動しており、GitHub上での同リポジトリへの累計コントリビューション数は世界2位です。

趣味そのものが仕事となり、日々充実している様子の渡辺さん。実は、2012〜2019年までは京都大学基礎物理学研究所に助教として勤め、量子力学に関する研究の日々を過ごしていました。

なぜ、物理学者からエンジニアに? こう質問すると、渡辺さんは「研究者として成果を出せなかった私にとって、OSSは救いだった」と語りはじめます。いったい、どういうことなのでしょうか。悩める研究者は、どのようにして自分が輝ける場を見つけ、転身を果たしたのか。詳しい話を取材しました。

(※):systemdは、ドイツ出身のエンジニアであるレナート・ポッターリングさん(当時は米Red Hat社に在籍)らが開発し、2010年にリリースされた。「Red Hat Enterprise Linux」をはじめ、システム管理ソフトとして多くのLinuxディストリビューションに標準で搭載されており、Red Hat社のエンジニアらはリリース時からsystemdの開発において中心的な役割を果たしてきた。現在では、同社以外にもMicrosoft社やMeta社をはじめ様々なエンジニアが開発に積極的に携わっている。なお渡辺さんは、Red Hat社の日本法人であるレッドハット株式会社に参画している。

孤独と挫折。“日本一の天才たち”に囲まれて

――渡辺さんはどのような経緯で、systemdと出会ったのでしょうか?

渡辺:きっかけは、研究室で用いる数値計算システムを、私が管理していたことです。

量子力学に関わる途方もない計算量を処理するために、複数の計算機を結合してひとつのシステムとして扱う「PCクラスタ」(コンピュータ・クラスタ)を運用していました。これは、「Fedora」というLinuxディストリビューション(LinuxカーネルをベースとしたOS)で動作していました。このFedoraのシステムマネージャーとして標準搭載されているのが、systemdだったんです。

2015年のある日、PCクラスタを運用していると、私はsystemdのロギング機能に不具合があることに気がつきました。各マシンから出力される大量の動作ログを管理サーバへ集約しようとすると、時おり転送に失敗してしまうのです。そこで自分なりに原因を調べ、GitHubに登録し、初めてsystemdでバグ報告を行いました。

具体的にいうと、各マシンからログを収集する「journal-remote」という機能が動作して停止するたびに、ログの送受信用のソケット(通信口)も停止するのですが、次の送受信時にもソケットが閉じたままになってしまうことがあったんですよ。なので、「journal-remote」が再び動作するのに応じて、ソケットも再起動するように修正が必要なのでは? と。これが、最初のコントリビューションでした。

――研究室のPCクラスタが渡辺さんとsystemdをつなげたのですね。専門分野は物理学ですが、もともと、プログラミングができたのですか?

渡辺:ある程度、C言語に触れはしました。昔から、物理学にもコンピュータにも熱中していましたから。

私は高校時代、パソコン研究部に所属し、プログラミングコンテストに出場していました。様々な出題ジャンルのなかでも、重力の作用を計算し惑星が誕生する過程を演算する「N体シミュレーション」という問題が楽しくて、大好きでした。

そのうち「物理現象の過程を解き明かすのは面白い。もっと物理学を理解したい」と思い、東京工業大学(現・東京科学大学)の物理学科に進みました。情報工学の道も考えましたが、最終的には物理学をより専門的に学びたいと思ったのです。コンピュータのスキルは、あくまで物理学の理解や研究を行うための道具として用いよう、と。こうして学部時代から研究に打ち込み、途中で量子力学を専攻するようになり、博士課程まで修了。気がつけば、京大で助教をしていました。

その後の研究生活について語るとしたら、だんだん暗いお話になっていきます。

――なぜでしょうか? 順調にアカデミアの道を進んできたように思えます。

渡辺:助教になってからの私は、何もかもがうまくいかなかったんですよ。シンプルに、論文が書けないんです。新規性も解決可能性もある、筋のいい研究テーマが思いつかない。書き進めてみても、計算結果の解釈や理論構築の過程で破綻が見つかり、最後まで仕上げられない。そんなことを繰り返しました。

結局、7年間で「完成させた」といえる論文は1本だけです。

しかし他の研究者は各々、学術的にインパクトのある論文を、半年に1本といったペースで書き上げていました。京大の基礎物理学研究所といえば、物理学領域における国内トップクラスの頭脳が集まるような所で、若手研究者から教授まで学会で名を馳せる方々ばかりですから。

そんな面々のなかで唯一、何もできなかった私は、強い自己嫌悪に陥りました。「皆に『ダメなヤツ』って思われてるんだろうな…」などと勝手に考え、鬱屈としていたんです。PCクラスタの管理をしていたのには、お恥ずかしながら「せめて少しでも役立って、仕事をしているアピールをしよう」という、ネガティブな思惑もありました。

どうすれば現状を改善できるのかも全くわからず、研究所の門をくぐるのが日々、本当につらかったです。

――大変な思いをされていたのですね…。研究がうまくいかなかった理由は、どのように考えていますか?

渡辺:自分が思っていた以上に、私はひとりでは何もできない人間だからだと思います。内発的な動機づけを自分で高め、自発的に動き続けるのが、あまり得意でないみたいなんですよ。

研究職は、しばしば孤独な世界です。自分で設定した新規性の強いテーマに対し、答えを教えてくれる人がいない以上、自分で仮説検証、計算、論文執筆といった作業をしなくてはいけません。この作業において、私は高いモチベーションを維持し続けて研究に臨むことができなかったのです。

振り返ると、私が博士号の取得まで順調に進めたのは、指導教官のおかげでした。研究へのアドバイスもよくいただいたし、何より、モチベーターとしてとても親身になってくれる方でした。

私が行き詰まると「視点自体は良いから、ここを掘り下げてみたら?」とやる気を引き出し、だらけている時には「こら!」と発破をかけてくださった。こうしたサポートのおかげで私はどうにか助教になれたのに、教官という存在の大きさに気がつかず、「自分の力でここまでこれた」と思い上がっていたんですね。助教になってようやく「研究が手につかない。俺、ひとりだと全然ダメなヤツじゃん…」と気づきました。

そんな私にとって、systemdへの貢献は大きな転機となりました。OSSでの活動に、救われたんですよ

OSSコミュニティはコード1行で「感謝」をくれる

――systemdにおけるOSS活動が、なぜ救いとなったのでしょうか。

渡辺:鬱屈としていた私に、達成感と充実感を与えてくれたからです

話を、最初にコントリビュートをした時に戻させてください。「『journal-remote』に修正が必要かもしれない」と報告した時、レナート(systemd開発の中心人物であるレナート・ポッターリング氏)から返信がありました。

レナートが調査したところ、「journal-remote」の停止に連動してソケットも閉じてしまう根本原因は、systemd自体ではなく、「libmicrohttpd」という、通信処理を担う外部ライブラリの仕様でした。なので彼は「この問題は、ライブラリ側で修正するのが筋だ」と判断し、「libmicrohttpd」開発陣に問題を報告してくれました。

そして「libmicrohttpd」の開発者が、送受信を停止してもソケットを開いたまま維持するオプションを追加しました。レナートはそのオプションを反映するための修正をsystemdに施し、問題は解決しました。

このコントリビューションを通じて、私は「自分でより深く調査して適切な提案ができていれば、もう少しスムーズに改修してもらえたかもしれない。ただ修正を待つよりも、もっと積極的な姿勢で自分もsystemdの改善に挑戦した方が、結果的に早く済むんじゃないか?」と思うようになったんです。

その後、systemdのログ転送について調べているうちに、別の問題に気がつきました。ログが正しく転送されない原因のひとつに、「systemdが各マシンからログファイルを読み取るための適切な権限が設定されていない、というのもあるのでは」と考えたんです。そこで、必要な権限をsystemdに与えるための設定追加案をPull Requestとして作成し、送信してみました。

今度は、コアメンバーのズビッグ(本名はズビグニエフ氏)から、「その設定の追加は良い工夫だね!」と返信がありました。加えて、「でも冗長な部分がある。こうすると、よりシンプルにできるよ」と具体的なコードを提示してくれました。

…なんでもない普通のやりとりかもしれません。でも、私はレナートやズビッグらの対応に驚くとともに、深く感激したんですよ。

――感激した理由を教えてください。

渡辺:OSSの助け合いの文化について全く知らなかった私にとっては、彼らは「私を物凄く歓迎し丁寧に対応してくれている」ように感じたからです。どこの馬の骨ともわからない私の提案にできる限りの手を尽くし、システム開発の素人が出したPull Requesetを褒めつつ、GitHubの使い方やコードの書き方を親切に教えてくれる。「そんなに歓迎してくれるなら…」と恩を返したくなり、その後も積極的にコントリビューションを行うようになりました。

その後の活動で何より印象的だったのは、「ちょっとした貢献でも皆がとても感謝してくれるため、貢献をするたびに達成感に満ちる」ということでした。

学部時代から助教に至るまで、私の研究は、直接的に他人の困りごとを解決するものではなかったので、時間をかけて何かを成し遂げても、他人から「ありがとう!」と言われることは決してありませんでした。でもsystemdでは、ちょっとしたバグ報告や修正提案をするたび、様々なユーザーから感謝の言葉がもらえた。

何か月もかけて論文を書いても大した反応がないのに、systemdでは1行のコードで「Thank you!」と言ってもらえるんです。その言葉をもらえるたびに達成感が満ち、「これは気持ちいいぞ!」というモチベーションから、ますますのめり込んでいきました。

当時のレナートらからすると、積極的にsystemdに貢献する人自体が今より珍しかったぶん、些細な貢献でも余計にうれしいという背景もあったんでしょうけれど。いずれにせよ、systemdや彼らの存在は私にとって大きな救いでした。研究室では落ちこぼれでしかない私が、systemdに貢献している時間だけは充実した気分になれたんですから。

いうなれば、私はOSSに逃げたんですね。

――研究からの「逃避」行動とはいえ、本業の傍らでコントリビューションに熱中できるのも、そうそうできることではないとは思います。ではいつごろから、systemdを仕事につなげようと考えたのでしょうか。

渡辺:明確に意識するようになったのは、2017年ごろでしょうか。いつの間にか、研究への情熱よりも、systemdに関わり続けたいという思いの方が上回っていたんです。

研究では実績を残せず肩身が狭くなる一方で、systemdでは正式な開発メンバーにも加えてもらい「コミッターとして認められてきたな」と感じていましたから。

それに、助教のまま、年齢が30代半ばに差し掛かっていたのも大きかったです。大学の研究職には任期があります。講師や准教授へとステップアップできないと、いずれは満了し、研究所を去らなくてはいけません。目立つ実績がないと他の研究機関にも採用してもらえないため、満了と同時に無職、ということになります。私の場合、猶予は2、3年しかなかった。

研究実績のない自分の武器は、「systemd開発」だけ。人生を好転させるには、これを生かすしかない――。こう考えて、2017年に転職へ向けて動きはじめました。

――具体的には何をしましたか?

渡辺:真っ先に、レナートに「雇ってくれないか」と履歴書を送りました。なぜなら、彼は当時Red Hatに身を置いていた(2022年に退職)し、ズビッグも社員です(2025年2月現在も在籍)。大好きな彼らと一緒に働けるし、systemdの開発経験を仕事に生かすなら、やはりsystemdをはじめとしてOSS開発に力を入れているRed Hatで働くのが最適だと思ったのです。

しかし、返事は「今は会社の都合で雇うのが難しいみたいだ」というものでした。

残念ではありましたが、会社のリソースなど様々な都合があるでしょうし、私も本業としてはエンジニア未経験者でしたから、仕方のないことです。「ならば他の企業を受けよう」とすぐに気持ちを切り替えて、自分の実績をアピールするため、まずはsystemdへのコントリビューション数をさらに増やしました。

また、Linux開発者の国際会議に招待いただくたび、積極的に足を運んでは、片端から関係者に「所属企業に私が力になれそうなポストはありませんか?」と自分を売り込むようにしました。

こうして面接には進むことができたものの、私は何社も落ち続けることになります。

――なぜでしょうか?

渡辺:企業側が求めるものと、私のsystemdでの経験を、うまく結びつけられなかったためです。

本来、転職活動をするならば、自分の強みとスキルを棚卸しし、それらを生かせそうな会社を受けるのが普通だと思います。しかし、私はこうした基本的なことを怠ってしまいました。年齢からくる焦りで、Linuxの低レイヤー領域との関連性が薄いWebサービスやアプリ開発会社でも、片端から面接を受け、しかも「自分の武器はこれしかないから」と先走り、「systemdを開発しています!」というアピールばかりしてしまったのです。

せめて、systemdの経験がどうマッチするか適切に説明できればいいのでしょうが、面接官に「弊社はWebアプリ開発会社ですが、systemdでの経験と弊社での業務は、どのような関係がありますか?」と聞かれては、「…あまり関係ないかもしれません。でも、きっとお力になれると思います。不足している知識はこれから勉強します」と回答に詰まる。こんなやりとりを繰り返してしまいました。採用していただけないのも、無理もないでしょう。

こうして転職活動は難航を極め、研究とsystemd開発の日々を送りつつ、2年が過ぎました。年齢もついに30代半ばを過ぎ、ようやく「志望先はちゃんと、systemdと領域の近い企業に絞ろう」と転職方針を練り直しました。最終的にはLinux組み込み機器の開発会社に採用いただき、ようやくソフトウェアエンジニアとしての一歩を踏み出すことができました。

実務の現場では新しく覚えることが山積みだった一方、相変わらず業務時間外では趣味でsystemd開発を続けていました。

そんなある日、現在の上司から「君を雇えることになった。うちに来ないか?」と連絡がありました。5年かけて溜まりに溜まったsystemdへの貢献数が評価されてか、Red Hatから念願のオファーをいただいたのです。本当に幸運だったと思いますが、「systemdを続けてきてよかった」と強く思った瞬間でした。

“初コントリビュート”に真心をこめて

――それでは、現在のお仕事内容を教えてください。

渡辺:入社当初から、systemdの開発がミッションです。具体的には、社内やsystemdコミュニティから寄せられたバグ報告や機能要望を整理し、優先順位の高いものから対応しつつ、私からも機能拡張の提案を行い、実装をしています。

――研究でのお仕事と、エンジニアにおける実務のギャップでつまずいたことはなかったですか?

渡辺:思ったよりも、研究者とエンジニアの差異で苦しむことはありませんでした。物理学の研究とエンジニアリングには、頭の使い方において共通する部分が多いからではないかと思います。それは、物事の本質を見極める論理的思考力です。

物理学の研究では、数式や計算を通して自然界の法則を解き明かしていきます。ただし、数式や計算は、思考を補助するための道具に過ぎません。最も重要となるのは、複雑な事象から答えを見つけ出すために、ひたすら論理的な思考を繰り返す作業です。

それは、ソフトウェア開発も同様かと考えています。バグの原因究明や新機能の実装においては、プログラミング言語や開発ツールといった道具を用いて、複雑なコードに潜む矛盾や不整合を発見・修正し、システムを最適化します。そこにおいて大事なのは、やはり論理的な思考を何度も繰り返すことです。

そのため、研究者として複雑な現象を分析して本質を見抜く「トレーニング」を何度もしてきたことが、エンジニアとしての仕事でも大いに役立っています。

ただし情報工学を体系的に学んでこなかったため、基礎的なアルゴリズムやデータ構造の正式な名前を知らず、同僚を驚かせてしまうことはあります…。

――「論理的思考」という軸でみると、物理学もエンジニアリングも近いものがあるのですね。それでは、今後の目標についてお聞かせください。

渡辺:systemdで実現したいことが、山ほどあります。入社当初、systemdの改善案を記したToDoリストを5年分、上司に提出し「これを消化したら次のミッションを考えます」と伝えていました。しかし翌年も翌々年も改善案が新たに生まれてしまい、結局リストの残りは今も5年分のままです。他に面白そうなプロジェクトがあれば挑戦してみたい気持ちはありますが、しばらくはまだsystemdに取り組んでいきます。

また、systemdへのコントリビューターをもっと増やしていきたいという思いもあります。そこで、systemdに初めて貢献をした人には、あの日のレナートやズビッグを思い出しながら、できるだけ褒めて感謝を示しつつ、丁寧に「いいですね! ここをこうすると、もっと良くなりますよ」とフィードバックするように努めています。

せっかくなら、初めてコントリビュートした人には自分のように充実感を覚えてほしい。それに、もしもそれをきっかけとして再び貢献を行うようになってくれれば、結果的に自分たちの開発も楽になりますから。時おり、私がフィードバックした人がやる気になって再びコントリビュートをしてくれるのを見ると、とてもうれしくなります。

――最後に、不躾な質問ですが…。大学時代に物理学を学び研究者になったことへの後悔はないのでしょうか?

渡辺:全くない…とまで断言はしません。でも「結果としてはオーライだったな」と思っています。

もちろん、研究室に居た時には「なぜ俺はこっちの道に行ってしまったんだ」と頭を抱えることもありましたよ。最初から情報工学を学んでいれば、と何度も思いました。

でも、もしも最初から情報工学やエンジニアの道を選んでいたら、私はsystemdに「逃げる」ことはなかったし、Red Hatで働くこともなかったでしょう。良くも悪くも、今とは全く違う人生を歩んでいたはずです。

研究生活は苦しいことばかりでしたが、あの経験があったからこそ、今の自分がある。好きなだけsystemd開発に熱中できる今の環境は、本当に最高です。だからこそ――本当に結果論ですが――私は研究の道に進んでよかったと思っています。

取材・執筆・編集:田村 今人
撮影:赤松 洋太

関連記事

人気記事

  • コピーしました

RSS
RSS