SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
CakePHP Console Application
                           拡張Tips
            Kenichirou Oyama        (k1LoW)




CakePHP Lightning Talks 2009.3.13             1
自己紹介
   type:
      プログラマ
   language:
      PHP 2y+ / CakePHP 2y / etc..
      EmacsのCakePHPマイナーモード
      cake.elを作っていたりします
   membership:
     Fusic Co.,Ltd >> http://fusic.co.jp
     codecheck.in >> http://trac.codecheck.in
    and 101000code / 3rdSTONE



CakePHP Lightning Talks 2009.3.13               2
CakePHPコンソールアプリケー
        ション
   bakeに代表されるCakePHP
   がもつquot;shellから実行するquot;
   アプリケーションquot;
       PHPスクリプト
       Shellクラスを継承している

CakePHP Lightning Talks 2009.3.13   3
bake
   CakePHPのソースコード自
   動生成コンソールアプリ
   ケーション
      データベースの情報から
      Model,View,Controllerだけ
      でなくテストケースの雛形も
      生成してくれる
CakePHP Lightning Talks 2009.3.13     4
i18n
   CakePHPの多言語機能用のpo
   ファイル自動生成コンソールアプ
   リケーション
      quot;__('Model Name')quot;のようにくくられた文字
      列をパースしてpoファイルを自動作成
      文字列に対応した翻訳文字列を設定すれば、
      システム全体に反映される
      poファイル:(例えば)英語とその訳語の対を保
      持している多言語対応用辞書ファイル


CakePHP Lightning Talks 2009.3.13      5
bakeの便利さ
   生成したソースは生成プログラム
   が正しければ必ず動く
   CakePHP1.2から生成するソース
   のテンプレートが切り出されてい
   る
      cake/console/templates/
      1.1系のdecorate.phpのように、よ
      り使いやすいソースを生成する
      bakeに拡張が可能。
CakePHP Lightning Talks 2009.3.13   6
demo




CakePHP Lightning Talks 2009.3.13     7
i18nの便利さ
   文言の統一が1ファイルの管理のみで
   可能(DBでも可能)
   __('ERORR:01')といったエラーコー
   ドなどでもあとで1行設定するだけで
   日本語メッセージに変更可能
   __('ERORR:01')と__('ERORR:02')と
   いったシステム的には異なるエラー
   コードをあとで2行設定するだけで同
   じ日本語メッセージに変更可能

CakePHP Lightning Talks 2009.3.13   8
demo




CakePHP Lightning Talks 2009.3.13     9
bake+i18n Tips
   bakeしてそのまま(少なくとも管理画面で
   は)使えるような形にtemplatesを拡張
      必ず__()で囲める部分は囲んだソース生成を
      するようにする(i18nとの連携のため)
   各メンバーは開発中もi18nの活用をあら
   かじめ想定したコーディングを進める(必
   ず__()で囲む)
   適宜poファイルに変換文字列を設定して
   いく


CakePHP Lightning Talks 2009.3.13   10
bake+i18n Tips
   初めは英語やエラーコードの羅列
      機能を優先的に実装
   開発に余裕が出てきたところで変
   換文字列を設定していく
   ソースコードが増える度にpo
   ファイルを更新していく
   多言語機能の使い方としてはイレ
   ギュラーな活用
CakePHP Lightning Talks 2009.3.13   11
bake+i18n
   初めは英語やエラーコードの羅列
      機能を優先的に実装
   余裕が出てきたところで変換文字
   列を設定していく
   ソースコードが増える度にpo
   ファイルを更新していく
   多言語機能の使い方としてはイレ
   ギュラーな活用
CakePHP Lightning Talks 2009.3.13   12
poファイルのマージ問題
   現状のCakePHPのi18nコン
   ソールにはpoファイルの
   マージ機能はない(はず)
      上書きのみ
      今まで設定した変更文字列
      が消えてしまう。
CakePHP Lightning Talks 2009.3.13   13
$cake merge
   2つのpoファイルをマージする
      PHPのarray_merge()を使用
   bakeライクインターフェース
      Shellクラスを継承して作成
   マージファイルのパスを初期値と
   して設定可能
      がんがんマージできる
CakePHP Lightning Talks 2009.3.13   14
demo




CakePHP Lightning Talks 2009.3.13     15
おわりに
   CakePHPはすごい。
   自動生成は楽。
   でももっと楽にできるはず。
      そのためなら苦労は厭わない。
   楽できたらその分CakePHPのコー
   ドを読んで、もっと楽できる道を
   探せる(「ソース読め」の精神)。

CakePHP Lightning Talks 2009.3.13   16
ご静聴ありがとうございました




CakePHP Lightning Talks 2009.3.13   17

Weitere ähnliche Inhalte

Was ist angesagt?

Calendar
CalendarCalendar
Calendarkumee
 
Windows Mobile de Hello World
Windows Mobile de Hello World Windows Mobile de Hello World
Windows Mobile de Hello World Kenji Wada
 
