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開発の進め方” の続きを読む

Cloud SQL 第2世代にSQL Proxy経由でMySQLクライアントから接続するには

Cloud SQLは、2016.03.30現在ベータですが、パフォーマンスや機能が改善され価格も安い第2世代が利用可能になっています。

この記事では、第2世代から利用可能になった、Cloud SQL Proxyを利用し、ローカルPC (Mac OS X) のMySQL ClientからCloud SQLインスタンスへの接続を試した手順をまとめてみました。
外部ネットワークから接続する方法は、第1世代はIPを制限して接続を許可する方法のみでしたが、第2世代では、サーバーアカウントキーで認証してAPIを介して安全にデータベースへ接続できるようになっています。

第2世代は、AppEngineで利用できないなど制限がいくつかあります。
制限については、Google Cloud SQLとは?Cloud SQL Second Generation (ベータ)の制限で確認できます。

インスタンスの作成

Google Cloud SQLは、プロジェクトのメニュー[ストレージ]の[SQL]から利用できます。

Google Cloud SQL メニュー

初めて、利用する場合は、以下のように[インスタンスを作成]のボタンのみ表示されています。

Google Cloud SQL インスタンスの作成
※ 請求先アカウントを設定していないプロジェクトでは、左上に[課金を有効にする]ボタンが表示され、[インスタンスの作成]ボタンは表示されません。
お支払い情報を入力して請求先アカウントを設定する必要があります(無料試使用あり)。

[インスタンスを作成]ボタンをクリックしてインスタンスの作成を開始します。
“Cloud SQL 第2世代にSQL Proxy経由でMySQLクライアントから接続するには” の続きを読む

Zabbix 3.0 サーバーをUbuntu 14.04にインストール

前回の記事「Zabbix 2.4 サーバー/エージェントをUbuntu 14.04にインストール」の後、Zabbix 3.0がリリースされたので、改めてUbuntu 14.04にインストールする手順を確認してみました。

3.0で新たに追加された機能や主な変更点は、Zabbix 3.0 新機能にまとまっています。
スクリーンショットを見ただけでも、今風なデザインに刷新されており期待が持てそうです。

では、早速インストールの手順 3 Installation from packages From distribution packagesDebian / Ubuntu を追ってみます。

Zabbixサーバーのインストール

Zabbix 3.0は、インストールパッケージをRHEL、CentOS 7系とDebian 7,8、Ubuntu 14.04向けに用意されています。

今回は、Ubuntu 14.04向け、リポジトリにMySQLを利用するバージョンのパッケージをインストールします。
“Zabbix 3.0 サーバーをUbuntu 14.04にインストール” の続きを読む

AWS Lambda (Node.js) からRDS PostgresqlまたはRedShiftへ接続するには

Node.jsのLambda関数からデータベースにアクセスするには、Postgresqlの場合はnpm pgパッケージが利用できます。
npmパッケージはプロジェクトにローカルインストールするとnode_modulesディレクトリに保存されるので、それを一緒にZipするとLambda関数のJSで読み込めるようになります。

Node.jsのLambda関数をnpmでパッケージ管理して開発する手順について調べてみたことを手順化してまとめてみました。
前提条件として、Node.JSとAWS CLIが利用できる環境が必要です。
“AWS Lambda (Node.js) からRDS PostgresqlまたはRedShiftへ接続するには” の続きを読む

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を返すには” の続きを読む

MEANスタック MEAN.IOおよびMEAN.JSの使い方

MEANスタックは、Webアプリケーション開発のためのJavascriptソフトウェアスタックで、MongoDB、Express、AngularJS、Node.jsを組み合わせて利用します(Wikipedia: MEAN)。

で、ここまでは問題無いと思いますが、主にMEAN.IOMEAN.JSの2つ流派があり、さらに亜種がいくつかとブログ記事によっては独自の組み合わせとして説明していたりとなかなか混乱してしまいます。

mean-io-mean-js-logos

また、この2つの他にも、以下に挙げるような方法で、MEANスタックを利用することもできます。

この記事では、メインストリームであるMEAN.IOとMEAN.JSを取り上げて、それぞれの使い方について見ていった後に整理してみます。

それぞれの成り立ちと比較については、いずれも2014年の古い情報ですが、「MEAN.io vs MEAN.JS – A Comparison」と「Difference between MEAN.js and MEAN.io」あたりに書いてあります。
要約すると「どっちも Amos Havivさんが作っていて、最初にMEAN.IOを作っていたけど会社の方針と合わなくなってMEAN.JSを始めた。MEAN.IOの方が有名だけど、Amosさんは今はMEAN.JSの開発に携わってるからこっちの方がいいんじゃね」ということらしいです。
“MEANスタック MEAN.IOおよびMEAN.JSの使い方” の続きを読む