Slide 1

Slide 1 text

EC-CUBE3ίʔυϦʔσΟϯά #1 EC-CUBEؔ੢Ϣʔβάϧʔϓ 2016-01-20

Slide 2

Slide 2 text

ࣗݾ঺հ גࣜձࣾΩϡʔϧ ࢁଜ ਗ਼࢙ EC-CUBE3ͷίϛολʔͯ͠·͢ @k-yamamura

Slide 3

Slide 3 text

໨࣍ 1. EC-CUBE3ͷ঺հ 2. ࢖༻͍ͯ͠ΔϑϨʔϜϫʔΫ 3. EC-CUBE3ͷσΟϨΫτϦߏ଄ 4. σʔλϕʔεߏ଄ʹ͍ͭͯ 5. ։ൃ࣌ͷ஫ҙ఺

Slide 4

Slide 4 text

1.EC-CUBE3ͷ঺հ

Slide 5

Slide 5 text

EC-CUBE3ͷ঺հ • 2015೥7݄1೔ʹ7೥ͿΓͷϝδϟʔόʔδϣϯΞοϓ • γεςϜ಺෦ͷେ෯ͳݟ௚͠
 Symfony2ίϯϙʔωϯτͰ͋ΔSilexͷ࠾༻
 Bootstrap3ͷ࠾༻
 Smarty͔ΒTwig΁ͷPHPςϯϓϨʔτมߋ
 Doctrineͱ͍͏ORϚούʔͷ࠾༻ • ϨεϙϯγϒσβΠϯରԠ • ϓϥάΠϯػߏͷ࡮৽

Slide 6

Slide 6 text

EC-CUBE3ͷ঺հ • GitHubΛ࢖ͬͨࠓ࣌ͷ։ൃ
 https://github.com/EC-CUBE/ec-cube • TravisCIɺAppVeyorɺScrutinizerͷ֎෦αʔϏεΛ࢖͍ίʔ υ඼࣭Λ୲อ
 ˠPullRequest͞ΕΔͱͦΕͧΕࣗಈతʹ࣮ߦ͞Ε·͢ɻ·ͩ ·ͩςετέʔε͸଍Γ͍ͯ·ͤΜ͕ɾɾɾ • PSRʹ΄΅४ڌͨ͠ίʔυ։ൃ ͍ͭͰ΋Pull Request͓଴͓ͪͯ͠Γ·͢ʂ

Slide 7

Slide 7 text

2.࢖༻͍ͯ͠ΔϑϨʔϜϫʔΫ

Slide 8

Slide 8 text

࢖༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Symfony2ʹ͍ͭͯ
 Symfony2ͱ͸MVCελΠϧͷྲྀΕΛ౿ऻͨ͠ϑϨʔϜ ϫʔΫͰ͢ɻ • ҰൠతͳWebΞϓϦέʔγϣϯͷಈ࡞ ᶃϦΫΤετ ᶅϨεϙϯε ᶄॲཧ

Slide 9

Slide 9 text

࢖༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Symfony2ͷಈ࡞ ᶃϦΫΤετ ᶅϨεϙϯε ᶄॲཧ ϦΫΤετ ΦϒδΣΫτ )551 Χʔωϧ Ϩεϙϯε ΦϒδΣΫτ

Slide 10

Slide 10 text

࢖༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Symfony2ͷߏ੒ཁૉ @see https://speakerdeck.com/hidenorigoto/symfonywoxuan-buli-you-tosymfonyben-shao-jie

Slide 11

Slide 11 text

࢖༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Twigʹ͍ͭͯ
 PHPςϯϓϨʔτΤϯδϯͰ͋ΓɺSymfony2Λߏ੒͢Δඪ४ύο έʔδͷҰ෦Ͱ͢ɻ(EC-CUBE2ܥͰ͸SmartyΛ࠾༻) • Twigͷಛ௃ 1. ߴ଎ : ࠷దԽ͞ΕͨPHPίʔυͰςϯϓϨʔτΛίφϐϧ͠ɺ ௨ৗͷPHPίʔυʹൺ΂ͯΦʔόʔϔουΛ࠷খݶʹݮগ 2. ηΩϡΞ : ࣗಈΤεέʔϓػೳ΍৴པ͞Ε͍ͯͳ͍ςϯϓϨʔ υίʔυΛධՁ͢ΔͨΊͷsandboxϞʔυΛඋ͑Δ 3. ॊೈੑ : ಠࣗͷΧελϜλά΍ϑΟϧλΛఆٛ͢Δ͜ͱ͕Մೳ

