Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EC-CUBE 4.1 機能開発方針 #4901

Closed
taguchimasahiro opened this issue Feb 5, 2021 · 12 comments
Closed

EC-CUBE 4.1 機能開発方針 #4901

taguchimasahiro opened this issue Feb 5, 2021 · 12 comments
Milestone

Comments

@taguchimasahiro
Copy link
Contributor

taguchimasahiro commented Feb 5, 2021

EC-CUBE 4.1 機能開発方針

今後のEC-CUBEが店舗主と開発者の双方にとってより使いやすく魅力的なプラットフォームに成長させるために、以下のように考えています。

機能開発について

EC-CUBE 4.1 Roadmap の通り、EC-CUBE 4.1 で機能追加や改善を進めるにあたって、どのような機能が必要かを検討しています。カスタマイズ性や、既存プラグイン/デザインテンプレートとの互換性を最大限に考慮しながらも、誰もが利用しやすい機能から開発していきます。
そのために広く多くの方のご意見を集めたいので EC-CUBE の標準機能として必要だと思われる機能の Issue にご意見のコメントか 👍スタンプをお願いします。
「enhance」ラベルと「4.1」マイルストンが付いている Issue が EC-CUBE 4.1 で追加を検討中の機能です。
EC-CUBE 4.1で追加を検討している機能のIssueは以下で検索可能です。

EC-CUBE 4.1 で追加を検討中の機能

コメントとスタンプを参考に実装していきます。

バージョンについての方針

EC-CUBE 4.0に関しては積極的な機能追加は行いません。新しい機能の取り込む先として、EC-CUBE 4.1以降を想定しています。

互換性について

EC-CUBE 4.1 Roadmap の通り、プラグインの互換性に関しては最大限考慮します。

開発ブランチについて

2021/08/13 追記
EC-CUBE 4.1 開発時には役割別に 4.0 / 4.1-core / 4.1-feature に分けて開発をしていましたが、 EC-CUBE 4.1 の仕様確定に伴い 今後は 4.1 ブランチに統一します。
今後新しくプルリクをいただく際には 4.1 へいただきますようによろしくお願いいたします。
すでに 4.0 / 4.1-core / 4.1-feature へいただいていますプルリクはマージ後に 4.1 ブランチにマージさせていただきます。
4.1 ブランチへのマージが完了しましたら 4.1-core / 4.1-feature は削除させていただきます。

image

EC-CUBE 4.1 開発時の運用

EC-CUBE 4.1のフレームワークの開発ブランチと機能開発のブランチを分けて開発を行います。EC-CUBE 4.1リリース時には両方のブランチをマージしてリリースします。

4.1-core : Symfony4.4/Composer2.0のアップデートの開発を行います。
4.1-feature : 新機能開発を行います。

4 1-feature

Feedback

機能開発に関する進め方へのご意見もお待ちしております。
本Issueにぜひコメントください。

@okazy okazy added this to the 4.1 milestone Feb 5, 2021
@nanasess
Copy link
Contributor

nanasess commented Feb 5, 2021

フレームワークとしての開発と、 CMS としての開発(feature)を分けていくのは賛成です。
今回のバージョンアップでは難しいかもしれませんが、 機能開発効率を高めるためのフレームワーク開発や、バージョンアップしやすくする仕組み作りの必要性を感じています。

現状では、 core は Symfony や Doctrine の新バージョンを追いかけるブランチという認識ですが、それのみではなく、 eCommerce に特化した、開発効率の良いフレームワークに育てていけたら良いなと思っています。
将来的には、 core は分離して vendor 以下で動かせるようになれば嬉しいです。

また、バージョンアップのしやすさについては、どうしても Synfony や Doctrine のバージョンアップによる破壊的な変更の影響を受けるので、 EC-CUBE 側の Interface で wrap して影響を吸収できたら良いと思います。(EC-CUBE2系や Concrete5 がそういった構成になっています)

あとは、プラグインやカスタマイズディレクトリの開発効率も悪すぎるので、もっと洗練させて簡単に書けるようにしたいですね。

@kurozumi
Copy link
Contributor

kurozumi commented Feb 5, 2021

@nanasess

「プラグインやカスタマイズディレクトリの開発効率も悪すぎる」

自分は現状それほど苦に思っていないのですが、開発効率の悪さを具体的に教えていただけると助かります。

@dk-umebius
Copy link
Contributor

dk-umebius commented Feb 5, 2021

EC-CUBE本体では、プラグインで実装すると他プラグインと競合しやすい機能を優先して欲しい気がします。

イメージでは #4600 #4873 #4577 #4627 あたりです。

@nanasess
Copy link
Contributor

nanasess commented Feb 5, 2021

