Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
EC-CUBE の設計思想について 2009/7/11( 土 ) 有限会社 Loop AZ  大河内健太郎
<ul><li>名前 :  大河内健太郎  (id:nanasess) </li></ul><ul><li>年齢 : 32 才 </li></ul><ul><li>出身 :  愛知県 </li></ul><ul><li>前職 :  寿司屋の板前...
EC-CUBE  とは 日本発 EC オープンソース <ul><li>2006 年 9 月  - 0.9.6 リリース </li></ul><ul><li>2006 年 10 月  - 1.0.0 リリース </li></ul><ul><li>...
<ul><li>PHP4, PHP5 </li></ul><ul><li>PostgreSQL7.x, MySQL4.1, MySQL5.x </li></ul><ul><li>Windows  と  UNIX 系  OS(IIS  と  Ap...
<ul><li>自動アップデート </li></ul><ul><li>複数カテゴリ </li></ul><ul><li>デザインテンプレート </li></ul><ul><li>脆弱性対応 (CSRF  など) </li></ul>EC-CUB...
<ul><li>Phrame  </li></ul><ul><li>Ethna </li></ul><ul><li>CakePHP </li></ul>既存フレームワークと  EC-CUBE PHP4, PHP5, PostgreSQL  と ...
EC-CUBE2.0  のアーキテクチャ <ul><li>基本的に 1 ページ 1 クラス </li></ul><ul><ul><li>LC_Page  クラスを基底クラスとし , LC_Page  を継承して各ページに使用 </li></ul...
<ul><li>extends </li></ul>EC-CUBE2.0  のアーキテクチャ <ul><li>自動アップデートに対応するため </li></ul><ul><li>カスタマイズ時のコンフリクトを避けるため </li></ul><u...
<ul><li>マスタ系のデータを DB に保持しておく </li></ul><ul><li>リクエストがあると ,  動的に定数や配列を生成 </li></ul><ul><li>生成したデータのキャッシュ生成 </li></ul><ul><l...
<ul><li>表示する画面の中に hidden でランダムな ID (トークン)を生成し ,  埋め込んでおく .  そのトークンをサーバー側でもセッション内に保持しておく . </li></ul><ul><li>その画面でサブミットされると...
<ul><li>init() 主にクラスの初期化を行う </li></ul><ul><li>process() ビジネスロジックを実行する </li></ul><ul><li>destroy() 終了時 ,  自動的に呼ばれる </li></u...
EC-CUBE2.0  のアーキテクチャ LC_Page  クラスの関数群 <ul><li>sendRedirect() </li></ul><ul><ul><li>リダイレクト先  URL  に  SITE_URL  及び  SSL_URL ...
<ul><li>テスト駆動開発  (test-driven development; TDD)  </li></ul><ul><li>PHPUnit </li></ul>開発スタイル 活用されてる形跡が無いのが寂しい orz
<ul><li>徹底的にリファクタリング  -  特にモバイル </li></ul><ul><li>プラグイン機能  -  鋭意開発中 </li></ul><ul><li>共有 SSL </li></ul><ul><li>HTML テンプレート...
開発コミッター募集中!! http://xoops.ec-cube.net/modules/tinyd0/index.php?id=9 OSC-Kansai  展示ブースで受付中!!
質疑応答
ご静聴ありがとうございました!
Nächste SlideShare
Wird geladen in …5
×

EC-CUBEの設計思想について

4.913 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, Unterhaltung & Humor
  • Als Erste(r) kommentieren

EC-CUBEの設計思想について

  1. 1. EC-CUBE の設計思想について 2009/7/11( 土 ) 有限会社 Loop AZ  大河内健太郎
  2. 2. <ul><li>名前 : 大河内健太郎 (id:nanasess) </li></ul><ul><li>年齢 : 32 才 </li></ul><ul><li>出身 : 愛知県 </li></ul><ul><li>前職 : 寿司屋の板前を 7 年半 </li></ul><ul><li>FreeBSD/Mac OS X 使ってます </li></ul><ul><li>普段は Java のフレームワーク開発とか </li></ul><ul><li>Emacs23 のアイコン作りました </li></ul>自己紹介
  3. 3. EC-CUBE とは 日本発 EC オープンソース <ul><li>2006 年 9 月 - 0.9.6 リリース </li></ul><ul><li>2006 年 10 月 - 1.0.0 リリース </li></ul><ul><li>2007 年 12 月 – 2.0.0 リリース </li></ul><ul><li>現在 – Version 2.4.1 </li></ul>
  4. 4. <ul><li>PHP4, PHP5 </li></ul><ul><li>PostgreSQL7.x, MySQL4.1, MySQL5.x </li></ul><ul><li>Windows と UNIX 系 OS(IIS と Apache) </li></ul><ul><li>XHTML1.0 + CSS2 valid </li></ul><ul><li>UTF-8 </li></ul><ul><li>error_reporting(E_ALL) </li></ul><ul><li>1.x との互換性 </li></ul>EC-CUBE 2.0 の要件
  5. 5. <ul><li>自動アップデート </li></ul><ul><li>複数カテゴリ </li></ul><ul><li>デザインテンプレート </li></ul><ul><li>脆弱性対応 (CSRF など) </li></ul>EC-CUBE 2.0 の改良点 アーキテクチャの大幅な改変
  6. 6. <ul><li>Phrame </li></ul><ul><li>Ethna </li></ul><ul><li>CakePHP </li></ul>既存フレームワークと EC-CUBE PHP4, PHP5, PostgreSQL と MySQL に対応しているフレームワーク Struts ベースはイマイチ ... Ruby on Rails ベースは規約が多くて使いにくい… 1.x をベースにして自作することに
  7. 7. EC-CUBE2.0 のアーキテクチャ <ul><li>基本的に 1 ページ 1 クラス </li></ul><ul><ul><li>LC_Page クラスを基底クラスとし , LC_Page を継承して各ページに使用 </li></ul></ul><ul><ul><li>直接 Web アクセスされる PHP は , LC_Page を継承したクラスを実行するのみ </li></ul></ul><?php // {{{ requires require_once(&quot;./require.php&quot;); require_once(CLASS_EX_PATH . &quot;page_extends/LC_Page_Index_Ex.php&quot;); // }}} // {{{ generate page $objPage = new LC_Page_Index_Ex(); register_shutdown_function(array($objPage, &quot;destroy&quot;)); $objPage->init(); $objPage->process(); ?>
  8. 8. <ul><li>extends </li></ul>EC-CUBE2.0 のアーキテクチャ <ul><li>自動アップデートに対応するため </li></ul><ul><li>カスタマイズ時のコンフリクトを避けるため </li></ul><ul><li>活かすにはリファクタリングが必要… </li></ul><ul><li>基底クラスを継承する空のクラスを用意 </li></ul><ul><li>ユーザーは , この空のクラスをカスタマイズする </li></ul>/** * Index のページクラス ( 拡張 ). * * LC_Page_Index をカスタマイズする場合はこのクラスを編集する . */ class LC_Page_Index_Ex extends LC_Page_Index { function init() { parent::init(); } function process() { parent::process(); } function destroy() { parent::destroy(); } }
  9. 9. <ul><li>マスタ系のデータを DB に保持しておく </li></ul><ul><li>リクエストがあると , 動的に定数や配列を生成 </li></ul><ul><li>生成したデータのキャッシュ生成 </li></ul><ul><li>管理画面からデータ編集可能 </li></ul>EC-CUBE2.0 のアーキテクチャ MasterData <ul><li>パラメータ設定 </li></ul><ul><li>マスタデータ管理 </li></ul><ul><li>自動アップデートに対応するため </li></ul>
  10. 10. <ul><li>表示する画面の中に hidden でランダムな ID (トークン)を生成し , 埋め込んでおく . そのトークンをサーバー側でもセッション内に保持しておく . </li></ul><ul><li>その画面でサブミットされると , hidden に埋められていたトークンがサーバーに届く . </li></ul><ul><li>サーバーでは , hidden から届いたトークンと , セッション内に保持していたトークンを比較し , 一致していれば正しい遷移と判断する . </li></ul>EC-CUBE2.0 のアーキテクチャ トランザクショントークン <ul><li>二重サブミットの防止 </li></ul><ul><li>外部からの不正サブミットの防止 </li></ul>
  11. 11. <ul><li>init() 主にクラスの初期化を行う </li></ul><ul><li>process() ビジネスロジックを実行する </li></ul><ul><li>destroy() 終了時 , 自動的に呼ばれる </li></ul>EC-CUBE2.0 のアーキテクチャ LC_Page クラスのライフサイクル
  12. 12. EC-CUBE2.0 のアーキテクチャ LC_Page クラスの関数群 <ul><li>sendRedirect() </li></ul><ul><ul><li>リダイレクト先 URL に SITE_URL 及び SSL_URL を含むかチェックし , LC_Page::getToken() の値を URL パラメータで自動的に付与する . </li></ul></ul><ul><li>getLocation() </li></ul><ul><ul><li>サーバー上の PATH から絶対 URL を取得する </li></ul></ul><ul><li>getToken() </li></ul><ul><ul><li>トランザクショントークンを生成し , 取得する . </li></ul></ul><ul><li>isValidToken() </li></ul><ul><ul><li>トランザクショントークンの妥当性をチェックする . </li></ul></ul><ul><li>p() </li></ul><ul><ul><li>デバック内容を画面に出力する </li></ul></ul>
  13. 13. <ul><li>テスト駆動開発 (test-driven development; TDD) </li></ul><ul><li>PHPUnit </li></ul>開発スタイル 活用されてる形跡が無いのが寂しい orz
  14. 14. <ul><li>徹底的にリファクタリング - 特にモバイル </li></ul><ul><li>プラグイン機能 - 鋭意開発中 </li></ul><ul><li>共有 SSL </li></ul><ul><li>HTML テンプレート - Seasar2 の Teeda や Mayaa みたいの </li></ul><ul><li>i18n </li></ul><ul><li>他の DB にも対応 </li></ul><ul><ul><li>DB アクセスレイヤーをしっかり分けたい </li></ul></ul><ul><ul><li>Chain Of Responsibility </li></ul></ul><ul><li>EC パッケージの標準仕様策定 </li></ul><ul><li>EC-CUBE3.0 - 徹底的にモジュール化 </li></ul>今後
  15. 15. 開発コミッター募集中!! http://xoops.ec-cube.net/modules/tinyd0/index.php?id=9 OSC-Kansai 展示ブースで受付中!!
  16. 16. 質疑応答
  17. 17. ご静聴ありがとうございました!

×