Slide 12

Slide 12 text

࢖༻͍ͯ͠ΔϑϨʔϜϫʔΫ • Doctrineʹ͍ͭͯ
 Doctrine͸ORMπʔϧͰ͋Γɺσʔλϕʔεͷந৅Խ΍ૢ࡞͢ΔͨΊͷPHPϥΠϒϥ ϦʔͰ͢ɻ
 Symfony2Ͱ͸σʔλϕʔεͱσʔλΛ΍ΓऔΓ͢ΔͷʹɺDoctrine ORMΛ࢖͍·͢ɻ ORMͱ͸DBͷσʔλͱPHPͷΫϥεΛϚοϐϯάͯ͠ม׵͢Δٕ๏ͷ͜ͱͰ͢ɻ
 
 
 
 
 
 • ϓϥΠϚϦΩʔͱͯ͠idΛ࣋ͪɺDoctrineΛ௨ͯ͠DBͱϚοϐϯά͢ΔPHPΦϒδΣ ΫτΛΤϯςΟςΟͱݺͼ·͢ɻ

Slide 13

Slide 13 text

3.EC-CUBE3ͷσΟϨΫτϦߏ଄

Slide 14

Slide 14 text

EC-CUBE3ͷσΟϨΫτϦߏ଄ • EC-CUBE3Ͱ͸SilexϑϨʔϜϫʔΫΛ࠾༻͍ͯ͠Δͨ Ίɺ2ܥ͔Βେ෯ʹσΟϨΫτϦߏ଄͕มԽ • Symfony2ͷσΟϨΫτϦߏ଄ΛࢀߟʹɺEC-CUBE3ಠ ࣗʹߏ੒(σΟϨΫτϦߏ੒͸ޙड़) • URLʹ.php͕ແ͘ͳΓγϯϓϧͳURLʹมߋ • ެ։σΟϨΫτϦʹ͍ͭͯ͸2ܥΛ΄΅౿ऻ

Slide 15

Slide 15 text

EC-CUBE3ͷσΟϨΫτϦߏ଄ • /ECCUBEROOT/src
 ഑Լ͕ϓϩάϥϜຊମͱͳΓɺ phpϑΝΠϧ΍twigϑΝΠϧΛ ഑ஔ

Slide 16

Slide 16 text

EC-CUBE3ͷσΟϨΫτϦߏ଄ • /ECCUBEROOT/html
 ͕ެ։σΟϨΫτϦͱͳΓɺ ϦιʔεϑΝΠϧ(css΍ը૾ ϑΝΠϧ౳ʑ)Λ഑ஔ
 (֤σΟϨΫτϦͷઆ໌͸ޙड़)

Slide 17

Slide 17 text

EC-CUBE3ͷσΟϨΫτϦߏ଄ • /ECCUBEROOT/app
 ഑Լ͸ઃఆϑΝΠϧ΍ϩάϑΝ Πϧ౳͕഑ஔ͞Ε͓ͯΓɺϓ ϥάΠϯ͸ʮPluginʯσΟϨΫ τϦ഑ԼͰ࡞੒

Slide 18

Slide 18 text

EC-CUBE3ͷσΟϨΫτϦߏ଄ σΟϨΫτϦ໊ ػೳ໊ Eccube௚Լ ϕʔεͱͳΔApplication.php͕ଘࡏ͠ɺඞ ͣ͜ͷΫϥε͔Β࣮ߦ͞ΕΔ Application Application.phpͷ਌ΫϥεϑΝΠϧ͕֨ೲ Command ConsoleίϚϯυ༻Ϋϥε Common ఆ਺ఆٛΫϥε Controller ίϯτϩʔϥʔΫϥε ControllerProvider URLϚοϐϯάఆٛؔ਺ Doctrine Doctirine֦ுΫϥε Entity DB࿈ܞ༻EntityΫϥε Event FormΠϕϯτ༻Ϋϥε EventListner ΠϕϯτϦεφʔ༻Ϋϥε

Slide 19

Slide 19 text