DS-020-機構設計簡介
DS-020-機構設計簡介DS-020-機構設計簡介
DS-020-機構設計簡介handbook
 
Mylynとおともだち
MylynとおともだちMylynとおともだち
MylynとおともだちHiroki Kondo
 
智慧型手機
智慧型手機智慧型手機
智慧型手機Kelun Yang
 
FOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript ProgrammingFOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript Programminggyuque
 
WindowsMobile用アプリケーションのおはなし
WindowsMobile用アプリケーションのおはなしWindowsMobile用アプリケーションのおはなし
WindowsMobile用アプリケーションのおはなしHiroaki TAKEUCHI
 
媒体者様用Ad Local媒体資料
媒体者様用Ad Local媒体資料媒体者様用Ad Local媒体資料
媒体者様用Ad Local媒体資料guestd1d6539
 
ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6nadeernadeer
 
マイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろうマイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろう奈良先端大 情報科学研究科
 
TodayでLDR読んでみよう
TodayでLDR読んでみようTodayでLDR読んでみよう
TodayでLDR読んでみようYutaka Tsumori
 
SocialWeb勉強会 Vol.1
SocialWeb勉強会 Vol.1SocialWeb勉強会 Vol.1
SocialWeb勉強会 Vol.1Eiji Kitamura
 

Was ist angesagt? (20)

Calendar
CalendarCalendar
Calendar
 
Windows Mobile de Hello World
Windows Mobile de Hello World Windows Mobile de Hello World
Windows Mobile de Hello World
 
Gl Rotate
Gl RotateGl Rotate
Gl Rotate
 
DS-020-機構設計簡介
DS-020-機構設計簡介DS-020-機構設計簡介
DS-020-機構設計簡介
 
Mylynとおともだち
MylynとおともだちMylynとおともだち
Mylynとおともだち
 
Map
MapMap
Map
 
智慧型手機
智慧型手機智慧型手機
智慧型手機
 
Who Is Opendream : Lessig Style
Who Is Opendream : Lessig StyleWho Is Opendream : Lessig Style
Who Is Opendream : Lessig Style
 
Planning Poker(J)
Planning Poker(J)Planning Poker(J)
Planning Poker(J)
 
FOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript ProgrammingFOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript Programming
 
使用M部落App學習mBot程式設計
使用M部落App學習mBot程式設計使用M部落App學習mBot程式設計
使用M部落App學習mBot程式設計
 
WindowsMobile用アプリケーションのおはなし
WindowsMobile用アプリケーションのおはなしWindowsMobile用アプリケーションのおはなし
WindowsMobile用アプリケーションのおはなし
 
0423io
0423io0423io
0423io
 
媒体者様用Ad Local媒体資料
媒体者様用Ad Local媒体資料媒体者様用Ad Local媒体資料
媒体者様用Ad Local媒体資料
 
ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6
 
マイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろうマイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろう
 
803 חורף 2009
803 חורף 2009803 חורף 2009
803 חורף 2009
 
OpenCARE Project
OpenCARE ProjectOpenCARE Project
OpenCARE Project
 
TodayでLDR読んでみよう
TodayでLDR読んでみようTodayでLDR読んでみよう
TodayでLDR読んでみよう
 
SocialWeb勉強会 Vol.1
SocialWeb勉強会 Vol.1SocialWeb勉強会 Vol.1
SocialWeb勉強会 Vol.1
 

Andere mochten auch

15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )hiro345
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...Kousuke Ebihara
 
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会Yusuke Ando
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室Yusuke Ando
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Keishi Hosoba
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHPSho A
 
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたFuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたKatsuhiro Miura
 
Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法nasneg
 
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 Mika Kane
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaHidenori Goto
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)ひとし あまの
 
The concept of mini hardening
The concept of  mini hardeningThe concept of  mini hardening
The concept of mini hardeningMasahiro Tabata
 
Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Koji Iwazaki
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 

Andere mochten auch (19)

実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
 
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHP
 
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたFuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
 
Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法
 
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
 
はじめてのSymfony2
はじめてのSymfony2はじめてのSymfony2
はじめてのSymfony2
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
 
The concept of mini hardening
The concept of  mini hardeningThe concept of  mini hardening
The concept of mini hardening
 
Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
Atomic design
Atomic designAtomic design
Atomic design
 

Mehr von Kenichirou Oyama

Mehr von Kenichirou Oyama (10)

Yet Another Plugins
Yet Another PluginsYet Another Plugins
Yet Another Plugins
 
anything-php-funcref-perl.el
anything-php-funcref-perl.elanything-php-funcref-perl.el
anything-php-funcref-perl.el
 
CakePHP DB Schema/Model Info Plugin
CakePHP DB Schema/Model Info PluginCakePHP DB Schema/Model Info Plugin
CakePHP DB Schema/Model Info Plugin
 
はじめてのanything-c-source-*
はじめてのanything-c-source-*はじめてのanything-c-source-*
はじめてのanything-c-source-*
 
