Mac OS X+PHPでオールインワン環境

準備編 クライアントPCに言語環境を入れる理由

繁田 卓二
株式会社 qnote

2008/7/25

エディタとWebブラウザさえあれば開発できる手軽さが特徴のLL言語。開発工程や環境を見直すと、もっとスマートなプログラミングが可能になる(編集部)

 最近、Webアプリケーション開発者の間ではMacに移行することがトレンドとなりつつあります。そこには単に「おしゃれだから」「格好いいから」という理由ではなく、「開発の効率化」という言葉が背景にあるようです。

 もちろんRubyやPHPをはじめとするLL言語(Lightweight Language:軽量プログラミング言語)と呼ばれる最近の言語は、実行環境だけでなく開発環境もプラットフォームに依存せず、極端な話、エディタとWebブラウザさえあれば開発できます。

 にもかかわらず、Macが開発者に好まれるのは、Mac OS X 10.5 Leopardになり正式にUNIX認定を受けたことが大きな理由ではないでしょうか。WebアプリケーションはまだまだUNIXベースでの動作を想定しているものが多いというのが現状です。それ故、コーディング、テスト、デバッグ、デプロイといった一連の環境をすべて1つのUNIX環境に集約できるというのは確かに大きな魅力です。

 本連載ではクライアントマシンとなるMac OS X Leopard上で複数バージョンのPHPを実行させるオールインワン環境を構築し、かつ効率的な開発を手助けするための手法をお伝えしたいと思います。

関連記事:
リンク Mac OS Xで動かす軽量プログラミング言語
http://www.atmarkit.co.jp/fcoding/articles/macll/maclla.html
リンク Mac OS XでAMP構築
http://www.atmarkit.co.jp/fcoding/articles/macamp/macampa.html
リンク プログラマーを引き付けるMac OS Xの魅力
http://www.atmarkit.co.jp/fcoding/articles/macosx/macosxa.html

クライアントマシンに言語環境を入れる理由

 そもそも、なぜクライアントマシンにWebサーバや言語の実行環境を入れる必要があるのかを考えてみましょう。前述のとおり、LL言語などの簡易言語ではエディタで記述したソースコードそのものが実行エンジンなどにロード・実行されます。そのため、コンパイラなども必要なく、コードを「書く」だけであればエディタで事足ります。クライアントマシン上でコードを実行させる環境は必須ではありません。

 しかし、プログラムを一度も実行せずにアプリケーションをリリースすることはよほどの達人でなければ不可能です。通常は、手元のコードをある程度完成させた段階で、別途用意したLinuxなどの環境にFTP(or SCP)転送した後にWebブラウザ経由で実行して動作確認を行います。

 以後、手元のソースコードを修正するたびにリモート環境へファイルをアップロードするという作業を延々と繰り返すことになります。つまりクライアントマシンはソースコードの編集にのみ使用し、実行環境はリモートのサーバに任せ、両環境のソースコードを手動で同期させる、という手法です。

 まずは、この手法の無駄について考えてみます。ここでは、(1)手元のファイルを修正→(2)FTPアップロードアプリケーションでファイルを転送→(3)Webブラウザで確認という3つの工程が発生します。

 仮に(2)のファイルをアップロードする手順(アプリケーションを切り替え、ファイルを選びドラッグアンドドロップしサーバに転送)に5秒かかったとします。わずか5秒と思われるかもしれませんが、プログラムが完成するまでにその手順を何回行うのかを考えると相当な時間を浪費していることに気付くでしょう。

 また、Subversionなどを使って複数開発者の間でソースコードを共有している場合、変更されるファイル数が増えるというだけでなく、変更ファイルが非常に多岐にわたって分散します。自分が修正したファイルでなくても、正しくアップロードされていなければ動作しないような場合もありますので、こういったファイルのアップロード漏れに気付かず、原因調査に数時間を費やすということも決して珍しいことではありません。

 つまりこの手法では時間のロスが問題となるわけです。この問題はプログラムの規模とプロジェクトメンバに比例します。大きなプロジェクトになれば、こういったロスが開発者の気力と集中力に影響し、それがバグにつながるということは決して大げさな話ではありません。

 もちろんこれらの工程はツールを使うことで自動化が可能です。しかし、やはり環境が物理的に分かれていることでデータ転送の無駄は発生しますし、ネットワークに接続できない環境では、開発はおろか動作デモさえ行えません。特に最近では、プレゼンテーションなどで客先に訪問してもセキュリティの理由からネットワークに接続できないというところも多いのではないでしょうか。

 VM環境を使用するのも1つの解決策ではありますが、仮想化技術が向上したとはいえ、やはり言語の実行環境のためだけにOSを立ち上げるのはCPUリソースの無駄だといえます。

 クライアントマシンにPHPを入れる理由とは、こういった無駄を排除した結果、必然の流れといえます。開発者が編集するソースコードファイルと実行環境がロードするファイルを同一にしておけば転送は必要ありませんし、アップロードアプリケーションを常時起動しておく必要もないのです。さらにネットワークに接続されていない環境でも実行できますので、客先でデモしながら要望を即座に反映、といった「荒業」も可能なのです。

