SlideShare a Scribd company logo
1 of 15
Download to read offline
EC-CUBE2.12.0
開発合宿 プラグインセミナー




   株式会社スピリット・オブ
EC-CUBE公式エヴァンジェリスト
   川口 歩 / AMUAMU
    Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.
機能の全体像
EC-CUBE本体処理への介入して処理・結果を
EC-CUBE本体処理への介入して処理・結果を書き
       本体処理への介入して処理
  える、
換える、乗っ取る。
              フックポイント機能
     → プラグイン フックポイント機能
EC-CUBE本体テンプレートに対して出力内容を
EC-CUBE本体テンプレートに対して出力内容を加
       本体テンプレートに   出力内容
える、 える。
える、変える。
        テンプレートの変更機能
     → テンプレートの変更機能
EC-CUBE本体の内部データをJavaScript等
EC-CUBE本体の内部データをJavaScript等から
       本体     データをJavaScript
安全・定型的な       動的に
安全・定型的な形で動的に取り出したり、外部シ したり、
ステムと通信し連携する。
        API機能
     → API機能

         Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   2
機能のメリット
EC-CUBE本体機能への直接改修を くし、分離。
EC-CUBE本体機能への直接改修を無くし、分離。
       本体機能への直接改修
     EC-CUBEはECのコア機能に注力。
               のコア機能
     EC-CUBEはECのコア機能に注力。
     派生機能はプラグイン APIで実装。
            はプラグイン&
     派生機能はプラグイン&APIで実装。
統一化された仕組みにより管理性向上
統一化された仕組みにより管理性向上
   された仕組みにより
   セキュリティ
   プログラムの見通
          見通しをよくする
   プログラムの見通しをよくする
   再利用性
WordPressやMagentoみたいな山
WordPressやMagentoみたいな山ほどプラグインが
                 みたいな
ある将来将来をイメージ
ある将来をイメージ

         Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   3
プラグイン フックポイント




