「これが世界か!」と打ち震えた。偶然出会ったLinuxカーネルで、メンテナーとして認められるまで【フォーカス】

2025年5月28日

Linuxカーネル メンテナー

森本 國文(もりもと くにのり)

1979年生まれ。博士(工学)。Linuxカーネル主要コントリビューターのひとり。2008年、茨城大学大学院理工学研究科博士課程修了。2008年7月よりルネサスエレクトロニクス株式会社にてLinuxカーネルへのコントリビュートを開始。現在、サウンドアーキテクチャ「ALSA」や、ALSAのサブセット「ASoC」を中心領域として、メンテナーを務める。カーネルの特定バージョンごとのコントリビューション数ランキングでは、「v4.17」(2018年)や「v5.3」(2019年)などで世界1位に輝いた。
GitLab:@morimoto.kuninori

「Linuxカーネル」への合計コントリビューション数が、日本国内に住む日本人で最多(※1)という実績を持つのは、半導体メーカー・ルネサスエレクトロニクス社の技師である森本國文さんです。

多用途の半導体を製造する同社は、組み込みLinuxのSoC(システム・オン・チップ)も手がけます。その品質を高めるため、森本さんはLinuxのサウンドフレームワークに関する分野を中心として、Linuxカーネル開発に貢献するというミッションに15年以上従事しています。

Linuxカーネルの特定バージョン(v4.17やv5.3など)へのコントリビューション数ランキングで世界1位になったこともある森本さんは、どのような経緯で、Linuxカーネルコントリビューターとして働くことになり、メンテナーにまで至ったのでしょうか。インタビューを申し入れると、森本さんは

Linuxとの出会いは、『偶然』です。きっかけは、研究室で紹介してもらえるはずだった働き口が閉じてしまったことでした

と語ります。それは「高校時代の夢」に「不況」といった、いくつかの巡り合わせが絡んだ、数奇な物語でした。

(※1):日本人全体の1位は独SUSE社に所属する、ドイツ在住のTakashi Iwai氏。

Linuxとの出会いと、“血反吐”を吐くような日々

――早速ですが、森本さんのキャリアの原点についてお教えください。

森本:原点は、高校生の時に抱いた2つの夢です。1つは、「工学で博士号を取得したい」。もう1つは、「世界的に名を残せるようなエンジニアになりたい」というものです。

そこで、高校卒業後は、実家から通える範囲というのもあり、茨城大学のシステム工学科(当時)という、機械や電気など工学を幅広く学べる学科に進みました。

私は「3D CGモデルを使ったロボット制御」について研究し、大学院を経て修士号も取得しました。

しかし、そのまま博士課程には進まず、いちど就職することになります。

――なぜでしょうか?

森本:背景は、不況です。

修士2年目にさしかかる2003年、まだ「就職氷河期」が続く中、ある日、研究室の先生にこう言われました。

ストレートに博士課程に進むのはやめておきなさい。博士号を取得するころには、27~28歳になる。将来、エンジニアにもなりたいんでしょう? 民間企業に入りたくなっても、この就職難、30歳近い新卒を雇う会社はそう多くない。そこで、まず就職して身を固め、社会人博士課程(※2)に進んだ方がいい

と。

もちろん、できれば高校生の時の夢はすぐに叶えたいものの、「その結果無職になる」というわけにもいきません。夢と現実との折り合いをつけるために、まずは就職して社会人博士課程を目指すことにしました。

他方で、その研究室には、推薦により毎年学生を送り出している企業への就職ルートもありました。なので、「就職活動はしなくていい」とも言われました。

(※2)社会人博士課程:企業などに勤めながら大学院の博士課程に進学し、博士号取得を目指すこと。

――そうして紹介されたのが、Linuxを扱う企業だったのでしょうか。

森本:いいえ、全くの無関係です。しかも、紆余曲折ありまして。

修士2年目の5月、突然、先生から「あの話はなくなった。今から就活をしなさい」と言われたんですよ。ちょうどその年、推薦先だった会社の採用方針に大きな変更があったそうです。

わけもわからないまま慌てて就活をしたら、医療機器メーカーから、機器用ソフトウェア開発職の内定をもらえました。

――その医療機器メーカーが、Linuxを扱う企業だったのでしょうか。

森本:これも違います。入社すると、社員からまず

「医療機器事業は2年前に撤退しました。これより君たちには、派遣社員として別の会社で働いてもらう

と告げられました。

なんと医療事業は赤字続きのため整理済みで、その会社はITエンジニア派遣業に移行していたんです。そして「医療機器メーカー」だと思って入社した人間を、技術派遣としてクライアントに送り込む、と。

