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の使い方” の続きを読む

HashiCorp TerraformでAWSリソースを作成するには

Terraformを使う機会が会ったので、概要をまとめてみました。

TerraformはCloudFormationよりも定義ファイルが簡潔で、驚くほど習得しやすいツールです。
また、Chefやシェルによるプロビジョニングの仕組みも用意されているためミドルウェアまでささっと構築するようなユースケースにも使えそうです。

CloudFormationと比較した特徴については、「HashiCorpの新オーケストレーションツールTerraformを試してみた」の「CloudFormationの弱いところはカバー済み」が参考になります。

以下は、ほぼGETTING STARTEDを確認した内容になります

また、各リソースはデフォルトVPCに構築しています。

セットアップ

INSTALL TERRAFORMの手順に従ってインストール

バイナリパッケージがあるので、DOWNLOAD TERRAFORMよりダウンロードして適当なディレクトリに解凍して、パスを通すだけ

Mac OS Xの場合は、.bash_profileあたりに設定しておく
以下 /opt/terraform_0.6.6に解凍した場合

# .bash_profile
export PATH=$PATH:/opt/terraform_0.6.6

“HashiCorp TerraformでAWSリソースを作成するには” の続きを読む

次の行の開始日から終了日を計算するSQL

時価で変動する商品の値段のように、期間で管理されるデータ管理する場合のテーブルの持ち方とSQLについての考察です。

例えば、以下のように通貨変換レートが適用されるようなケースがあるとします。

sql-currency-enable-period

各期間には適用開始日と終了日がありますが、現在進行系の期間は終了日が無いですし、次の期間の開始日から前の期間の終了日は計算できるので、テーブルには開始日のみ管理すれば良さそうです。

開始日のみを管理するメリットとしては、余分な値「終了日」を保持しなくてよいのでカラムが減らせることと、終了日をプログラム(プロシージャ)やトリガーなどでセットしないのでバグりにくいことなどがあります。

この場合に、次の期間のレコードから計算した終了日を含むレコードを取得するSQLを作成してみます。

サンプルのテーブル

CREATE TABLE `currency_rates` (
  `from_currency_code` char(3) NOT NULL,
  `to_currency_code` char(3) NOT NULL,
  `enabled_at` date NOT NULL,
  `rate` decimal(12,2) NOT NULL,
  PRIMARY KEY (`from_currency_code`,`to_currency_code`,`enabled_at`)
);

“次の行の開始日から終了日を計算するSQL” の続きを読む

Docker入門 – Docker Toolboxで公開されているイメージの動作を確認する

Mac OS XにDocker開発環境を構築し、Dockerイメージの取得とコンテナの起動・停止、イメージの作成方法およびレジストリへのアップなどdockerを利用し始めるにあたって、これだけは抑えておくべきという基本的な内容についてまとめてみました。

Dockerは「Build, Ship, and Run Any App, Anywhere」と謳っているように、Dockerの仕組みでビルドされたアプリケーションは、Docker対応のプラットフォームであればどこでも簡単にデプロイできるようになります。

PHPのWebアプリの場合を例にすると、gitによるソース・サブモジュールの管理、Composeによるパッケージ管理、さらにフロントまわりのパッケージはnpmで管理していたりとビルド、デプロイのプロセスはかなり複雑になっています。そこに、Dockerを利用すると、Java EEの世界でアプリをWarファイルに固めてアプリケーション・サーバーにデプロイするような感覚で、開発環境でビルドしたものをテストし本番へデプロイすることが可能になります。

さらに、デプロイのプロセスが簡単になると、PaaSを利用する際に、PaaSごとの違いをDockerが吸収してくれるので、新しいPaaSを試す時などは、固有の仕組みを覚えるコストが小さく済みそうです。

Dockerそのものの概要については、公式には「What is Docker」に説明があります。
またアーキテクチャと各種用語については「Understand the architecture」にまとまっています。

周辺ツールも増えてきて、なかなか全体像を説明するのも大変なので、ここではDockerそのものの説明は飛ばし、dockerコマンドを打つとDockerイメージを作ったり、自分で作ったイメージや公開されているイメージをコンテナとして起動して簡単にアプリが起動できるものだくらいにまずは抑えておいて、DockerHubに公開されている公式イメージを利用したDockerの使い方についてまとめました。
“Docker入門 – Docker Toolboxで公開されているイメージの動作を確認する” の続きを読む