EC-CUBE3ͷσΟϨΫτϦߏ଄ σΟϨΫτϦ໊ ػೳ໊ Exception ۀ຿ΤϥʔΫϥε Form FormλΠϓΫϥε Plugin ϓϥάΠϯ༻ManagerΫϥε Repository DBΞΫηε༻ϦϙδτϦΫϥε Resource doctrine༻dcmϑΝΠϧ΍twigϑΝΠϧ౳ Security ύεϫʔυϋογϡ༻Ϋϥε΍ݖݶνΣο ΫΫϥε Service αʔϏεΫϥε ServiceProvider DIఆٛ༻Ϋϥε Twig Twig֦ு༻Ϋϥε Util ڞ௨ؔ਺Ϋϥε

Slide 20

Slide 20 text

EC-CUBE3ͷσΟϨΫτϦߏ଄ • ຊମଆͷ։ൃͷྲྀΕ͸ҎԼͷ௨Γ 1. Controller࡞੒ 2. ControllerProvider΍ServiceProviderʹඞཁͳఆٛ Λ௥Ճ 3. TwigϑΝΠϧ࡞੒ 4. ඞཁͰ͋Ε͹FormType࡞੒ 5. ඞཁͰ͋Ε͹ Entity౳Λ࡞੒ 6. ը໘֬ೝ

Slide 21

Slide 21 text

4.σʔλϕʔεߏ଄ʹ͍ͭͯ

Slide 22

Slide 22 text

σʔλϕʔεߏ଄ʹ͍ͭͯ • EC-CUBE2͔ΒEC-CUBE3ͷDBεΩʔϚͷݟ௚͠ʹ͋ͨΓORMͰѻ͍΍͍͢ܗࣜ ʹมߋ • EC-CUBE2͔ΒҎԼͷ಺༰Λݟ௚͠(v2.13Λର৅)
 ςʔϒϧ໊͸໋໊ن໿ΛఆΊͯमਖ਼Λ࣮ࢪ
 ར༻͍ͯ͠ͳ͍ςʔϒϧ/ΧϥϜͷ࡟আ
 ֎෦Ωʔͷ௥Ճ
 ϓϥάΠϯͰར༻͢Δςʔϒϧ͸ຊମ͔Β෼཭ • ෳ߹ओΩʔ͸ར༻ͤͣɺαϩήʔτΩʔΛར༻(ଟରଟ͸আ͘) • ͨͩ͠ɺEC-CUBE2ܥͷΧϥϜ໊শɺσʔλܕ͸ݪଇมߋ͠ͳ͍

Slide 23

Slide 23 text

σʔλϕʔεߏ଄ʹ͍ͭͯ • ໋໊ن໿ͷϧʔϧ
 ল໊ུশͷഇࢭ : dtb_deliv → dtb_delivery
 ୯਺ܗʹมߋ : dtb_products → dtb_product
 εωʔΫέʔεͰ໋໊ : dtb_class_category • ςʔϒϧʹ͸छผʹΑΓϓϨϑΟΫεΛ͚ͭΔ
 Ϛελςʔϒϧ : mtb_hogehoge
 σʔλςʔϒϧ : dtb_hogehoge
 ϓϥάΠϯؔ࿈ : plg_hogehoge

Slide 24

Slide 24 text

σʔλϕʔεߏ଄ʹ͍ͭͯ • ֎෦Ωʔͷ௥Ճ
 dtb_product_class͔Βdtb_productʹproduct_idΛ֎ ෦Ωʔͱͯ͠ઃఆ • ϓϥάΠϯ͔Βຊମͷඪ४ςʔϒϧʹରͯ͠ΧελϚΠ ζ͸ඇਪ঑
 όʔδϣϯΞοϓ͕ࠔ೉ɺଞͷϓϥάΠϯͱͷڝ߹

Slide 25

Slide 25 text

σʔλϕʔεߏ଄ʹ͍ͭͯ • EC-CUBE3Λ։ൃ͢Δࡍʹػೳͷݟ௚͕͠ߦΘΕͨͨΊɺ2 ܥͰଘࡏ͍ͯͨ͠ෆཁͳςʔϒϧ͸࡟আ • 3ܥͰ৽ͨʹ৽ن࡞੒͞Εͨςʔϒϧ΋ଘࡏ͢Δ͕ɺػೳͷ ݟ௚͠ʹΑΓ৽ن࡞੒͞Εͨςʔϒϧ͕ຆͲͰ͋Γ2ܥ͔Β ಛʹมߋ఺ͳ͠ • 2ܥͱͷςʔϒϧൺֱ͸ҎԼͷURLΛࢀর
 http://amidaike.hatenablog.com/entry/2015/11/05/141219

Slide 26

