Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSS CMS「Drupal 10」 エッセンシャル:最新版でのWeb開発の魅力を探る #oscnagoya

OSS CMS「Drupal 10」 エッセンシャル:最新版でのWeb開発の魅力を探る #oscnagoya

Drupalは、オープンソースのCMS(コンテンツ管理システム)であり、世界中の多くのウェブサイトで使用されています。Drupal 10は、最新バージョンであり、新しい機能や改善が追加され、より優れたウェブサイトを開発できるようになっています。このセッションでは、Drupal 10を使用してウェブサイトを開発する魅力や、私たちのコミュニティを含むDrupal周辺のコミュニティについて説明します。

https://event.ospn.jp/osc2023-online-nagoya/session/876148

HikaruMaruyama

May 20, 2023
Tweet

More Decks by HikaruMaruyama

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ ؙࢁ ͻ͔Δ • 1991೥10݄29೔ ੜ·Ε • ಠཱܥιϑτ΢ΣΞ։ൃձࣾͰιϑτ΢ΣΞΤϯδχΞ • ͷͪΤόϯδΣϦετͱͯ͠ϓϩμΫτͷܒ໤׆ಈ

    • 2019೥8݄ ΞΫΠΞʹδϣΠϯ • ΢ΣϒαΠτͷίϯςϯπͷٕज़຋༁΍ϩʔΧϥΠζΛ ୲౰ 
 • Ruby / Rails / Web API / Docker / AWS 
 ϥʔϝϯ / εΠʔπ / Ωϟϯϓ൧ / ొࢁ
  2. Drupal Meetup ๛ా • 2018೥5݄͔Β։࠵ • 2020೥4݄͔ΒΦϯϥΠϯ։࠵ • Ѫ஌ݝ಺΍ݝ֎ͷDrupalʹڵຯͷ͋Δਓ͕ ू·͍ͬͯΔίϛϡχςΟ

    • ษڧձͱ͍͏ΑΓ͸Drupalؔ࿈ͷ࿩୊ʹͭ ͍ͯ࠲ஊձͳงғؾ • https://drupal-meetup- toyota.connpass.com
  3. Drupalͱ͸ʁ PHPͰͰ͖ͨΦʔϓϯιʔεCMS! σδλϧମݧΛఏڙ͢ΔɺΦʔϓϯιʔε ͷCMS(Content Management System)ɻ NASAɺΦʔετϥϦΞ੓෎ɺNASDAQͳ Ͳͷۚ༥ػ͔ؔΒɺωεϨɺϑΝΠ βʔɺIBMͳͲ༷ʑͳ૊৫͕DrupalΛ࠾ ༻ɻ

    ࡞ऀ Dries Buytaert ݴޠ PHP ϥΠηϯε GPL v2Ҏ߱ ॳճϦϦʔε 2001೥1݄15೔ ެࣜαΠτ drupal.org ιʔείʔυ git.drupalcode.org/project/drupal ࠷৽όʔδϣϯ 10.0.9 (2023೥5݄18೔࣌఺)
  4. CMSࢢ৔ͷγΣΞ CMS γΣΞ཰(2023೥1݄) WordPress 63.70% Shopify 5.70% Wix 3.60% Squarespace

    3.00% Joomla 2.70% Drupal 1.80% Adobe Systems 1.70% PrestaShop 1.00% https://w3techs.com/technologies/history_overview/ content_management/ms/y
  5. Drupalͷಛ௃ Πϯετʔϧ͙ͯ͢͠ʹ࢖͑ΔCMSͳΒͰ͸ͷखܰ͞ ˍWebϑϨʔϜϫʔΫͱͯ͠΋ػೳ͢Δߴ͍ॊೈੑ! • ϞδϡʔϧੑʢModularityʣΛݪଇͱͨ͠ઃܭ • ߏ଄Խ͞ΕͨίϯςϯπΛߏங͢Δͷʹ໾ཱͭ • ͙͢ʹ࢖͑Δඪ४ػೳ •

    Ϣʔβʔݖݶ؅ཧɺΫΤϦϏϧμʔɺଟݴޠͳͲଟ͘ͷػೳ͕ඪ४૷උ • ͜ΕΒ΋ϞδϡʔϧͰࡉ͔͘ػೳ͕ผΕ͍ͯΔ • ֦ுੑ • ίϛϡχςΟͰఏڙ͞ΕΔ਺ສݸ΋ͷϞδϡʔϧɺςʔϚɺσΟετϦ ϏϡʔγϣϯΛ૊Έ߹ΘͤΔ͜ͱͰDrupalίΞΛڧԽ
  6. Drupalͷϙδγϣχϯά ߴ Χ ε λ Ϛ Π ζ ੑ ߴՁ֨

    Drupal Ruby on Rails LaravelͳͲ WordPress ΤϯλʔϓϥΠζ ޲͚঎༻CMS Jekyll ௿Ձ֨ˍߴΧελϚΠζ! • ΦʔϓϯιʔεͳͷͰϥΠη ϯεඅ༻͕ແྉ • ΧελϚΠζΛߦ͏্Ͱͷ౔ ୆͕͔ͬ͠Γ͍ͯ͠Δ
  7. Drupalʹ޲͍͍ͯΔαΠτͷҰྫ ίϯςϯπྔ 
 ͕ଟ͍ ੡඼৘ใαΠτ άϩʔόϧ 
 (ଟݴޠ)ରԠ άϩʔόϧاۀαΠτ ߴ͍҆શੑ

    Λҡ࣋ ϛογϣϯΫϦςΟΧϧͳαΠτ Ϛϧννϟωϧ 
 ΁ͷ഑৴ ϔουϨεCMS ϚʔέςΟϯά 
 πʔϧͱͷ࿈ܞ ϒϥϯυαΠτ Ϣʔβʔձһ ରԠ ࣾ಺ϙʔλϧ
  8. Drupal 7 : 2011೥1݄ ↓ 4೥൒ Drupal 8 : 2015೥11݄

    
 ↓ 4೥൒ Drupal 9 : 2020೥6݄ 
 ↓ 2೥൒ Drupal 10 : 2022೥12݄ աڈͷϝδϟʔόʔδϣϯͷϦϦʔε೔ Drupal 9→10͸ɺଞͷ 
 ϝδϟʔΞοϓσʔτͷ 
 ִؒΑΓ୹͍!
  9. DrupalͰͷςʔϚ։ൃͷํ๏͕৽͘͠ͳΔ! • طଘͷςʔϚ։ൃํ๏Ͱ͸ • ϕʔεςʔϚͱ೿ੜςʔϚ͕ڞʹγεςϜ্ʹଘ ࡏ͠ɺ࣮ߦ࣌ʹܧঝ͞ΕΔ • ϕʔεςʔϚ͕มߋ͞ΕΔͱαΠτͷݟͨ໨΍ಈ ࡞่͕ΕΔՄೳੑ͕͋ΓɺϕʔεςʔϚΛߋ৽Ͱ ͖ͳ͍՝୊

    • Drupal 10ͷStarterkitͱ͸ • ޓ׵ੑͷ͋ΔςʔϚ͔ΒϑΥʔΫΛ࡞੒͠ɺͦ͜ ͔Βίϐʔͯ͠࡞ۀ • ϕʔεςʔϚͷߋ৽ΛऔΓࠐΉ͜ͱ΋Մೳ ৽͍͠ελʔλʔΩοτςʔϚ Drupal 9 Ҏલ ಠࣗςʔϚ ϕʔεςʔϚ Drupal 10 Ҏ߱ Starterkit ςʔϚ ಠࣗςʔϚ
  10. Drupal 9→10 ΁ͷΞοϓάϨʔυํ๏ Drupal 8, 9, 10ͷΞʔΩςΫνϟ͸େͯ͠มΘΒͳ͍ͨΊɺ 
 9→10΁ͷߋ৽͸ൺֱత؆୯ 1.

    Drupal 10ͷཁ݅Λ֬ೝ͠ద༻ a. PHP 8.1ʙ, Composer 2.3ɾɾɾ 2. Drupal 9.4 or 9.5 ΁ߋ৽͢Δ 3. ίϯτϦϏϡʔτϓϩδΣΫτΛߋ৽͢Δ 4. ΧελϜίʔυΛߋ৽͢Δ 5. Drupal 10΁ΞοϓάϨʔυΛߦ͏ Ҏ্! https://www.drupal.org/docs/upgrading-drupal/upgrading-from- drupal-8-or-later/upgrading-from-drupal-9-to-drupal-10/overview
  11. DrupalͰѻΘΕΔσʔλͷछྨ ओʹ4छྨʹ෼ྨ͞Ε·͢! 1. Content: αΠτ๚໰ऀʹදࣔ͢Δ͜ͱΛ໨తͱͨ͠ςΩε τɺը૾ͳͲͷ৘ใ 2. Configuration: αΠτͷಈ࡞ɺදࣔํ๏ͳͲΛఆٛ͢Δ৘ ใɻ௨ৗ͸খ͞ͳςΩετͰදݱ͞ΕΔ܏޲

    3. State: cronδϣϒ͕࠷ޙʹ࣮ߦ͞Εͨ࣌ࠁͳͲɺαΠτͷ ݱࡏͷঢ়ଶʹؔ͢ΔҰ࣌తͳੑ࣭ͷ৘ใ 4. Session: ϩάΠϯ͍ͯ͠Δ͔Ͳ͏͔΍CookieͳͲɺݸʑͷ αΠτ๚໰ऀͷαΠτͱͷ΍ΓऔΓʹؔ͢Δ৘ใ ͦΕͧΕҟͳΔํ๏Ͱ 
 ฤूɺ຋༁ɺอଘ͞ΕΔ https://www.drupal.org/docs/user_guide/en/understanding-data.html
  12. ίϯςϯπΤϯςΟςΟͷߏ଄ ίϯςϯπ λΫιϊϛʔ ϝσΟΞ جຊϖʔδ ຊจϑΟʔϧυ هࣄ ຊจϑΟʔϧυ ը૾ϑΟʔϧυ λάϑΟʔϧυ

    λά ຊจϑΟʔϧ υ ΧςΰϦ ຊจϑΟʔϧυ ը૾ϑΟʔϧυ ը૾ ը૾ϑΟʔϧυ λάϑΟʔϧυ ಈը ϑΝΠϧϑΟʔϧ υ ίϯςϯπ ΤϯςΟςΟ ΤϯςΟςΟλΠϓ ΤϯςΟςΟαϒλΠϓ (= όϯυϧ) ͱϑΟʔϧυ ίϯςϯπΤϯςΟςΟ (= Πϯελϯε) ϖʔδ هࣄ λά Χςΰ Ϧ ը૾ ಈը
  13. Drupalͷ֤ϨΠϠʔͷಈ͖ 5. ςϯϓϨʔτ: CSS, HTML, Twig 4. Ϣʔβʔݖݶ: ϢʔβʔʹͲͷૢ࡞ͱදࣔΛڐ Մ͢Δͷ͔

    3. ϒϩοΫ&ϝχϡʔ: ϦʔδϣϯʹϞδϡʔϧ͔ Βͷग़ྗΛ഑ஔ 2. Ϟδϡʔϧ: ֤ػೳΛఏڙ 1. σʔλ: ςΩετɺը૾ͳͲͷ৘ใ https://www.drupal.org/docs/understanding-drupal/overview-of-drupal
  14. ηϚϯςΟοΫɾόʔδϣχϯά 10.0.9 ϝδϟʔ ϚΠφʔ ύον ޓ׵ੑͷͳ͍มߋΛ ߦ͏ ਺೥ʹҰ౓ ޙํޓ׵ੑΛอͪͳ͕Β ػೳੑΛ௥Ճ

    6ϲ݄ʹҰ౓ ޙํޓ׵ੑΛ൐͏όά मਖ਼ 1ϲ݄ʹ1ʙ2౓ https://semver.org/lang/ja/ όʔδϣϯ 
 φϯόʔ Ұൠతͳఆٛ Drupalͷ 
 Ξοϓσʔτස౓ Drupal 8͔Βόʔδϣϯ൪ ߸ʹηϚϯςΟοΫɾόʔ δϣχϯά͕࢖༻͞ΕΔ
  15. DrupalͷΧελϚΠζํ๏ DrupalίΞ αϒγεςϜ ίΞϞδϡʔϧ ίΞςʔϚ ίϯτϦϏϡʔτϞδϡʔϧ ίϯτϦϏϡʔτςʔϚ ΧελϜϞδϡʔϧ ΧελϜςʔϚ 1.Drupalͷඪ४ػೳΛͰ

    ͖Δ͚ͩ׆༻ Ϟδϡʔϧ = ػೳ ςʔϚ = ϨΠΞ΢τ 2.଍Γͳ͍ػೳ͸ίϛϡ χςΟ͔Βఏڙ͞ΕΔ ϓϩδΣΫτΛ࢖͏ 3.͞Βʹ଍Γͳ͍ػೳΛ ΧελϜίʔυͰิ͏ ίΞΛ௚઀վม ͯ͠͸ͳΒͳ͍ Never hack core!
  16. Drupalͷֶशύε ॳֶऀ Drupal΁Α͏ͦ͜ ։ൃ αΠτߏங DrupalʹؔΘΔਓ 
 શ͕ͯର৅ ςʔϚ࡞੒ ओʹϑϩϯτΤϯυ։ൃऀ

    Ϟδϡʔϧ։ൃ ओʹόοΫΤϯυ։ൃऀ ίʔυ࣮૷ΛֶͿલʹ... • ඪ४ػೳͰԿ͕Ͱ͖Δ͔ • ؅ཧը໘ͰԿ͕Ͱ͖Δ͔ • ֦ுϞδϡʔϧͰԿ͕Ͱ ͖Δ͔ ΧελϜίʔυΛͳΔ΂͘ॻ ͔ͣʹߏஙͰ͖ΔΑ͏ʹ͢Δ!
  17. ؅ཧը໘ͰઃఆͰ͖Δ͜ͱʢྫʣ • ίϯςϯπͷσʔλઃܭ • ϒϩοΫͷ഑ஔɾද੍ࣔޚ • ϞδϡʔϧɾςʔϚͷ༗ޮԽɾඇ༗ޮԽ • ϝχϡʔͷ࡞੒ •

    ΫΤϦϏϧμʔπʔϧ(Views)ʹΑΔίϯςϯπͷϦετ࡞੒ • ϨΠΞ΢τϏϧμʔʹΑΔίϯςϯπͷϨΠΞ΢τߏங • Ϣʔβʔͷ໾ׂɾݖݶઃఆ • αΠτͷଟݴޠઃఆ • ߏ੒σʔλͷΠϯϙʔτɾΤΫεϙʔτ • etc…
  18. DrupalͱSymfonyίϯϙʔωϯτ • DrupalͰ͸όʔδϣϯ8Ҏ߱ɺ͍͔ͭ͘ͷSymfonyίϯ ϙʔωϯτ͕ར༻͞Ε͍ͯΔ • Symfonyίϯϙʔωϯτͱ͸ɺػೳΛWebΞϓ ϦέʔγϣϯϑϨʔϜϫʔΫ͔Β੾Γ཭࣮ͯ͠૷ ͞ΕͨPHPϥΠϒϥϦ • ελϯυΞϩϯϥΠϒϥϦͳͷͰɺ೚ҙͷPHPΞ

    ϓϦέʔγϣϯͰ࢖༻Մೳ • Symfony͸ҰൠతͳWebΞϓϦέʔγϣϯ։ൃʹඞཁ ͳπʔϧ΍ػೳΛ༗͍ͯ͠ΔͨΊɺंྠͷ࠶։ൃΛ๷ ࢭͨ͠ΓɺDrupalͰ͔͠Ͱ͖ͳ͍Ձ஋Λ࣮૷͢Δ࣌ؒ ʹॆͯΔ͜ͱ͕Մೳʹͳͬͨ DrupalͰར༻͍ͯ͠ΔSymfonyί ϯϙʔωϯτ(Ұ෦) • Yaml • HttpFoundation • HttpKernel • Translation • EventDispatcher • Console • DependencyInjection • Routing • Serializer
  19. Ϟδϡʔϧͷ։ൃํ๏ ϞδϡʔϧʹΑͬͯDrupalΛมߋɾ֦ு͢Δํ๏͸༷ʑ༻ҙ͞Ε͓ͯΓɺ΍Γ͍ͨ͜ͱʹΑͬͯΞϓϩʔν͕ҟͳΓ·͢ɻ • ϑοΫ: Drupalͷಈ࡞Λมߋ͢Δؔ਺ɻطଘͷίʔυΛॻ͖׵͑Δ͜ͱͳ͘ɺDrupalίΞ΍ଞϞδϡʔϧͷಈ࡞Λม ߋɾ֦ுͰ͖ΔɻDrupalʹੲ͔Β͋Δखଓܕͷؔ਺ɻ 
 ҎԼ͸Drupal 8Ҏ߱ʹొ৔ •

    ϓϥάΠϯ: খ͞ͳػೳΛఏڙ͠ɺଞͷϓϥάΠϯͱ؆୯ʹަ׵Մೳʹ͢Δɻ • ΤϯςΟςΟ: ʮίϯςϯπʯ΋͘͠͸ʮߏ੒ʯͷɺӬଓతͳετϨʔδʹ࢖༻͞ΕΔΦϒδΣΫτɻ • αʔϏε: ผ໊DIίϯςφɻґଘੑ஫ೖ(DI)ͱݺ͹ΕΔσβΠϯύλʔϯΛ࣮૷ͨ͠ϑϨʔϜϫʔΫɻSymfonyͷ DependencyInjectionίϯϙʔωϯτ্Ͱ࣮૷͞Ε͍ͯΔɻ • ϧʔςΟϯά: ड͚औͬͨϦΫΤετʹରͯ͠ɺͲͷίϯτϩʔϥʔ/ΞΫγϣϯΛ࣮ߦ͢Δ͔ΛϚοϐϯά͢Δ΋ ͷɻSymfonyͷϧʔςΟϯάγεςϜʹجͮ͘ɻ • Πϕϯτ: SymfonyͷEventDispatcherίϯϙʔωϯτ্Ͱ࣮૷͞ΕͨΠϕϯτγεςϜɻ
  20. ։ൃऀʹͱͬͯͷDrupalͷັྗ • ίϛϡχςΟͷϞδϡʔϧΛ׆༻ͯ͠։ൃޮ཰Λ্͛Δ͜ͱ͕Ͱ͖Δ • ΧελϜίʔυΛݮΒ͢ = ࣗ෼ୡ͕อक͢΂͖ൣғ͕ݮΓɺӡ༻ָ͕ʹ 
 • νʔϜ։ൃΛ΍Γ΍ͨ͘͢͠ΓɺܧଓతͳվળΛߦ͏ͨΊͷج൫΍πʔϧ͕͋Δ

    • ΦϒδΣΫτࢦ޲ܕͷAPIɺComposerʹΑΔґଘؔ܎ͷ؅ཧɺߏ੒؅ཧπʔϧɺ Drush(CLI)ɺetc… 
 • ੈͷதͷσϑΝΫτΛৗʹऔΓೖΕ͍ͯΔ • Symfonyίϯϙʔωϯτͷ׆༻ɺPHPUnitͷαϙʔτɺ໊લۭؒͱΦʔτϩʔυͷ࣮૷ɺ JSON:API΁ͷ४ڌɺetc…
  21. • େ͖ͳΠϕϯτ • DrupalCamp DEN 2019 Nagoya • DrupalCamp DEN

    2022 Osaka Online • DrupalCamp DEN 2023 Iwakuni ←New! • 2023೥1݄ ࢁޱݝؠࠃࢢͰ։࠵ 
 • ఆظతͳΦϯϥΠϯษڧձ • Drupal Meetup Ӌా • Drupal Meetup ๛ా • Drupal Meetup Tokyo • etc… ೔ຊͰͷDrupalίϛϡχςΟ
  22. ίϛϡχςΟͰຊग़͠·ͨ͠🎉 Drupal 9 Web։ൃΛ͸͡ΊΔͨΊͷബ͍ຊ • ٕज़ॻయ10ͷग़లక੾೔ʢ2020೥11݄30೔)ʹࢥ͍ ཱͬͯͱΓ͋͑ͣਃ͠ࠐΈ • ࣥචظؒ͸໿3िؒ •

    ؔ౦ɾ๺ւಓɾѪ஌ͷϝϯόʔ8ਓͰݪߘΛGitHub্Ͱ CIճ͠ͳ͕ΒϚʔδͯࣥ͠ච • ͳΜͱ͔క੾DrivenͰॻ্͖͛ͨ! ʘ189ϖʔδͷബ͍ຊʗ ஶऀ: Drupal Meetup ๛ాࢧ෦ ൃߦ೔: 2020/12/26 ిࢠ൛: 800ԁ https://www.amazon.co.jp/dp/ B08R8MNP65
  23. Drupal 10ͷຊ͕ࠓ೔͔Βൃച🎉 ञ԰ͷ່ɺWebαΠτ੍࡞͠·͢ 
 -Drupal 10Ͱখ͞ͳ঎ళ͕֗DXʹ௅ઓʂ- • ٕज़ॻయ14ʹ߹ΘͤͯɺDrupal 10ॳ৺ऀຊΛ7ਓͷϝϯ όʔͰࣥච

    • લճͱ͸झ޲Λม͑ͯɺ෺ޠௐͰDrupalΛॳ৺ऀ޲͚ʹ ղઆ • ٕज़ॻయΦϯϥΠϯϚʔέοτɺAmazon KindleͰ޷ධ ൃചத! ʘ৽࡞΄΍΄΍ʗ ஶऀ: Drupal Meetup ๛ాࢧ෦ ൃߦ೔: 2023/05/20 ిࢠ൛: 1,000ԁ ࢴ൛: 1,500ԁ https://www.amazon.co.jp/dp/B0C5F3MVP4
  24. Drupal 11͕΍ͬͯ͘Δ! Drupal 7 : 2011೥1݄ Drupal 8 : 2015೥11݄

    Drupal 9 : 2020೥6݄ Drupal 10 : 2022೥12݄ Drupal 11: 2024೥8݄ʢ໨ඪʣ
  25. • σΟετϦϏϡʔγϣϯͱ͸ • ϞδϡʔϧɺςʔϚɺઃఆΛύοέʔδԽͨ͠΋ͷ • ݱࡏͷσΟετϦϏϡʔγϣϯͷ՝୊ • ҡ࣋ίετ͕ߴ͍ • Ҡߦͣ͠Β͍

    • ૊Έ߹ΘͤΔ͜ͱ͕Ͱ͖ͳ͍ • ΠϯετʔϥʔͰެ։͞Εͳ͍ • ͦ͜Ͱɺ৽͍͠ʮϨγϐʯͱ͍͏࢓૊ΈΛ࣮૷த • ߏ੒ՄೳͳύοέʔδԽ͞ΕͨػೳίϯϙʔωϯτΛ؆୯ʹ࡞ ੒ • ϝϯςφϯε΋༰қ σΟετϦϏϡʔγϣϯ͔ΒϨγϐ΁ https://www.drupal.org/project/distributions_recipes
  26. DrupalͷγεςϜཁ݅ Drupal 10.0ͷ৔߹ • Webαʔόʔ • Apache 2.4.7 ʙ •

    Nginx 0.7.x ʙ • PHP 8.1 ʙ • σʔλϕʔε • MySQL 5.7.8 ʙ • MariaDB 10.3.7 ʙ • SQLite 3.26 ʙ • (pg_trgm ϞδϡʔϧΛඋ͑ͨ)PostgreSQL 10 ʙ https://www.drupal.org/docs/getting- started/system-requirements
  27. ίϚϯυ2ͭͰ࢝ΊΑ͏ # DrupalϓϩδΣΫτͷ࡞੒ $ composer create-project drupal/recommended-project MY_PROJECT # ϓϩδΣΫτϧʔτʹҠಈ

    & ؆қ΢Σϒαʔόʔͷىಈ $ cd MY_PROJECT && php ./web/core/scripts/drupal quick-start standard PHPͱComposer͕͋Ε͹͙͢ʹ࢝ΊΒΕ·͢!