図1●オープンソース・ソフトウエアの世界と代表的なソフト
図1●オープンソース・ソフトウエアの世界と代表的なソフト
[画像のクリックで拡大表示]
図2●オープンソースの主な開発ツール。スクリプト関連のライブラリやJava関連のツールが多い
図2●オープンソースの主な開発ツール。スクリプト関連のライブラリやJava関連のツールが多い
[画像のクリックで拡大表示]
表1●PEARから利用できる主なPHPのパッケージ
表1●PEARから利用できる主なPHPのパッケージ
[画像のクリックで拡大表示]

 新連載「お宝はオープンソースにあり!」にようこそ。この連載では,プログラミングで使える便利なオープンソースのツールを紹介していきます。連載第1回ではまず,オープンソース全体を概観するとともに,プログラミングで利用可能なオープンソース・ソフトにはどんなものがあるかを紹介していきます。

たいていのアプリケーションが
無償で手に入る

 オープンソース*1とは,その名の通り,ソースコードが公開されたソフトウエア,またはそのライセンス形態のことを言います(ライセンスについてはカコミ記事「商用利用ではライセンスに注意」を参照)。元々,GNUプロジェクト*2による活動から発展した概念で,皆さんもよくご存じのOS,Linux*3が火付け役となって,「オープンソース」というキーワードが一般的なものとなりました。

 現在,オープンソースの波はLinuxを中心に急速に広まっています(図1[拡大表示])*4。統合デスクトップ環境と呼ばれるGNOME(GNU Network Object Model Environment)や,KDE(K Desktop Environment)といったソフトにより,LinuxでもWindows並みのGUIによる操作が可能になりました。

 さらに,ユーザーが必要とするたいていのアプリケーションはオープンソースでも用意されるようになりました。WebブラウザのFirefox,メール・クライアントのThunderbird,ワープロ/表計算/プレゼンテーションなどの機能を持つ統合オフィス・ソフトOpenOffice.org,グラフィックス・ソフトのGIMP(GNU Image Manipulation Program)などです。これらは,WindowsでもLinuxでも利用できます。おもしろいところでは,Windows用のFTPクライアントとして有名なFFFTPやテキスト・エディタとして人気の高いサクラエディタもオープンソース・ソフトです。こうしたソフトがすべて無償で利用できるのです。

 もちろん,このようなクライアント・アプリケーションばかりではありません。むしろ,現状ではサーバー・アプリケーションのほうがよく使われています。WebサーバーのApache,メール・サーバーのSendmail,DNSサーバーのBIND,ファイル・サーバーのSamba,データベース管理ソフトのMySQLPostgreSQL*5などが代表的です。皆さんもこうしたソフトの名前くらいはお聞きになったことがあるかもしれません。

プログラマ向けのソフトも充実

 オープンソース・ソフトはプログラミングにも大いに利用されています(図2[拡大表示])。今日では,オープンソース・ソフトウエアを本格的なシステム/アプリケーション開発に利用することは決して珍しいことではなくなってきました。

 皆さんは「LAMP」という言葉をお聞きになったことはないでしょうか。LAMPとは,OSとしてLinux,WebサーバーにApache,データベース管理ソフトにMySQL,プログラミング言語/実行環境にPHP(PHP:Hypertext Preprocessor)を使って開発したシステムを指します。LAMPはこれらの頭文字をつないだ言葉です*6。無償のオープンソース・ソフトを組み合わせることで,有償のソフトウエアを利用すれば何百万,何千万円もかかってしまうような高度なWebアプリケーションを開発できてしまいます。LAMPはこのことを象徴したキーワードです。

 LAMPでプログラミングの部分を担うのは,スクリプト言語のPHPです。実際には,LAMPの「P」はPHPの「P」だけではなく,CGI(Common Gateway Interface)プログラムを記述するのによく使われる代表的なスクリプト言語のPerlや,オブジェクト指向型のスクリプト言語であるPythonを表す場合もあります。スクリプト言語としては,まつもとゆきひろ氏が提供している国産の言語であるRubyも有名です。これらもすべてオープンソースです。

 こうしたスクリプト言語の特徴の一つは,豊富なライブラリが提供されており,それらの多くがまたオープンソースであることです。ライブラリとは,プログラミングの際に利用できる様々な部品群(クラス,コンポーネント,関数など)のことを指します。ライブラリで用意されている部品を利用することで,定型的な処理をその部品に任せ,プログラミングを省力化できます。アプリケーションの仕組みがますます複雑になっている今日,ライブラリなしの開発はもはやありえないと言っても過言ではありません。

 オープンソースのライブラリは,様々なコミュニティや開発プロジェクトが提供しています。ソフトウエア数の豊富さ,利用実績という意味では,Perl向けのライブラリである「CPAN(Comprehensive Perl Archive Network)」が一番に挙げられるでしょう。CPANは,世界中のPerl開発者が作成したライブラリやツールを集めた巨大なアーカイブです*7

 PHPにも,PerlのCPANには及ばないとはいえ,ライブラリが用意されています。PHP開発の本家であるphp.netが運営している「PECL(PHP Extension Community Library)」や「PEAR(PHP Extension and Application Repository)表1[拡大表示]」です。PECLはC言語で書かれたライブラリであるのに対し,PEARはPHPをベースにしているという違いがあります。従来はPEARライブラリにはパフォーマンス面で難点がありましたが,PHP実行エンジンの処理速度向上に伴って,状況は改善されつつあります。今後は,開発や修正がしやすく,アプリケーションへの組み込みが容易なPEARライブラリに開発の重点が移っていくものと思われます。

商用利用ではライセンスに注意

 オープンソースのソフトは誰でも自由に利用できますが,著作権が放棄されているわけではありません。オープンソースであるからといってまったく制約がないわけではなく,改変や配布を行う際には「ライセンス」を意識する必要があります。

 もっとも,さほどに難しく考えることはありません。ソフトを個人で利用する限りはライセンスを意識しなければならない局面はほとんどないはずです。ただし,もしオープンソース・ソフトを改良したり,商用で利用したりする場合には,必ずそれぞれのソフトのライセンス条項を確認するようにしてください(表A[拡大表示])。主要なオープンソース・ライセンスの日本語訳をまとめたサイト(http://opensource.jp/licenses/)もありますので,ライセンスが気になるなら一読してみると良いでしょう。


表A●オープンソースの主なライセンス
[画像のクリックで拡大表示]

山田 祥寛(やまだ よしひろ)

千葉県鎌ヶ谷市在住のフリーライター(http://www.wings.msn.to/