|
成功するオペレーティングシステムを開発することの難しさ オペレーティングシステムの開発は極めて困難な作業です。成功するオペレーティングシステムを開発するには、非常に有能で経験豊富な専門チームと、多額の資金投資が必要です。例えば、マイクロソフトは5,000人の開発チームを編成し、90億ドルを投資して6年間を費やしWindows Vistaを開発しましたが、開発は失敗に終わりました。マイクロソフト自身も、失敗作をリリースしたことを認めています。1980年代には、IBMもOS-2オペレーティングシステムの開発プロジェクトでつまずき、最終的に断念しました。 国内の一部組織は、OS開発の複雑さと難しさを過小評価しています。数十人から数百人規模の開発チーム(技術力も経験も乏しい)と最小限の投資で、わずか2、3年で「完全独自開発」と称するOSをリリースしてしまうのです。中には「オープンソースを放棄し、独自のOSを開発する」と豪語する組織さえあります。しかし、こうした成功の信憑性は極めて低いのです。 「オープンソース」はオペレーティングシステム開発にチャンスをもたらす オープンソースは、オペレーティングシステム開発に新たな可能性をもたらします。透明性が高くオープンソース化されたオペレーティングシステムの登場により、オペレーティングシステムの内部アーキテクチャを知らない(あるいは深く掘り下げることができない)開発者に、オペレーティングシステムのアーキテクチャを理解する機会が与えられ、この分野における知識が飛躍的に向上しました。オープンソースオペレーティングシステムは、開発における人的資源、物的資源、資金、そして時間的資源を大幅に節約できるため、オペレーティングシステム開発者は巨人の肩に立つことができます。したがって、オープンソースベースのオペレーティングシステムの開発は、間違いなく正しい開発の道筋と言えるでしょう。 近年、Android、WebOS、MeeGo など、Linux カーネルベースの技術開発パスを採用した Linux カーネルベースのオペレーティング システムが数多く登場しています。 国家ハイテク研究開発計画(National High-Tech R&D Program)の資金援助を受けるには、基本ソフトウェアが自主開発であることが前提条件となります。前述の通り、国産OS開発においてはオープンソース化が推奨されます。オープンソースと自主開発は矛盾するのではないかという疑問も生じます。この問題を明確にし、解決するためには、まずOSアーキテクチャを分析する必要があります。 オペレーティングシステムのアーキテクチャ オペレーティング システムのアーキテクチャは、基本層、ミドルウェア層、ユーザー エクスペリエンス層、およびセキュリティ モジュールなどの個別に構成されたソフトウェア モジュールで構成されます。 基盤層は主にカーネルで構成されます。ミドルウェア層は、開発者の観点からは主に開発環境とランタイム環境を指し、ユーザーの観点からは主に様々な機能モジュールやアプリケーションフレームワークを指します。ユーザーエクスペリエンス層(UE = UI + アプリケーション)は、ユーザーインターフェースと様々なアプリケーションで構成されます。したがって、オペレーティングシステムは多層アーキテクチャ、多様なプロトコル、そして多数のコンポーネントから構成されます。 メイントランク用の汎用カーネルとブランチ用の専用カーネル 多くのオペレーティングシステムはLinuxカーネルをベースに開発されています。Linux Foundation(Linuxコミュニティ)は、Linuxカーネルの公式バージョンおよびメインラインバージョンの開発、配布、保守を担当しています。Linuxカーネルベースのオペレーティングシステムの開発者は、特定のLinuxカーネルバージョンをオペレーティングシステムのカーネルとして選択できます。メインラインバージョンを変更して独自のブランチカーネルバージョンを作成する場合は、メインラインメンテナーに変更内容を速やかに報告し、承認を得た上で、変更内容をメインラインLinuxカーネルに登録する必要があります。これにより、最終的にこのブランチカーネルバージョンはLinuxカーネルファミリーのメンバーとなります。 AndroidはLinuxカーネルをベースにしたオペレーティングシステムです。Androidオペレーティングシステムの開発過程において、Google Android開発チームはLinuxカーネル内に構成されていた一部のドライバモジュールをLinuxカーネルの外部に移設しました。また、電源管理モジュールなど、特定の機能モジュールを再定義・追加しました。これらの変更は当初、LinuxコミュニティとGoogle Android開発チームの間で対立を引き起こしましたが、最終的には交渉を通じて合意に達しました。この事例は、Googleがメインの「Linuxカーネル」を独自のブランチ「Androidカーネル」に改変する場合、メインのLinuxカーネルメンテナーの承認を得て登録し、「Androidカーネル」を「Linuxカーネル」の一部とする必要があることを示しています。 ミドルウェア内の一部の自作部分 ミドルウェア層の開発環境は、主に(1)エディタ、コンパイラ、動的ランタイムライブラリ、(2)グラフィカルインターフェース開発ツールとグラフィックスライブラリ、(3)多言語環境サポート、(4)通信プロトコルスタック、(5)データベースとそのサポートツール、(6)各種ユーティリティライブラリ、(7)テスト、移行、展開のためのツールチェーンなどから構成されます。ミドルウェア層には、様々な機能モジュールやアプリケーションアーキテクチャがあり、通信(Comms)クラス、インターネットサービス(Internet SVCS)クラス、ビデオサービス(Visual SVCS)クラス、メディアサービス(Media SVCS)クラス、データ管理(Data Mgmt)クラス、デバイスサービス(Device SVCS)クラス、パーソナライゼーションサービス(Rersonal SVCS)クラスなどが含まれます。 Android オペレーティングシステム プラットフォームは、185 個のソフトウェア コンポーネントと、それぞれが準拠する 19 個のオープンソース ライセンスで構成されています。これらのオープンソース ライセンスの中で、ミドルウェア プラットフォームが準拠する Apach2 オープンソース ライセンスが主要なものです。その他には、Open Source Initiative (OSI) によって正式に承認されたオープンソース ライセンスと、一般の人々が交渉して策定した制限付き相互オープンソース ライセンスがあります。 AndroidベースのOSを開発する場合、Androidカーネルを変更することなく、Android開発チームは開発者が独自のセキュリティモジュールやユーザーエクスペリエンス(ユーザーインターフェースや各種アプリケーションを含む)を作成し、ユーザーによるカスタマイズを可能にする必要があることを指摘しておく必要があります。さらに、開発者は「ミドルウェア」層において独自の機能モジュール(および開発環境)を作成できるようにする必要があります。これらの独自開発部分(小規模な場合もあります)は、OSに導入されているオープンソース部分(大部分を占める場合もあります)と統合できます。OS内に独自開発部分(オープンソースまたはクローズドソース)が存在することで、開発者は開発するOSに対する自律性と制御性を維持できます。ユーザーエクスペリエンス層およびミドルウェア層における独自開発部分(またはカスタマイズ部分)は、元のオープンソースAndroidソフトウェアへの変更と見なすことができ、Android開発チームへの報告や登録は不要です。 ユーザーエクスペリエンスにおける創造性の拡大 モバイルデバイスごとにユーザーエクスペリエンスは異なります。Androidのバージョンが乱立し、その断片化を防ぐため、Googleはかつてモバイルデバイス上のハイエンドAndroidアプリケーションに統一されたユーザーインターフェースを義務付けましたが、最終的には一般からの反対により却下されました。現在、GoogleはAndroid 3.0/3.1(Honeycomb)を搭載した31社のタブレットメーカー(パートナー)にソースコードを公開しており、統一されたユーザーインターフェースは不要となっています。これらのモバイルデバイスメーカーは、独自のユーザーインターフェースと様々なアプリケーションを開発し、独自のユーザーエクスペリエンスを実現できます。 MeeGo—Linuxオペレーティングシステムの活力 MeeGoオペレーティングシステムは、Linux Foundationの主導の下、Intel MoblinとNokia Maemoの統合をベースに開発されました。開発途中でNokiaがMeeGoに背を向け、開発を中止したことで挫折を経験しましたが、MeeGoは諦めることなく開発を続けました。 MeeGo の利点は何ですか? 1. MeeGo はオープンソースです。 MeeGoとAndroidはどちらもLinuxカーネルをベースとしたオープンソースのオペレーティングシステムですが、MeeGoはLinux開発プロジェクトであり、Linuxオペレーティングシステムという側面が強いです。「Androidカーネル」と「Linuxカーネル」には違いがあり、「MeeGoカーネル」は「Linuxカーネル」です。「Androidカーネル」はブランチカーネルであるのに対し、「MeeGoカーネル」はメインカーネルです。MeeGoはLinuxの主流を代表しており、その開発は当然のことながら、世界中のLinuxコミュニティとLinuxボランティア開発者から強力な支援を受けています。 2. Qt は MeeGo の開発環境とアーキテクチャです。 Qtは優れた包括的な開発ツールキットであり、LGPLの下でフリーソフトウェアとしてライセンスされています。QtはNokiaの子会社ですが、MeeGo開発におけるIntelとNokiaの提携が決裂して以来、MeeGo開発へのサポートはほぼ影響を受けません。 3. MeeGo の開発プラットフォームは高い運用効率を備えています。 Android プラットフォームと比較すると、A プラットフォームには Java 仮想マシン層があり、実行時の効率に影響します。 4. 強力な開発チームを擁している Linuxコミュニティには約3万人の開発者がおり、その多くがMeeGoの開発に貢献できる可能性があります。IntelにはMeeGo関連の開発者が約2,000~3,000人おり、Qtにはまだ約200人の開発者がMeeGoをサポートしています。 5. 多くの先進技術を統合しています。 MeeGoに現在存在する主な問題 1. エコシステムの構築と拡大が急務です。 Intel (MeeGo) には現在、登場する有力なパートナーが不足しており、噂されているパートナーは LG、China Mobile、ZTE (および Lenovo) であり、これは時々流れる曖昧な情報の一部にすぎません。 2. 高性能、低消費電力のモバイルチップの開発を加速する必要があります。 モバイル端末製品の市場競争は、ソフトウェアとハードウェアのマッチングと最適化にも関わっています。インテルは高性能、低消費電力、低コストのモバイルチップの投入ペースを加速させているようですが、真の効果が現れるのは来年以降になるかもしれません。 私は中国国民に対し、MeeGo と協力して Linux カーネルに基づくオペレーティング システムを開発し、新しいオペレーティング システムにおいてオープン ソースと独立したイノベーションの完璧な融合を追求することを奨励します。 元記事: http://blog.sina.com.cn/s/blog_4b8a02690100sctk.html [編集者のおすすめ]
|