特集
» 2008年08月11日 12時59分 UPDATE

Programing Bible:AppChecker――Linux Foundationからリリースされた新世代の開発支援ツール

Linux関連の開発作業で最も負担なのは、さまざまなディストリビューションの対応製品を際限なく準備しなくてはならない点である。この部分にメスを入れた開発支援ツール「AppChecker」がLinux Foundationからリリースされた。

[Steven J. Vaughan-Nichols,Open Tech Press]
SourceForge.JP Magazine

 Linux関連の開発作業で最も負担と感じるものは何かという質問を独立系ソフトウェアベンダー(ISV)に対して行った場合、その返答としては、 SUSEだのRed HatだのUbuntuだのさまざまなディストリビューションの対応製品を際限なく準備しなくてはならない点だという不満が返ってくるだろう。この種の不満は ISVに限らずLinux関連のプログラマーであればおそらく誰でも感じているはずのものだが、そうした負担を大幅に軽減してくれるのが、Linux Foundationから先日β版がリリースされたばかりのLinux Application Checker(AppChecker)という新機軸のプログラムなのだ

 AppCheckerはオープンソース型Linuxプログラムとして提供されており、現状ではβ3をダウンロードできる。インストール後の本プログラムを実行して表示されるのはWebページ形式のLSB Database Navigatorだが、ここでユーザーが行うべきはApplication Checkというリンクのクリックであり、これによりWebフォームを用いた入力インタフェースが提示されるので、このフォームにてリポートの名称をNameフィールドに、アプリケーションのファイルパスをComponentsフィールドに入力すればいい。次に行うのはアプリケーションを構成する個々のファイル、ディレクトリ、インストールしたRPMパッケージ(pkg:で始まるもの)の指定だが、ここで入力すべき項目にはRPMだけでなく.debパッケージのファイルおよびtar.gzやtar.bz2形式のアーカイブ群も該当する。こうした情報の管理を開始させるにはSelect Application Componentsボタンをクリックし、個々の項目を該当するフィールドに入力しなくてはならない。その後テストの対象とするLSB ProfileおよびLSB Versionを選択する。

 以降の処理は基本的にAppChecker任せにしておけばよく、アーカイブ群の展開も含めて、テストに関係する操作はすべて自動実行してくれる。本プログラムにてチェック対象とされるのは、ELF(Executable and Linking Formatと呼ばれるバイナリファイル)、Perl、Python、シェルスクリプトとなっている。これだけの機能であれば、各種プログラムチェッカーの先達であり充実した完成度に達したlintとさして変わらないが、AppCheckerがその本領を発揮するのは次のステップで行われる処理であり、これこそがLinuxソフトウェア開発者が着目すべき機能なのである。

 つまりユーザーの開発したプログラムについてAppCheckerが実施するチェックは、Linux Standard BASE(LSB)の各種バージョンに関するものだけではなく、LSB Databaseに登録されたすべてのLinuxディストリビューションに対しても実行されるのだ。テストの実行結果はリポートとしてユーザーに提示されるが、まさにこのリポートこそがAppCheckerの神髄とでも言うべき内容となっているのである。

 このリポート本体はWebベース形式で提示され、そこには各種ディストリビューションに対する互換性および、当該アプリケーションの使用する外部ライブラリおよびインタフェースに関する情報が一覧されるようになっている。またすべてが正常に進行した場合、テストプログラムとしてのLSB認定を取得するためのオプションも提示される。これは当該アプリケーションが特定ディストリビューションで動作するか否かという単純な判定ではない。Linux Foundationにてマーケティング/開発者プログラムの責任者を務めるアマンダ・マクファーソン氏によると、「当該プログラムを特定ディストリビューションで動作させるのに必要な詳細までを提示してくれます」ということなのだ。

 マクファーソン氏の説明では、「現状はβ版段階なので完全な保証はしかねますが、それでも例えばUbuntu 7.10や8.04で動作するとの判定がAppCheckerから示された場合、当該プログラムはそうしたディストリビューションで使用可能となっているはずです。結果判定も非常に粒度の細かいものとなっており、具体的なディストリビューション名を挙げた上で、どのライブラリやインタフェースが利用できないかという明示的な情報が提示されます。そのほかにも例えばOpenSSLは問題を起こすケースが多いのでほかのSSLライブラリに置き換えた方がいいなど、コンポーネント類に関する推奨情報も通知されます」とされている。

 マクファーソン氏は本プログラムに関するアイデアを最初に提案した1人であり、同じくLinux FoundationのCTOでありLinuxカーネル開発者としても名の知られたTed T'so氏も提案者の1人である。その後AppCheckerの具体的な肉付けを行ったのはT'so氏とロシア科学アカデミーであり、最終的にはGPLv2の下で公開されるようになっている。

 AppCheckerのテクニカルドキュメントによると、AppCheckerが解析するのは「検査対象のプログラムにおけるC/C++シンボル群(主として一部のグローバル変数を使用する関数群)および、特定アプリケーションの必要とするライブラリのうちで各ディストリビューションから提供され動的にリンクするライブラリ群」についてである。

 ただしAppCheckerはデバッガとしては機能しない。「アプリケーション側の想定するタイプ情報と、ディストリビューション側のライブラリから提供されるオブジェクトのタイプとが一致するかのチェックは行いません。例えばデータ構造のレイアウトは変更されるものですし、従来は32ビット整数であった関数パラメータが64ビット整数に変更されるというのはよくあることです。同様に異なるバージョン間で関数の挙動が変わっていてもAppCheckerではチェックできません」

 マクファーソン氏の説明によるとAppCheckerで行われるのは、特定ディストリビューションで提供されるライブラリとインタフェースに関する確認作業であり、特定バージョンのLinuxで動作させるために置き換えが必要なコンポーネントが存在すればそれが提示され、特定ディストリビューションのLinuxにて動作するかの判定が報告されるのである。つまりこのツールを活用すれば、開発中のアプリケーションを多数のLinuxディストリビューションに対応させる上で今から何を行えばいいかが簡単に確認できるという訳なのだ。

 当然ながらこの種のツールに完ぺきなものなどは存在しない。本プログラムの場合は未完成なβ版段階という事情もあるが、それ以前にすべてのライブラリやインタフェースがLSBデータベースに登録されている訳ではないからである。とは言うものの、複数バージョンのLinuxに対応させたアプリケーションを構築する上で何が必要かを開発者に明示的に提示する機能が利用可能となりつつあることは、1つの大きな前進と評していいだろう。

 AppCheckerによるテスト結果はユーザーの手元のみに止めておくこともできるが、可能であればLinux Foundationに提供してほしいというのがマクファーソン氏の要望である。「この種のテスト結果をほかの開発者と共有することは、LinuxプラットフォームやLSBの今後の発展に貢献することになります。それは例えばLinux開発者の間で使用されているライブラリのうちで何がLSBに属していないかは、こうした情報から特定できるようになるからです。当方が(そうしたものを)LSBに追加していけば、LSBはより改善されていくことになるでしょう」

Steven J. Vaughan-Nicholsは、PC用オペレーティングシステムとしてCP/M-80が選択され、2BSD UNIXを使うことがクールとされた時代から、テクノロジーおよびそのビジネス利用についての執筆活動を続けている。


原文へのリンク

Copyright © 2010 OSDN Corporation, All Rights Reserved.

Loading

ピックアップコンテンツ

- PR -

注目のテーマ