Slide 1

Slide 1 text

։ൃମݧΛര্͛͢ΔLaravel Dacapo ϚΠάϨʔγϣϯαϙʔτπʔϧͷεεϝ 2022.08.27 @ucan_lab

Slide 2

Slide 2 text

ࣗݾ঺հ • Ώ͏͖ΌΜ • ௕࡚ग़਎ • גࣜձࣾROLOॴଐ • ͓࢓ࣄ͸αʔόʔαΠυΤϯδχΞ • झຯ͸HADOɺݪਆɺࡾᅳࢤਅઓɺΞχϝɺອը 
 ΧϑΣ८ΓɺεϚϒϥSPɺϧʔϏοΫΩϡʔϒ 
 ...ͨ͘͞Μɻ

Slide 3

Slide 3 text

એ఻

Slide 4

Slide 4 text

એ఻1: ϩϩɺҊ݅େେେืूதʂ • גࣜձࣾROLO (https://rolo.jp) • ΤϯδχΞ͸7ਓ΄Ͳ(Laravel, React) • ௕ظతͳ͓࢓ࣄ୳ͯ͠·͢ʂ • Laravelʹ1೥ۙ͘৮Εͯͳ͍ʂ

Slide 5

Slide 5 text

એ఻2: ຖ݄HADOͯ͠·͢ʂ • HADO (https://meleap.com) • ಄ͱ࿹ʹηϯλʔΛ૷ணͯ͠ٿΛ์ͭ࠷৽ͷARεϙʔπ • ੈք39ΧࠃɺԆ΂350ສਓ͕ϓϨΠ • 1ࢼ߹80ඵؒɺ3ର3Ͱ఺਺ΛऔΓ߹͏ήʔϜ • HADOެೝνʔϜʮShim Shamʯʹॴଐ • ৔ॴ͸͓୆৔(ԭೄʹ͸ແ͍Έ͍ͨ...😢) • ڵຯ͋Δํ͸ @ucan_lab ·Ͱ

Slide 6

Slide 6 text

※ը૾͸ΠϝʔδͰ͢ɻ

Slide 7

Slide 7 text

໨࣍ • Laravel Migrationػೳͷ͓͞Β͍ • Laravel Dacapoͷ঺հ • Laravel Dacapoͷ࢖͍ํ • ࠓޙͷΞοϓσʔτʹ͍ͭͯ • ※Laravel࢖ͬͯͳ͍ਓʹ͸ؔ܎ͳ͍࿩ʹͳΓ·͢🙏 • ※ίʔυ͕Ͱͯ͘ΔͷͰ͓खݩͰࢿྉΛݟ͍ͯͩ͘͞🙏

Slide 8

Slide 8 text

Laravel Migrationͷ͓͞Β͍

Slide 9

Slide 9 text

Laravel Migrationͱ͸ • σʔλϕʔεςʔϒϧఆٛͷมߋཤྺΛ؅ཧ • SQLͰ͸ͳ͘PHPϑΝΠϧͰ؅ཧ • ಛఆͷσʔλϕʔεʹґଘ͠ͳ͍ 
 MySQL, PostgreSQL, SQLite, SQL ServerͰಈ͘ • php artisan migrate ίϚϯυҰൃͰ൓өʂ

Slide 10

Slide 10 text

MigrationϑΝΠϧͷத਎ id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } public function down() { Schema::dropIfExists('users'); } };

Slide 11

Slide 11 text

MigrationͷྲྀΕ php artisan migrate .JHSBUJPO༻ͷ1)1ϑΝΠϧΛ࡞੒ ίϚϯυΛ࣮ߦͯ͠42-͕ൃߦ

Slide 12

Slide 12 text

🤔 ΊͬͪΌγϯϓϧ ͡ΌͶʁ Կ͕ࠔΔͷʁ

Slide 13

Slide 13 text

