Linus Torvaldsが語るカーネル開発とメンテナー⁠AIコーディング⁠そしてオープンであること ―Open Source Summit Japan 2023基調講演より

「ぼくはあんまりパブリックな場で喋るのは好きじゃない。でもDirkが用意した質問に、ぼくがこの場(Linux Foudation主催のサミット)で答えるスタイルなら、リラックスしながらいろいろなことを議論できるし、聞いている人たちにも楽しんでもらえると思っている。ちなみにDirkの質問内容は事前に聞かされていないよ」―12月5日、東京・有明で開催された「Open Source Summit Japan」⁠主催: Linux Foundation、12/5~12/6)のキーノートセッションには、久しぶりに来日した⁠Linux Creator⁠ことLinus Torvalds氏が登壇するとあって、早朝にもかかわらず多くの人々が会場に詰めかけました。

久しぶりに日本のカンファレンスで姿を見せたLinus Torvalds氏(左)、右は聞き手役のDirk Hohndel氏
久しぶりに日本のカンファレンスで姿を見せたLinus Torvalds氏(左)、右は聞き手役のDirk Hohndel氏

冒頭で紹介したコメントにもあるように、メディアインタビューなどにもほとんど登場することがないLinusが唯一、公式の場で本音を語る場が旧知の仲であるDirk Hohndel氏(Verizon所属)とのこのトークセッションです。今回で24回目となるこのセッションで我らが⁠The Linux Creator⁠はどんなメッセージを残したのでしょうか。本稿ではその概要を紹介します。なお、本稿では文中、Linus Torvalds氏を「Linus⁠⁠、Dirk Hohndel氏を「Dirk」と表記しています。

次期カーネルLinux 6.7の進捗

トークセッションの2日前の12月3日には、開発中の次期カーネル「Linux 6.7」の第4版となるリリース候補版「Linux 6.7‐rc4」が公開されまたしたが、Dirkの最初の質問はLinux 6.7のスケジュールについてでした。

Linuxカーネルは通常、約10週間(2ヵ月半)のサイクルでリリースが行われますが、このまま順調に開発が進めばLinux 6.7の公開は12月24日/12月31日/1月7日あたりが候補日となります。Linusは具体的なリリース日について言及することは避けたもののの、⁠クリスマス休暇は毎年、マージウィンドウの作業でデストロイされてしまっていたので、今年はそれがないからかなり楽」とコメントしており、Linux 6.7の開発自体はスムースに運んでいるようです。もっともその次のバージョンである「Linux 6.8」に備えるメンテナーやデベロッパにとっては年末年始にやるべき作業が膨大な量になりかねないことから「⁠⁠Linux 6.7リリース後にオープンする)Linux 6.8のマージウィンドウの開始はすこし遅れるかもしれない。年末年始はなるべくみんな休みたいだろうし」と話していました。

Linux 6.7については「退屈(boring)なカーネルになるだろう」とLinusはコメントしています。Linusは大きなバグやトラブルが発生しないカーネルをよく「boring」と表現しますが、セッションでも「退屈とは決して悪いことじゃない、むしろエキサイティング(exciting)なカーネルはバグが多くて大変なんだ」⁠boring kernel⁠の良さをあらためて強調していました。もっともLinux 6.7はboringではあるものの、新しいファイルシステム「Bcachefs」が実装されるため通常よりコミット数は増えており、比例してメンテナーの仕事も増えることになりそうです。

退屈(boring)は悪いことじゃない
退屈(boring)は悪いことじゃない

ワタシハラストチョットニガテ

ちょうど1年前となる2022年12月にリリースされた「Linux 6.1」では、Linuxカーネルの記述言語としてはじめてRustが採用されたことが大きな話題となりました。今後、LinuxカーネルにおけるRustサポートはどのように進んでいくのでしょうか。Linusは「Rustで書かれたコードは増えてはいるが、まだRustに大きく依存しているような部分はない」と語っており、本格的なRustサポートが始まるのは2024年以降となりそうです。⁠来年(2024年)になれば、いくつかのメジャーなドライバやサブシステムでRustの実装がはじまり、アクティブに使っていけるようになるはず。カーネルの主要な部分をサポートするようになるにはまだ時間がかかるだろうけど、徐々に形作られていくだろう」⁠Linus)

