準備編 クライアント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 |
これらのバイナリでも、ある程度は開発環境として使用できますが、比較的よく使用するGDライブラリモジュールが組み込まれていなかったり、追加での拡張モジュールを組み込むのが困難であったりなどの制限があります。これらの理由から、Leopardにインストール済みのPHP環境には手を付けず、別の場所に新規インストールするのが好ましいでしょう。
また、PHPをWebアプリケーションとして動作させるためにはWebサーバが必須となりますが、こちらもLeopardに標準でApache 2がインストールされています。ただし、PHPを新たにインストールする際にApacheモジュールの有効化でエラーとなるため、こちらも新たにインストールし、元の環境には手を付けないようにします。
OSに付属する環境は、ほかのアプリケーションからも参照される可能性があり、また、将来的にソフトウェアアップデートにより上書きされる可能性もあります。今回はプリインストール環境には手を加えず、新たに独自の環境を構築し、そこを開発環境として使用します。
独自の環境を構築する
とはいえ、すべての環境をソースからビルドするのは大変です。そのため今回はMacPortsを使い、ApacheやPHPが必要とするパッケージ群をインストールします。MacPortsはLinuxでいうところのyumやapt-getといったパッケージ管理ツールと同じで、Mac OS X向けのパッチとコンフィグを含んだパッケージの自動インストーラです。
画面1 The MacPorts Project Official Homepage |
関連リンク: | |
The MacPorts Project Official Homepage http://www.macports.org |
今回、少しカスタマイズが必要なPHPはソースからコンパイルするとして、それ以外のパッケージはすべてMacPortsを使用してインストールします。またMacPortsでのパッケージビルドにはXCodeToolsが必要ですのでこれも後ほどインストールします。大まかな手順は以下のとおりです。
- MacPortsのインストール
- XCodeToolsのインストール
- Apache 2をインストール
- 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をスムーズに切り替えるには? |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|