Force.comをmBaaSとして利用したハイブリッド(Cordova)アプリ開発

Force.comは、iOS、Android向けの、ネイティブ、ハイブリッドおよびモバイルブラウザ向けHTML5アプリケーションの開発環境とSalesforce Mobile SDKがあり、mBaaSとしても充実しています。

この記事は、APEXやVisualForcePageなど、Force.comがプラットフォームとして用意しているアプリケーション開発環境のコアなところを活かしつつ実用的なモバイルアプリケーションを素早く作成する手法として、iOS向けハイブリッドアプリケーションの開発について調べたことをまとめました。

ハイブリッドアプリケーション用のSalesforce Mobile SDKは、Apache Cordovaのプラグインとして提供されています。
そのため、開発にはCordovaの基本的な知識が必要となります。
Cordovaについては、前回の記事「Apache CordovaによるPush通知の実装 iOS版」を参照ください。

また、Cordovaは通常、アプリ内にhtmlやjsなどのアセットを含めてビルドしますが、ハイブリッドリモートという構成をとると、VisualForcePageなど従来からのサーバーサイドレンダリングの仕組みを活用することができます。

そこで、この記事では、iOS向けハイブリッド、かつハイブリッドリモートという構成のアプリケーションを作成するための手順について説明していきます。

iOS版のハイブリッドアプリの開発をさっと試すには、公式ドキュメントの「Getting Started with iOS Hybrid」が参考になります(対応する日本語記事も会ったような気がしたが見つからない)。こちらも併せて参照ください。

前提条件

Salesforce Mobile SDKで、iOS向けハイブリッドアプリを開発するには、以下のような環境や知識が必要です

  • Force.com開発の基本的な知識
  • node.jsコマンドを実行可能な環境
  • Apache Cordovaの実行環境と基礎的な知識
  • アプリを実機にインストールするためのXCodeとその操作に関する知識

この記事では、これらの内容については、扱いません。
“Force.comをmBaaSとして利用したハイブリッド(Cordova)アプリ開発” の続きを読む

Apache CordvaによるPush通知の実装 iOS版

モバイルのアプリで、UIの実装はHTML5でいいんだけどPush通知だけは入れたいという要件に対応するために、Apache Cordovaを利用したPush通知の実装をまとめてみました。
Apache Cordovaのインストールからプロジェクトのセットアップ、必要なプラグインのインストール、最後にPush通知を実装する流れで記載していますので、Push通知の実装だけ知りたい方は前半を飛ばしてください。

この記事では、Apple Push Notification Service (APNs)を利用するiOSアプリのみを対象としています。
APNsを利用したPush通知の基本については、前回の記事「iOSアプリPush通知 開発環境の作成手順まとめ」にまとめてありますので参考にしてください。

Cordovaのインストール

Cordovaは、npmパッケージとしてインストールできます

$ sudo npm install -g cordova

参考: iOS Platform Guide

プロジェクトの作成

インストールができたら、cordovaコマンドでプロジェクトを作成します

$ cordova create hello_cordova com.hrendoh.HelloCordova HelloCordova
Creating a new cordov

“Apache CordvaによるPush通知の実装 iOS版” の続きを読む

iOSアプリPush通知 開発環境の作成手順まとめ

iOSアプリにPush通知機能を実装するためには、まずApple Developer Centerで開発対象のアプリ用にPUSH通知(APNs)用の証明書を作成し、アプリに登録する必要があります。
また、PUSHを通知する側についても、自作のアプリやmBaaSに登録する作成した証明書を設定して、ようやく開発が始められるようになります。
慣れれば、簡単なのですが、久しぶりにアプリの開発をしたところ結構忘れていたので、手順をまとめておくことにしました。

この記事では、iOS 8.4、Xcodeは6.4で確認しています
また、手順は開発環境でAPNsによるPUSH通知の動作を確認することに絞って記述しています。

Push通知をアプリに実装するために用意するもの

まずは、Push通知を実装する前提条件として準備するものを整理しておきます

iOSアプリのビルドに必要なもの

  • Push通知を有効にしたApp IDが指定されたプロビジョニングプロファイル

APNsへのPUSH通知送信に必要なもの

  • Push通知用の証明書

“iOSアプリPush通知 開発環境の作成手順まとめ” の続きを読む