ここでLinusはRustのサポート拡大に対する自身のモチベーションについて次のように語っています。⁠ぼく個人にとってとても重要なこと、それはカーネルデベロッパとしての成長を止めないということだ。ぼくは新しいことにトライすることがとても好きだし、本当にエキサイトする。一方でカーネル開発は32年もやっていて、ずっと同じことをやっているといえるかもしれない。でもぼくにとってカーネル開発は⁠ずっと同じこと⁠じゃない。32年前のLinuxは明らかにいまのLinuxとは違う。それはぼくたちがそれぞれ、自分が新たにできることを追いかけてきたからにほかならない。Rustサポートもそうで、Rutが得意なデベロッパやメンテナーが徐々に拡げていってくれると思っている」

なお、LinusはRustに関しては「コードを眺めて書かれている内容を判断することはできるから、たとえばとてもじゃないけどカーネルに含めることができないようなぞっとするコードをマージさせないくらいのことはできる。ただ、認めるけど、それ以上は(Rustに関しては)できない」とコメントしており、Rustサポートに関しては他のエキスパートに多くを任せていることを明らかにしています。⁠ぼくはRustコードを管理するのには向いていない。まあ、Rustに限らないかもしれないけど。正直にいうと、最近のぼくはとてもプログラマとはいえなくて、自分では⁠テクニカルリード(technical lead)⁠と呼んでいる。ぼくは人々をマネージすることはできないからマネージャじゃないし、管理できるのはコードだけ。だからテクニカルリードがいちばんしっくりくるかな。いまのぼくの日々のワークはプログラミングじゃなく、ほかの人が書いたコードをマージすることで、それはRustに関しても同じ」⁠Linus)

“テクニカルリード”と呼んでね
“テクニカルリード”と呼んでね

変わってきたプロプライエタリベンダとの関係

ご存知の読者も多いでしょうが、10年ほど前のLinusはDirkがいうところの「expressive(表現豊か⁠⁠」な人物……というよりもかなり攻撃的で歯に衣着せぬ表現を多用することで知られており、ときには一部の商業ベンダやデベロッパに対してFワードを畳み掛けるように放つこともありました。もっとも2018年9月にLinusが「これまでの態度を謝罪し、改めたい」と明言してからは、そうしたキツい表現を聞くことはほとんどなくなっています。

昔に比べてずいぶんと丸くなったLinusですが、かつてはとあるハードウェアベンダに対して公の場で中指を立てたことがあるほど、商業ベンダとLinuxはきびしい関係にありました。現在のLinusはそうしたベンダに対してどんな思いを抱いているのか、Dirkが「きみのいまの悪者リスト(naughty list)には誰が/どこの会社が載っているのかな」と聞くと、Linusは「おっと、その話には乗らないよ」としながらも、⁠Linuxの商用環境は20年前と比べると格段に良くなっている。とくにハードウェアに関しては大きく変わった。昔はハードウェアに関するLinux関連のドキュメントを見つけることはほぼ無理だったし、明らかに(Linuxに対して)アクティブな敵意を向けてくる企業もあった」と振り返っています。

Dirk、その話には乗らないよ
Dirk、その話には乗らないよ

現在では多くのハードウェアベンダが率先してみずからドライバを書いてくれるようになるなど、20年前とはLinuxを取り巻く景色は大きく変わりましたが、それはLinusをはじめとするデベロッパやコミュニティメンバーが自分たちができることを追いかけ続けてきた結果だといえます。

People are hard, code is easy ―メンテナーの負荷と高齢化を考える

今回の東京でのサミットの3週間前、米リッチモンドにおいて「The Linux Kernel Maintainer Summit 2023」⁠Linux Foundation主催)が開催されました。このサミットは30名ほどのカーネルメンテナーを招待して行われる、限られた参加者のみによるカンファレンスですが、ここで大きな議論となったのが「メンテナーの負荷をいかに軽減するか」というトピックでした。

ここ1、2年、LF主催のイベントを含め、さまざまな場所でカーネルメンテナーの疲弊が取り上げられることが増えていますが、Linusはこの問題をどう見ているのでしょうか。Dirkが「個々のメンテナーのケアのためだけでなく、Linuxやオープンソースのエコシステム全体のためにもメンテナーの負荷軽減は重要だと思うのだが」とLinusに投げかけると、Linusは「たしかにその通りだが、現状では良い解決策をみつけることは難しい」としたうえで、その理由としてメンテナーになるにはある資質が求められることを挙げています。

「いつもそこにいる」ことの難しさ

