3) オープンソースによるシステム構成方法

 オープンソースは、投資費用の削減と、RAPS※としての高安定性・高性能・高セキュリティー・高品質、豊富なネットワーク機能の活用を目的とするだけではなく、オープンソース本来の「ソースコードが一般に公開され、自由に改変できる」点に着目すべきです。
 前回は、活用の視点でオープンソースを概観し、「User Own Risk」にかかわるいくつかの課題を取り上げ、オープンソースを用いたシステム構築・運用の是非をTCOの視点から、効果とリスクとのバランスの事前評価・判断のもとに実施することが肝要であると述べました。  これに対し、「ソースコードの公開と自由な改変」の視点に立つと、オープンソース活用の本来の意義が見えてきます。ここではオープンソースのこの特徴に着目し、オープンソースの活用展開について理解を深めていきます。
インターネットリサーチ・コンサルティング・企画、ウェブ翻訳から、Web制作、システム開発までオープンソース・ネットワークビジネスを提供

 ひとつのシステムを構築するためには、一般にパッケージ間の連携を取りつつ、独自アプリケーションの仕組みを構築していくことが要求されます。また、オープンソースは、パッケージ毎に各々ユーザー会等※1、※2、※3、※4、 があり、独立に開発・提供されるため、パッケージ間の連携は必ずしも保証されるものではありません。ユーザー側は、これらパッケージ間連携の必要性から、ソースプログラムの改変も必要となります。
 一方、ソースプログラムを解析することで、優れたプログラミング技法を習得する手段としても活用できます。
 以上を念頭に置き、オープンソースゆえの特徴を活かした活用展開について以下に解説していきます。

LAPP/LAMPシステム構成

 オープンソース・ベースの独自開発システムとして、規模の大小を問わず、LAPP、あるいは、LAMPによるWebアプリケーション・システムが様々な場面で採用され、普及してきています。
 LAPP/LAMPとは、Linux OSをベースとするシステムです。このOS上にWebサーバー・パッケージの一つであるApacheを搭載し、Webページを制御するサーバー・サイド・スクリプト言語の一つとしてのPHP組込みを基本とし、各々の頭文字からの”LAP”と、更に、PHPと親和性の高いデータベースとしてpostgreSQL、あるいは、MySQLを組み合わせたシステム構成各々の頭文字”P”、あるいは、”M”より、LAPP/LAMPシステムと呼ばれます。
 この2つのデータベースについて、前者はトランザクションに優れる特徴を有し日本を中心として、また、後者は高速性に優れ欧米を中心として、それぞれ広く普及しています。

LAPPシステム

 オープンソースで構築するLAPPシステムは、図3.1.に示す構成をとります。

LAPPシステム基本構成
図3.1. LAPPシステム基本構成

 同図中のApache※5はNCSA※6(The National Center for Supercomputing Applications) httpd 1.3※7をベースに、1995年に開発が始まった世界で最も広く用いられているWebサーバーです。
 OpenSSL※8は、SSLeayライブラリーをベースにEric A. Young / Tim J. Hudson によって開発された世界標準の暗号通信プロトコルである TLS v1 (Transport Layer Security)を実装したWebブラウザー・サーバー間の通信セキュリティー・プロトコルです。また、ApacheとOpenSSLとの連携※9により、https(Hypertext Transfer Protocol Security)暗号化通信を確保することができます。ただし、図3.2.に示すTCPデータのみを暗号化※10し、受信メッセージの改ざんの有無を検証する手段としてメッセージ認証コード(MAC※11: Message Authentication Code)を持ちます。

通信パケット構成
図3.2. 通信パケット構成

 一方、PHP(Hypertext Preprocessor)※12は、動的なWebページを構成するWebサーバーの拡張機能の一つであり、HTMLソースプログラム中に記述されるスクリプト言語です。WWWブラウザーからの要求に対し、サーバー側でスクリプトを実行し、その実行結果を返すフレームワークとして機能させるためには、Apacheから起動されるモジュール※13として動作させるべくPHPのインストール設定を行う必要があります。特に、日本語処理を行うためには、マルチバイトを扱うオプション設定が必要となりますが、その詳細は後述することにします。
 postgreSQL※14は、カリフォルニア大学バークレー校で開発されたデータベースシステムPOSTGRESをベースとするオブジェクト・リレーショナル・データベース管理システム(ORDBMS)です。postgreSQLをPHPで制御するには、PHPインストール時にpostgreSQL関数を利用するオプションを設定する必要があります。
 OpenSSL-Apache-PHP-postgreSQLを連携させることで、例えばclientPCからの入力情報がPHPを介してpostgreSQLにDBデータとして格納される等の連携機能を実現することができます。

 次回は、オープンソースで構成されるシステム開発環境の構成方法についてです。

※RAPS:基幹系システムのRAS(Reliability, Availability, Serviceability)に対するLinux表現
Reliability: 高信頼性 Availability: 高可用性 Portability: 可搬性 Scalability: 拡張性
  1. Samba Users Group Japan, ”samba user group”, (online),available from <http://www.samba.gr.jp/>, accessed 2004-5-26.
  2. Japan PHP users group, ”PHP Japan”, (online),available from <http://www.php.gr.jp/>, accessed 2004-5-26.
  3. Japan postgreSQL users group, “postgreSQL”, (online),available from <http://www.postgresql.jp/>, accessed 2004-5-26.
  4. Jamie Cameron, ”Webmin”, (online),available from <http://www.webmin.com/>, accessed 2004-5-26.
  5. Japan apache users group, “Japanized apache server project”, (online),available from <http://www.apache.jp/>, accessed 2004-5-26.
  6. ncsa, “The National Center for Supercomputing Applications”, (online),available from <http://www.ncsa.uiuc.edu/>, accessed 2004-5-26.
  7. NCSA httpd development team, “NCSA HTTPD”, (online), available from <http://www.its.unimelb.edu.au/manuals/ncsa-httpd1.3/>, accessed 2004-5-26.
  8. OpenSSL Project, “OpenSSL”, (online),available from <http://www.openssl.org/>, accessed 2004-5-26.
  9. JCS, “ApacheのSSL対応化と環境設定”, (online),available from <http://www.atmarkit.co.jp/flinux/rensai/apache04/apache04a.html>, accessed 2004-5-26.
  10. IPA, “SSL(Secure Sockets Layer)”, (online),available from <http://www.ipa.go.jp/security/awareness/administrator/remote/capter7/9.html>, accessed 2004-5-26.
  11. atmarkIT, “MAC Message Authentication Code “, (online),available from <http://www.atmarkit.co.jp/aig/02security/mac.html>, accessed 2004-5-26.
  12. Japan PHP users group, ”PHP japan”, (online),available from <http://www.php.gr.jp/>, accessed 2004-5-26.
  13. Japan apache users group, ” 動的共有オブジェクト (DSO) サポート”, (online),available from <http://httpd.apache.org/docs-2.1/ja/dso.html>, accessed 2004-5-26.
  14. Japan postgreSQL users group,” postgreSQL”, (online), available from <http://www.postgresql.jp/>, accessed 2004-5-26.
関連キーワード
LAPP LAMP apache PHP postgreSQL MySQL システム開発