――すさまじい状況ですね。

森本:そうして私が派遣された先が、半導体メーカーの「川崎マイクロエレクトロニクス」(2013年に株式会社メガチップスと経営統合)でした。

そこで、私は初めてLinuxに本格的に触れました

当時はLSI(大規模集積回路)の複雑化が進み、顧客の家電メーカーなどが自力で半導体を使いこなすのが困難になりつつあった。なので、「さまざまなソフトをシステムに統合済みで、『すぐに動かせる状態』の半導体」のニーズが高まっていました。

その半導体用のOSとして白羽の矢が立っていたのが、Linuxです。オープンソースでライセンス費用がかからず、顧客のニーズに合わせて自由にカスタマイズできるといった利点があったからです。

その流れの中で、川崎マイクロも、組み込みLinux製品の開発を始めようとしていましたが、社内はハードウェアの専門家ばかりで、Linuxを動かせる人間がほとんどいなかった。

そこにソフト面の知見を期待されて私が派遣された、というわけです。ただ、私は授業や研究を経てCやC++のスキルはあったものの、生粋のWindowsユーザーで、Linuxは名前を知る程度。組み込みOSの開発経験も、あろうはずがない。

しかし、派遣元にも派遣先にも頼れる人はいない。

仕方がないので、完全な手探り状態からスタートし、Linuxの構造から組み込みの実装方法までを勉強しながら開発に取り組んでいきました。

――社会人博士課程どころではないのでは?

森本:いえ、博士号は高校からの夢ですから。就職の翌年、社会人博士課程にも進学しました。

そこでの研究テーマは、CGを使い、金属加工用ドリルの動作を最適化するアルゴリズムを開発するというもの。

しかし、「社会人博士課程」であっても、入ってしまえばカリキュラム自体は普通の「博士課程」と同じです。そのため、普段は「社会人」として働いていても、フルタイムで研究している専業の大学院生と同じレベルの質の高い研究と論文を仕上げないと学会に認められず、博士になれません。

もちろん土日はフルで研究しますが、少しでも多くの研究時間を確保するために、平日にも仕事前と、仕事後に数時間程度、研究をすることにしました。しかし、会社ではまだ慣れていない上に、かなり高度な Linux開発に取り組んでいたため、毎回、疲れ切って帰宅した後での研究になります。ようやく終わって寝て起きたらまた研究、そして仕事……と、そんな日々を過ごしました。

――……大変ではなかったですか?

森本:あ、ノイローゼになるな」と確信しました。

そこで、研究のやり方を変えたんですね。平日は、実装作業等は行わず、シミュレーションやロジックの構築等を脳内で行い、「この課題の解決にはどんなアプローチがある? この手順で進めたらどうなる?」などと考え、頭の中で研究を進めるんです。

そして脳内でシミュレーションしていた内容を土日で一気に実装する。

こうしてなんとか3年で博士号を取得できましたが、人生の中で、あれ以上過酷な時期はなかったと思います。土日は毎朝、研究に向かう時間が近づくとストレスで「おえっ」とえずいていましたし、「血反吐を吐くとはこのことか」と思っていました。頼まれても、二度とやりたくはない。

▲森本さんはこの博士論文にて、「精密工学会」の「研究奨励賞」を受賞している

――途中で、仕事か研究のいずれかをやめようとは思わなかったのですか?

森本:あー。なかった、ですね。というより、今そう聞かれるまで、「やめる」選択肢が頭によぎったこともなかったです。博士号は夢でしたし、「やりきるぞ」ということしか考えていなかった。

それに、Linux開発にも魅了されていたので、退職などを考えることもありませんでした。魅了された理由は単純で、「『Linuxを開発しています』って、なんだかプロっぽいというか、コアな感じがするなー。かっこいいなあ」と思ったからです(笑)。

オープンソースとの出会い:「これが世界か」

――博士課程後は、どうしたのですか?

森本:博士号取得を機に、環境を一新しようと転職活動を始めました。

そして偶然、組み込みLinux関係のエンジニアを募集している半導体メーカーを見つけました。現職のルネサスエレクトロニクスです。

培ったスキルが生かせるし、私自身すっかりLinuxエンジニアを続ける気でいたので、すぐ応募しました。しかしこれも一筋縄ではいかなかった。面接官と、全く話がかみ合わないんですよ。なぜか「ITRON」(※3)の技術論や実装経験についてばかり質問されたんです。

お互い、何度も首を傾げました。

(※3)ITRON:日本発のリアルタイムオペレーティングシステム「TRON」プロジェクトの中で生まれた、組み込みシステム向けのリアルタイムOS。