「カーネル開発においてデベロッパを見つけることは難しくない。実際、新しいリリースの開発のたびに新しいデベロッパがあらわれる(その大半は次のリリースにはあらわれなくなるが⁠⁠。だがメンテナーはそうはいかない。多くの人々はメンテナーのことをなんでもできる⁠スーパーデベロッパ⁠と思っているかもしれないが、それは正しい解釈じゃない。メンテナーに重要なのは⁠他人が書いたコードを判断する⁠という資質で、この資質を先天的に備えている人もいるけど、たいていはプラクティスを重ねてようやくその資質を会得する。他人が書いたコードを読む、そのアプローチが良いか悪いかを判断する、そしてそれをコーディングした人に伝える ―これは長い年月をかけてようやく得られる能力であり、誰もがもっているものじゃない。加えて、メンテナーは⁠いつもそこにいる⁠ことが求められる。これはなかなか大変なことで、たとえば休暇を取りたくても他のメンテナーとスケジュールを調整しないといけない。ぼく自身は⁠いつもそこにいる⁠ことは苦にならない。なぜなら自分がやっていることが本当に大好きだから。数ヵ月前に休暇を取ったとき、ノートPCも一緒に持って行ったんだっけど、もし持っていかなかったら…たぶん(やることがなくて)すごく退屈だったと思う。でもそれはぼくの場合で、ほかのひとも同じようにできるとは思っていない。これまでの人生で捧げてきた大事なものがそれぞれ違うことは理解している」⁠Linus)

他人の書いたコードを読んで判断する、いつ、誰に、何かを質問されても答えられるように⁠いつもそこにいる⁠―Linusはカーネルメンテナーに課せられたさまざまな負荷を十分に理解しつつも、残念ながら「現状では良い解決策はない」としています。この件についてはメンテナーグループとも話し合いを続けているというLinusですが、その過程であらためて「People are hard, code is easy / コードを書いたり管理するのは簡単だけど、他人と関係性を築いていくことは難しい」ということを実感したと語っています。⁠オープンソースとはプログラミングであり、コミュニケーションでもある。ソーシャルスキルがあまりないプログラマなら、自分をガイドしてくれるメンテナーを探すべき。メンテナーはその人が書いたコードをトランスレート(翻訳)してプロジェクトにプッシュしてくれるから。ここでぼくが言っているトランスレートとは英語→日本語のような翻訳じゃなくてコンテキストのこと。プロジェクトのメンバーにその人のアウトプットを正しく伝えることができる、そういう能力をもったメンテナーの仕事は本当にタフだと思う。ラッキーなことに我々には良いメンテナーがたくさんいて、本当にありがたい」⁠Linus)

メンテナーの成長がコミュニティの持続を促す

メンテナーになるまでには長い年月が必要なことが多い ―それはすなわち、メンテナーの高齢化も意味することになります。Dirkが「きみもだいぶグレイヘア(白髪)が増えてきたけど、⁠会場にいたスキンヘッドのメンテナーのGreg Kroah-Hartman氏を指して)彼は髪の毛がなくなっているし、トップクラスのメンテナーはみんな年を取ってきているよね。これから5年先には60代、70代に入るメンテナーもいる。そのことについてはどう思う?」と人材の高齢化について質問を向けるとLinusは「たしかに先日のメンテナーサミットではグレイヘアのメンバーが増えていたね」とうなずきながらも、⁠サミット参加者の30人のうち、すくなくとも3人は30年以上の経験をもっている。Linuxがこの世に生まれてからずっと彼らはメンテナーであり、いまもメンテナーとして活動している。彼らはたしかにグレイヘアになって年を取ったけど、それはつまり我々のコミュニティが30年続いたという証でもある」と語っており、長い期間に渡って支えてくれたメンテナーこそがコミュニティを象徴する存在だとしています。

30年以上の経験を持つメンテナーがいるというのは、コミュニティが30年続いたという証でもあるんだ
30年以上の経験を持つメンテナーがいるというのは、コミュニティが30年続いたという証でもあるんだ