Slide 26 text

5.։ൃ࣌ͷ஫ҙ఺

Slide 27

Slide 27 text

EC-CUBE3Ͱ࢖༻͍ͯ͠Δจࣈίʔυ • phpϑΝΠϧɺtwigϑΝΠϧؚΊ͢΂ͯUTF-8(BOMແ) Ͱ࡞੒͍ͯͩ͘͠͞ɻ • σʔλϕʔε࡞੒࣌΋UTF-8Ͱ࡞੒͍ͯͩ͘͠͞ɻ
 MySQLͩͱ
 create database eccube character set utf8;

Slide 28

Slide 28 text

ରԠϒϥ΢βʹ͍ͭͯ OS ϒϥ΢β Windows (Windows7Ҏ߱) Internet Explorer10 Ҏ߱ Google Chrome ࠷৽൛ Firefox ࠷৽൛ Mac Safari ࠷৽൛ iOS(7Ҏ߱) Safari ࠷৽൛ Android(4.1Ҏ߱) ඪ४ϒϥ΢β ࠷৽൛

Slide 29

Slide 29 text

URLͷ֬ೝํ๏ $ php app/console router:debug +----------------------------------------+-----------------------------------------------------------+---------+ | Name | Path | Pattern | +----------------------------------------+-----------------------------------------------------------+---------+ | admin_logout | /admin/logout | GET | | admin_login_check | /admin/login_check | | | logout | /logout | GET | | login_check | /login_check | | | user_data | /user_data/{route} | ANY | | homepage | / | ANY | | top | / | ANY | | index | / | ANY | | cart | /cart | ANY | | cart_add | /cart/add | POST | | cart_up | /cart/up/{productClassId} | ANY | | cart_down | /cart/down/{productClassId} | ANY | | cart_set_quantity | /cart/setQuantity/{productClassId}/{quantity} | ANY | | cart_remove | /cart/remove/{productClassId} | ANY | | cart_buystep | /cart/buystep | ANY | | contact | /contact | ANY | | contact_complete | /contact/complete | ANY | | entry | /entry | ANY | | entry_complete | /entry/complete | ANY | | entry_activate | /entry/activate/{secret_key} | ANY | | forgot | /forgot | ANY | | forgot_reset | /forgot/reset/{reset_key} | ANY | | block_category | /block/category | ANY | php app/console router:debug

Slide 30

Slide 30 text

σόοάϞʔυͷ༗ޮԽ • ௨ৗ/΍/index.phpͰΞΫηε͍ͯ͠ΔURLΛ/index_dev.phpʹมߋͯ͠ΞΫηε͢Δ͜ͱʹΑΓɺtwig ϑΝΠϧ͕Ωϟογϡ͞ΕͣʹσόοάϞʔυ͕༗ޮʹͳΓ·͢ɻ
 
 ˞EC-CUBE3.0.8͔Βdump༻ϥΠϒϥϦΛಋೖͨ͜͠ͱʹΑΓɺύοέʔδ൛ͩͱ index_dev.php ͕ͦ ͷ··ͩͱ࢖͑·ͤΜɻindex_dev.php Λ࢖͑ΔΑ͏ʹ͢ΔͨΊʹ͸EC-CUBEσΟϨΫτϦ௚ԼͰɺҎ ԼͷίϚϯυΛೖྗ͍ͯͩ͘͠͞ɻ
 curl -sS https://getcomposer.org/installer | php
 Λ࣮ߦޙɺ
 php composer.phar update symfony/var-dumper symfony/debug-bundle
 Λ࣮ߦ͍ͯͩ͘͠͞ɻ(3.0.9͔Β͸ؚ·ΕΔΑ͏ʹͳΓ·͢)
 http://localhost/index_dev.php • You are not allowed to access this file. Check index_dev.php for more information.ͱΤϥʔ͕දࣔ͞Ε Δ৔߹ɺindex_dev.phpΛ։͖ɺΞΫηεݩͷIPΛҎԼͷ഑ྻʹ௥Ճ͍ͯͩ͘͠͞ɻ 
 $allow = array( '127.0.0.1', 'fe80::1', '::1', );

Slide 31

Slide 31 text

