第2回 LinuxカーネルとRuby、異なるコミュニティにコミットして見えたもの
星暁雄(ITジャーナリスト)
2010/9/28
■Ruby開発でLinuxカーネル開発の経験が生きる
――RubyとLinuxカーネル、開発で違うところはありますか。
小崎 カーネルとユーザー空間のOSSは、それぞれ違う種類の難しさがあります。Rubyは、いろいろなOSのバグを回避しないといけない。なので、「汚いコードが残る」ということがままあります。そこはカーネルと違うところで、「バグがあるから直そう」と好き勝手できるわけではないのです。
バックグラウンドが違う人と話をすると、インスパイアされますね。Rubyコミュニティは、やはり言語処理系に興味がある人が多い。わたしの場合、言語処理系は分からないけれど、OS依存のコードは分かります。なので、libc(標準ライブラリ)を全部読んで、漏れがないか確認すると喜ばれますね。
あと、あるバグの解決で、Ruby側では直せないから「Linuxカーネル側を直しておきます」といったら喜ばれました。Rubyの場合、I/O(入出力)系が歴史的な事情で入り組んでいます。特に、Ruby 1.9で実装が変わった。I/Oは性能が欲しいし、チューニングすると特殊なバグに遭遇することもある。そこで、OSの方を直しました。
──その場合、Linuxカーネル・コミュニティの方でも「そこは直した方がいい」という合意が必要だったわけですよね。
小崎 Linuxの場合、多少のバグでも「世の中のたくさんのアプリケーションがそのバグ前提で動いている」という理由で却下される場合が多いです。でも、「多くの人に影響があるから直そう」「副作用は限定的」と説明できれば通りますよ。Rubyは海外でも有名で、特にデンマークの人たちが好意的だったので修正できました。
■Rubyコミュニティは紳士的? 両コミュニティの違い
──LinuxカーネルとRubyのコミュニティは、どんな違いがありますか。
小崎 Rubyコミュニティはとにかく「紳士的」ですね! メールの返事がちゃんと来るし、1行で却下されたりしません。
これは、「Rubyコミュニティが日本語で運営されている」事情があるかもしれません。日本語だと短い言葉では意図が伝わりにくい。ただ、ruby-core(英文のRuby開発者メーリングリスト)も、言葉使いがLinuxコミュニティとは違いますね。
エンジニアライフ コラムニスト募集中! |
あなたも@ITでコラムを書いてみないか 自分のスキル・キャリアの棚卸し、勉強会のレポート、 プロとしてのアドバイス……書くことは無限にある! コードもコラムも書けるエンジニアになりたい挑戦者からの応募、絶賛受付中 |
Linuxカーネル・コミュニティの場合、カーネルに興味がある人は限られているし、発言者はほとんどが開発者です。いきなりパッチをポストしても、反論を論破できたらマージされます。最初から、メーリングリストは「ディベートの場」として機能しています。
一方、ruby-coreでは、Rubyを使っている人が「こんな不便なことがあった」という形で報告する話の始まり方が多い。コミッタたちが修正や新機能を提案するときも「皆さんの意見を聞きたいなあ」みたいな形でメーリングリストを使っています。
■新機能の取り入れに対する姿勢
──新機能の取り入れに対する姿勢は、どのように見ていますか。利用者が多いOSSはある程度は保守的にならざるを得ませんが、一方で革新を取り入れていかないとコミュニティが元気でなくなってしまうと思います。
小崎 Linuxの場合はある程度の歴史があって、5年前の古いカーネルを使っていても特に困らない。そういうこともあってか、リーナス(Linux開発者リーナス・トーバルス氏)は新しい機能でも気にせずコミットしますね。ABI(アプリケーション・バイナリ・インターフェイス)、つまりユーザーランドとの互換性は可能な限り保つが、細かい仕様はかなり変わる。あとはそれぞれのLinuxディストリビューションの方で入れるか入れないか決めてね、という形です。実際、品質が良くないリリースもまれに発生しています。
一方、RubyはLinuxに比べるとコミュニティそのものが若いので、事情が変わってきます。CentOSとかに入っている古いRubyなんて、誰も使ってないですよね。リリースしたらちゃんとユーザーが使ってくれるので、気が抜けない。Ruby 1.9.2に関しては、革新的ではない方向にジャッジメントを振っている点が革新的だと思います。Ruby 1.9.2を安定版として多くのユーザーに推奨している、という事情もありますね。
──リソース、人手の問題もあったのでしょうか。
小崎 わたし個人としては、Rubyコミュニティのリソースが手薄だとはあまり思っていません。確かに、Linuxコミュニティはパッチを1回だけポストする人が多いという意味では活発ですが、彼らは良くも悪くも一見(いちげん)さんなので、バグ報告が来た場合は別の人が対応する必要があります。バグ修正で面倒を見てくれる人は、数が限られています。そういう点で、Rubyコミュニティと大差ないと感じています。
ただ、Rubyコミュニティの場合、日本人的なまじめさのためか、バグ報告をあまり門前払いせずに事細かに対応して負荷を上げていることはあるかもしれません。
■大事なのは「信頼の輪」だ
──OSSコミュニティの運営をうまく進めるための法則はあるのでしょうか。属人性が強いように思います。
小崎 属人性が強いというのは、そのとおりだと思います。開発者イベント「Linux Kernel Summit」に呼ばれる開発者は100人もいません。ほかのコミュニティでこれより大きなところはないでしょう。つまり、それぐらいの人数で運営されている。
大事なのは、「信頼の輪」です。「この人のレビューは信頼できる」「この人のパッチは信頼できる」――そうした信頼の積み重ねがなければ、コミュニティによる開発はできません。
メーリングリストの運営で難しいのは、すそ野の広げ方です。全然分かっていない人の声をもしシャットダウンすると、変な方向に向かってしまう危険があります。一方、エンドユーザーの意見をうのみにはできない。彼らは、自分のユースケースがどの程度一般的なのか、また要求している変更で困る人がいるかどうかを知らない場合が多いのです。このあたりの付き合い方は、Linuxカーネル・コミュニティもRubyコミュニティも、100点ではない。
──コミュニティとしては、どんどん新しい人に来てほしいということはありますか。
小崎 ほかの人が持っていない知識を持つ人は歓迎されます。コミュニティによる開発で一番困っているのは、ユースケースの合意形成です。ある機能に対して、どういう使い方があって、どう役に立つのか。こういう問題は、人が多いと知識が増えていきます。もちろん、開発者コミュニティなので、最低限の知識がないと会話が成立しないということはありますが。
──企業に所属する開発者としての立場と、OSS開発者としての立場、両方あると思うのですが、どのように使い分けているのでしょうか。
小崎 企業の中でOSS開発者として活動する以上、会社の理解は欠かせません。個人的な意見ですが、自分の会社の利益になることばかりいっていると、コミュニティでの信頼、社会的地位を失うというリスクがあります。自分が入れたい機能があれば、それなりにコミュニティに「お返し」をして、「信頼の輪」に参加する。それはOSSコミュニティに関わるうえで避けられないことだと思っています。
──ありがとうございました。
@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。
現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。
これからも、@IT自分戦略研究所をよろしくお願いいたします。