その一方で若手のメンテナーが育っていないわけではなく、カーネルサミットでも「Rustなどの分野では明らかにほかのメンテナーよりも若いメンテナーが参加していた」⁠Linus)ことから、いくつかの分野では若い世代が台頭する兆候も見えているようです。Linusによればメンテナーも分野により性格が大きく異なり、たとえばファイルシステムを担当するメンテナーは「とても慎重で保守的、なぜならファイルシステムにバグがあったらデータがすべて吹っ飛んでしまう可能性があるから、コードが100%正しいことを求める」という傾向があるのに対し、ドライバ(とくにGPUドライバ)を担当するメンテナーは陽気で細かいことは気にせず、若者も比較的多いとのこと。そして「時代の変化とともにメンテナーも成長してきた。たとえば⁠スキンヘッドのグレッグ(Ggreg-with-no-hair)⁠のようにね」とGKHのようなメンテナーとともに成長してきた事実こそが、Linuxコミュニティの価値であることをあらためて強調していました。トップメンテナーの高齢化はコミュニティが長く続いたことの証というLinuxですが、もしかしたらLinusの目には、すでに次世代のGKHになりそうなメンテナーの存在が見えているのかもしれません。

AIによるコーディング自動化は「それほど革新的じゃない」

2023年のIT業界は生成AIの話題に席巻された1年でしたが、LinusはこのAI/LLMのブーム、とりわけコーディングに及ぼす影響についてどう見ているのでしょうか。Dirkから「LLM(大規模言語モデル)によるコーディングの自動化は進むと思う?」と聞かれたLinusは「確信をもって答えるけど、Yesだね」と明言しており、生成AIによるコーディングが拡がることに疑いはないとしています。

しかし「コーディングの自動化じたいはずいぶん前から始まっている動きであり、とくに革新的というほどのことでもない」という見解も示しており、⁠毎日、AIのニュースが流れない日はないけど、ぼくがふだんやっている仕事とは別の場所で起こっている話だと思っている。ぼくはカーネルの開発を始めたときとから変わらずにいまもローレベルの世界にいる。コードはもうアセンブラすらほとんど書かないけど、それでもローレベルの世界にいることができている」と語っていることから、AI/LLMがカーネル開発のメインの部分に深く影響することはしばらくはなさそうです。

コーディング自動化とは別に、AI/LLMに期待するところとしてLinusはコードレビューにおけるオートコレクト機能の強化を挙げていました。⁠プログラムを実際に書いている人ならわかると思うけど、バグは毎日たくさん出る。ぼくもたくさんバグを書いてしまう。バカバカしいバグを見つけるために高いインテリジェンスを使う必要はまるでなくて、AI/LLMがさらっと見つけてくれるようになったらすごくありがたいと思う。たまにオートコレクトに頼ることをすごく馬鹿にする人がいるけど、ぼくは強化されたオートコレクトを実装したツールはすごく価値があると思っている」⁠Linus)

ぼくだってたくさんバグを出してしまう。AIに見つけてほしいよ
ぼくだってたくさんバグを出してしまう。AIに見つけてほしいよ

ここでDirkは「でもAI/MLにはハルシネーション(事実にもとづかない情報をもっともらしく生成するのリスクもある。人間の関与がない状態でAIによる自動化が進めば、ちょっと怖い世界になってしまうのでは? どんなバグが出て、それがどんなふうに我々の生活に影響するかわからなくなってしまい、大きくなったバグがコードを大きく変えてしまうかもしれない」とAI./LLMのリスクに関する質問を向けていますが、Linusは「うーん、LLMがあろうがなかろうが、バグは毎日出るものだからそこはあまり心配しなくてもいいんじゃないかな」とAIのリスクを過剰に見積もることに対して懐疑的、というよりもAIの影響を楽観視する姿勢であることを示しています。余談ですが自身の楽観的な性格について、Linusはこうコメントしていました。

「ぼくは(カーネル開発を始めた)32年前からずっと楽観主義者のままでいる。Jim(Linux Foundation ディレクター Jim Zemlin氏)が言ったオープンソース文化を表す⁠Helpful, Hopeful, Humble⁠のうち、HopefulとHumbleはぼくのミドルネームだといえるくらい、ぼくは楽観的でおろかな人間だ。自分のことを⁠世界中の誰よりも良いカーネルを書ける人間⁠と思い込めるほどにね。だからみんなも自分がやりたいことに関しては⁠ちょっとこれは楽観的すぎるかな⁠くらいの態度でいるのがちょうどいい。とくにその分野で他人と違っている必要があるときは、楽観的であることはとても重要だ」

少し楽観的すぎるくらいがちょうどいい
少し楽観的すぎるくらいがちょうどいい

Linux Foundationはオープンでニュートラルな活動ができる場所を提供してくれた

Linuxとともに生まれ、育ってきたオープンソースという文化は文字通り⁠オープネス(openess)⁠を前提に発展してきました。Linusが所属するLinux Foundationはまさにオープネスを体現する組織ともいえます。Linusは過去にいくつかの企業からリクルーティングされてきたことを明かしていますが、それらの企業の誘いはすべて断り、非営利団体のLinux Foundationに「もっとも注目を集める従業員」⁠Linus)として籍を置いています。Linusはなぜオープネスであることにこだわるのか ―「オープンであるということは大量のデータを保有する一部の巨大プラットフォーマーを利することにつながるのではないか」というDirkの質問にLinusは明確に「No」と否定したうえで、オープネスへの思いを以下のように語っています。

