FreeBSDを使ってISP基盤システムを開発、きっかけは「予算がない」
――波乱のスタートでしたが、その後、初めてOSSを使ったのはいつですか?
1993年かな。そのころ、NTTもインターネットをやりたいということになったんですが、会社法の関係で、NTTが直接やるわけにはいかなかった。そこで、NTTPCコミュニケーションズでインターネット事業を立ち上げようとなりました。
インターネット事業にはISP基盤システムを開発する必要があります。SunOSを使いたかったんですが、内製なので買ってくるわけにはいかなかった。予算がないんですよ。どうしようと思っていたら、FreeBSDというただで使えるOSを見つけて、よしこれを使おうと。これがOSSを初めて使った事例です。FreeBSDは今でこそ簡単に入れられますが、当時はX Windowのコンパイルに十数時間もかかりましたね。
――そのときにNTTPCコミュニケーションズに出向されたんですか?
そのときはNTTに籍を置きながら、NTTPCコミュニケーションズに技術支援をするという形でした。
インターネットを始めるにあたり、ダイヤルアップ認証のしくみを作らなければならなかったのですが、そもそも黎明期の超初期段階なので製品は存在せず、買ってくることもできない。そこで、RFCドラフト段階でのリファレンスコードでオープンソースだったLivingston RADIUSを研究しました。ただ、クライアントが数台ならともかく、大規模になるとそのままでは使えないんです。なので、ソースコードを読んで、内部でどう処理しているかを勉強しながら、いかに高速に処理するか、スケールさせるかを考えました。リファレンスコードを修正するというより、それをもとに再実装したというところです。
――再実装したコードを開示しなかったのですか?
開示しませんでした。OSSとして開示すると、自分たちでコミュニティを作り、ソースコードを維持管理していかなければならない。でも、当時のNTTPCコミュニケーションズには、それだけの体力がなかったんです。ソフトウェアを作って売ることを生業としているわけではなかったから。もちろん、Livingston RADIUSに限らず、利用したOSSにバグを見つけたら修正用のパッチを用意するといったフィードバックは行っています。
生き残っていくOSSを選定することが大事、その基準は?
――その後、お仕事はどう変わりましたか?
1995年1月にInfoSphereのサービスが開始しました。しかし、関連システムの開発を行うエンジニアがいない。そこでNTTPCコミュニケーションズに出向したんです。Eコマースサイト、VPNサービス、顧客管理サービスなど、多くを内部で開発しました。
当時は革新的・画期的だった国際ローミングシステムの開発も行いました。国内のシステムはSunに移行していましたが、予算のないNTTの海外現地法人はPCベースのシステム。最初はFreeBSDを使っていましたが、時代の流れで増えてきたLinuxもそこで初めて利用しました。
2004年までNTTPCコミュニケーションズに出向した後、3年ほどNTTでNGN(次世代ネットワーク)の技術企画に携わり、その後、2007年にNTTコミュニケーションズに移りました。そこではOCNのVoIPサービスなどの開発を行っていましたが、2008年頃からクラウドが流行り始めました。
――数年ごとに時代の風が吹いてくるようですね。
風はね、自分で見つけて乗るものですよ。NTTコミュニケーションズでクラウドサービスを開発しようとなったとき、利用する仮想化ソフトウェアの候補として挙がったのがXenとKVM(Kernel-based Virtual Machine)でした。私はKVMを推しましたが、私以外は皆Xenを推す。私から見ると、KVMは名前のとおり、カーネルに統合されており、美しいんですね。開発元のQumranetがRed Hatに買収されたこともあり、最終的にKVMを採用しました。
――Red Hatによる買収に意味があったのですか?
Xenの開発元であるXenSourceを買収したCitrixは営利企業で、Xenの商用版を提供しています。そのため、買収された後は、Xenそのものの開発があまり進まなくなりました(注:2013年、CitrixはXenプロジェクトをLinux Foundationに移管しています)。一方、Red HatはKVMをRed Hat Linuxに統合し、サポートを提供するだけ。しかもRed Hatのコミュニティは世界一です。OSSとしてどちらが良いかは一目瞭然ですね。
2010年4月に開始したクラウドサービス、Bizホスティング ベーシックは、KVMの他にもMySQL、PHP、Perlなど、ほぼすべてをOSSを利用して開発しました。OSSを利用するにあたっては、生き残っていくOSSを選定することが大事だと考えています。
――生き残るかどうかの判断基準は?
美しいか、美しくないか。わかりやすいか、わかりやすくないか。コミュニティがアクティブか、アクティブじゃないか。いろいろな基準があると思います。
――「わかりやすい」というのは「シンプル」ということですか?
そう、コンセプトにしろ、コードにしろ、シンプルで、ぱっと見たときにコミットしようと思うくらいに単純明快なわかりやすさがないとだめですね。
あとは、パッチやメジャー/マイナーバージョンのリリースの頻度とか、コミュニティで発言している人数とかがどれだけ多いかも結構重要だと思う。