LeopardにプリインストールされたPHP環境

 ここでLeopardにプリインストールされたPHP環境を見てみましょう。Leopardではコマンドラインで使用するphpコマンドとApacheハンドラモジュール版のlibphp5.soがインストール済みです。いずれのPHPもLeopard発売当初の最新バージョン5.2.5がインストールされています。それぞれの実体は以下のパスに存在するバイナリファイルとなっています。

/usr/bin/php
/usr/libexec/apache2/libphp5.so

 これらのバイナリでも、ある程度は開発環境として使用できますが、比較的よく使用するGDライブラリモジュールが組み込まれていなかったり、追加での拡張モジュールを組み込むのが困難であったりなどの制限があります。これらの理由から、Leopardにインストール済みのPHP環境には手を付けず、別の場所に新規インストールするのが好ましいでしょう。

 また、PHPをWebアプリケーションとして動作させるためにはWebサーバが必須となりますが、こちらもLeopardに標準でApache 2がインストールされています。ただし、PHPを新たにインストールする際にApacheモジュールの有効化でエラーとなるため、こちらも新たにインストールし、元の環境には手を付けないようにします。

 OSに付属する環境は、ほかのアプリケーションからも参照される可能性があり、また、将来的にソフトウェアアップデートにより上書きされる可能性もあります。今回はプリインストール環境には手を加えず、新たに独自の環境を構築し、そこを開発環境として使用します。

独自の環境を構築する

 とはいえ、すべての環境をソースからビルドするのは大変です。そのため今回はMacPortsを使い、ApacheやPHPが必要とするパッケージ群をインストールします。MacPortsはLinuxでいうところのyumやapt-getといったパッケージ管理ツールと同じで、Mac OS X向けのパッチとコンフィグを含んだパッケージの自動インストーラです。

画面1
画面1 The MacPorts Project Official Homepage

関連リンク:
リンク The MacPorts Project Official Homepage
http://www.macports.org

 今回、少しカスタマイズが必要なPHPはソースからコンパイルするとして、それ以外のパッケージはすべてMacPortsを使用してインストールします。またMacPortsでのパッケージビルドにはXCodeToolsが必要ですのでこれも後ほどインストールします。大まかな手順は以下のとおりです。

  1. MacPortsのインストール
  2. XCodeToolsのインストール
  3. Apache 2をインストール
  4. PHPのコンパイルとインストール
 
1/3

Index
クライアントPCに言語環境を入れる理由
Page1
クライアントマシンに言語環境を入れる理由
LeopardにプリインストールされたPHP環境
独自の環境を構築する
  Page2
MacPortsのインストール
MacPortsのアンインストール
Xcode Toolsのインストール
  Page3
Apacheのインストール

Mac OS X+PHPでオールインワン環境

 Mac OS X関連記事
プログラマーを引き付けるMac OS Xの魅力
続々移行するそのワケとは
 Mac一筋という熱狂的なユーザーだけでなく、「面白いことをしたい」と考えるエンジニアもMac OS Xを利用し始めている。いったいなぜだろう
Mac OS XでAMP構築
3通りの方法で整備できる開発環境
 Mac OS Xの上にWebアプリケーションの定番、AMP(Apache+MySQL+PHP)環境を3通りの方法で導入してみましょう
Mac OS Xで動かす軽量プログラミング言語
導入からPHP拡張モジュール組み込みまで
 Leopardでは、インストール直後からいくつかの軽量プログラミング言語が利用できます。早速試してみませんか?
Objective-Cは特殊な言語?
Cocoaの素、Objective-Cを知ろう(1)
 iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう
Mac内にPHP4、5、6を同居させるコツ
Mac OS X+PHPでオールインワン環境(インストール編)
 PHP4の開発は終了したが、移行の問題は残されている。異なるバージョンのPHPをスムーズに切り替えるには?
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間