Laravel 5.1 Broadcastig EventsでPusherを利用してリアルタイム更新アプリを作成するには

Laravelは、アプリケーション独自のイベントを実装する仕組みをフレームワークとして用意しています(参照: Events)。
5.1からこのイベントシステムに、PusherおよびRedis PubSubに対応したBroadcasting Eventsが追加されました。

Broadcasting Eventsを利用したリアルタイム更新アプリのチュートリアルが、sitepointにあったので、それを試しつつLaravelのEventについて調べてみたことをまとめてみました。

今回試した記事は、「Real-time Apps with Laravel 5.1 and Event Broadcasting」になります。

実装していくのは、以下のような構成で更新をリアルタイムに通知するToDoアプリです。
Laravel5.1 Bloadcasting Pusher Provider アーキテクチャ
新規にToDoの項目が追加されるとLaravelアプリはPusher APIを呼び出します。
Pusherはアプリを参照しているすべてのブラウザに更新を通知します。
通知を受けるとJavascriptからLaravelのAPIを呼び出し新しく追加されたToDoアイテムを表示する流れです。

Laravelの動作環境は、Laravel Homesteadを利用しました。
Homesteadの準備については「Laravel homesteadを利用したLaravel 5 ローカル開発環境の構築」も参照ください。
“Laravel 5.1 Broadcastig EventsでPusherを利用してリアルタイム更新アプリを作成するには” の続きを読む

Yii2 AssetをGruntでビルドするには

前回の記事 Yii2のAssetsでNPMやBowerパッケージを読み込むには でYii2のAssetシステムの使い方についてまとめましたが、今回は、Yii2のAssetを使わずに、JavascriptやCSSをGruntで管理する方法について調べた内容をまとめてみました。

前半は、Yii2 CookbookのAsset processing with Gruntの内容を試したメモで、その後簡単なサンプルを作成してみます。

解説の前提として、Yiiプロジェクトが作成されているところからになります。

Gruntのセットアップ

ますは、Node.jsの環境を準備します。

Ubuntuの場合は以下のコマンドでインストールできます。

$ curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
$ sudo apt-get install -y nodejs

他のプラットフォームのパッケージインストールについては Installing Node.js via package manager を参照してください。

OS Xの場合は、nodebrewがおすすめです。

Gruntをグローバルインストールします。

$ sudo npm install -g grunt-cli

プロジェクトディレクトリに移動して、npm initしてpackage.xmlを作成した後、必要なGruntプラグインをインストールしていきます
“Yii2 AssetをGruntでビルドするには” の続きを読む

Yii2のAssetsでNPMやBowerパッケージを読み込むには

Yii2には、Ruby on Railsのような、割りとしっかりしたAssetの仕組みが用意されています。
Assetを利用してフロントエンドのパッケージを、NPMやBowerで管理する手順について調べたのでまとめてみました。

NPM / Bowerパッケージの追加方法

Yii2は、プロジェクトの構成にNPMやBowerをComposerで管理するためのパッケージfxp/composer-asset-pluginを使うことを前提としています。

fxp/composer-asset-pluginを利用すると以下のコマンドで、NPMやBowerパッケージを追加することができます。

NPMの場合

$ composer require npm-assets/angular

Bowerの場合

$ composer require bower-assets/angular

参照: Bower and NPM Assets
“Yii2のAssetsでNPMやBowerパッケージを読み込むには” の続きを読む

Yii2でレスポンスにJSONやXMLを返すには

Yii2のレスポンスにJSONやXMLを返す方法のまとめです。

Yiiは、昔ながらのスタティックなページ遷移のWebアプリケーションの方が向いているフレームワークですが、シングルページアプリケーションやAPIを公開に対応するにあたって、HTML以外のJSONやXMLを返す必要がある場合も多々あります。

そこで、Yii cookbookのGithubに調度良い記事「Working with different response types」があったので、試した内容を書き出してみました。

Yii2でのレスポンスフォーマットの指定方法

以下のコードはGiiのCRUD Generatorで作成したindexアクションです。