――どういうことでしょうか。

森本:後から聞いたのですが、ルネサスはLinuxエンジニアの募集をすでに打ち切っていたのです。しかし誤って過去の募集要項が採用システム上に残っていて、それを見た私が応募し、さらに何かの手違いでITRONの関連ポジションに応募したことになっていたようです。

――そんなことがあるんですね。

森本:しかし、天は私を見放していませんでした。

当時のルネサスは、「会社を挙げてLinuxカーネルのメインラインへのコントリビューションを本格化させていこう」という機運が高まっていました。Linuxカーネル開発専門の部署を立ち上げ、オープンソースコミュニティへ貢献していこう、と。

なぜなら、ルネサス製の各種チップでLinuxを適切に動作させるためのコードを、Linuxカーネル本体にマージしてもらえれば、ルネサスのチップを使っている顧客は常に最新のカーネルで製品を利用でき、開発効率が向上する。それに、貢献を通して、企業としての技術力を社外に示し、製品の信頼性もアピールできる。こうしたメリットがあるからです。

とはいえ、Linuxと半導体領域の開発経験を持ち、オープンソースでの活動に理解もある人材はあまりいませんでした。

そこに、「半導体メーカーでの組み込みLinux開発経験」を持つ私が現れたため、本来すでに採用を打ち切っていたものの、もう少し私の適性を見極めたくなったようです。「もう一度、面接を受けてみませんか」という話になりました。

――当時の森本さんに、OSSの開発経験はあったのでしょうか?

森本:いいえ、オープンソースの文化も仕組みも、ほとんど知りませんでした。

しかし、その後の面接で「Linuxカーネルのメインラインにコントリビューションをしてほしいのですが、できそうですか?」と聞かれた時に、私は「今まで通りコードを書いて、Linuxのオープンソースコミュニティからレビューを受けるだけのことだよな?」と考え、「経験はありませんが、できると思います」と答えたんです。

すると、求めていた人材像とドンピシャにマッチしたと思われたようで。すでにLinux開発者用の予算はないはずなのに、関係部署が上を説得して追加の採用予算を獲得し、半ば押し込んでもらうような形で採用いただけました。

そうして、Linuxカーネルへのコントリビューションを専門とするチームに配属されました。

――Linuxカーネルへの貢献そのものが、当初からミッションだったのですね。実際にコントリビューターになって、いかがでしたか?

森本:最初のコントリビューションは、ひどいものでしたよ。8回もやり直しをすることになりましたから。

この時担当したのは、顧客に提供するリファレンスボードに搭載したカメラを動作させる、デバイスドライバーの開発です。このドライバーをLinuxカーネルに取り込んでもらうために、オープンソースコミュニティによるレビューを初めて受けました。レビュワーは、ドイツに住む、ロシア人の開発者でした。

自分なりに「十分な品質だろう」と思ってコードを提出したところ、そのレビュワーは、コーディングスタイルや潜在的なバグの可能性、コメントの記述方法に至るまで「これ、違う。直して」と細かく指摘を行い、最終的に修正回数が8回に及んだのです。

――森本さんは当初「OSS開発は未経験だが、自分にもこなせるだろう」とお考えだったんですよね。8回の手戻りを経験して、どう感じましたか?

森本:感動しました。「これが『世界』か!」と。

前職では、開発したソフトウェアが社内の基準を満たし、期待通りに動作すればゴールでした。レビュープロセスも社内の関係者が中心の「閉じた環境」です。

でも、オープンソースコミュニティという、グローバルに開かれた場では、世界中の「猛者」たちがコードをレビューします。そこで書くコードは、ただ動作すればいいというわけではなく、世界中の人々が正常にLinuxを使い続けられるように、カーネル全体の設計思想との整合性、多様なハードウェア環境での互換性、そして将来にわたるメンテナンス性や可読性といった、より多角的で厳しい基準が求められます。そうして、何度もダメ出しを食らったわけです。この経験は強烈でした。

同時に、このレビュワーが何度もレビューをしてくれたことに、私は深く感謝しています。もしもこの時すんなり通っていたら、私は「Linuxカーネル本体の開発といっても、こんなものか。世界もちょろいな」と天狗になっていたかもしれないからです。

オープンソース開発の厳しさと世界の広さを痛感させてくれたこの経験は、非常に貴重なものとなりました。

リーナス・トーバルズ氏の激怒がもたらしたもの

――その後、どのような開発業務を担当していったのですか?

森本:しばらくは、ルネサス製チップに搭載されているあらゆるデバイスをLinuxカーネルに対応させるために、各種ドライバーを開発し、メインラインにマージしていく作業が中心でした。

