Google AppEngine PHPからCloud SQLへ接続する

PHPのGoogle AppEngine アプリケーションからGoogle Cloud SQLを利用する手順について調べてみたのでまとめてみました。

公式ドキュメントのチュートリアルUsing Google Cloud SQLに沿って試してみた内容になります。
このページの解説では、かなり他のページも参照しながらでないと進められませんでしたので、ここでは以下の流れを1記事で解説しています。

  1. Cloud SQLのインスタンスを作成
  2. ローカルPC(Max OS X)のMySQL Clientから接続してアプリ用のテーブルを作成
  3. AppEngineからCloud SQLデータベースへ接続

Cloud SQLは、パフォーマンスや機能が改善された第2世代が利用可能になっていますが、2016.03.30現在ベータでAppEngineからの利用はできませんので今回は第1世代を利用しました。

AppEngineのプロジェクト作成とPHPのHello Worldについては前回の記事「Google App Engine PHP開発の進め方」を参照ください。
以下は、この後からの手順になります。
“Google AppEngine PHPからCloud SQLへ接続する” の続きを読む

Google App Engine PHP開発の進め方

AppEngineは、構成選択肢がだいぶ増えておりPHPに加えて、Go、Node.js、Dockerなど様々なプラットフォームが利用可能になっています。
PHPについては、2015.6.16に正式サポートされるようになっています。
App Engine for PHP is generally available. Build scalable apps, faster.

PHPアプリを動かすプラットフォームを改めて検討することになりそうなので、App Engine SDK for PHPの使い方を調べています。
まずは、Hello Worldからですが、AppEngineは、現在Google Cloud Platformの1つのサービスとして利用可能になっています(しばらく触っていなかったのでその辺りも一から調べ直してます)。
昔のコンソール https://appengine.google.com もまだ利用可能なようですが、CGPプロジェクトを作成してAppEngineにデプロイする手順を確認しています。

手順は、Mac OS X El Capitanで確認しました。
SDKを利用するには、前提条件としてPython 2.7が必要です。El Capitanはデフォルトで利用可能なので、Pythonのセットアップと確認は省略しています。

Google App Engine SDK for PHPのインストール

Google App Engine SDK for PHPを開きMac OS XのGoogleAppEngineLauncher-1.9.35.dmg (2016.3.27現在)をダウンロードします。

「Installing on Mac OS X」にしたがってインストールしていきます。

GoogleAppEngineLauncherApplicationsフォルダにドラッグします。
GoogleAppEngineLauncherを開くと、Make command symlinksのプロンプトが開くので[OK]をクリックします。
“Google App Engine PHP開発の進め方” の続きを読む

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のインストール

まずは、プロジェクト用ディレクトリを作成

$ mkdir fuelphp-cap

Gemfileを作成

# Gemfile
source 'https://rubygems.org'

gem 'capistrano', '~>; 3.4.0'

bundle installを実行
PCからの実行を考えるとローカルインストールしておきたいので--pathをつけている

$ bundle install --path vendor/bundle

“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に追加する

$ /opt/chefdk/embedded/bin/gem install knife-solo

“FuelPHPアプリをCapistrano3でデプロイ – Chef環境構築編” の続きを読む

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

Laravel5 を試したメモ

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

インストール

ローカル開発環境の準備

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

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