Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
# 自己紹介
● 名前
○ 足立智広
● 所属
○ 株式会社ロックオン
● お仕事
○ EC-CUBE3の開発をしてます
● Facebook
○ https://www.facebook.com/chihiro.adachi.3
● GitH...
# 目次
● EC-CUBE3.0のリリース後の振り返り
● 次期バージョン3.0.9について
● 今後の注目
● 開発・コミュニティに参加するには
# ここ半年のリリースを振り返る
# ここ半年のリリースを振り返る
● 2015-07-01 3.0.0 正式版リリース
○ 2系から内部構造を見直し
○ Silex(WebAppフレームワーク)
○ DoctrineOrm(O/Rマッパー)
○ Symfonyコンポーネント(...
# ここ半年のリリースを振り返る
● 2015-07-08 3.0.1 リリース
○ プラグイン拡張機構改善
○ バグFix
● 2015-07-29 3.0.2 リリース
○ CSV入出力機能追加
■ 受注CSVは明細単位での出力に対応
○ ...
# ここ半年のリリースを振り返る
● 2015-10-09 3.0.4 リリース
○ セキュリティFix
● 2015-10-28 3.0.5 リリース
○ 複数配送機能
○ 多くのバグFix
● 2015-11-17 3.0.6 リリース
○...
# ここ半年のリリースを振り返る
● 2015-12-08 3.0.7 リリース
○ 権限管理
○ マスタデータ管理
○ ログ管理
● 2015-12-22 3.0.8 リリース
○ twigキャッシュ削除機能
# ここ半年のリリースを振り返る
● 3.0.0リリース後、半年で合計8回のバージョンアップ
● 以下の課題に対応するため
○ 品質面の安定化
○ 2系と同等レベルの機能搭載
● 構築事例の申請や、開発コミュニティの投稿も増え、
実際にご利用い...
# Issue対応数の推移
3.0.5
3.0.5で、100件超のissueを対応。ク
リティカルな不具合は減少傾向。
# テストケース数の推移
ユニットテストのテストケース数は
300→1000弱と大幅に向上。現在も
継続的に作成しています。
# テストカバレッジ
テストカバレッジも、 20%→60%と大
幅に向上しました。
# 品質面の担保について
● Travis-CI, AppVayor
○ Pull Requestごとにテストが自動実行されます
○ テストにパスしないコードは取り込まれません
● テストの実行環境
○ PHP5.3~PHP5.6+Postgr...
# テスト書いてくれた人(ありがとうございます
# 次期バージョン3.0.9について
# 次期バージョン3.0.9について
● プラグインの拡張性向上
# 現状の課題
● フックポイントの粒度が大きく競合しやすい
● フックポイントの実行順序が直感的でない
● テンプレートへの介入がしづらい
● 例外・ログ出力等のエラーハンドリングが不足
● 以下のIssueにまとめています
○ https:...
# 現状のフックポイントの実行タイミング
Responseオブ
ジェクトの生成
# 現状のフックポイントの実行タイミング
html/index.php
$app = new Application()
$app->run()
以降の内部的な動き
Requestオブ
ジェクトの生成
ルーティングの
解決
Controller...
# 現状のフックポイントの実行タイミング
html/index.php
$app = new Application()
$app->run()
以降の内部的な動き
Requestオブ
ジェクトの生成
ルーティングの
解決
Controller...
# 共通フックポイント
● Symfony2 eventべースのフックポイントを新設
○ http://symfony.
com/doc/current/components/http_kernel/introd
uction.html
○ 例...
# 共通フックポイントの実行タイミング
index.php
$app = new Application()
$app->run()
以降の内部的な動き
Requestオブ
ジェクトの生成
ルーティングの
解決
Controllerオブ
ジェク...
# フックポイント一覧(抜粋
● 全体・フロント・管理画面・ルーティング単位で定義しています
● https://github.com/EC-CUBE/ec-cube/issues/1410
画面種別 フックポイント名 Symfony2 eve...
# 個別フックポイント
● コントローラ内でのフックポイントを新設
○ フォーム初期化後
○ データ登録処理完了後
○ テンプレートのレンダリングタイミング
● フォームのエラー制御や、エンティティのID取得が出
来なかった問題に対応
● 細か...
# 個別フックポイントの実行タイミング
index.php
$app = new Application()
$app->run()
以降の内部的な動き
Requestオブ
ジェクトの生成
ルーティングの
解決
Controllerオブ
ジェク...
# 1. フォーム初期化後フックポイント
● フォーム初期化後に実行されるフックポイント
● 入力項目の追加を行う
○ 追加した項目は自動で出力される
○ renderイベントでの差し込みは不要になります
# コードイメージ(本体側)
# コードイメージ(プラグイン側)
# 2.登録処理完了後フックポイント
● コントローラの登録処理完了後のイベント
● プラグインで定義したエンティティのデータ登録等を
行う
○ 本体側のエンティティが取得できる
○ 関連したエンティティのデータ登録が可能に
# コードイメージ(本体側)
# コードイメージ(プラグイン側)
# 個別フックポイント
● コントローラ内にフックポイントが定義されている
○ 実行される箇所がわかりやすい
○ どんな引数が渡ってくるかもわかる
● プラグインのコードも完結になる
○ renderフックポイントで差し込みする必要がない
○ ...
# その他の情報
● フックポイント互換性について
○ 既存のものはそのまま動作します
● TwigのID対応
○ BEMベースの規約策定
○ 全テンプレートに埋め込み
○ jQueryやCrowrerでの操作が容易に
# その他の情報
● 開発者向けツール
○ コンソールコマンド
■ プラグインのinstallがコマンドベースで可能に
○ SQLite対応
■ データベースを用意しなくても動かせる
● プラグインの例外・ログ出力を強化
● リリース時期
○ ...
# 今後の注目
# 今後の注目
● 結合試験/受入試験の自動化
● API開発スタート
# 結合試験/受入試験の自動化
● Travis-CI/Appvayorの課題
○ プログラムの関数レベルでのテストを自動実行
○ 低いレイヤでの動作を担保
○ 画面上での動作までは確認できない
● codeception + PhantomJ...
# 結合試験/受入試験の自動化
● テストコードは書きやすいのでメンテナンスも容易
○ htmlの要素指定が結構ざっくりでかける
# 結合試験/受入試験の自動化
● EC-CUBEの試験項目書のシナリオを自動実行
○ https://github.com/EC-CUBE/eccube3-doc
○ EC-CUBEリリース前に実施してます(人力
○ UTで見つけにくい不具合...
# 案件への活用
● 案件でもテスト自動化を活用できる
○ 試験コード、だいぶ全体をカバーできるようになっ
てきてます
○ 機能カスタマイズしたらテストも修正
○ 開発中
■ Travis-CIでの自動テスト
○ 納品前
■ codecepit...
# 作ってくれた人(ありがとうございます
# API開発スタート
# API開発スタート
● 機能要件
○ I/F策定
■ ユースケースの洗い出し
■ 概念モデル精査
● 技術検証
○ 認証・認可の技術検証
■ OAuth2, OpenID Connect
○ rest api実装方法の検討
■ Symfon...
# API開発スタート
● 機能要件
○ I/F策定
■ ユースケースの洗い出し
■ 概念モデル精査
● 技術検証
○ 認証・認可の技術検証
■ OAuth2, OpenID Connect
○ rest api実装方法の検討
■ Symfon...
# API開発スタート
● ユースケースの洗い出し
○ こんなAPIがほしい
○ このシステム・サービスと連携したい
○ ...etc 業務にマッチするものを作りたいです
○ ぜひご要望をきかせてください(パーティで
# 開発・コミュニティに参加するには
# 開発・コミュニティに参加するには
● GitHubでPull Request
○ https://github.com/EC-CUBE/ec-cube
○ Qiitaにも使い方の記事を書いてます
● ドキュメント
○ 公式ドキュメント
■ ...
# 開発・コミュニティに参加するには
● 東京ユーザグループ
○ https://www.facebook.
com/groups/283598911686452/
○ 1/29 勉強会やります
■ ロックオン東京オフィス
■ 満員ですごめんな...
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
Upcoming SlideShare
Loading in …5
×

EC-CUBEユーザカンファレンス2016

EC-CUBEユーザカンファレンスの発表資料です。これまでのリリース振り返りと、3.0.9で実装されるプラグイン機構や、APIなど今後の開発についてかいてます。

  • Login to see the comments

EC-CUBEユーザカンファレンス2016

  1. 1. # 自己紹介 ● 名前 ○ 足立智広 ● 所属 ○ 株式会社ロックオン ● お仕事 ○ EC-CUBE3の開発をしてます ● Facebook ○ https://www.facebook.com/chihiro.adachi.3 ● GitHub ○ @chihiro-adachi
  2. 2. # 目次 ● EC-CUBE3.0のリリース後の振り返り ● 次期バージョン3.0.9について ● 今後の注目 ● 開発・コミュニティに参加するには
  3. 3. # ここ半年のリリースを振り返る
  4. 4. # ここ半年のリリースを振り返る ● 2015-07-01 3.0.0 正式版リリース ○ 2系から内部構造を見直し ○ Silex(WebAppフレームワーク) ○ DoctrineOrm(O/Rマッパー) ○ Symfonyコンポーネント(ライブラリ) ○ PSR(コーディング規約) ○ bootstrap, レスポンシブWebデザイン ○ Travis/Appvayor(CI環境) ○ ...etc モダンPHPなプロダクトに進化
  5. 5. # ここ半年のリリースを振り返る ● 2015-07-08 3.0.1 リリース ○ プラグイン拡張機構改善 ○ バグFix ● 2015-07-29 3.0.2 リリース ○ CSV入出力機能追加 ■ 受注CSVは明細単位での出力に対応 ○ バグFix ● 2015-08-19 3.0.3 リリース ○ プラグインのオーナーズストア接続対応
  6. 6. # ここ半年のリリースを振り返る ● 2015-10-09 3.0.4 リリース ○ セキュリティFix ● 2015-10-28 3.0.5 リリース ○ 複数配送機能 ○ 多くのバグFix ● 2015-11-17 3.0.6 リリース ○ お気に入り機能 ○ 再注文機能 ○ バグFix
  7. 7. # ここ半年のリリースを振り返る ● 2015-12-08 3.0.7 リリース ○ 権限管理 ○ マスタデータ管理 ○ ログ管理 ● 2015-12-22 3.0.8 リリース ○ twigキャッシュ削除機能
  8. 8. # ここ半年のリリースを振り返る ● 3.0.0リリース後、半年で合計8回のバージョンアップ ● 以下の課題に対応するため ○ 品質面の安定化 ○ 2系と同等レベルの機能搭載 ● 構築事例の申請や、開発コミュニティの投稿も増え、 実際にご利用いただけるようになってきました
  9. 9. # Issue対応数の推移 3.0.5 3.0.5で、100件超のissueを対応。ク リティカルな不具合は減少傾向。
  10. 10. # テストケース数の推移 ユニットテストのテストケース数は 300→1000弱と大幅に向上。現在も 継続的に作成しています。
  11. 11. # テストカバレッジ テストカバレッジも、 20%→60%と大 幅に向上しました。
  12. 12. # 品質面の担保について ● Travis-CI, AppVayor ○ Pull Requestごとにテストが自動実行されます ○ テストにパスしないコードは取り込まれません ● テストの実行環境 ○ PHP5.3~PHP5.6+PostgreSQL/MySQL ○ 上記のマトリクスで実行されます ○ Windows環境でも実行してます ○ 最近はSQLiteでも動くようになりました
  13. 13. # テスト書いてくれた人(ありがとうございます
  14. 14. # 次期バージョン3.0.9について
  15. 15. # 次期バージョン3.0.9について ● プラグインの拡張性向上
  16. 16. # 現状の課題 ● フックポイントの粒度が大きく競合しやすい ● フックポイントの実行順序が直感的でない ● テンプレートへの介入がしづらい ● 例外・ログ出力等のエラーハンドリングが不足 ● 以下のIssueにまとめています ○ https://github.com/EC-CUBE/ec- cube/issues/1381
  17. 17. # 現状のフックポイントの実行タイミング Responseオブ ジェクトの生成
  18. 18. # 現状のフックポイントの実行タイミング html/index.php $app = new Application() $app->run() 以降の内部的な動き Requestオブ ジェクトの生成 ルーティングの 解決 Controllerオブ ジェクトの生成 Controllerの実 行 Responseオブ ジェクトの生成
  19. 19. # 現状のフックポイントの実行タイミング html/index.php $app = new Application() $app->run() 以降の内部的な動き Requestオブ ジェクトの生成 ルーティングの 解決 Controllerオブ ジェクトの生成 Controllerの実 行 Responseオブ ジェクトの生成 before after/render
  20. 20. # 共通フックポイント ● Symfony2 eventべースのフックポイントを新設 ○ http://symfony. com/doc/current/components/http_kernel/introd uction.html ○ 例外発生時やアプリケーション終了時の介入も可 能に ● 既存のフックポイントは維持(互換性維持のため) ● 管理画面/フロント画面/ルーティングの単位で定義
  21. 21. # 共通フックポイントの実行タイミング index.php $app = new Application() $app->run() 以降の内部的な動き Requestオブ ジェクトの生成 ルーティングの 解決 Controllerオブ ジェクトの生成 Controllerの実 行 Responseオブ ジェクトの生成 Request Response Controller Exception Terminate
  22. 22. # フックポイント一覧(抜粋 ● 全体・フロント・管理画面・ルーティング単位で定義しています ● https://github.com/EC-CUBE/ec-cube/issues/1410 画面種別 フックポイント名 Symfony2 event名 実行タイミング フロント eccube.event.front.request KernelEvents::REQUEST リクエスト生成時。既存の Beforeフックポイントに相 当。 フロント eccube.event.front.controller KernelEvents:: CONTROLLER コントローラ実行前。 フロント eccube.event.front.response KernelEvents:: RESPONSE レスポンス生成時。既存の After/Renderフックポイント に相当。 フロント eccube.event.front.exception KernelEvents:: EXCEPTION 例外発生時。 フロント eccube.event.front.terminate KernelEvents:: TERMINATE アプリケーション終了時。既 存のFinishフックポイントに 相当。
  23. 23. # 個別フックポイント ● コントローラ内でのフックポイントを新設 ○ フォーム初期化後 ○ データ登録処理完了後 ○ テンプレートのレンダリングタイミング ● フォームのエラー制御や、エンティティのID取得が出 来なかった問題に対応 ● 細かい粒度で介入できるため、競合しにくい ● Symfony2-FOSUserBundleの実装や、wordpress のアクションフック・フィルターフックを参考にしてます
  24. 24. # 個別フックポイントの実行タイミング index.php $app = new Application() $app->run() 以降の内部的な動き Requestオブ ジェクトの生成 ルーティングの 解決 Controllerオブ ジェクトの生成 Controllerの実 行 Responseオブ ジェクトの生成 Controller内部でのフックポイント - フォーム初期化後 - 登録処理完了後 - テンプレートのレンダリング
  25. 25. # 1. フォーム初期化後フックポイント ● フォーム初期化後に実行されるフックポイント ● 入力項目の追加を行う ○ 追加した項目は自動で出力される ○ renderイベントでの差し込みは不要になります
  26. 26. # コードイメージ(本体側)
  27. 27. # コードイメージ(プラグイン側)
  28. 28. # 2.登録処理完了後フックポイント ● コントローラの登録処理完了後のイベント ● プラグインで定義したエンティティのデータ登録等を 行う ○ 本体側のエンティティが取得できる ○ 関連したエンティティのデータ登録が可能に
  29. 29. # コードイメージ(本体側)
  30. 30. # コードイメージ(プラグイン側)
  31. 31. # 個別フックポイント ● コントローラ内にフックポイントが定義されている ○ 実行される箇所がわかりやすい ○ どんな引数が渡ってくるかもわかる ● プラグインのコードも完結になる ○ renderフックポイントで差し込みする必要がない ○ バリデーションも定義だけでよい ● フックポイントは全コントローラに追加予定 ○ 複雑な画面は、フックポイントが複数されるかも ○ 検索画面は、引数としてqueryBuilderを渡す
  32. 32. # その他の情報 ● フックポイント互換性について ○ 既存のものはそのまま動作します ● TwigのID対応 ○ BEMベースの規約策定 ○ 全テンプレートに埋め込み ○ jQueryやCrowrerでの操作が容易に
  33. 33. # その他の情報 ● 開発者向けツール ○ コンソールコマンド ■ プラグインのinstallがコマンドベースで可能に ○ SQLite対応 ■ データベースを用意しなくても動かせる ● プラグインの例外・ログ出力を強化 ● リリース時期 ○ 2016/2中旬を予定しています
  34. 34. # 今後の注目
  35. 35. # 今後の注目 ● 結合試験/受入試験の自動化 ● API開発スタート
  36. 36. # 結合試験/受入試験の自動化 ● Travis-CI/Appvayorの課題 ○ プログラムの関数レベルでのテストを自動実行 ○ 低いレイヤでの動作を担保 ○ 画面上での動作までは確認できない ● codeception + PhantomJS ○ seleniumみなたいなもの ○ webブラウザの動作を再現 ○ 高いレイヤでの動作を担保
  37. 37. # 結合試験/受入試験の自動化 ● テストコードは書きやすいのでメンテナンスも容易 ○ htmlの要素指定が結構ざっくりでかける
  38. 38. # 結合試験/受入試験の自動化 ● EC-CUBEの試験項目書のシナリオを自動実行 ○ https://github.com/EC-CUBE/eccube3-doc ○ EC-CUBEリリース前に実施してます(人力 ○ UTで見つけにくい不具合も検知できる ● レポジトリ ○ https://github.com/EC-CUBE/eccube- codeception ○ EC-CUBEリリース前に実施していきます(自動化 ○ 2人/日→数時間へテスト工数削減
  39. 39. # 案件への活用 ● 案件でもテスト自動化を活用できる ○ 試験コード、だいぶ全体をカバーできるようになっ てきてます ○ 機能カスタマイズしたらテストも修正 ○ 開発中 ■ Travis-CIでの自動テスト ○ 納品前 ■ codecepitonでの自動テスト ● 本来集中すべきミッションに専念できる
  40. 40. # 作ってくれた人(ありがとうございます
  41. 41. # API開発スタート
  42. 42. # API開発スタート ● 機能要件 ○ I/F策定 ■ ユースケースの洗い出し ■ 概念モデル精査 ● 技術検証 ○ 認証・認可の技術検証 ■ OAuth2, OpenID Connect ○ rest api実装方法の検討 ■ Symfony2バンドル調査 ■ 実装方法検討
  43. 43. # API開発スタート ● 機能要件 ○ I/F策定 ■ ユースケースの洗い出し ■ 概念モデル精査 ● 技術検証 ○ 認証・認可の技術検証 ■ OAuth2, OpenID Connect ○ rest api実装方法の検討 ■ Symfony2バンドル調査 ■ 実装方法検討
  44. 44. # API開発スタート ● ユースケースの洗い出し ○ こんなAPIがほしい ○ このシステム・サービスと連携したい ○ ...etc 業務にマッチするものを作りたいです ○ ぜひご要望をきかせてください(パーティで
  45. 45. # 開発・コミュニティに参加するには
  46. 46. # 開発・コミュニティに参加するには ● GitHubでPull Request ○ https://github.com/EC-CUBE/ec-cube ○ Qiitaにも使い方の記事を書いてます ● ドキュメント ○ 公式ドキュメント ■ http://ec-cube.github.io ○ こちらもGitHubで管理しています ■ https://github.com/EC-CUBE/ec-cube. github.io ○ まだまだ足りていないのでぜひご協力ください
  47. 47. # 開発・コミュニティに参加するには ● 東京ユーザグループ ○ https://www.facebook. com/groups/283598911686452/ ○ 1/29 勉強会やります ■ ロックオン東京オフィス ■ 満員ですごめんなさい ○ 今後も随時開催します(東京行くときは ■ 開催してくれる方も大募集です

×