Ktai LibraryをCakePHPに組み込んでみました 

エンジニアの@ojimacです。

会社のLabo Dayで携帯サイトを作りました。
Labo Dayについては別エントリに譲るとして、今回は、携帯サイトをPHP(特にCakePHP)で作る際にとても重宝するKtai Libraryを導入してみたという話です。

0. 今回の環境

- CakePHP 1.3.7
- Ktai Library 0.4

1. Ktai Libraryのダウンロード

Ktai Library本体をダウンロードします。
githubよりダウンロードしてきます。

[~/cake/dev-server/app]
user$ wget --no-check-certificate https://github.com/MASA-P/KtaiLibrary/zipball/0.4.0

解凍します。

[~/cake/dev-server/app]
user$ unzip MASA-P-KtaiLibrary-0.4.0-0-g469746b.zip

readme.txtに書いてある内容を元に、ファイルをCakePHPが動いているディレクトリにコピーしていきます。
configファイル

[~/cake/dev-server/app]
cp MASA-P-KtaiLibrary-0.4.0-0-g469746b/app/config/ktai_session.php dev-server/app/config/

コンポーネント

[~/cake/dev-server/app]
cp MASA-P-KtaiLibrary-0.4.0-0-g469746b/app/controllers/components/ktai.php dev-server/app/controllers/components/

ヘルパー

[~/cake/dev-server/app]
cp MASA-P-KtaiLibrary-0.4.0-0-g469746b/app/views/helpers/ktai.php dev-server/app/views/helpers/

app_controller

[~/cake/dev-server/app]
cp MASA-P-KtaiLibrary-0.4.0-0-g469746b/app/ktai_app_controller.php dev-server/app

エラー処理用のファイル

[~/cake/dev-server/app]
cp MASA-P-KtaiLibrary-0.4.0-0-g469746b/app/app_error.php dev-server/app

Ktai Library本体

[~/cake/dev-server/app]
cp -r MASA-P-KtaiLibrary-0.4.0-0-g469746b/vendors/ecw/ dev-server/vendors/

2. 絵文字画像をインストールします

TypePadで公開されている絵文字画像を使うことにより、各キャリア毎に依存することなく同じ絵文字が使えるようになるようです。

2.1 絵文字画像をダンロードして配置

[~/cake/dev-server/app]
user$ wget http://start.typepad.jp/typecast/download/emoticons.zip
user$ unzip emoticons.zip

2.2 絵文字画像をCakePHPが動いているディレクトリにコピーします。

cp -r emoticons dev-server/app/webroot/img/

3. Ktai LibraryをCakePHPに組み込みます

3.1 セッションを使うための設定を追記していきます

readme.txtや参考書籍にも書かれているのですが、Ktai Libraryを使ってセッションを使う場合、routes.phpへの設定が必要になります。

3.2 routes.phpの先頭へ以下を記述します

理由はreadme.txtより引用します。

 「app/config/routes.php」に、次の記述を「一番最初に」行ってください。
 セパレータ文字列は、無指定の場合は「:」となりますが、この文字の場合に
iMODEにてセッションIDが付加されなくなりますので必ず指定します。
 利用可能な文字は下記URLで確認してください(設定例では、比較的影響の少ない
ものと思われる「~」としています)。
Router::connectNamed(array(), array('argSeparator' => '~'));

3.3 app/ktai_app_controller.phpをリネームします

既にapp_controller.phpがある場合はktai_app_controller.phpの内容をコピーします。
一から作る場合はktai_app_controller.phpをapp_controller.phpにリネームし、

class KtaiAppController extends AppController {

の部分を、

class AppController extends Controller {

に変更します。

3.4 app_controller.phpに$ktaiプロパティを追加します

プロパティの意味はそれぞれコメントの通りです。

var $ktai = array(
	'enable_ktai_session'       => true,     // セッション使用を有効にします
	'use_redirect_session_id'   => false,    // リダイレクトに必ずセッションIDをつけます
	'imode_session_name'        => 'csid',   // iMODE時のセッション名を変更します
	'use_img_emoji'             => true,     // 絵文字画像を使用する
	'input_encoding'            => 'UTF-8',  // 入力エンコーディングはUTF-8
	'output_encoding'           => 'UTF-8',  // 出力エンコーディングもUTF-8
	'output_convert_kana'       => 'knrs',   // かなの変換を行う
	'output_auto_convert_emoji' => true,     // 絵文字自動変換を行う
	'use_xml'                   => true,     // XML表記(XHTML)を使用する
);

3.5 セッションを扱うにはKtaiコンポーネントが必要とreadme.txtに書いてあるので、app_controller.phpに追加します

class AppController extends Controller {
	var $components = array('Ktai');
	.
	.
	.
}

Ktai Libraryの最小限の設定はこれだけです。
次回は、今回導入したKtai Libraryを使ってLabo Dayでどんなサービスを作ってみたかについて書きたいと思います!

参考にしたURL

- 【KtaiLibrary】各キャリア携帯サイトを世界一簡単に作ってみる
- ECWorks Blog Ktai Library for CakePHP(ktai library作者の@ecworks_masapさんのBlog)

参考にした本

PHPで作る携帯サイトデベロッパーズガイド
滝下 真玄
秀和システム
売り上げランキング: 133770

2 Responses to Ktai LibraryをCakePHPに組み込んでみました

  1. [...] Ktai LibraryをCakePHPに組み込んでみました|Spark-Lab Engineer’s Blog [...]

  2. [...] Ktai LibraryをCakePHPに組み込んでみました|Spark-Lab Engineer's Blog [...]