「プログラマーのスキルはある一定のラインを超えたところで急激に伸びるんです。そのラインは早く超えるには、OSSの開発に参加していろんな人が書いたソースコードをたくさん読むというのは有効な手段の一つだと思います」――こう語るのはLinuxカーネルおよびRubyの現役コミッターである小崎資広氏だ。

小崎氏には前回、LinuxカーネルやRubyの開発に関わった経緯や、コミュニティ活動を円滑にするポイントをうかがった。今回は、これからOSSコミュニティに参加しようと考えている若手エンジニアに向けたアドバイスをお願いしよう。

関連インタビュー


【インタビュー】コミュニケーション力向上に役立ったOSS活動 - Linux/Ruby 小崎資広氏

【インタビュー】言語は思考にも影響を及ぼす、だからRuby開発を選んだ--まつもとゆきひろ氏
【インタビュー】Rubyが大きくなれたのは、私に隙があるからかな - まつもと氏(後編)
【インタビュー】PHPでの活動がなければ今日の私はない - グリー CTO 藤本真樹氏
【インタビュー】10歳上は乗り越えなきゃいけない壁 - グリー CTO 藤本氏(後編)

――前回は、小崎さんがOSSコミュニティに参加した経緯や活動内容、OSSコミュニティでの活動で得られるものについてうかがいました。その内容を参考に、これからOSSコミュニティに参加して、スキルアップを図りたいと考えている開発者も少なからずいると思います。参加コミュニティの選び方についてアドバイスのようなものがあれば教えてください。

小崎資広 - 富士通 Linuxソフトウェア開発統括部 所属。LinuxカーネルとRubyの2つのコミュニティでコミッターを務める。Linuxカーネルでは、主にメモリ管理を担当。組み込みシステムやHPCの開発経験を活かして、ハードウェアの進化に対応するためのコーディングを行っている。2009年には日本OSS貢献者賞を受賞。

小崎 : う~ん、コミュニティの選び方ですか……。個人的には、コミュニティだけを見て決めるのは間違いだと思います。お気に入りのソフトウェアがあるのであれば、そのコミュニティに参加するというのが正しい姿でしょう。ときには、人付き合いの悪い人が取り仕切っていて、コミュニケーションがうまく進まずにストレス感じるコミュニティもあるようなので注意は必要ですが(笑)

――初めてOSSコミュニティに参加する場合、コミュニティに馴染むのも一苦労ではないかと思います。その点で、小崎さんは何か工夫したことはありますか?

小崎 : 私の場合、「他人の開発作業をサポートして恩を売る」という作戦をとっています(笑)。具体的な作業としては、コードレビューをすることが多いですね。

例えば、Linuxの開発コミュニティでは、コミッターにもなると1日に1000通ものメールに目を通さなければなりません。大変忙しいので、名前も知らない開発者からいきなりソースコードが送られてきても検証する時間がないんです。そのまま何の反応も得られず、寂しい想いをして離れていく開発者も少なくありません。

だだし、コミッターも決して意図的に冷たくしているわけではないので、品質に問題がなく、有益なものであることが確認できれば本体にマージしてもよいと考えています。そこで、だれにも触れられずに放置されているソースコードを見つけて、第三者の立場からレビューしてあげるんです。コミッターからすると、例えレビュアーが知らない人であったとしても、何人分か意見が集まれば気にせずにはいられません。ある程度、中身が保証されていることになるので、確認時間も短縮でき、採用しやすくなります。

こうして、コミッターとソースコード送信者の双方に対して恩を売り、コミュニケーションをとりやすくしていました。

そのほか、実際に参加して思うのは、何をするにしても相手をリスペクトするということが大切ですね。もちろん自分に自信を持つことも必要ですが、相手を敬わなくては何をするにしてもうまくいきません。自分の意見や価値観を押し付けるのではなく、一緒に作業をするパートナーという感覚を持ってほしいです。

――小崎さんがエンジニアとしてのキャリアを歩み始めたときに、何か意識していたことはありますか?

小崎 : 本業以外でも勉強するようにはしていましたね。当時はJavaが流行っていたのでJavaのトイプログラムを作ったり、月並みですが本を読んだり。若いエンジニアは、小さく区切った仕事を割り振られる傾向があるので、設計力を養ったり、知識を広めたりするには、プラスアルファで何かをしなければという意識は強かったです。

若手エンジニアの皆さんに勧めたいのは、いろんな人が書いたいろんな種類のソースコードをたくさん読むということですね。

今振り返って思うことですが、プログラマーのスキルというのは、ある一定のラインを超えたところで急激に伸びるんです。抽象的な表現で恐縮ですが、「なんとなく正しい方向がわかる」ようになります。設計の定石やバグが入り込むときの共通パターンが体に浸透し、コードを読んだときにバグの"臭い"をもやもやと感じるようになるんです。例えるなら、囲碁の盤面を見てどちらが優勢かを瞬時に把握できるようになる感覚でしょうか。

ポイントは、いろんな人が書いたソースコードを読むという点ですね。囲碁でも、特定の対戦相手しかいなければ、相手の癖ばかりを覚えてしまい、知らない人同士の対局の戦況を読めるようになるまでには時間がかかると思います。同じようにソフトウェア開発においても、学習効率を高めるにはいろんな人のソースコードを読む必要があるんです。そういった意味では、OSSコミュニティでの活動はスキルアップに大いに役立つと思います。

もっとも、開発者の中には他人のコードを読むのが苦痛という方も多いと思います。そのような方は、読む作業がはかどらないでしょうから、自分で書く機会を増やすという方法を選んだほうがいいかもしれませんね。