基本的なドライバーの開発がひと段落したころ、「会社として、もっとLinuxの開発力を高めていこう」という話になりました。それまで各エンジニアが広く浅く、他分野にわたって開発を担当していましたが、さまざまな分野の専門家を世界中からスカウトし、「CPUコア」「I/O デバイス」「マルチメディア」といった、各専門分野に特化したスペシャリスト集団を立ち上げたのです。そのメンバーの中には、Linuxカーネルのメンテナーも含まれていました。

この時、私が担当することになった専門分野は、「サウンド」でした。「サウンド」や「ビデオ」といった分野は非常に複雑で分かる人が少ない上、それまでも社内では主に私が「サウンド」部分の開発を受け持っていたため、そのまま担当することになりました。一方で、それまで私が並行して担当していた別の範囲については、全部新しいメンバーに引き継いでお任せすることになりました。

――サウンド、というと具体的には?

森本:例えば、ルネサスは車載SoCの「R-Car」という製品を手がけています。R-Car上でLinuxを動かす場合、カーナビの音声案内やハンズフリー通話といった複雑なオーディオ機能を、高品質かつ安定的に制御するサウンドドライバーが必要になります。こうしたドライバーを開発していったのです。

また、途中から、Linuxカーネルのサウンド機能全体に関わるフレームワークを担当するようにもなりました。標準サウンドアーキテクチャの「ALSA(Advanced Linux Sound Architecture)」と、それを組み込みシステム向けに最適化させた「ASoC(ALSA System on Chip)」のことです。

現在でも、私は主にこれらのフレームワークへのコントリビューションを担当しています。

――フレームワークということは、ルネサスに関連した個別のドライバーから、Linuxカーネル全体へと、貢献範囲が広がったということですよね。何かきっかけがあったのでしょうか?

森本:はい。転機は、2011年頃に、Linuxカーネル作者のリーナス・トーバルズ氏(※4)が激怒した「事件」です。

当時はスマートフォンの普及拡大期で、スマホ向けCPUとして主流の英ARM社製チップが注目され、多くの半導体ベンダーが、スマホ以外の組み込み製品にまでARMアーキテクチャを採用しはじめていました。

それに伴い、ARM関連のパッチが、各社からLinuxカーネルのメインラインへと送られるようになりました。しかしそのうち、ARMを搭載した製品が爆発的に増加し、各社が自社向けのコードを無秩序に増やしたため、全体のメンテナンス性や品質を著しく低下させてしまった。それに対し、ある日リーナス氏が「いい加減にしろ!」と激怒したんです。そんな無秩序な修正をマージするのはばかげている、と。

その怒りぶりを受けて、「このままだと今後パッチを取り込んでもらえなくなるのでは?」とコミュニティは大騒ぎになり、ARMチップを扱う各社は対応に追われました。

そこで、各社のチップごとにコードが乱立する問題を解決し、Linuxカーネルが多様なハードウェア構成を効率的に扱えるようにするため、「デバイスツリー」という仕組みを活用していくことになりました。これは各社のハードウェアの構成情報を整理して記述したデータ構造体で、OS起動時にカーネルがこれを読み込むと、各デバイスを正確に認識し制御できるようになるのです。

――一連の出来事が、森本さんのサウンドフレームワーク開発にどう影響したのですか?

森本:まず、カーネル全体で、各種ドライバーを新たにデバイスツリーに対応させる必要性が生じました。私が担当していた汎用サウンドカードドライバー(ASoCを用いるベンダー各社が利用可能なドライバー)も、同様です。

そしてある日、私は問題に気づきました。元々のASoCのフレームワークは、長い歴史を経て徐々に形づくられてきたもの。逆にいうと、何か明確なゴールを目指して設計されたものではありませんでした。そのため、突然対応に迫られることになった「デバイスツリー」とは構成が合わず、そのままでは連携できないのです。私が開発していた汎用サウンドカードドライバーが最初に本格的なデバイスツリー対応を試みたドライバーだったため、真っ先にこの問題に直面したわけです。

この問題をコミュニティ内で提起したところ、「ASoCフレームワーク全体のデータ構成を見直す良い機会だ」ということになり、さまざまなアイデアが飛び交いました。

ただ、フレームワークを変えるということは、そのフレームワークを利用している全てのドライバーに影響が及ぶので、影響範囲がとても広く、慎重な議論と実装が必要でした。下手をすると、「全ベンダーにおいてサウンド機能が使えなくなる」ということさえ起こりえます。