ςʔϒϧఆٛ͸มΘΓ΍͍͢ • ࢓༷͕มΘΕ͹ςʔϒϧ΋มΘΔ • ෆཁͳςʔϒϧɺΧϥϜ͕ͲΜͲΜग़ͯ͘Δ

Slide 14

Slide 14 text

ͭ·Γɺ͜͏ɻ php artisan migrate 🤔 ΊͬͪΌ૿͑Δ ͡ΌΜʁ

Slide 15

Slide 15 text

Migrationͷෆຬ఺ • ΰϛϑΝΠϧ͕࢒Δ🙄 
 ʢෆཁʹͳͬͨςʔϒϧ΍ΧϥϜ౳ʣ • ࠷ऴతͳςʔϒϧߏ੒͕ϑΝΠϧΛݟͯ΋෼͔ΒΜ🤔 
 ʢҰཡੑ͕௿͍ʣ • PHPϑΝΠϧͰup, downΛॻ͘ͷ͕ΊΜͲ͍🙃 • ࣗಈੜ੒͞Εͨ೔෇͕όϥόϥͰؾ࣋ͪѱ͍😣

Slide 16

Slide 16 text

͜ΕΛղܾ͢Δͷ͕μΧʔϙʂ • https://github.com/ucan-lab/laravel-dacapo

Slide 17

Slide 17 text

Laravel Dacapoͷ঺հ

Slide 18

Slide 18 text

Laravel Dacapoͱ͸ ɾLaravel MigrationͷαϙʔτϥΠϒϥϦ ɾYAMLܗࣜͰMigrationΛॻ͘ ɾMigration͸ৗʹ࠷৽ͷঢ়ଶΛอͭ 
 ɹʢ୅ΘΓʹςʔϒϧ͸ຖճΫϦΞ͞ΕΔʣ ɾ։ൃ͕ऴΘͬͨΒ௨ৗͷMigrationͷӡ༻ʹ໭͢

Slide 19

Slide 19 text

ϥΠϒϥϦΛ࡞੒͖͔͚ͨͬ͠ • 4೥લʹmpyw͞ΜͷLTʹӨڹΛड͚ͨ

Slide 20

Slide 20 text

YAMLϑΝΠϧͷத਎ # database/schemas/sample.yml users: columns: id: bigIncrements name: string email: type: string unique: true email_verified_at: type: timestamp nullable: true password: string rememberToken: true timestamps: true • 1֊૚ʹςʔϒϧ໊ • 2֊૚͸columnsݻఆ • 3֊૚ʹΧϥϜఆٛ • 4֊૚͸ඞཁʹԠͯ͡Φϓγϣϯఆٛ

Slide 21

Slide 21 text

ੜ੒͞ΕͨMigrationϑΝΠϧͷத਎ id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } public function down() { Schema::dropIfExists('users'); } };

Slide 22

Slide 22 text

DacapoͷྲྀΕ php artisan dacapo .JHSBUJPO༻ͷ:".-ϑΝΠϧΛ࡞੒ ࠷৽ͷ.JHSBUJPOϑΝΠϧΛੜ੒ .JHSBUJPOΛσʔλϕʔεʹద༻ 
 ςʔϒϧॳظԽɺγʔμʔ࣮ߦ΋ؚΉ

Slide 23

Slide 23 text

Laravel DacapoͷϝϦοτ • YAMLͳͷͰPHPΑΓѹ౗తʹ୹͍ • ࠷৽͔ͭෳ਺ͷఆٛΛॻ͚ͯҰཡੑ͕ߴ͍ • MigrationϑΝΠϧͷ೔෇͕੔ཧ੔಴͞ΕΔ • ςʔϒϧ࡞੒ɺΠϯσοΫεɺ֎෦Ωʔʹ ϑΝΠϧ͕෼͔ΕΔ

Slide 24

Slide 24 text

Laravel Dacapo ͷ࢖͍ํ

