コミュニケーションが続く限り開発も続く─LinuxCon Japan 2016 2日目 Linus Torvalds氏の言葉

2016年7月13日~15日の3日間、東京、椿山荘にて、今年もLinux開発者の年次イベント「LinuxCon Japan 2016」が開催されました。世界中のLinuxカーネル開発者やメンテナーが東京に集うカンファレンスとして知られるLinuxConですが、今年は2年ぶりにLinuxの創始者Linus Torvalds氏が登壇しました。

「人前でしゃべるのは苦手なんだよね」といつものつかみとともに登場したLinusさん
「人前でしゃべるのは苦手なんだよね」といつものつかみとともに登場したLinusさん

Linus氏はここ数回の同イベントと同様、カーネルメンテナーのDirk Hohndel氏とソファに腰掛けての「放談」形式で行われました。例年、会場から募った質問にLinus氏が答える形でしたが、今年はあらかじめHohndel氏が用意した質問を元に進められました。そのためか、今回はよりカーネル開発の技術的な側面についてLinus氏のご意見を問う展開となりました。

この6月に15年近く務めたIntelを離れWMwareのChief Open Source Officerに就任したDirk Hohndel氏。⁠まだ今の肩書きに慣れていません」と苦笑しつつ自己紹介
この6月に15年近く務めたIntelを離れWMwareのChief Open Source Officerに就任したDirk Hohndel氏。「まだ今の肩書きに慣れていません」と苦笑しつつ自己紹介

「コミュニケーション力」がプロジェクトを支える

最初の話題は正式リリースに向けて準備が進んでいる最新カーネルLinux 4.7、そして作業中の4.8の開発について。Linus氏によると、4.7もいつものアップデートと同様新しいところがいくつかあるが、変わらないところの方がすばらしいと言います。⁠20年以上、24時間ずっと、ものすごく詳細な作業が行われている。その上で今日の状況がある」⁠Linus氏⁠⁠。

とはいえ、4.8ではLinusさんも驚くほどの改良が加えられているとのことで、⁠10年くらい前に、もうカーネルの開発は大まかなところでは終わったと思っていた。あとはユーザレベルで変化していけばいいと。でも、まだ根本的な変化が起こるものなんだと驚いて居るんだ」⁠Linus氏⁠⁠。

また、カーネル開発のリリースサイクルについては、現状1度のリリースで1万3,000ほどのパッチが書かれていて、その作業はたしかに労力が必要だが、カーネル開発には今でも多くの新しい人が加わってきていることを紹介し、このプロセスやスペースに限界が来ているとは思っていない(もっとリリースタイムを早めることも可能)と言いつつ、当面劇的に変わることもないだろうとのこと。

一方、いま最もホットな分野として、ARM版のカーネル開発については目を見張るものがあると言います。⁠ARMについてのこの数年の発展はすごいと思う。ただ、それもハードウェアがあっての進化、両方の進化がかみ合ってものすごく改善されている」とARMコミュニティ全体の成果を賞賛しました。そしてこの話題を受けて「テクノロジがものごとの変化を加速すると思っている人がいるけど、それは違う。過去と違うことをやろうとしたときにテクノロジが生まれる」⁠Linus氏⁠⁠。ハードとソフト、ビッグデータ処理への需要とクラウド等々、何もないところからテクノロジがポッと出で生じるわけではないということでしょうか。

次にLinuxのセキュリティについての話題になりました。カーネルの脆弱性排除への考え方に最近変化があったと別のセッションでJonathan Corbet氏が発表していましたが、同意するかと尋ねられたLinus氏、セキュリティは重要だと思うがそれにもバランスがあると答えました。⁠たとえばハードでできるうまくできる部分はハードのコミュニティが推進した方が良い。ソフトでやるべきじゃないこともある。セキュリティでもそれを考える必要がある」⁠Linus氏⁠⁠。ハードウェアのコミュニティがうまくカバーしている例として、ここでもARMを挙げていました。

さらに話を進め、プロジェクトが「動いている」間は何か問題が生じることがあっても大丈夫だと言います。⁠ずっと関わっているメンバーがいること、継続したディスカッションができることが大事。そのようなプロジェクトではコミュニケーションが活発ですが、コミュニケーションといっても直接対話するだけでなく、たとえばパッチを細かく見る、アップストリームで何かできないか、といった点でコミュニティの良さが見える」⁠Linus氏⁠⁠。まさに「開発者はコードで会話する」ということですね。そう考えるとGitの仕様もLinus氏が考える開発者間の理想のコミュニケーションへの提案と思えます。