TwigΩϟογϡͷ࡟আ • ຊ൪ಋೖޙʹจݴมߋͳͲ͕ൃੜͨ͠৔߹ɺTwig Ωϟογϡ͕ޮ͍͍ͯΔͨΊTwigϑΝΠϧΛมߋͯ͠ ΋൓ө͞Ε·ͤΜɻมߋ಺༰Λ൓өͤ͞ΔͨΊʹ͸ɺ
 /ECCUBEROOTE/app/cache/twig
 σΟϨΫτϦΛ࡟আ͍ͯͩ͘͠͞ɻ·ͨ͸ɺ
 php app/console cache:clear
 ͱ࣮ߦͯ͠ΩϟογϡϑΝΠϧΛ࡟আ͍ͯͩ͘͠͞ɻ

Slide 32

Slide 32 text

PostgreSQLͱMySQLͷҧ͍ • EC-CUBE3͸DoctrineΛ࢖͍ͬͯΔͨΊɺPostgreSQLͱ MySQLͷҧ͍͸ΞϓϦ͔Βͷ؍఺ͰݟΔͱͲͪΒΛ࢖ͬͯ΋ ҧ͍͸ແ͠
 ͨͩ͠ɺPosgreSQLͱMySQLͰ͸auto incrementͷλΠϛϯ ά͕ҟͳΔͨΊ஫ҙ͕ඞཁ
 ˠMySQL͸flushΛ͔ͯ͠ΒͰͳ͍ͱidͷऔಘෆՄ • ύϑΥʔϚϯεͷ؍఺ͰΈΔͱαʔό؀ڥʹґΔͱ͜Ζ͕େ ͖͍ͨΊɺࣗ෼͕ಘҙͱ͢ΔํΛ࢖͑͹ྑ͍

Slide 33

Slide 33 text

EC-CUBE3Ξοϓσʔτ࣌ͷDB஫ҙ఺ • EC-CUBE3͔Β͸ຊମͷόʔδϣϯΞοϓʹ൐ͳ͍ɺDBͷόʔδϣϯΞοϓ΋ migrationϑΝΠϧΛ࢖ͬͯΞοϓσʔτՄೳ
 ˠsrc/Eccube/Resource/doctrine/migration௚Լʹଘࡏ͢ΔϑΝΠϧΛݩʹ migration͕࣮ߦ͞ΕΔ • ຊମΞοϓσʔτʹ൐ͳ͍DBͷมߋ͕ൃੜͨ͠৔߹ɺ
 http://υϝΠϯ/install.php/migration
 Λ࣮ߦ͢Δ͜ͱͰɺmigration͕࣮ߦ͞ΕDB͕࠷৽Խ͞ΕΔ • Πϯετʔϧ࣌doctrine_migraion_versionsͱ͍͏ςʔϒϧ͕࡞੒͞ΕΔ͕ɺ migration؅ཧ༻ςʔϒϧͱͯࣗ͠ಈతʹ࡞੒͞ΕΔςʔϒϧͷͨΊ৮Βͳ͍͜ͱ

Slide 34

Slide 34 text

EC-CUBE3Ξοϓσʔτ࣌ͷDB஫ҙ఺ • ϓϥάΠϯ͔Βຊମͷςʔϒϧʹରͯ͠ͷΧελϚΠζ͸ඇਪ঑
 ˠ࣮ݱ͢ΔͨΊʹ͸ϓϥάΠϯΠϯετʔϧ࣌ʹϚΠάϨʔγϣϯ ػೳΛ࢖ͬͯϓϥάΠϯ༻ͷςʔϒϧΛ࡞੒ͯ͠ѻ͏ͷ͕๬·͍͠ • mtb_constants͕ແ͘ͳΓɺ୅ΘΓʹconstant.ymlΛ࢖༻͢Δ͜ͱ ʹͳ͕ͬͨɺݱࡏEC-CUBE3Ͱ࢖༻͞Ε͍ͯͳ͍߲໨΋ଘࡏ͢Δͨ Ίɺকདྷ࢖༻͞Ε͍ͯͳ͍߲໨͸࡟আ͞ΕΔՄೳੑ͋Γ • ༨ஊͰ͕͢ɺEC-CUBE2ܥ͔ΒEC-CUBE3΁ͷσʔλϕʔεҠߦ πʔϧ͸ݱঢ়ఏڙ༧ఆͳ͠

Slide 35

Slide 35 text

։ൃ࣌ͷࢀߟϖʔδ • GitHubWiki
 https://github.com/EC-CUBE/ec-cube/wiki • GitHubPages
 http://ec-cube.github.io • Qiitaͷهࣄ
 http://qiita.com/tags/EC-CUBE3