Slide 25

Slide 25 text

Πϯετʔϧํ๏ $ composer require --dev ucan-lab/laravel-dacapo ※ݱ࣌఺ͷόʔδϣϯ͸5.1.2

Slide 26

Slide 26 text

ॳظઃఆ(dacapo:init ίϚϯυ)

Slide 27

Slide 27 text

database/schemas/default.yml

Slide 28

Slide 28 text

database/migrations/ 1970_01_01_000001_create_users_table.php

Slide 29

Slide 29 text

php artisan dacapo ίϚϯυ • εΩʔϚYAMLΛߋ৽ͨ͠Βdacapo͢Δͩ ͚ʂ • ৗʹ࠷৽ͷϚΠάϨʔγϣϯϑΝΠϧ͕ੜ੒

Slide 30

Slide 30 text

php artisan dacapo ίϚϯυ

Slide 31

Slide 31 text

εΩʔϚYAMLϑΥʔϚοτ

Slide 32

Slide 32 text

εΩʔϚYAMLϑΥʔϚοτ テーブル名: comment: テーブルコメント columns: カラム名: カラムタイプ カラム名: type: カラムタイプ args: カラムタイプの引数(任意) カラム修飾⼦: カラム修飾⼦の引数 カラムエイリアス(timestamps等): indexes: - columns: [カラム名] type: インデックス修飾⼦ name: インデックス名(任意) foreign_keys: - columns: [カラム名] references: [カラム名] table: テーブル名

Slide 33

Slide 33 text

εΩʔϚYAMLઃఆྫ lessons: columns: id: instructor_id: unsignedBigInteger studio_id: unsignedBigInteger name: unsignedInteger capacity: unsignedInteger started_at: dateTime minutes: unsignedInteger timestamps: indexes: - columns: started_at type: index foreign_keys: - columns: instructor_id references: id table: instructors - columns: studio_id references: id table: studios instructors: columns: id: name: string stores: columns: id: name: string address: string phone_number: string timestamps: studios: columns: id: store_id: unsignedBigInteger name: string timestamps: foreign_keys: - columns: store_id references: id table: stores

Slide 34

Slide 34 text

ͦͷଞ

Slide 35

Slide 35 text

MigrationϑΝΠϧ໊ͷϧʔϧ • 1970_01_01_000001 → ςʔϒϧ࡞੒ • 1970_01_01_000002 → ΠϯσοΫε੍໿ • 1970_01_01_000003 → ֎෦Ωʔ੍໿

Slide 36

Slide 36 text

YAMLͰදݱͰ͖ͳ͍΋ͷ $ php artisan make:migration create_flights_table id(); $table->json('movies')->default(new Expression('(JSON_ARRAY())')); $table->timestamps(); }); } public function down() { Schema::drop('flights'); } }; $ php artisan dacapo ௨ৗͷMigrationϑΝΠϧͱڞଘՄ

Slide 37

Slide 37 text

εΩʔϚϑΝΠϧ͸͍ͭ͘Ͱ΋

Slide 38

Slide 38 text

ΞϯΠϯετʔϧํ๏ $ php artisan dacapo:uninstall $ composer remove ucan-lab/laravel-dacapo • ӡ༻͕࢝·ͬͨΒμΧʔϙ͸࡟আ͢Δ

Slide 39

Slide 39 text

ࠓޙͷΞοϓσʔτ • ϞσϧɺϑΝΫτϦʔɺγʔμʔͷࣗಈੜ੒ • σʔλϕʔε͔ΒεΩʔϚYAMLͷੜ੒ • σʔλϕʔεͱεΩʔϚYAMLͷࠩ෼ͷϚΠά ϨʔγϣϯΛੜ੒

Slide 40

Slide 40 text

͓͠·͍

Slide 41

Slide 41 text

࣭໰ͳͲ͋Ε͹ ͓ؾܰʹͲ͏ͧ