次の質問は、Linus氏がかつてカーネル開発の第一のルールとして宣言した「Don't break user space」⁠ユーザスペースを壊すな)についてどう思うか? これには「誤解が多い」とひと言。⁠カーネルのプログラミングインターフェースを変更してしまうこと自体が悪いわけではなく、問題は変更した影響についてよくわからないでやっていること。⁠既存の⁠ユーザスペースを壊していないかが重要」と説明しました。それにまつわるエピソードとして、1年くらい前に不可逆的にプログラミングインターフェースを変更したところ、あるゲームが動かなくなったのを、半年くらいだれも(Linus氏に)教えてくれなかったとぼやくように告白しました。Linusさんに怒られるのが怖くて誰も言えなかったのかも…。

画像

メンテナーに必要な資質とは

このあたりから話題はコミュニティを長年引っ張ってきた秘訣に移っていきます。これまでを振り返って、イノベーションを阻害するような要因あるとすれば? という問いには「白か黒か、といったわかりやすいはっきりしたルールは無い」と言います。⁠昨日はうまく行ってたからといって、今日また同じことをして壊れたこともあった。20年作ってきたプログラムだと壊れても⁠戻せる⁠というのが強みだ」⁠Linus氏⁠⁠。

ここでLinus氏はLinuxがイノベーションを続けるにはメンテナーの腕が必要だと述べ、メンテナーのスキルの話となりました。よくLinus氏が口にする「Good Taste」⁠良いテイスト)が登場します。

「良いテイストというのは、良いセンスと言ってもいいけど、すべての人が持っているものではありません。たとえば建築物だと見かけも良くてモノも良い、機能性のある建物を作る人がいますが、見かけから⁠モノの良さ⁠⁠、中身の構造がよく見える人がそうじゃないかな。エンジニアのフィーリングにも同じような感覚が必ずあるんです。プログラマの中には、僕から見るとちょっと⁠趣味の悪い建物⁠を作る人もいる。同じことをやるにしても、もう少し良いやり方があるだろうと思ってしまうんです」⁠Linus氏⁠⁠。

カーネルメンテナーの人たちは、Lunusさんから見てもすばらしいプログラマ揃いとのこと。その上で、良いメンテナーに必要な資質として「人に任せることができる」点を挙げます。⁠コーディングを手放さない人が居るんです。細かいところまで自分でやらないと気が済まない。かつては僕もそうでした(笑⁠⁠。メンテナーの立場ならパッチは他からいくらでも取ってくることができます。それを必ずしも全部理解していなくても、背景を見通すことが必要。それができるのがメンテナーなんです」⁠Linus氏⁠⁠。…やはりかなりな能力を要求されるんですね。

そういうLinusさんご自身はどういう役割かというと「Makefileしか作ってないよ(笑⁠⁠。集まったパッチをメンテナーに渡すだけ。」と冗談めかしていましたが、プロジェクトのリーダーとして目を光らせるのが一番の仕事と言えるでしょう。自分の役割を自然に見つけていけるのもOSSプロジェクトの魅力というLinus氏、⁠僕が魅力を感じるのは、いろいろな人がいろいろなことに興味を持っていること。たとえば僕はプロダクト自体には興味がなく、テクノロジにしか興味がありません。プロジェクトの中には逆の人もいるし、別のこと、マーケティングにしか興味がない人もいる。普通の会社だと、興味のないことをやらなければいけなかったり、興味のあることを会社がやっていても、自分は関われないことがある。OSSではそんなことはありません。興味のあることに関われるのです」⁠Linus氏⁠⁠。

新しいコードを書くときの心得は? という質問に「まず最初に失敗しよう」とのお答え。プロジェクトが大きくなっていくにつれて失敗できなくなってくると言います。いまやLinuxはインフラから組込までさまざまな分野で使用され、投資額が大きいものなどはますます失敗できなくなっていると指摘、そうなると、初めからチャレンジングな取り組みを尻込みしてしまうのでは、と懸念しています。

最後は再びカーネルリリースの話に戻り、今の10週おきのカーネルリリースサイクルを変える気はないか? このまま2040年―さらに先まで続けられるのか? と問われたLinus氏は、今のところうまく行ってるから変える必要はないとのこと。⁠取り入れたいコードが今回間に合わなければ次回チャレンジすればいい。このサイクルで始めようとしたときは無理と言う人もいたけど、今はいやだと言ってる人はいないでしょ? 2040年までね(笑⁠⁠」―まだまだLinusさんもLinuxコミュニティも進化が止まりそうにありません。

おすすめ記事

記事・ニュース一覧