SlideShare a Scribd company logo
1 of 20
Download to read offline
baserCMSに見られる
CakePHPノウハウ蓄積法


            ×


                 2012年5月23日
                 エガシラリュウジ
自己紹介!

!  エガシラリュウジ@キャッチアップ


!  西区でWebの一部をつくってます。


!  baserCMSをのコアデベロッパー


!  ryuring@twitter


!  ダックスフンド飼ってます。


                     Copyright 2010 baserCMS All rights reserved
baserCMSって                                                        自己紹介


!  国産オープンソースのCMS。


!  WordPressとかMovableTypeとか
   MODxさんとかと同じ類い。


!  シンプルでわかりやすく、日本の文化
   を反映したCMSを目指してます。


!  http://basercms.net


                    Copyright 2010 baserCMS All rights reserved
本題

! 今回のお題である「ノウハウ」とは、プログ
  ラミングにおける知的財産・情報資産等を指
  します。


! 例えば、自社のライブラリ


! 例えば、Webサイトや管理画面の雛形


! 言うなれば、自社のフレームワーク的なもの
        Copyright 2010 baserCMS All rights reserved
注意事項

! 今回のお話は、CakePHP 1.2系ベースです。
  ごめんなさい。。




          Copyright 2010 baserCMS All rights reserved
ノウハウの再利用

! 開発期間を短縮する為、自社のノウハウを再
  利用するのは当たり前ですか?




           Copyright 2010 baserCMS All rights reserved
CakePHPのappフォルダ

! CakePHPでは、コアプログラムを変更する事
  なくアプリケーションを構築する仕組みがあ
  る。


  ! cake フォルダ・・・コアプログラム
  ! appフォルダ・・・アプリケーション


! CakePHPがバージョンアップした場合には、
  cakeフォルダを上書きするだけ

           Copyright 2010 baserCMS All rights reserved
CakePHPの仕組み

! ファイル読み込みの優先順位

          app



          cake




           Copyright 2010 baserCMS All rights reserved
appフォルダ内に配置する前提でライブラリ化

! Component ?
! Behavior ?
! AppController ?
! AppModel ?
! Plugin ?
! Vendor ?
! Lib ?



                Copyright 2010 baserCMS All rights reserved
appフォルダごとライブラリとして扱うには?

! appフォルダをスケルトンとして扱う


! bakeに仕込む




             Copyright 2010 baserCMS All rights reserved
メンテナンスの問題

! 例えば、自社のライブラリ(管理システムの
  雛形等)となる部分をappフォルダ内に配置し、
  お客様ごとにカスタマイズを施した場合、メ
  ンテナンスがめんどい?


! 100社に対し、カスタマイズしたプログラムを
  納品した際、ノウハウ部分にバグが見つかっ
  た場合とか・・・。


        Copyright 2010 baserCMS All rights reserved
バージョン管理システムで解決

! SVN や git などのバージョン管理システムで
  プロジェクトごとにブランチを切る


! バグ発見したらマージ祭り




          Copyright 2010 baserCMS All rights reserved
baserCMSのアップデートの仕組み

! 配布しているのでバージョン管理システムで
  マージなんてできない。


! 最初はEC-CUBEの構成を参考にしたが、
  CakePHPっぽくないのでやめた。
 ※ EC-CUBEでは、コアのクラスを継承する⃝⃝Exクラスをカスタマイズするよ
 うになっている。
 ※ AppControllerを継承するBaserAppControllerを作ったり。




! CakePHPのアップデートの仕組みを踏襲。

               Copyright 2010 baserCMS All rights reserved
ノウハウを別フォルダ化!

!  CakePHPには、コントローラー等の参照先を追加す
   る仕組みがあらかじめ備わってます。


!  ノウハウを詰め込んだファイル群を別フォルダ化でき
   る。


!  別フォルダ化できれば、アップデートは別フォルダを
   丸ごと上書きできる。


!  カスタマイズしたファイルはappに置けばノウハウ部
   分を汚さない。
           Copyright 2010 baserCMS All rights reserved
baserCMSではこんな感じ(1.2系)

!  bootstrap.php
    !    $modelPaths[] = BASER_MODELS;
    !    $behaviorPaths[] = BASER_BEHAVIORS;
    !    $controllerPaths[] = BASER_CONTROLLERS;
    !    $componentPaths[] = BASER_COMPONENTS;
    !    $viewPaths[] = BASER_VIEWS;
    !    $helperPaths[] = BASER_HELPERS;
    !    $pluginPaths[] = BASER_PLUGINS;