ページの生成前(action前
ページの生成前(action前) 、ページの生成後(action後)
    生成前(action    ページの生成後 action後
                      生成後(
ページの処理途中での移動(reloadや Redirect前
    処理途中での移動(reload
ページの処理途中での移動(reloadや、Redirect前)
  プラグインの処理
         処理が      されます。
に、プラグインの処理が呼び出されます。
    プラグインは、介入したいポイントをセットする
             したいポイントをセットする。
 1. プラグインは、介入したいポイントをセットする。
    フックポイント通過時にプラグイン側関数
           通過時にプラグイン側関数が    される。
 2. フックポイント通過時にプラグイン側関数が呼び出される。
 3. プラグイン側は好き勝手に処理を変える。
    プラグイン側   勝手に処理を える。


            Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   4
フックポイントで出来る事
何でも出来る
 でも出来る
   出来


極端な
極端な話
     商品一覧ページ
     商品一覧ページ → 会員登録ページに置き換え
               会員登録ページに
                   ページに置
     なんてことも出来る
     なんてことも出来る。
           出来


実例




           Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   5
テンプレートの変更機能




・プラグイン独自の文言を追加する。
・プラグイン独自の文言を追加する。
      独自      する
・既存表示内容を消す、変更する。
 既存表示内容を   変更する。
             する


         Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   6
トランスフォームで出来る事




  Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   7
API機能
1.画一化されたRESTインターフェースにて呼
1.画一化されたRESTインターフェースにて呼び出される。
  画一化されたRESTインターフェースにて   される。
/html/api/xml.php?Service=Core&Operation=BrowseNodeLookup&BrowseNodeId=2
/html/api/json.php?Service=Core&Operation=GetVersion
/html/api/php.php?Service=Core&Operation= AddrFromZip&zip1=111&zip2=222

2.処理実体は データの取
2.処理実体は、データの取り出し・設定部分を定義するだけ。
  処理実体         し・設定部分を定義するだけ。
                 設定部分    するだけ
  生産性の向上。安全性の向上。管理等が容易に
  生産性の向上。安全性の向上。管理等が容易に。
 (郵便番号取り出しで約10行程度のコーディング)

3.決められたセキュリティの枠組みチェック後 実行される。
3.決められたセキュリティの枠組みチェック後に実行される。
              枠組みチェック    される
   リファラーチェック・トークン・署名認証
   リファラーチェック・トークン・署名認証
   会員認証・管理者認証・ログインセッション・管理者セッション
              ・ログインセッション・管理者
   会員認証・管理者認証・ログインセッション・管理者セッション
   IP認証・ホスト認証 SSL認証
     認証・ホスト認証・   認証・ 完全オープン
                       オープン)
   IP認証・ホスト認証・SSL認証・(完全オープン)

4.プラグインにより、APIのオペレーションを拡張可能。
4.プラグインにより、APIのオペレーションを拡張可能。
  プラグインにより    のオペレーションを拡張可能
  data/downloads/api/ ディレクトリに拡張オペレーションファイルを設置
  data/downloads/api/ ディレクトリに拡張オペレーションファイルを設置。
                 api         拡張オペレーションファイルを設置。




                        Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   8
APIで出来る事
1.他システムとのデータ連携
   システムとのデータ連携
  他のサイト・システムから呼び出された内容に応じて処理実装。
   のサイト・システムから呼  された内容に じて処理実装。
                    内容    処理実装
   会員データ連携。
   会員データ連携。
     データ連携


2.Ajax
  各種画面をajax化して、画面遷移を わない動的 Webアプリに
                        動的な
  各種画面をajax化して、画面遷移を伴わない動的なWebアプリに




           Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   9
プラグイン&APIで出来る事
たとえば・・・
1.商品一覧をajax化する。
  商品一覧をajax化する。
 ・フックポイントで一覧処理
             一覧処理を
 ・フックポイントで一覧処理を乗っ取る。
 ・トランスフォームでajax のフォーム、javascriptのロード
              ajax用
 ・トランスフォームでajax用のフォーム、javascriptのロード
  API経由
     経由で ajaxが処理取得。
 ・API経由で、ajaxが処理取得。
2.他システムとの会員データ連携
    システムとの会員データ連携
          会員データ
 ・フックポイントで会員登録 変更時に外部システムにデータ
           会員登録・      システムにデータ送信
 ・フックポイントで会員登録・変更時に外部システムにデータ送信
 ・トランスフォームで会員情報項目 変更・追加。
            会員情報項目の
 ・トランスフォームで会員情報項目の変更・追加。
 ・APIで、外部システムからの会員認証を実行して結果通知。
  APIで 外部システムからの会員認証を実行して結果通知。
         システムからの会員認証   して結果通知
3.管理画面の拡張
  管理画面の
 ・トランスフォームで、管理画面メニューに項目追加。
                メニューに項目追加
 ・トランスフォームで、管理画面メニューに項目追加。
 ・フックポイントで必要 設定項目を既存画面に追加。
          必要な
 ・フックポイントで必要な設定項目を既存画面に追加。
 ・プラグインの追加機能
        追加機能で  しい管理画面 複数生成。
                 管理画面を
 ・プラグインの追加機能で、新しい管理画面を複数生成。
    プラグイン設定画面でも可能です
    プラグイン設定画面でも可能です。
         設定画面でも可能です。



            Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   10
実装のポイント
1.プラグイン
 a.フックポイントを めて、定義する
   フックポイントを決     する。
 a.フックポイントを決めて、定義する。

 b.install/uninstall/enable/disable処理
 b.install/uninstall/enable/disable処理
          /uninstall/enable/disable
   ブロック追加 プラグイン独自設定 テーブル追加
           追加、             独自設定、
   ブロック追加、プラグイン独自設定、テーブル追加・改変         追加・
   API用ファイルの複製 画像ファイルなどのコピー
   API用ファイルの複製、画像ファイルなどのコピー
                  複製、

 c.フックポイントでのコールバック処理を実装する。
 c.フックポイントでのコールバック処理を実装する。
   フックポイントでのコールバック処理     する
   関数の引数に   びだし元 Pageオブジェクトを操作。
                     オブジェクトを操作
   関数の引数に来る呼びだし元のPageオブジェクトを操作。
   出力用データはオブジェクト変数として格納されている
      データはオブジェクト変数として格納されている。
   出力用データはオブジェクト変数として格納されている。
    $objPage->tpl_title や $objPage->arrForm
     objPage-              objPage-                                      等
  Pageオブジェクト内のローカル関数も必要ならば実行。
  Pageオブジェクト内のローカル関数も必要ならば実行。
      オブジェクト      関数   ならば実行
    $objPage->lfInitParam($objFormParam);
     objPage- lfInitParam($objFormParam
                         ($objFormParam);



                   Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   11
実装のポイント
2.トランスフォーム
 a.トランスフォームのフックポイント
   トランスフォームのフックポイント定義
 a.トランスフォームのフックポイント定義

   b.既存のSmartyテンプレートの名前確認・加工ポイントを決める。
   b.既存のSmartyテンプレートの名前確認・加工ポイントを決める。
     既存       テンプレートの名前確認   ポイントを

   c.トランスフォーム処理の
   c.トランスフォーム処理の実装
     トランスフォーム処理
       JqueryライクなDOM操作 可能です
             ライクなDOM操作が  です。
       JqueryライクなDOM操作が可能です。
$objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'snip_products_list_add.tpl'));
 objTransform->select('h2.title')- insertBefore(file_get_contents($
                                                                 ($template_dir 'snip_products_list_add.tpl
                                                                                   snip_products_list_add.tpl'));
 objTransform->select('div.now_dir')- replaceElement(file_get_contents($
                       div.now_dir')                                  ($template_dir
$objTransform->select('div.now_dir')->replaceElement(file_get_contents($template_dir .
 snip.admin_basis_category_add.tpl'));
'snip.admin_basis_category_add.tpl'));




                                    Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.                      12
実装のポイント
3.API
 a.オペレーション
   オペレーション名 決定と
 a.オペレーション名の決定と、セキュリティ・パラメーターなどの
   定義。
   定義。

 b.実装。
 b.実装。
   実装

 c.呼
 c.呼び出し側の実装。
         実装。
     サンプル呼  しテスト用プログラムあります。
     サンプル呼び出しテスト用プログラムあります。




          Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   13
何を作ろう
・OpenGraphメタタグ出力プラグイン
 OpenGraphメタタグ出力プラグイン
          メタタグ出力
 SEO用メタタグ設定 出力プラグイン
              設定&
・SEO用メタタグ設定&出力プラグイン
        Analyticsタグ設置プラグイン
                 タグ設置
・Google Analyticsタグ設置プラグイン
 開発コミュニティへの質問内容作成プラグイン
     コミュニティへの質問内容作成
・開発コミュニティへの質問内容作成プラグイン

・祝祭日自動取得&反映プラグイン
 祝祭日自動取得&反映プラグイン
・かごの中ページに自動遷移
         自動遷移しないプラグイン
・かごの中ページに自動遷移しないプラグイン
 商品一覧の    方法の追加プラグイン
・商品一覧の並び替え方法の追加プラグイン
 会員登録項目に会社名を
・会員登録項目に会社名を足すプラグイン
 会員登録項目の必須項目を非必須化するプラグイン
・会員登録項目の必須項目を非必須化するプラグイン

・購入ステップをスキップするプラグイン
 購入ステップをスキップするプラグイン
・ランキングブロックプラグイン
・アンケートフォームプラグイン
・のしオプションプラグイン
 規格選択フラット
     フラット化
・規格選択フラット化プラグイン
・かごの中商品 関連商品をまとめて表示するプラグイン
    中商品の      をまとめて表示
・かごの中商品の関連商品をまとめて表示するプラグイン
・かごの中ページのAjax
         Ajax化
・かごの中ページのAjax化プラグイン
・その他既存機能 Ajax化
   他既存機能の
・その他既存機能のAjax化
             Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   14
質疑応答

   kawaguchi@spiritof.jp
https://www.facebook.com/ayumu.kawaguchi




           Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.   15

More Related Content

What's hot

Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-akira6592
 
FuelPHPをさわってみて
FuelPHPをさわってみてFuelPHPをさわってみて
FuelPHPをさわってみてSotaro Omura
 
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1Fumito Mizuno
 
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説Cherry Pie Web
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
Spring integration概要
Spring integration概要Spring integration概要
Spring integration概要kuroiwa
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理土岐 孝平
 
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012Fumito Mizuno
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Hideki Saito
 
はじめてのSpring Boot
はじめてのSpring BootはじめてのSpring Boot
はじめてのSpring Bootなべ
 
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介Naoto Mawatari
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4アシアル株式会社
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoyakenjis
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1kenjis
 

What's hot (20)

Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
FuelPHPをさわってみて
FuelPHPをさわってみてFuelPHPをさわってみて
FuelPHPをさわってみて
 
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
 
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
Spring integration概要
Spring integration概要Spring integration概要
Spring integration概要
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
 
PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
 
はじめてのSpring Boot
はじめてのSpring BootはじめてのSpring Boot
はじめてのSpring Boot
 
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
 
Spring AMQP × RabbitMQ
Spring AMQP × RabbitMQSpring AMQP × RabbitMQ
Spring AMQP × RabbitMQ
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 

Similar to Ec cube開発合宿 プラグインセミナー

アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.Masaki Mukai
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringTakuya Hattori
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門Yuji Nojima
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介Shotaro Suzuki
 
How to django at first
How to django at firstHow to django at first
How to django at firstMaito Kuwahara
 
130329 04
130329 04130329 04
130329 04openrtm
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4openrtm
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image) AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image) AzareaCluster
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxNobuhiro Sue
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストYoichiro Sakurai
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIWataru MIYAGUNI
 

Similar to Ec cube開発合宿 プラグインセミナー (20)

アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
How to django at first
How to django at firstHow to django at first
How to django at first
 
130329 04
130329 04130329 04
130329 04
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image) AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (8)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

Ec cube開発合宿 プラグインセミナー

  • 1. EC-CUBE2.12.0 開発合宿 プラグインセミナー 株式会社スピリット・オブ EC-CUBE公式エヴァンジェリスト 川口 歩 / AMUAMU Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved.
  • 2. 機能の全体像 EC-CUBE本体処理への介入して処理・結果を EC-CUBE本体処理への介入して処理・結果を書き 本体処理への介入して処理 える、 換える、乗っ取る。 フックポイント機能 → プラグイン フックポイント機能 EC-CUBE本体テンプレートに対して出力内容を EC-CUBE本体テンプレートに対して出力内容を加 本体テンプレートに 出力内容 える、 える。 える、変える。 テンプレートの変更機能 → テンプレートの変更機能 EC-CUBE本体の内部データをJavaScript等 EC-CUBE本体の内部データをJavaScript等から 本体 データをJavaScript 安全・定型的な 動的に 安全・定型的な形で動的に取り出したり、外部シ したり、 ステムと通信し連携する。 API機能 → API機能 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 2
  • 3. 機能のメリット EC-CUBE本体機能への直接改修を くし、分離。 EC-CUBE本体機能への直接改修を無くし、分離。 本体機能への直接改修 EC-CUBEはECのコア機能に注力。 のコア機能 EC-CUBEはECのコア機能に注力。 派生機能はプラグイン APIで実装。 はプラグイン& 派生機能はプラグイン&APIで実装。 統一化された仕組みにより管理性向上 統一化された仕組みにより管理性向上 された仕組みにより セキュリティ プログラムの見通 見通しをよくする プログラムの見通しをよくする 再利用性 WordPressやMagentoみたいな山 WordPressやMagentoみたいな山ほどプラグインが みたいな ある将来将来をイメージ ある将来をイメージ Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 3
  • 4. プラグイン フックポイント ページの生成前(action前 ページの生成前(action前) 、ページの生成後(action後) 生成前(action ページの生成後 action後 生成後( ページの処理途中での移動(reloadや Redirect前 処理途中での移動(reload ページの処理途中での移動(reloadや、Redirect前) プラグインの処理 処理が されます。 に、プラグインの処理が呼び出されます。 プラグインは、介入したいポイントをセットする したいポイントをセットする。 1. プラグインは、介入したいポイントをセットする。 フックポイント通過時にプラグイン側関数 通過時にプラグイン側関数が される。 2. フックポイント通過時にプラグイン側関数が呼び出される。 3. プラグイン側は好き勝手に処理を変える。 プラグイン側 勝手に処理を える。 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 4
  • 5. フックポイントで出来る事 何でも出来る でも出来る 出来 極端な 極端な話 商品一覧ページ 商品一覧ページ → 会員登録ページに置き換え 会員登録ページに ページに置 なんてことも出来る なんてことも出来る。 出来 実例 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 5
  • 6. テンプレートの変更機能 ・プラグイン独自の文言を追加する。 ・プラグイン独自の文言を追加する。 独自 する ・既存表示内容を消す、変更する。 既存表示内容を 変更する。 する Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 6
  • 7. トランスフォームで出来る事 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 7
  • 8. API機能 1.画一化されたRESTインターフェースにて呼 1.画一化されたRESTインターフェースにて呼び出される。 画一化されたRESTインターフェースにて される。 /html/api/xml.php?Service=Core&Operation=BrowseNodeLookup&BrowseNodeId=2 /html/api/json.php?Service=Core&Operation=GetVersion /html/api/php.php?Service=Core&Operation= AddrFromZip&zip1=111&zip2=222 2.処理実体は データの取 2.処理実体は、データの取り出し・設定部分を定義するだけ。 処理実体 し・設定部分を定義するだけ。 設定部分 するだけ 生産性の向上。安全性の向上。管理等が容易に 生産性の向上。安全性の向上。管理等が容易に。 (郵便番号取り出しで約10行程度のコーディング) 3.決められたセキュリティの枠組みチェック後 実行される。 3.決められたセキュリティの枠組みチェック後に実行される。 枠組みチェック される リファラーチェック・トークン・署名認証 リファラーチェック・トークン・署名認証 会員認証・管理者認証・ログインセッション・管理者セッション ・ログインセッション・管理者 会員認証・管理者認証・ログインセッション・管理者セッション IP認証・ホスト認証 SSL認証 認証・ホスト認証・ 認証・ 完全オープン オープン) IP認証・ホスト認証・SSL認証・(完全オープン) 4.プラグインにより、APIのオペレーションを拡張可能。 4.プラグインにより、APIのオペレーションを拡張可能。 プラグインにより のオペレーションを拡張可能 data/downloads/api/ ディレクトリに拡張オペレーションファイルを設置 data/downloads/api/ ディレクトリに拡張オペレーションファイルを設置。 api 拡張オペレーションファイルを設置。 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 8
  • 9. APIで出来る事 1.他システムとのデータ連携 システムとのデータ連携 他のサイト・システムから呼び出された内容に応じて処理実装。 のサイト・システムから呼 された内容に じて処理実装。 内容 処理実装 会員データ連携。 会員データ連携。 データ連携 2.Ajax 各種画面をajax化して、画面遷移を わない動的 Webアプリに 動的な 各種画面をajax化して、画面遷移を伴わない動的なWebアプリに Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 9
  • 10. プラグイン&APIで出来る事 たとえば・・・ 1.商品一覧をajax化する。 商品一覧をajax化する。 ・フックポイントで一覧処理 一覧処理を ・フックポイントで一覧処理を乗っ取る。 ・トランスフォームでajax のフォーム、javascriptのロード ajax用 ・トランスフォームでajax用のフォーム、javascriptのロード API経由 経由で ajaxが処理取得。 ・API経由で、ajaxが処理取得。 2.他システムとの会員データ連携 システムとの会員データ連携 会員データ ・フックポイントで会員登録 変更時に外部システムにデータ 会員登録・ システムにデータ送信 ・フックポイントで会員登録・変更時に外部システムにデータ送信 ・トランスフォームで会員情報項目 変更・追加。 会員情報項目の ・トランスフォームで会員情報項目の変更・追加。 ・APIで、外部システムからの会員認証を実行して結果通知。 APIで 外部システムからの会員認証を実行して結果通知。 システムからの会員認証 して結果通知 3.管理画面の拡張 管理画面の ・トランスフォームで、管理画面メニューに項目追加。 メニューに項目追加 ・トランスフォームで、管理画面メニューに項目追加。 ・フックポイントで必要 設定項目を既存画面に追加。 必要な ・フックポイントで必要な設定項目を既存画面に追加。 ・プラグインの追加機能 追加機能で しい管理画面 複数生成。 管理画面を ・プラグインの追加機能で、新しい管理画面を複数生成。 プラグイン設定画面でも可能です プラグイン設定画面でも可能です。 設定画面でも可能です。 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 10
  • 11. 実装のポイント 1.プラグイン a.フックポイントを めて、定義する フックポイントを決 する。 a.フックポイントを決めて、定義する。 b.install/uninstall/enable/disable処理 b.install/uninstall/enable/disable処理 /uninstall/enable/disable ブロック追加 プラグイン独自設定 テーブル追加 追加、 独自設定、 ブロック追加、プラグイン独自設定、テーブル追加・改変 追加・ API用ファイルの複製 画像ファイルなどのコピー API用ファイルの複製、画像ファイルなどのコピー 複製、 c.フックポイントでのコールバック処理を実装する。 c.フックポイントでのコールバック処理を実装する。 フックポイントでのコールバック処理 する 関数の引数に びだし元 Pageオブジェクトを操作。 オブジェクトを操作 関数の引数に来る呼びだし元のPageオブジェクトを操作。 出力用データはオブジェクト変数として格納されている データはオブジェクト変数として格納されている。 出力用データはオブジェクト変数として格納されている。 $objPage->tpl_title や $objPage->arrForm objPage- objPage- 等 Pageオブジェクト内のローカル関数も必要ならば実行。 Pageオブジェクト内のローカル関数も必要ならば実行。 オブジェクト 関数 ならば実行 $objPage->lfInitParam($objFormParam); objPage- lfInitParam($objFormParam ($objFormParam); Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 11
  • 12. 実装のポイント 2.トランスフォーム a.トランスフォームのフックポイント トランスフォームのフックポイント定義 a.トランスフォームのフックポイント定義 b.既存のSmartyテンプレートの名前確認・加工ポイントを決める。 b.既存のSmartyテンプレートの名前確認・加工ポイントを決める。 既存 テンプレートの名前確認 ポイントを c.トランスフォーム処理の c.トランスフォーム処理の実装 トランスフォーム処理 JqueryライクなDOM操作 可能です ライクなDOM操作が です。 JqueryライクなDOM操作が可能です。 $objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'snip_products_list_add.tpl')); objTransform->select('h2.title')- insertBefore(file_get_contents($ ($template_dir 'snip_products_list_add.tpl snip_products_list_add.tpl')); objTransform->select('div.now_dir')- replaceElement(file_get_contents($ div.now_dir') ($template_dir $objTransform->select('div.now_dir')->replaceElement(file_get_contents($template_dir . snip.admin_basis_category_add.tpl')); 'snip.admin_basis_category_add.tpl')); Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 12
  • 13. 実装のポイント 3.API a.オペレーション オペレーション名 決定と a.オペレーション名の決定と、セキュリティ・パラメーターなどの 定義。 定義。 b.実装。 b.実装。 実装 c.呼 c.呼び出し側の実装。 実装。 サンプル呼 しテスト用プログラムあります。 サンプル呼び出しテスト用プログラムあります。 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 13
  • 14. 何を作ろう ・OpenGraphメタタグ出力プラグイン OpenGraphメタタグ出力プラグイン メタタグ出力 SEO用メタタグ設定 出力プラグイン 設定& ・SEO用メタタグ設定&出力プラグイン Analyticsタグ設置プラグイン タグ設置 ・Google Analyticsタグ設置プラグイン 開発コミュニティへの質問内容作成プラグイン コミュニティへの質問内容作成 ・開発コミュニティへの質問内容作成プラグイン ・祝祭日自動取得&反映プラグイン 祝祭日自動取得&反映プラグイン ・かごの中ページに自動遷移 自動遷移しないプラグイン ・かごの中ページに自動遷移しないプラグイン 商品一覧の 方法の追加プラグイン ・商品一覧の並び替え方法の追加プラグイン 会員登録項目に会社名を ・会員登録項目に会社名を足すプラグイン 会員登録項目の必須項目を非必須化するプラグイン ・会員登録項目の必須項目を非必須化するプラグイン ・購入ステップをスキップするプラグイン 購入ステップをスキップするプラグイン ・ランキングブロックプラグイン ・アンケートフォームプラグイン ・のしオプションプラグイン 規格選択フラット フラット化 ・規格選択フラット化プラグイン ・かごの中商品 関連商品をまとめて表示するプラグイン 中商品の をまとめて表示 ・かごの中商品の関連商品をまとめて表示するプラグイン ・かごの中ページのAjax Ajax化 ・かごの中ページのAjax化プラグイン ・その他既存機能 Ajax化 他既存機能の ・その他既存機能のAjax化 Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 14
  • 15. 質疑応答 kawaguchi@spiritof.jp https://www.facebook.com/ayumu.kawaguchi Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 15