@kurozumi
もっと簡潔に書けるようになったらいいと思っています。
具体的なイメージはまだ見出せていませんが、 Java の SpringBoot などは参考になりそうです。
特に、FormType は記述性が悪く、毎回苦しんでます。
SpringBoot はとても簡潔に書けるようになっています。
https://qiita.com/ryo2132/items/bbef095c87cab3720c70
究極は、 Twig の中にフォーム定義の Yaml とか、アノテーションコメントを埋め込んだら、自動的にフォームが生成されるようになったりすると、デザイナーさんにも優しそうです。

あと、できるかどうかわかりませんが Twig に式言語みたいな仕組みを導入できたらいいなと思っています。
(例なので Twig の構文と乖離してますがご容赦ください)
例えば、以下のように書くだけで、商品ID:10 をカートに入れられるフォームが生成されるとか。

<form:cart type="product" id="10" />

管理画面の検索フォームもパターンは決まっていますし、もっと簡単に書けたらいいですね。
今は、受注番号検索は単一でしかできませんが、1000〜1010 まで検索したいという要望もあるかもしれません。そんな時に、

<input:order type="id" attr="between" />

と書けば、

<input type="text" name="order[id][]" />〜<input type="text" name="order[id][]" />

のようなフォームが自動生成されるとか。

具体的なイメージがすぐに湧きませんが、フォームのみでなく、 PHPのプログラム側ももっと簡潔に書けるようにしたいです。 4系で導入された、 PurchaseFlow はその先駆けと言えます。

20年近く前に、 Java のフレームワーク開発をしていたのですが、当時すでに上記のような仕組みを導入して、業務に特化したコンポーネントをたくさん作り、機能開発効率を上げていました。
当時のフレームワークと比べると、 EC-CUBE は20年遅れているといっても過言ではないと思います。
が、14年間開発に携わって、なかなかその境地まで辿りつけていないのが現実です。
ただ、現代のスクリプト言語はフレームワークのカスタマイズはあまりせずに、そのまま使うのが主流なようなので、時代錯誤なのかもしれません。

@chihiro-adachi
Copy link
Contributor

PRの送り先について補足です。

方針発表前に既に投稿いただいているPRについては、投稿されたブランチで受け入れを行う予定です。
ただし、4.1ブランチにPRを投げていただいている場合は、修正依頼をお願いする場合があります。

今後は、不具合修正:4.0ブランチ、機能追加・機能改善:4.1-featureにPRをお願いします。

@okazy
Copy link
Contributor

okazy commented Feb 22, 2021

現時点の 👍 数上位

3個以上

#4600
#4807
#4852

2個

#4875
#4879
#4873
#4867

実装を検討中

#4840
#4859
#4847
#4874
#4862
#4878

@okazy
Copy link
Contributor

okazy commented Feb 26, 2021

毎週水曜日の14時からオンラインで EC-CUBE Issue 検討会を実施しています。
GitHub の Issue の内容がわかりにくいのでリファインメントしようという会です。
GitHub 共有会から続きで開催し、会場も GitHub 共有会と同じです。
一緒にEC-CUBEを改善していきましょう!

▼参加用URL(GitHub 共有会と同じ)
meet.google.com/rqq-jtpi-jha

▼公式サイトのイベントページ
https://www.ec-cube.net/event/detail.php?event_id=280

概要

EC-CUBE のリポジトリには多くの Issue が作成されていますが、内容が不明確で開発に着手しにくい Issue が多いかと思います。
EC-CUBE の機能向上に向け、開発者が開発に着手できるように、またプルリク後の手戻りが少ないように Issue を整理(リファインメント)していきます。

Issue の整理には EC-CUBE のコア開発者が数名参加予定です。
EC-CUBE を改善したいと思われている方はぜひご参加いただきご意見をいただければと思います。
全体としては開発者向けの内容とはなりますが、開発者は運用面が苦手なため、運用経験者の参加も大歓迎です。
これから EC-CUBE の開発に参加しようと思われているエンジニアの方は考え方など勉強になるかと思います。

Issue 検討会は週1回程度を目標に開催していきたいと思っています。
アジェンダや開催日程は参加者のご意見をいただきながら改善していきますので、お気軽にご参加よろしくお願いいたします。

日時

2021/3/3 14:00~15:00 (EC-CUBE GitHub 共有会の後)

参加方法

Google Meet で開催します。
時間になりましたら以下の URL からご参加ください。

meet.google.com/rqq-jtpi-jha

アジェンダ

  1. 趣旨説明(3分)
  2. 更新 Issue/PR の確認(10分程度)
  3. 開発 ready ではない Issue のリファインメント(40分程度)
  • Issue の要件・仕様の決定、できれば実装方針まで決めて開発できる状態とする

第1回のリファインメント対象の Issue

参加者から要望があれば優先してリファインメントしていきたいと思います。
特に希望がなければ第1回は以下の Issue の中からリファインメントをしていこうと思います。

@okazy
Copy link
Contributor

okazy commented Mar 18, 2021

毎週木曜日に EC-CUBE Issue 検討会を実施していますが、実施内容を記録しておくところがありませんでしたので、こちらの Issue に投稿していこうと思います。
EC-CUBE Issue 検討会の記録の撮り方でもっといい方法があればコメントいただければと思います。

