オープンソースは自由である。何が自由かと言えば,原則として

  • 自由に利用して構わない
  • ソースコードを自由に修正,変更して構わない

ということである。そのようなプログラムがネット上に無数に公開されている。オープンソースを利用すれば,無駄なコードを書かなくてもよくなるので,短期開発が求められるWebシステムなどでの採用が当たり前になってきた。ジャンルも幅広い。LinuxのようなOSからPerl,PHP,Python,Rubyといった開発言語,Ruby On RailsのようなWebフレームワークまである。

 オープンソースの利用や修正は自由ではあるが,無料だと思ってはいけない。何かトラブルが起きた際に,オープンソースは,商用製品のように問い合わせたり対応してもらえたりすることは基本的にない。問い合わせ対応をしてくれるベンダーもあるが,そういうベンダーのサービスを受けるには,コストを払わなければならないのである。例えば,レッドハットが提供している「Red Hat Enterprise Linux」を利用して,サポートを受けるには,年間サブスクリプションという費用が必要になる。

サポートは存在しない,どうすればよいか

 ベンダーによるサポートを受けられない状態で,設定に迷ったらどうしたらよいか。まずはネット上で必要な情報がないか探してみる。ブログやWikiを検索すると,必要な情報がヒットすることも多い。そうした情報を自ら集めて,試してみる。必要に応じてソースコードを読み,修正を加えていくのが基本である。その過程で分からない点があれば,コミュニティで質問するというやり方がある。ほとんどの主要なオープンソースには,コミュニティが存在する。

 運悪くオープンソース・ソフトのバグを引き当ててしまった場合は,どうしたらよいか。オープンソース・ソフトのバグを自力で修正するのは,スクラッチで開発したプログラムのバグを修正するのと作業的にはあまり変わらない。まずは,どういう状況でそのバグが再現するかを洗い出すために,テストコードを書く。

 次に,コードを修正し,自分が書いたテストコードをきちんと通るか,またそれ以外の既にあるテストもきちんと通るか確認した後に,diff(差分を取るプログラム)によってpatch(差分を当てるプログラム)を作る。

 オープンソースの中には,BTS(バグ・トラッキング・システム)と呼ぶバグや課題を管理する仕組みを用意しているものもある。例えば「CPAN」というPerlのライブラリを集めたサイトならば「RT」と呼ばれるBTSを使っている。

 BTSは次のように使う。まず,BTS上で既に重複しているバグ報告が無いか確認する。重複が無ければ,新規のバグ報告として追加する。ただし,BTSを使うかどうかは,オープンソース・ソフトの作者の意向による。「BTS上でバグ報告をしてほしい」という作者もいれば,メールで直接コンタクトしてほしいという作者もいる。外部にサイトを持っている作者であれば,そこの掲示板に書き込んでほしいということもある。できるだけ,そのような作者の意向に沿った形で,バグを報告したい。

 また,すべてのBTSを誰もが利用可能というわけではないので,注意が必要だ。Perlの有名なWebフレームワーク「Catalyst」の場合は,「trac」というプロジェクト管理ツールをベースにBTSを運用している。tracは,コミット権限を持つユーザーでないとBTSに対してバグ・レポート(「チケット」と呼ぶ)を送ることができない。

 コミット権限を持たないユーザーでも,既存のバグ・レポートや現状の課題を一覧として見ることはできる。この一覧の更新状況をタイムラインと言う機能によってRSSで購読することもできる。積極的にこのような情報を入手して事前に情報を仕入れてその時々で対処していけば,突然のトラブルは少なくなっていくだろう。


山口徹
サイボウズ・ラボ
 サイボウズ・ラボ株式会社のプログラマ。バーテンダーからIT業界に転身後,様々なWeb制作を行い,大規模コミュニティ・サイトの開発・運用を経て,現在は研究開発の日々。Perl使い。Perlを中心とした開発のノウハウやネタをShibuya Perl Mongersのイベントで発表するなど講演活動も行う。個人の開発日記は「Yet Another Hackadelic」。仕事のブログは「log4ZIGOROu」。
■変更履歴
筆者の肩書きで,社名がライボウズ・ラボとなっていましたが,サイボウズ・ラボです。お詫びして訂正します。修正済みです。 [2008/04/01 21:10]