Composerとは何ぞや?

世間ではAdvent Calendarの真っ最中ですが、そんなの気にせずにただひたすら好き勝手に書いていきますよ。

という訳で、前回はSymfony2のディレクトリを簡単に説明しました。
今回からアプリの説明をしていきましょうと思ったのですが、
Composerの説明がしたくなったのでそれの説明をします。

で、早速ですが、Composerとは何ぞやという事で調べてみましょう。


ここを見るとComposer
はい、英語ですね。英語が分からなければさっぱり分かりませんね。
おいらも何が書いているのかさっぱり分かりません。


Composerとは簡単に言うと、ライブラリの依存関係を管理するツールです。
RubyでいうBundlerみたいなもんですね。ちょっと違うか。

Symfony2ではこのComposerを使ってバンドルを管理しています。
Symfony2ディレクトリ直下にcomposer.lockやcomposer.jsonというファイルがありますね。
これがComposerの設定ファイルとなります。

composer.lockは現在使用しているバンドルのバージョン等が管理されます。
composer.jsonには必要となるバンドルを記述します。
そうです。composer.jsonに設定を書くだけで必要となるバンドルを取得してきてくれるんです。
これは便利ですね。
Symfony2では別に手動でバンドルを追加して行く事も可能ですがね。


早速使い方ですが、今のままだと使えないので、Composerを実行するためのphpファイルを落としてくれる必要があります。

以下はMacでの記述となります。Windowsの人はごめんなさい。
ターミナルでSymfonyディレクトリまで移動した後、このコマンドを実行しましょう。

php composer.phar install

そうするとcomposer.pharというファイルが保存されたでしょう。
これがComposerを実行する時に必要となるファイルとなります。
ところでpharて何て呼ぶんですかね。ピャー?ファー?ピヤー?まぁ何でも良いです。


これで環境は整いました。早速使ってみましょう。
今回はfacebook用ライブラリをcomposerを使って落としましょう。


まずcomposer.jsonを開いて以下を追加してください。

require":{
      ・
      ・
      ・
        "facebook/php-sdk": "dev-master"
}

requireと書いてある最終行に追加し、
次にターミナルから以下のコマンドを実行しませう。

php composer.phar update facebook/php-sdk

するとダラダラ〜と何かが流れていき終わると、何という事でしょう。
vendorディレクトリの中にfacebookディレクトリというのが出来ているではありませんか。
これは、facebookが公開しているphp-sdkを取得してきただけなんですけどね。


Composerを使うと手動で追加するという事はしなくて済みます。
ただし、バンドルがcomposer形式でダウンロード出来るように公開されていないと結局は手動で追加する必要があるんですけどね。



今回Composerの説明を急にする事になったのは何故かというと、
前にSymfony2をダウンロードする時にwithout-vendorsでは無い方をダウンロードするように書きました。

じゃあwithout-vendorsを選ぶと必要なバンドルは無い訳ですが、じゃあバンドルをどうやって追加すれば良いかというと、
Composerを使ってダウンロードするわけですね。

Symfony2のダウンロード画面Download Symfony Framework and Components

php composer.phar create-project symfony/framework-standard-edition path/ 2.1.4

と記載されていますが、まさしくこれがcomposerを使って必要となるバンドルを追加する事になります。


じゃあなぜwithout-vendorsが用意されているかというと、
ダウンロード画面ではGitで管理する時はwithout-vendorsを使いましょうね。
と書かれています。

別にGitで管理する時はvendor直下のバンドル全て管理すりゃ良いじゃんと思ってしまう訳ですが。
ちなみにおいらはvendor直下のバンドル全てGitで管理しています。


よくSymfony2はバンドルを組み合わせたフレームワークと言いますが、
Composerの事を少しでも良いから理解すると何となく分かると思います。
実はおいらもComposerはまだ良く分かっていませんが。。。


という訳でComposerの説明は簡単ではありますが終わります。
次回以降からはアプリの作り方を簡単に説明していきます。一体いつ始まるんだ。。。