Tokyo Tyrant + PHP
Tokyo Tyrant + PHPTokyo Tyrant + PHP
Tokyo Tyrant + PHP
 
for JSDeferred Code Reading
for JSDeferred Code Readingfor JSDeferred Code Reading
for JSDeferred Code Reading
 
git-svn intro
git-svn introgit-svn intro
git-svn intro
 
Fukuoka Emacs #X02
Fukuoka Emacs #X02Fukuoka Emacs #X02
Fukuoka Emacs #X02
 
Emacs Lisp 紹介
Emacs Lisp 紹介Emacs Lisp 紹介
Emacs Lisp 紹介
 
CakePHPゆとり開発環境
CakePHPゆとり開発環境CakePHPゆとり開発環境
CakePHPゆとり開発環境
 

CakePHP Console Application 拡張Tips

  • 1. CakePHP Console Application 拡張Tips Kenichirou Oyama (k1LoW) CakePHP Lightning Talks 2009.3.13 1
  • 2. 自己紹介 type: プログラマ language: PHP 2y+ / CakePHP 2y / etc.. EmacsのCakePHPマイナーモード cake.elを作っていたりします membership: Fusic Co.,Ltd >> http://fusic.co.jp codecheck.in >> http://trac.codecheck.in and 101000code / 3rdSTONE CakePHP Lightning Talks 2009.3.13 2
  • 3. CakePHPコンソールアプリケー ション bakeに代表されるCakePHP がもつquot;shellから実行するquot; アプリケーションquot; PHPスクリプト Shellクラスを継承している CakePHP Lightning Talks 2009.3.13 3
  • 4. bake CakePHPのソースコード自 動生成コンソールアプリ ケーション データベースの情報から Model,View,Controllerだけ でなくテストケースの雛形も 生成してくれる CakePHP Lightning Talks 2009.3.13 4
  • 5. i18n CakePHPの多言語機能用のpo ファイル自動生成コンソールアプ リケーション quot;__('Model Name')quot;のようにくくられた文字 列をパースしてpoファイルを自動作成 文字列に対応した翻訳文字列を設定すれば、 システム全体に反映される poファイル:(例えば)英語とその訳語の対を保 持している多言語対応用辞書ファイル CakePHP Lightning Talks 2009.3.13 5
  • 6. bakeの便利さ 生成したソースは生成プログラム が正しければ必ず動く CakePHP1.2から生成するソース のテンプレートが切り出されてい る cake/console/templates/ 1.1系のdecorate.phpのように、よ り使いやすいソースを生成する bakeに拡張が可能。 CakePHP Lightning Talks 2009.3.13 6
  • 8. i18nの便利さ 文言の統一が1ファイルの管理のみで 可能(DBでも可能) __('ERORR:01')といったエラーコー ドなどでもあとで1行設定するだけで 日本語メッセージに変更可能 __('ERORR:01')と__('ERORR:02')と いったシステム的には異なるエラー コードをあとで2行設定するだけで同 じ日本語メッセージに変更可能 CakePHP Lightning Talks 2009.3.13 8
  • 10. bake+i18n Tips bakeしてそのまま(少なくとも管理画面で は)使えるような形にtemplatesを拡張 必ず__()で囲める部分は囲んだソース生成を するようにする(i18nとの連携のため) 各メンバーは開発中もi18nの活用をあら かじめ想定したコーディングを進める(必 ず__()で囲む) 適宜poファイルに変換文字列を設定して いく CakePHP Lightning Talks 2009.3.13 10
  • 11. bake+i18n Tips 初めは英語やエラーコードの羅列 機能を優先的に実装 開発に余裕が出てきたところで変 換文字列を設定していく ソースコードが増える度にpo ファイルを更新していく 多言語機能の使い方としてはイレ ギュラーな活用 CakePHP Lightning Talks 2009.3.13 11
  • 12. bake+i18n 初めは英語やエラーコードの羅列 機能を優先的に実装 余裕が出てきたところで変換文字 列を設定していく ソースコードが増える度にpo ファイルを更新していく 多言語機能の使い方としてはイレ ギュラーな活用 CakePHP Lightning Talks 2009.3.13 12
  • 13. poファイルのマージ問題 現状のCakePHPのi18nコン ソールにはpoファイルの マージ機能はない(はず) 上書きのみ 今まで設定した変更文字列 が消えてしまう。 CakePHP Lightning Talks 2009.3.13 13
  • 14. $cake merge 2つのpoファイルをマージする PHPのarray_merge()を使用 bakeライクインターフェース Shellクラスを継承して作成 マージファイルのパスを初期値と して設定可能 がんがんマージできる CakePHP Lightning Talks 2009.3.13 14
  • 16. おわりに CakePHPはすごい。 自動生成は楽。 でももっと楽にできるはず。 そのためなら苦労は厭わない。 楽できたらその分CakePHPのコー ドを読んで、もっと楽できる道を 探せる(「ソース読め」の精神)。 CakePHP Lightning Talks 2009.3.13 16