しかし、その議論に参加した面々の中で、フレームワークレベルでのデバイスツリーへの対応の必要性を強く訴え、なおかつLinuxのサウンド仕様の技術的な詳細を把握していた人は、たまたま私だけだった。すると「じゃあ森本さん、頼んだ」との形で、気がつくと、私がサウンドフレームワーク全体の修正を任されることになっていました

(※4)リーナス・トーバルズ氏:フィンランド出身のプログラマ。Linuxカーネルを開発し、1991年に公開した。

――突然、大仕事を。

森本:はい。1年間に及ぶ議論をしつつ、最終的には約200ものパッチを書いたと思います。こうして私は「ALSA」「ASoC」のメンテナンスに深く関わるようになりました。

デバイスツリーへの対応がひと区切りついた後は、サウンドフレームワーク全体のクリーンアップを開始しました。OSSの良いところは、誰でも開発に参加できる点ですが、その反面、全体のコードを細かく把握している人がいないことで、無駄なコードや、冗長なコードも大量に生まれがちです。「ALSA」や「ASoC」もそのような状況にありましたが、そういった部分を見つけ出し、片っ端から修正していく作業は、パズルを解くようで非常に面白かったですね。

このクリーンアップ作業は、現在でも続けています。誰にも気づかれることなく10年以上も存在し続けていた無駄なコードを削除するために、フレームワークの構造を大幅に見直すような大改造を行ったことも何度かあります。

――そうしてコントリビューション数が激増し、森本さんの名前が、コミュニティで知られるようになったんですね。バージョンによっては、その数が世界1位になるほどの貢献を重ねていますが、モチベーションは何なのでしょうか?

森本:やっぱり、面白いからですよね。

まず、公表されているコントリビューション数ランキングの上位に名前が載るのは「かっこいい」感じがして、承認欲求が満たされます(笑)。なので、単純に「このバージョンではコントリビューション数上位をねらえそう。よし、がんばろう」と意識して臨むことは、もちろんある。

でもそれ以上に、Linuxカーネルという世界で、高い技術力を持つ、名だたる「すごいヤツら」に自分の書いたコードが認められる、というのが何よりの喜びです。

確かに累計のコントリビューション数だけ見ると、私はかなり多い方でしょう。しかし、Linuxカーネルの開発に関わる技術者たちには、「こりゃ勝てないな」というぐらい、技術的な守備範囲が広くて深く「何でも知っている」「どんなことでも分かる」ような人がゴロゴロといるんです。

そんな彼らと対等に議論し、時には自分の意見が採用される。これは本当に、エキサイティングなことです。「自分は『世界』に認められている!」と心の底から思えるからです。それがうれしくて、何度もコントリビューションを重ねてきました。

すべては夢につながった

――不躾な質問ですが、「Linuxの開発者になるならば、最初から、情報工学を専門的に学んだり、研究テーマに据えたりすればよかった」などと考えたりすることはないのでしょうか。

森本:ないです、ね。

研究内容自体は今の仕事に直結してはいませんが、Linux開発と並行して社会人博士課程をやり遂げた経験は、私の中で非常に大きいものです。「あれより辛い経験はないだろう」という自信が、あらゆる困難を乗り越える原動力にもなっているんですよ。

それに、あの研究室に進んだからこそ、今の私があるわけです。

確かに、Linuxとの出会いもコミュニティで活動するようになった事もただの偶然でした。それでも、人生におけるそれぞれの重要な分岐点において、毎回自分なりに考え、目の前の課題に取り組んでいたら、Linuxのオープンソースコミュニティという、世界中の猛者の皆さんに認めてもらえるようになった。

そうして気がつけば、高校時代からの夢だった「博士号の取得」と「世界的に名を残せるようなエンジニアになること」の両方が叶っていたのです。

――数々の巡り合わせがありつつも、毎回、目の前の挑戦に全力で取り組んでいったことで、高校時代からの夢がどちらも実現した。結果として「すべての経験が、自分にとっては良いことだった」と感じているのですね。

森本:本当に、そう思っています。

――最後に、今後の目標についてお聞かせください。

森本:技術を、後世のために残したい」という思いが強いです。長年の積み重ねを通してここまで発展したLinuxという基盤技術が今後、後発の技術にいきなり置き換わることはないと私は思っています。きっと少しずつ形を変えながらも、社会を支え続けていくでしょう。

だから私もオープンソースコミュニティという技術継承の場を通して、少しでもより多くの良い影響を残していきたい。そんな思いでこれからもまだまだ、Linuxカーネルへのコントリビューションを続けていきたいです。

取材・執筆・編集:田村 今人
撮影:曽川 拓哉

関連記事

人気記事

  • コピーしました

RSS
RSS