dev-readyのIssue

検討したい Issue メモ

検討した Issue

しるし
🚀開発 Ready
🆕新規
🏁クローズ
🆙更新
🔜次回に持ち越し

2021/04/28

商品にオプション項目を追加できるようにする #4873 (comment) #4873 (comment) 🆙

次回は管理画面と DB の設計をできればと思います。

2021/04/21

商品購入時にギフト・ラッピングを選べるようにしたい #4875 (comment) #4875 (comment) 🆙
商品にオプション項目を追加できるようにする #4873 (comment) 🆙

商品単位のオプション機能があれば(使いにくいケースはあれど)多くの場合網羅できるという結論になりましたので、商品単位のオプション(ラッピング)機能の検討をしたいと思います。

2021/04/14

Doctrine Filterで拡張機構を実装してみる #5005 (comment) 🆙
商品購入時にギフト・ラッピングを選べるようにしたい #4875 🆙🔜

2021/04/07

【商品の公開状況の制御機能のベース】商品の掲載期間を設定したい #4852 🆙
フロント側での商品情報表示を制御する拡張機構 #4995 🆙
フロント画面に管理者権限でログインしているかを判断できる表示が欲しい #5006 🆕🚀

2021/03/31

商品の掲載期間を設定したい #4852 (comment) 🆙🔜
抽選販売の設定が欲しい #4994 🆕

2021/03/24

タグ管理の項目追加の自動表示位置が誤り #4981 🚀
受注登録でお届け先に氏名が表示されない #4980 🚀
composer install時にDeprecation Notice #4607 🚀
受注管理>出荷CSVのラベルで"出荷ID"ではなく、"配送ID"となっている #4180 🚀
受注編集時に不必要なデータが更新される #4059 🚀
複数台構成で稼働時に、データ更新後のリダイレクトでデータが反映されない場合がある #4985 🆕
マイページのお届け先追加/削除の完了メッセージの追加 #4762 🏁
画像の lazy load 対応 #4816 🏁

2021/03/17

#4972 🚀
#4969 🚀
#4952

2021/03/10

#4948
#4947 🚀
#4946

2021/03/03

#4847
#4946
#4947
#4948

@okazy
Copy link
Contributor

okazy commented Apr 1, 2021

EC-CUBE 4.1 に追加予定の機能

A: 4.1β2に向けて積極的に取り込みたいプルリクエスト

#4987
#4986
#4975
#4976
#4966
#4808
#5017

  • 4.1はβの段階ですので、多少の課題があってもテストに問題がなければ上記を 4.1-beta2 ブランチに取り込みたいと思います。
  • 4.1 RC までに課題の解決を目指します。
  • 新機能については既存のプラグインとの競合調査も実施し、エラーが発生しない状態を目指します。
  • また、プラグインから本体へ取り込まれた機能についてはマイグレーションの提供も検討します。
  • β版ですので、課題が解決できない場合には切り戻す可能性もあります。
  • 個別に判断もしたいので、β2のリリースは4月中旬となる見込み

B: 4.1.1 以降での取り込みとなりそうなプルリク

#4642
#4974
#4928
#4920
#4916
#4912
#4697

4.1に入れたいが、現時点で課題があり入れる判断ができないもの

#4898

  • 最低限GDが入っていない場合も動作するように対応が必要

#4796

  • 照合順序 default_table_options
  • カラムの定義変更がスキーマアップデートでアップデート可能かの確認が必要
  • カスタマイズでバイト数で文字列処理をしている場合にずれる可能性がある?

#4687

  • 4.1ではシリアライズの課題あり

C: 4.1では実現できないもの

@okazy
Copy link
Contributor

okazy commented Apr 2, 2021

4.0.6 / 4.1-beta2 / 4.1RC のリリースまでのブランチの運用を整理しました。
直近の 4.1-beta2 リリースに向けて、 ① ② ③ ④ を実施します。

image

@okazy
Copy link
Contributor

okazy commented Aug 13, 2021

ブランチの今後の運用について追記させていただきました。

EC-CUBE 4.1 開発時には役割別に 4.0 / 4.1-core / 4.1-feature に分けて開発をしていましたが、 EC-CUBE 4.1 の仕様確定に伴い 今後は 4.1 ブランチに統一します。
今後新しくプルリクをいただく際には 4.1 へいただきますようによろしくお願いいたします。
すでに 4.0 / 4.1-core / 4.1-feature へいただいていますプルリクはマージ後に 4.1 ブランチにマージさせていただきます。
4.1 ブランチへのマージが完了しましたら 4.1-core / 4.1-feature は削除させていただきます。

image

@chihiro-adachi
Copy link
Contributor

4.1へのマージは完了したため、4.1-core/4.1-featureブランチを削除しました。

@matsuoshi matsuoshi unpinned this issue Nov 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants