第2回 LinuxカーネルとRuby、異なるコミュニティにコミットして見えたもの
星暁雄(ITジャーナリスト)
2010/9/28
小崎資広氏は、Linuxカーネルの開発コミュニティと、Ruby開発者コミュニティにコミットしている。Linuxカーネルコミュニティは開発者中心でディベートが多く、Rubyコミュニティは紳士的? OSと言語、異なるコミュニティに参加したエンジニアが、運営方法やコミュニティ文化の違いについて語る。 |
連載「Linux Karnel Watch」の筆者である小崎資広(こさきもとひろ)氏は、Linuxカーネルの開発コミュニティとRuby開発者コミュニティの両方でコミッタとして活動している開発者である。オープンソース・ソフトウェア(OSS)のコミュニティは、どのように運営されているのか。そしてLinuxとRubyという成功した2つのコミュニティには、どのような個性の違いがあるのか。小崎氏に話を聞いた。
■Linuxカーネル・コミュニティに参加した経緯
──まず、Linuxカーネル・コミュニティに参加した経緯を教えていただけますか。
小崎 カーネル開発者として参加するようになったのは、2005年に富士通へ転職してからです。
前職では、組み込み機器向けにLinuxをカスタマイズする仕事をしていました。そのころは、組み込みソフトウェア開発の分野で「既製のOSを流用してコストを削減しよう」というもくろみからLinuxを採用する動きが盛んでした。ただ、実際にはバグが出ることが多く、OSの内部まで見て直さないといけないことがよくありました。
富士通に入社してからは、HPC(ハイパフォーマンス・コンピューティング)分野でLinuxにかかわりました。組み込み開発とHPCの両方の分野を経験したことは、Linuxカーネル・コミュニティで大いに役立っていると思います。
エンジニアライフ コラムニスト募集中! |
あなたも@ITでコラムを書いてみないか 自分のスキル・キャリアの棚卸し、勉強会のレポート、 プロとしてのアドバイス……書くことは無限にある! コードもコラムも書けるエンジニアになりたい挑戦者からの応募、絶賛受付中 |
組み込みやHPC時代にもいくつかのバグを修正しましたが、この時代につくったパッチの多くはアップストリーム(オープンソース・ソフトウェア開発の本流)に戻せていないんです。特殊な組み合わせに対応したパッチなので、パッチを当てると通常のPC環境では動かなくなってしまう場合があるからです。これは自分の中で苦い経験として残っていて、ニッチユースケースの共通項をくくり出してアップストリームで合意をとるテクニックを培うのに役に立ちました。
いま、Linuxは実にいろいろな分野で使われています。スパコン分野はLinuxが制覇しましたし(参考)、家電分野やサーバでも大きなシェアを持っている。一番上のレイヤから一番下のレイヤまで浸透しているわけです。いろいろな経歴の人がLinuxカーネル・コミュニティに参加しているため、議論が錯綜(さくそう)しがちになることがしばしばあります。わたしは「組み込み」という上部レイヤと「HPC」という下部レイヤが分かるため、誰とでもそれなりに話が通じます。なので、コミュニティ内では「議論の整理ができる」と重宝されますね。
■メーリングリストベースで開発をしてうまくいく理由は「信頼の輪」
──立場が違う人々の議論をまとめて結論を導くのは、大変な仕事です。メーリングリストだけで議論できることが、部外者からは不思議に見えます。
小崎 もちろん、参加している人全員が自分の意見を主張していたら大変ですが、着地点を探しているなら大丈夫です。技術的なことを話すときはお互い最高のものを目指そう、それ以外のところではいろいろな人に対して有意義な機能にしようと思って議論しています。
──目的を共有しているわけですね。
小崎 そういうことです。
──OSSコミュニティは、主にメーリングリストで議論をして結論を出して開発を進めていきます。どうすれば、こういうやり方でうまくいくのでしょうか。「根回し」が必要な場合もあるのでしょうか。
小崎 根回しは大いにありますよ。年に何回かLinuxのカンファレンスがあるので、そこで集まって議論することがあります。事前に「こういうことをしたいんだけど」と発表しておいて、そのネタが後で議論の材料になるわけです。
ですが、基本的には「メーリングリストを読めばすべて分かる」形になっています。なぜうまくいくかを説明するのはなかなか難しいのですが。理由を一言でいうと「信頼の輪」を広げていく形で進めていくからでしょうか。「この人の修正だったら大丈夫だろう」とか、「この人がレビューでOKを出していたら大丈夫だろう」とか。
■最初にコミットするときが一番難しい
――コミュニティに参加するためには、どのようなプロセスを踏むのでしょうか。
小崎 コミュニティに参加するためには「段階を踏む」ことが必要です。コミュニティに初めて参加するときは、信頼がまったくありません。なので、誰か優しい人がメールを読んで「これはいい」といってくれる「救いの手」に頼ることになる。よくある失敗は「初期段階で巨大な機能追加パッチを投稿してしまい、無視される」というパターンですね。コミュニティに参加するには、最初の1歩が一番難しいんです。あと、時期を見計らうのが意外と重要ですね。皆が忙しい時期にメールを投稿すると、普通にスルーされます。イベント前後は忙しいし、12月後半のクリスマス休暇のときにはみんな休んでいるし。
わたしの場合は、パッチを投げたときに誰かが親切にレビューをしてくれたことがきっかけでした。いまは「親切にしてもらったから恩返ししたい」という気持ちでレビューしています。
──メーリングリストには、実装(パッチ)と、設計(デザイン)の両方を書いて送るわけですが、コード以前に設計がダメといわれることもあるのですか。
小崎 設計段階でリジェクト(却下)される場合はとても多いですよ。「実装は正しいけど、こんな機能使うの?」とか「オレ専用機能は良くないよね」とか。そこで、「皆さんのユースケースを調べた結果、こういう機能はこういう使い方で有効です」と説得する必要があります。そこまで持っていくのはなかなか大変です。
──メーリングリストでの新機能の提案と、その採用・却下の記録の積み重ねが、コミュニティの蓄積になっている。ということは、メーリングリストは必ず読まないといけないわけですね。
小崎 メーリングリストはウオッチしないといけないですね。過去の議論を知らずに「オレオレ修正」を投げると、素っ気ない対応をされがちです。コミッタも人間なので、同じことを何回も説明するのは嫌ですから。
メーリングリストのいいところは、「記録が残る」ことです。コミュニティの文化、やってはいけない修正など、頑張って調べれば分かってくる。よく「ソースコードを読め」という話がありますが、Linuxは20年近い歴史があります。ソースコードだけで全部の設計を把握できるわけがない。幸いなことに、いまは検索エンジンの性能が賢いので、メーリングリストの過去ログを調べるのがずいぶん楽になりました。
■まつもと氏のちょっとした勘違い(?)からRubyにもコミット
──小崎さんは2009年ごろからRubyコミュニティにも参加されていますが、どういう経緯だったのですか。
小崎 Linuxカーネル・コミュニティに参加しているだけだと、アプリケーションを作る人の苦労が見えないと思ったからです。そのため、別のOSSの活動ものぞいた方がいいかなあ、と考えたのがきっかけですね。Rubyは割と活発なコミュニティだと思ったので、メーリングリストに参加しました。
コミッタになったきっかけ……まつもとさん(Ruby設計者まつもとゆきひろ氏)の勘違いじゃないですかね(笑)。もともと、わたしはRuby言語は全然知らなかったのです。とはいえ、実装はC言語なので多少は分かるわけです。なので、いくつかバグ修正をほかのコミッタの人と一緒にやっていたら、Rubyを知っていると思われてしまった。
@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。
現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。
これからも、@IT自分戦略研究所をよろしくお願いいたします。