// app/controllers/ArticleController
// ...
    public function actionIndex()
    {
        $searchModel = new ArticleSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

コントローラーのrenderメソッドは、Viewの実行結果のHTMLを返します。
“Yii2でレスポンスにJSONやXMLを返すには” の続きを読む

Laravel5でForm & Htmlコンポーネントを有効にする

Laravel5では、ビューで利用するForm、Htmlファサードを含むコンポーネントはコアから外されLaravel Collectiveの方にForm & Htmlとして外に出されています

AngularJSやReactと組み合わせて利用することを想定すると、不要なことも増えましたが、昔ながらのページ遷移が必要なときは、コンポーネントを追加してあげる必要があります

利用するための手順は以下のとおりです

Composerでコンポーネントを追加

// composer.json
    "require": {
        "laravel/framework": "5.0.*",
        "laravelcollective/html": "~5.0"
    },
$ composer update

“Laravel5でForm & Htmlコンポーネントを有効にする” の続きを読む

FuelPHPアプリをCapistrano3でデプロイ – Capistrano環境構築編

前回の記事「FuelPHPアプリをCapistrano3でデプロイ – Chef環境構築編」で準備した環境に、Capistrano3でFuelPHPをデプロイする手順をまとめる

FuelPHPは、Coreをsubmoduleのままにしている場合は、git submoduleに対応させる必要がある
ComposerによるPHPパッケージの追加はCapistrano::Composerプラグインを利用する

公式のREADMEに従ってプロジェクトを作した後に、FuelPHP固有の設定を追加していく

ssh-keyをbitbucketに登録

PCからの直接デプロイする場合は、すでにリポジトリにローカルの公開キーを登録済みと思われるが、登録していない場合は、
ssh-keyを生成してbitbucketに登録」あたりを参考に、公開キーをBitbucketに登録しておく

Capistranoのインストール

まずは、プロジェクト用ディレクトリを作成
[bash gutter=”false”]
$ mkdir fuelphp-cap
[/bash]

Gemfileを作成
[ruby title=”Gemfile”]
source ‘https://rubygems.org’

gem ‘capistrano’, ‘~> 3.4.0’
[/ruby]

bundle installを実行
PCからの実行を考えるとローカルインストールしておきたいので--pathをつけている
[bash gutter=”false”]
$ bundle install –path vendor/bundle
[/bash]
“FuelPHPアプリをCapistrano3でデプロイ – Capistrano環境構築編” の続きを読む

FuelPHPアプリをCapistrano3でデプロイ – Chef環境構築編

Ubuntu 14.04上にFuelPHPアプリをCapistrano3でデプロイする環境をChefでセットアップした手順のまとめ

MySQLは、DB専用サーバーを立てることを前提に、WebアプリケーションサーバーとしてApache + mod_phpな環境をChefで構築していく
また、Capistranoに合わせたApacheの設定もChefで記述する

Chefの実行およびCapistoranoによるデプロイは、踏み台を使わずPC Macからすべて実行可能な環境を作る

Chef開発環境セットアップ

Chef DevKITのインストール

Chefは、現在開発キットが提供されておりRuby gemでのインストールは不要になっている
Chef Development KITのサイトに行くとプラットフォームごとのインストーラーを入手できる
https://downloads.chef.io/chef-dk/
開発キットには、chefおよび以下の周辺ツールがオールインワンで含まれている

  • Berkshelf 3.0
  • Test Kitchen
  • Foodcritic

Knife soloのインストール

PCからChefを実行するためにはKnife soloが必要になる
ChefDKのgemに追加する
[bash gutter=”false”]
$ /opt/chefdk/embedded/bin/gem install knife-solo
[/bash]
“FuelPHPアプリをCapistrano3でデプロイ – Chef環境構築編” の続きを読む

Laravel5 入門 インストールからMVCの基本機能をさっと眺める

Laravel5 を試したメモ

他のフレームワークを利用している人が、Webアプリを作成するにあたって抑えておくべきポイントだけピックアップしてみた

インストール

ローカル開発環境の準備

Laravel5は、PHPやNginx、MySQLなど必要なパッケージをインストールずみのVagrantローカル開発環境 Homestead 提供している

Homesteadのセットアップ手順については、Laravel 5 ローカル開発環境 homestead 構築手順にまとめている
“Laravel5 入門 インストールからMVCの基本機能をさっと眺める” の続きを読む

Yii 2.0 入門 – インストールからコード生成ツールGiiの使い方、ルーティング設定まで

PHPのMVCフレームワークの中では、Githubリポジトリのスターの数がLaravel, CodeIgniter, Symfonyに次いでくらい多いのに、国内では書籍でも紹介されることがないマイナーなフレームワークYii。
最近2.0がリリースされてモダンになったらしいので、雰囲気を掴むためにプロジェクトのセットアップからScaffoldingツール GiiによるCRUDコードの生成を試してみました。

Yiiの特徴としては、まずOracleにやMongoDBなど他のフレームワークでは対応していないDBまでサポートしていることがあります。
SQLServerは最近どのフレームワークでも対応してきましたが、Oracleでちゃんと動くのはYiiとSymfonyくらいではないでしょうか。

また、これからフレームワークを選定するならLaravelとの比較になると思いますが、LaravelはフロントエンドにAngularJSやReactJSなどのSPAフレームワークと組み合わせて使うことを考慮しているのに対して、どちらかというとYiiは昔ながらのMVCフレームワークでシンプルです。
また、Scaffoldingツール Giiが便利で、ささっとDBのフロントアプリを立ち上げたいとかに向いてそうです。

インストール

Vagrantを利用して環境を構築してみます。
Ubuntu 14.04のVagrant boxにLAMPをインストールし、Yii 2.0のプロジェクトを生成、動作を確認するところまでまず解説していきます。

Vagrant環境のセットアップ

プロジェクト用ディレクトリyii2-helloを作成して、Ubuntu 14.04のVagrant環境を用意
[bash gutter=”false”]
$ mkdir yii2-hello && cd yii2-hello
$ vagrant init ubuntu/trusty64
[/bash]
“Yii 2.0 入門 – インストールからコード生成ツールGiiの使い方、ルーティング設定まで” の続きを読む

Laravel homesteadを利用したLaravel 5 ローカル開発環境の構築

Laravelは、フロントエンドのビルドツールLaravel ElixrがGulpタスクであるためPHPの他にNode環境が必要になったりと、ひととおり開発環境を揃えるのが若干面倒だったりします。
そこで、Laravelには、ローカル開発用のVagrant box Laravel Homestead が用意されています。

この記事では、Homesteadを利用したLaravel5の開発環境の構築手順を試してみたのでまとめてみました。

前提条件としてVirtualboxとVagrantはインストール済みとして解説します。
boxはVirtualboxとVMWare プロバイダ用がありますが、ここではVirtualboxを利用します。

HomesteadのVagrant boxを追加

vagrant boxコマンドでhomestead boxを追加します。
[bash gutter=”false”]
$ vagrant box add laravel/homestead
==> box: Loading metadata for box ‘laravel/homestead’
box: URL: https://atlas.hashicorp.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) virtualbox
2) vmware_desktop

Enter your choice: 1
==> box: Adding box ‘laravel/homestead’ (v0.4.1) for provider: virtualbox
box: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.4.1/providers/virtualbox.box
==> box: Successfully added box ‘laravel/homestead’ (v0.4.1) for ‘virtualbox’!
[/bash]
virtualboxを選択します。

Homesteadのインストール

ユーザのホームディレクトリにHomesteadをインストールします。
Homesteadには、Vagrantfileと初期設定のためのシェルのみが含まれます。

以下のコマンドを実行してHomesteadをセットアップします。
[bash gutter=”false”]
$ ~
$ git clone https://github.com/laravel/homestead.git Homestead
$ cd Homestead/
$ bash init.sh
Homestead initialized!
[/bash]
クローンして、init.shを実行すると設定を含む~/.homesteadディレクトリが作成されます。

“Laravel homesteadを利用したLaravel 5 ローカル開発環境の構築” の続きを読む