!  各定数は、appディレクトリ内と同じ構成にしたbaser
   ディレクトリ内のパスを指定
※ Configure::buildPaths()が定番?

                               Copyright 2010 baserCMS All rights reserved
CakePHPの仕組み

! ファイルの読み込み優先順位

          app



         baser



          cake

           Copyright 2010 baserCMS All rights reserved
読み込みの優先順位

! app_controller.php の場合

/app/controllers/app_controller.php

/baser/controllers/app_controller.php

/cake/libs/controller/app_controller.php

※ baserCMSでは、AppControllerをカスタマイズする場合、baser
  ディレクトリ内のAppController をコピーしてカスタマイズする
  方法を推奨しています。
                 Copyright 2010 baserCMS All rights reserved
CakePHP1.3以降の場合

! App::build というメソッドが用意されていま
  す。
! CakePHP2系については知らないです。ごめ
  んなさい。




           Copyright 2010 baserCMS All rights reserved
ご質問ありませんか?

! ノウハウを貯める仕組みって重要ですよね
! CakePHPを利用されているのであれば
  App::buildを有効活用!


! baserCMSの開発コミッター募集中です。
! ご興味がある方は@ryuringまでDください。




         Copyright 2010 baserCMS All rights reserved
おしまい                                                  おわり



! ご清聴ありがとうございました。




        Copyright 2010 baserCMS All rights reserved

More Related Content

Similar to baserCMSにみられるCakePHPノウハウ蓄積法

あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?Ryuji Egashira
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用文樹 高橋
 
[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorksAmazon Web Services Japan
 
非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWSRyusaburo Tanaka
 
CloudFoundryをつかってみよう
CloudFoundryをつかってみようCloudFoundryをつかってみよう
CloudFoundryをつかってみようKazuto Kusama
 
20150718 a-blog cms × baserCMSのご紹介
20150718 a-blog cms × baserCMSのご紹介20150718 a-blog cms × baserCMSのご紹介
20150718 a-blog cms × baserCMSのご紹介Daisuke Abe
 
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)Takashi Uemura
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure FunctionsKeiji Kamebuchi
 
自由自在にWebサイト作るためのbaserCMS入門
自由自在にWebサイト作るためのbaserCMS入門自由自在にWebサイト作るためのbaserCMS入門
自由自在にWebサイト作るためのbaserCMS入門Ryuji Egashira
 
FuelPHP活用事例
FuelPHP活用事例FuelPHP活用事例
FuelPHP活用事例Yusuke Naka
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard惠 紀野
 
基幹システムにおけるオープンソース活用
基幹システムにおけるオープンソース活用基幹システムにおけるオープンソース活用
基幹システムにおけるオープンソース活用UNIRITA Incorporated
 
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)Amazon Web Services Japan
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指してAkira Inoue
 
[CTO Night & Day 2019] ML services: MLOps #ctonight
[CTO Night & Day 2019] ML services: MLOps #ctonight[CTO Night & Day 2019] ML services: MLOps #ctonight
[CTO Night & Day 2019] ML services: MLOps #ctonightAmazon Web Services Japan
 
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2YoshiyukiKonno
 

Similar to baserCMSにみられるCakePHPノウハウ蓄積法 (20)

OSC2013@FUKUOKA
OSC2013@FUKUOKAOSC2013@FUKUOKA
OSC2013@FUKUOKA
 
あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?
 
Cakephp
CakephpCakephp
Cakephp
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用
 
