2
1

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.

yii2をcomposer-asset-pluginから自由にする

Posted at

はじめに

PHPのアプリケーションフレームワークyii(以下yii2)は、FastでSecureでプロユースですが、ビルドに一手間掛かるのが玉に瑕です。
その手順は、公式ドキュメントのファーストビューに飛び込んできてしまうほどです。
今回は、yii2をFastにビルドするコネタを紹介します。

課題

ビルドの一手間を具体的に確認してみます。

公式ドキュメントより

composer global require "fxp/composer-asset-plugin:^1.2.0"
composer require yiisoft/yii2

composerを用いて、2つのコンポーネントをインストールしています。2行目は、我らがyii2の本体となります。
1行目でインストールしているfxp/composer-asset-pluginリポジトリを一読してみると

This plugin works by transposing package information from NPM or Bower to a compatible version for Composer. This allows you to manage asset dependencies in a PHP based project very easily.

とあります。
NPMやBowerで管理されているライブラリをcomposer互換に整理してくれるツールの様です。yii2では、このツールをフロントエンドライブラリのパッケージマネージャとして利用するわけですが、以下の問題が生じます。

  1. グローバルにインストールする
  2. フロントエンドを必要としないアプリケーション(WebAPI等)には不要
  3. インストールの所要時間が長い

1は言わずもがなですが、サーバの環境は可能な限りクリーンにしておきたいものです。
2については、ビューを提供するWEBアプリケーションであれば必要コストなので問題ありませんが、フロントエンドを必要としないWebAPI(JSON over HTTP)なアプリケーションの場合は、面倒なだけです。
3については、後ほど記載しますが、所要時間が想像以上に長く、yii2の価値を毀損しているのではないかと思うほどです。

私の所属するチームでは、WebAPIの開発も担当しています。
実現したいことは、__fxp/composer-asset-pluginをインストールすることなくyii2で実装したアプリケーションをビルドする__ことです。

方法

簡単です。同じような課題意識を持った先輩の肩に乗るだけです。

composer.jsonに上記のコンポーネントを追加します。注意点としては、cebe/assetfree-yii2とyii2本体のバージョンを合わせることです。

  • yii2のバージョンを2.0.7とする場合
"yiisoft/yii2": "2.0.7",
"cebe/assetfree-yii2": "2.0.7"

追加後は、composer installでインストールしていきます。事前にcomposer global require "fxp/composer-asset-plugin:^1.2.0"コマンドを実行する必要はありません。

成果

私の所属するチームでは、OpsWorksを利用しており、アプリケーションのデプロイもOpsWorksが担当します。
cebe/assetfree-yii2 導入前後デプロイの所要時間をOpsWorksのログファイルから拾ってみました。

  • before : 2分37秒
[2017-01-21T01:59:56+09:00] INFO: Processing script[install_composer] action run (/srv/www/apollo_app_stg/releases/20170120165934/deploy/before_restart.rb line 24)
[2017-01-21T02:02:33+09:00] INFO: script[install_composer] ran successfully
  • after : 1分10秒
[2017-01-21T01:54:30+09:00] INFO: Processing script[install_composer] action run (/srv/www/apollo_app_stg/releases/20170120165407/deploy/before_restart.rb line 24)
[2017-01-21T01:55:40+09:00] INFO: script[install_composer] ran successfully

所要時間が半分以下になりました。デプロイ時のコマンドも省略することが出来ました。

おわりに

yii2をFastにビルドする方法を紹介致しました。次期バージョンでは、fxp/composer-asset-pluginの利用がオプションになるかもとのことですが、当面はお付き合いする必要がありそうです。
Fastといえば、PHP7の事例もぼちぼち挙がっている様です。こちらも機会を伺ってチャレンジしてみたいと思います。

参考

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?