「ぼくがオープンソースをやってきて本当によかったと思うのは自分が自由でいられるからだ。自分の居場所で、自分の好きなこと(カーネル開発)に没頭できる、そしてそのほかのことは気にしなくていい。特定の企業に縛られることなく、ニュートラルに活動できる環境 ―Linux Foundationはそういう場所を提供してくれた。オープンソース、いやオープンソースでなくてもかまわない、⁠データやテクノロジを)オープンにしていくという考え方は30年前に比べると世の中に受け入れられるようになっている。ぼくがカーネルを開発したばかりのころ、周りの人々は⁠Why?⁠とか⁠どうやって儲けるんだ?⁠しか聞いてこなかった。いまはそんなことを言う人はひとりもいない。オープンであることの価値に疑いを抱く人はいない。実際、いろいろな産業ですでにオープンであることはスタンダードになっていて、なにか大きなプロジェクトがあるときはまず企業間で共通のオープンな場所を用意して、さまざまなデータやアイデアをシェアすることがいちばん良い方法だと認識されている。これはLinux Foundationの大きな功績だと思う」

いまやオープンであることの価値に疑いを抱く人はいない
いまやオープンであることの価値に疑いを抱く人はいない

Linusが指摘するように、Linux Foundationがこの30年に渡って果たしてきた役割は、オープンでニュートラルなコラボレーションの場を企業の垣根を超えて提供し続けてきたことに尽きると思われます。Linuxカーネルはもちろんのこと、社会のインフラとなる重要なオープンソースプロジェクトを育ててきたLinux Foundationの原点はオープネスにあることをあらためて実感します。

自分の目の前にあるものを正しく見ていないと躓いてしまう

セッションの最後、Dirkから「5年後、10年後の未来をどう見ているか」と聞かれたLinusは「その質問に対するぼくの答えはいつも同じ、⁠わからない⁠だ。ぼくはただのエンジニアで、自分の足元しか見ていない。だから未来を壮大に予測したりはしない」と答えています。この答えを受けてDirkは、Linusが32年前に最初のLinuxカーネルを投稿したメールを引き合いに出し「そうそう、きみはあのとき⁠このカーネルはただのホビーなので、大規模でプロフェッショナルなものにはならない⁠と書いていたよね」と返すと、⁠だからぼくは予測には向いていないんだってば」と未来を予測する気はないことをあらためて強調していました。

だからぼくの未来予測は当たらないんだってば!
だからぼくの未来予測は当たらないんだってば!

そのうえでLinusは、会場を埋めた人々に向けて最後にこうメッセージを送っています。

「ぼくはやらないけど、ロングタームの未来を予測する人がいることは良いと思う。ただしテクノロジの世界で5年後の予測をしてもあまり当たらないし、意味がない。でも先のことはわからなくても自分がどの方向に行きたいのか、その感覚を意識していることは必要だ。そしていま自分の目の前にあるものを正しく見ていないと、きっとこの先、躓いてしまい、山の頂上には決してたどり着くことができなくなる。もしかしたらここにいる人の中には、⁠テクノロジの世界で)大いなる野望を抱いていて、グレートジャーニーを果たしたいと思っている人がいるかもしれない。でもそれはただの始まりにすぎない。テクノロジの世界はとくにその傾向が顕著で、ひとつの成果だけでもって世界に大きな変化を起こすことはできないんだ。一足飛びに山の頂上にたどり着くことはない。自分の足元に存在するすべてのスモールステップを踏んでいくこと、頂上にたどり着くまでに必要なステップをすべて踏んでテクニカルな向上を図っていくことが大事」


時代とともに話題になるトピックは変わっても、Linusが語る言葉に込められた本質は驚くほど変わっていないことにあらためて気付かされます。30年以上に渡ってカーネル開発のリーダーを努めてきた⁠The Linux Creator⁠が5年後、10年後もテクニカルリードとして同じように日本に来てくれることを、そしておだやかな今年のクリスマス休暇を満喫できることを心から願っています。

おすすめ記事

記事・ニュース一覧