[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks
 
非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS
 
CloudFoundryをつかってみよう
CloudFoundryをつかってみようCloudFoundryをつかってみよう
CloudFoundryをつかってみよう
 
baserCMSの今
baserCMSの今baserCMSの今
baserCMSの今
 
20150718 a-blog cms × baserCMSのご紹介
20150718 a-blog cms × baserCMSのご紹介20150718 a-blog cms × baserCMSのご紹介
20150718 a-blog cms × baserCMSのご紹介
 
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure Functions
 
自由自在にWebサイト作るためのbaserCMS入門
自由自在にWebサイト作るためのbaserCMS入門自由自在にWebサイト作るためのbaserCMS入門
自由自在にWebサイト作るためのbaserCMS入門
 
FuelPHP活用事例
FuelPHP活用事例FuelPHP活用事例
FuelPHP活用事例
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard
 
基幹システムにおけるオープンソース活用
基幹システムにおけるオープンソース活用基幹システムにおけるオープンソース活用
基幹システムにおけるオープンソース活用
 
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
[CTO Night & Day 2019] ML services: MLOps #ctonight
[CTO Night & Day 2019] ML services: MLOps #ctonight[CTO Night & Day 2019] ML services: MLOps #ctonight
[CTO Night & Day 2019] ML services: MLOps #ctonight
 
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
 

More from Ryuji Egashira

baserCMS5の機能とver4からの変更ポイント
baserCMS5の機能とver4からの変更ポイントbaserCMS5の機能とver4からの変更ポイント
baserCMS5の機能とver4からの変更ポイントRyuji Egashira
 
ヘッドレス化したbaserCMS5とその機能
ヘッドレス化したbaserCMS5とその機能ヘッドレス化したbaserCMS5とその機能
ヘッドレス化したbaserCMS5とその機能Ryuji Egashira
 
フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?
フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?
フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?Ryuji Egashira
 
CMSを利用した次世代ワークフローを考える
CMSを利用した次世代ワークフローを考えるCMSを利用した次世代ワークフローを考える
CMSを利用した次世代ワークフローを考えるRyuji Egashira
 
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例Ryuji Egashira
 
コミュニティがあなたを強くする
コミュニティがあなたを強くするコミュニティがあなたを強くする
コミュニティがあなたを強くするRyuji Egashira
 
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリオープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリRyuji Egashira
 
次期baserCMSの新機能と今後の展望
次期baserCMSの新機能と今後の展望次期baserCMSの新機能と今後の展望
次期baserCMSの新機能と今後の展望Ryuji Egashira
 
国産baserCMSの基本機能と秘めたポテンシャル
国産baserCMSの基本機能と秘めたポテンシャル国産baserCMSの基本機能と秘めたポテンシャル
国産baserCMSの基本機能と秘めたポテンシャルRyuji Egashira
 
やさしいBaserCMSのディスりかた
やさしいBaserCMSのディスりかたやさしいBaserCMSのディスりかた
やさしいBaserCMSのディスりかたRyuji Egashira
 
いったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャル
いったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャルいったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャル
いったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャルRyuji Egashira
 

More from Ryuji Egashira (12)

baserCMS5の機能とver4からの変更ポイント
baserCMS5の機能とver4からの変更ポイントbaserCMS5の機能とver4からの変更ポイント
baserCMS5の機能とver4からの変更ポイント
 
ヘッドレス化したbaserCMS5とその機能
ヘッドレス化したbaserCMS5とその機能ヘッドレス化したbaserCMS5とその機能
ヘッドレス化したbaserCMS5とその機能
 
フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?
フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?
フレームワークで開発されたbaserCMSの原点を探る。そしてどこ目指す?
 
CMSを利用した次世代ワークフローを考える
CMSを利用した次世代ワークフローを考えるCMSを利用した次世代ワークフローを考える
CMSを利用した次世代ワークフローを考える
 
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
 
コミュニティがあなたを強くする
コミュニティがあなたを強くするコミュニティがあなたを強くする
コミュニティがあなたを強くする
 
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリオープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
 
次期baserCMSの新機能と今後の展望
次期baserCMSの新機能と今後の展望次期baserCMSの新機能と今後の展望
次期baserCMSの新機能と今後の展望
 
Cpi mega mix
Cpi mega mixCpi mega mix
Cpi mega mix
 
国産baserCMSの基本機能と秘めたポテンシャル
国産baserCMSの基本機能と秘めたポテンシャル国産baserCMSの基本機能と秘めたポテンシャル
国産baserCMSの基本機能と秘めたポテンシャル
 
やさしいBaserCMSのディスりかた
やさしいBaserCMSのディスりかたやさしいBaserCMSのディスりかた
やさしいBaserCMSのディスりかた
 
いったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャル
いったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャルいったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャル
いったい何ができる?!福岡県産BaserCMSの基本機能と秘めたポテンシャル
 

baserCMSにみられるCakePHPノウハウ蓄積法