26
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CakePHPAdvent Calendar 2014

Day 4

私たちのプロジェクトのcomposer.jsonチラ見せ::CakePHP Advent(4日目)

Posted at

この記事は2014年CakePHP Advent Calendarの4日目です。

今回は私が現在支援で関わっているプロジェクトのcomposer.jsonを2つチラ見せしたいと思います。
とは言っても、すべての内容を掲載することはできないので、以下のフィルタがかかっています。

  • requireとrequire-devの内容についてversion情報は固定にしているものが多いので、すべて共通で伏字(x.x)にしています。
  • プライベートリポジトリ内の共通ライブラリも使っているのですが、それは以下の内容から削除しています。

プロジェクトY(仮名)

    "require": {
        "cakephp/cakephp": "x.x",
        "cakedc/search": "x.x",
        "sizuhiko/fabricate": "x.x",
        "shama/ftp": "x.x",
        "josegonzalez/cakephp-entity": "x.x",
        "fusic/filebinder": "x.x",
        "yohang/finite": "x.x",
        "symfony/http-foundation": "x.x"
    },
    "require-dev": {
        "phpunit/phpunit": "x.x",
        "pear-pear.horde.org/horde_text_diff": "x.x",
        "cakephp/debug_kit": "x.x",
        "cakedc/migrations": "x.x",
        "sizuhiko/Bdd": "x.x",
        "behat/mink-goutte-driver": "x.x",
        "behat/mink-selenium-driver": "x.x",
        "behat/mink-selenium2-driver": "x.x",
        "weavora/mink-extra-context": "x.x",
        "wsdl2phpgenerator/wsdl2phpgenerator": "x.x"
    }

プロジェクトX(仮名)

    "require": {
        "cakephp/cakephp": "x.x",
        "fusic/filebinder": "x.x",
        "sizuhiko/fabricate": "x.x",
        "phpseclib/phpseclib": "x.x",
        "josegonzalez/cakephp-entity": "x.x",
        "barracudanetworks/archivestream-php": "x.x",
        "josegonzalez/queuesadilla": "x.x",
        "behat/gherkin": "x.x"
    },
    "require-dev": {
        "phpunit/phpunit": "x.x",
        "pear-pear.horde.org/horde_text_diff": "x.x",
        "cakephp/debug_kit": "x.x",
        "sizuhiko/Bdd": "x.x",
        "behat/mink-goutte-driver": "x.x",
        "behat/mink-selenium-driver": "x.x",
        "behat/mink-selenium2-driver": "x.x",
        "cakedc/migrations": "x.x"
    }

利用しているライブラリの紹介

プロジェクト間で大きな違いはないのですが、利用しているライブラリやCakePHP2プラグイン(以下、バージョンを省略してCakePHPプラグインと記述)について紹介します。

cakedc/search

CakePHPのSearchプラグインです。簡単に検索機能付きの一覧画面を作れる必須のプラグインです。
http://github.com/CakeDC/search

sizuhiko/fabricate

主にテストデータを生成するためのデータジェネレータです。RubyのFabricator、FactoryGirlに影響を受けたCakePHPプラグインです。fixtureに記述するデータを利用するとテストが壊れやすくなる問題を解決します。
https://github.com/sizuhiko/Fabricate

shama/ftp

FTP/SFTPを実行するCakePHPプラグインです。内部ではphpseclibを使っています。私たちのプロジェクトではSFTPをCakePHPから容易に実行できるので利用しています。
https://github.com/shama/cakeftp

josegonzalez/cakephp-entity

もともとバスケさんがCakePHP1用に開発したプラグインをコアデベロッパーのjoseが引き継いでCakePHP2用にメンテしているCakePHPプラグインです。find結果をarrayでなくEntityオブジェクトで返却します。最新バージョンではCakePHP3と同じように ORM/Table のようにネームスペースなどを使いCakePHP3と互換性を持たせる実装に変わっているので、CakePHP2からCakePHP3へ移行する前に一部の実装を予めCakePHP3に寄せておくことが可能になっています。
https://github.com/josegonzalez/cakephp-entity

fusic/filebinder

PHPMatsuri優勝者を多数輩出するFusicが公開しているファイル添付を実現するCakePHPプラグインです。ファイルを添付するプラグインはいくつか出ているのですが、機能や利用しやすさなどを比較し採用しています。
https://github.com/fusic/filebinder

yohang/finite

ステートマシーンのPHP実装で、状態管理/制御を持つオブジェクトのプログラミングでは必須のライブラリです。
http://yohan.giarel.li/Finite/

symfony/http-foundation

Response::isClientError()Response::isServerError() を活用しています(そのためだけという...)
https://github.com/symfony/HttpFoundation

phpunit/phpunit

PHPUnitです
https://phpunit.de/

pear-pear.horde.org/horde_text_diff

テキストのdiffを取るのに便利なライブラリです。
http://www.horde.org/libraries/Horde_Text_Diff/download

cakephp/debug_kit

CakePHPでのアプリケーション開発には必須のDebugKit
https://github.com/cakephp/debug_kit

cakedc/migrations

DBスキーマをマイグレーションするためのCakePHPプラグイン。継続的インテグレーションを実践するプロジェクトでは必須です
https://github.com/CakeDC/migrations

sizuhiko/Bdd

CakePHPアプリケーションをBehat/Minkから簡単にテストできるようにするCakePHPプラグインです。私たちのプロジェクトではBehat/Mink/Selenium2とJenkinsの活用でエンドツーエンドテストを実施し継続的インテグレーションを実践しています。
https://github.com/sizuhiko/Bdd

behat/mink-goutte-driver, behat/mink-goutte-driver, behat/mink-selenium2-driver

Behat/Minkでテストを実行するときに必要となるドライバ群

weavora/mink-extra-context

Behat/Minkでテストを実行するのに便利なステップをまとめたBehat拡張
https://github.com/weavora/mink-extra-context

wsdl2phpgenerator/wsdl2phpgenerator

WsdlファイルからPHPのコードを自動生成するライブラリ。生成されるコードも可読性が高く利用も簡単なのでSoapインターフェースを実装するのにお勧めです
http://wsdl2phpgenerator.github.io/wsdl2phpgenerator/

phpseclib/phpseclib

PHPでRSA, AES, SSH2, SFTP, X.509などを利用するための定番ライブラリ。
http://phpseclib.sourceforge.net/

barracudanetworks/archivestream-php

動的にtarやzipをダウンロードするためのライブラリ
https://github.com/barracudanetworks/ArchiveStream-php

josegonzalez/queuesadilla

ジョブキューを実現するためのライトウェイトライブラリ。Beanstalk,In-Memory,Mysql,Redisに対応しています。
http://josegonzalez.viewdocs.io/php-queuesadilla/

behat/gherkin

Gherkin記法を解釈するためのライブラリですが、プロジェクトではユーザが自然言語で書いた条件定義を解析するのにも利用しています。
https://github.com/Behat/Gherkin

さいごに

他の人のプロジェクトでどういうライブラリを使っているのか気になりますよね。
CakePHP Adventカレンダー2014では、また空いている日があるので、composer.jsonのチラ見せをしてみてはいかがですか?

26
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?