夏は研究シーズン。夏休みに研究室で缶詰になる人のために、買い出し隊が出動します。
夏は研究シーズン。夏休みに研究室で缶詰になる人のために、買い出し隊が出動します。
[画像のクリックで拡大表示]

 SkypeはWindows、Linux、Mac、WindowsCEなど複数のOS上で動作するソフトです。当たり前のように思えますが、プログラマにとってはなかなか大変なことです。今回は、複数のOS上でSkypeを動かすようにするための工夫と努力をご紹介します。

 複数プラットフォームに対応した通信ソフトウエアの開発は、時間と気をつかいます。私が以前に所属していたSoftEther社でも、当初は接続性を確保するのに大変苦労しました。SoftEtherの最新バージョン「PacketiX」では様々なプラットフォームで動作するように設計段階から工夫をして、Windows以外のOSにも対応できるようにしています。

 このように通信ソフトの開発は大変ですが、接続性を維持しながら複数のOSに対応させるよい方法があります。それは、共通する部分は使い回して、OSによって違う部分だけを作り込むという方法です。こうすれば、時間やコストを短縮できます。OSによって1番違うのはGUIなどの画面表示部分で、ここはどうしても個別に開発する必要があります。

 私は「AsagumoWeb」というP2Pソフトウエアを開発していますが、このソフトも同じ方法で開発しました。P2Pコアモジュールは使い回して、各環境にあるブラウザで画面表示することにしました。あまりかっこいい画面表示はできませんが、私個人でも複数のOSに対応させることができました。

 さて、Skypeはどうしているのでしょうか。Skypeもコアモジュールを共通化し、画面表示部分のみを各OSで作り直しているようです。これは、Skypeの設定ファイルが各プラットフォームで共通化されていることからもわかります。また、画面部分は各OSで別々のツールを使っています。WindowsではBorland社製のツールを使い、MacではApple純正のツール、LinuxではQTと呼ぶライブラリを利用しています。

 Skypeがすごいなと思うのは、共通化と個別開発の力の配分です。共通化によって異なるOSでも通話できるようにしています。さらに、OSごとに作り込むGUIでも、手を抜いていません。Windows版とMac版のSkypeではGUIが少し違いますが、各OSが持つ機能を最大限に生かして、少しでも使いやすくしようとしています。こうしたユーザーの使い勝手を考えた開発姿勢は素晴らしいと思います。私もソフトウエア開発者を目指す上で、Skypeのようなこのやり方を勉強していきたいです。