higehikiのブログ

iPhoneアプリ「ログ雀」の中の人です。

composer

fuelPHP1.6が5月初旬にリリースされていましたが、手付かずでした。
ということでインストールして使って見ることに!
今回のバージョンアップの目玉は何と言ってもComposerに対応!!

...

Composerって何だっけ...?

pearと似たようなライブラリ管理ができる」っていうフワッとした認識でした。

ということで改めてComposerについて調べてみた。

Composerとはライブラリの依存関係を管理するツールです。
RubyでいうBundler、Nodeでいうnpmです。

Googleで調べると大体こういうまとめ方されています。

わかりづらい書き方ですが、色々と読ませて頂いた結果、理解は以下。

例えば、あるフレームワークを利用するとしたときに、そのフレームワークが必要としている外部ライブラリを簡単にインストールしたり、ライブラリ自体のバージョン管理をすることができる、といったもののようです。

今回、fuelPHP1.6をインストールしてapacheでpublic/index.php をブラウザでチェックしたところ、composerをアップデートしろエラーしか出ない。

エラー通りにアップデートしたらあっさり解決。

$ php composer.phar update


上記コマンドで以下3パッケージがインストールされたみたい。

$ php composer.phar show
installed:
  fuelphp/upload  2.0   Uploaded file processing.
  monolog/monolog 1.5.0 Sends your logs to files, sockets, inboxes, databases and various web services
  psr/log         1.0.0 Common interface for logging libraries


確認すると fuel/vendor ディレクトリ配下にいずれもしっかりありました。
また、fuel/vendor/autoloader.php からrequireされている fuel/vendor/composer/autoload_namespaces.php にインストールしたライブラリのPATHがしっかり記述されてました。
installed.json にはインストールログが残されていました。

まとめ

ライブラリ自体を管理するっていうのはこういうことなんですね。
サーバーにアプリケーションが1つのみであれば、pearとさほど変わらないように感じますが、例えば1サーバーに2つ以上のアプリケーションがあって、それぞれ別々のライブラリ・バージョンが必要だったと仮定すると非常に便利なんではなかろうか…。

後はアレか。
例えばフレームワークのバージョンをあげた際に必要なライブラリもバージョンをあげなきゃ!なんてときはcomposer.jsonにちょいちょい書いて実行すれば勝手にバージョンアップしてくれるっと。

今回のようにフレームワークが標準で対応するまでは、各自でcomposer.jsonをいじって利用していた方も多いんでしょうが、標準対応してくれるってのは非常にありがたい。
環境構築にかけるコストが減っていけばアプリケーションの開発に費やせる時間が増えて開発者にとっちゃ願ったり叶ったりですねー。

今までライブラリってどう管理していたかというと...
archiveをwgetしてきて展開してポイッ!
ディレクトリごとコミットして、コメントには◯◯バージョンアップ!という感じ。

思い返すとけっこう恐ろしいことやってるんですよね。はは。

だいぶ出遅れた感は否めませんが、これからはComposer一筋でやっていきます!
PHP5.2系以下でサービスを提供しているそこのあなた!
早く5.3.2以上にあげた方が良いですよ…

ちなみにIDEでNetBeansを使っているんですが、composer.pharファイルでエラーが出ちゃってやがります。と思ったら、version7.3できっちり対応してきやがってます。
こっちもインストールしときましたっと。