h3pei.tech
お仕事のご依頼
2014-02-01

PHPのビルド? Phing?

ビルドまわりについては 過去に調べた ことがある。

しかし、PHP に対してビルドという言葉が使われている記事などを見かけたり、聞いたりすることが多くなって、意味がわからなくなってきた。 (PHP そのものに対してであればわかるけど、多分そうではない)

ビルド=コンパイル+リンクだと思っている。けど、PHP コードをコンパイルとかリンクする意味や必要があるのか。「Phing」という PHP 用のビルドツールなるものがあるようだけど、一体どんな用途で使われているんだろう。

という疑問を持ったので、調べてみた。

http://www.m-takagi.org/docs/php/pocket_guide/2.3/ja/phing.html(※ 現在はリンク切れ)

Phing(PHing Is Not GNU make)は Apache Ant をもとにしてつくられらたプロジェクトビルドシステムです。
PHP の世界ではソースファイルをビルドしたりコンパイルしたりする必要はありません。Phing が意図しているのは、パッケージの作成や配布、そしてアプリケーションのテストを容易にすることです。
これらの作業を行うために、Phing には多くの独創的な操作モジュール(”タスク”)が用意されており、また独自のタスクを追加しやすいようにオブジェクト指向のモデルが提供されています。

PHP コードそのものをビルド・コンパイルする必要は無いということがわかった。その認識は間違ってなくて良かった。 しかし、Phing のメリットについてはこの説明じゃよくわからなかった。 もう少し追って調べてみる。

なぜ Phing?
Phing はプロジェクトビルドシステムで、テストや検証などを Phing を経由して一括化することができます。
Jenkis 側にビルドコマンドを1つ1つ登録してもいいのですが、
・ローカルマシンでもテスト・検証を一括で行いたい
・別プロジェクトを作る度に、Jenkins にビルドコマンドを1つ1つ登録するのは面倒だな
なんてニーズは満たせません。

なるほど。PHPUnit を使ったユニットテストとか、PHP_CodeSniffer を使ったコード規約違反の有無チェックとか、phpDocumenter を使ったドキュメント生成とかを、Phing では簡単に管理できるようだ。 もう少し具体的に調べてみたところ、各設定を終えたあと以下のコマンドなどでユニットテスト、コードチェック、ドキュメント生成など、登録した作業が実行できるようだった。

phing build 

とか

phing test

とか。具体的なコマンドについては自分で設定できるのかもしれない。 さしあたって、そこは本質的なところではないので、考えないことにしよう。

と、ここまで調べて自分が疑問に思っていた PHP とビルドの関係についてはなんとなく解消された。 PHP コードのビルドを指しているのではなくて、PHP で書かれたプロジェクトをビルドするのが Phing のようなツールだったということ。

でも、ビルドはコンパイル+リンクだよね。なんで PHP プロジェクトをビルドする必要があるのか、いまいちわからない。ビルドの意味を勘違いしているのか、PHP プロジェクトは何かしらの場面でビルドをする必要があるのか、どっちかなのか。それとも、Phing は Java のビルドツール Ant の PHP 版だからという理由で、ビルドという言葉が使い回されているのか。

これ以上は調べてもなかなか出てこなかったので断念。。 またの機会に調べよう。

h3pei's icon

h3pei

フリーランスのソフトウェアエンジニア。Ruby / Rails アプリケーションの開発が得意領域。設計・実装・運用まで含めてプロダクト開発が好きです。

Questalという目標達成コミュニティサービスを開発しました。仲間と一緒に目標達成に取り組みたい方はぜひご利用ください。

お仕事のご依頼
GitHubnoteX

関連記事