Slide 1

Slide 1 text

-BSBWFMͰϞσϧͷ*%Λ 66*%6-*%ʹ͢Δํ๏ -BSBWFMษڧձ!େࡕ೥݄ 4"8

Slide 2

Slide 2 text

$(whoami) ࢯ໊Ճ౻फҰ࿠ ࡀ ϋϯυϧωʔϜ4"8 େࡕࡏॅɾѪ஌ग़਎ 5XJUUFS!B[VLJ@FBUFS ಘҙ෼໺ 8FCΞϓϦέʔγϣϯ։ൃ -BSBWFM 7VF 2 -BSBWFM

Slide 3

Slide 3 text

એ఻ 1)1ΧϯϑΝϨϯεؔ੢։࠵༧ఆ🎉 ೔෇ ೔ ։࠵৔ॴάϥϯϑϩϯτେࡕ ҰൠࢀՃνέοτൃചத ͓༠͍νέοτͰपΓͷਓ΋༠͓͏ ౰೔ελοϑืूத ͦͷଞͷৄࡉ͸ެࣜαΠτΛ֬͝ೝ͍ͩ͘͞ 3

Slide 4

Slide 4 text

ൃද֓ཁ ;FOOͰهࣄΛࣥච͠·ͨ͠ -BSBWFMͰςʔϒϧͷ*%Λ6-*%ʹࢦఆ͢Δํ๏ &MPRVFOU.PEFMͷ*%Λ6-*%ʹࢦఆ͢Δํ๏ 4

Slide 5

Slide 5 text

׬

Slide 6

Slide 6 text

ͱ͸͍͔ͳ͍ͷͰ هࣄͷ಺༰Λൃද͠·͢

Slide 7

Slide 7 text

-BSBWFMͷϞσϧͷ*% σϑΥϧτͰ͸࿈൪ͷ੔਺ NJHSBUJPOͰ͸$table->id()Ͱ࿈൪*%ΛςʔϒϧͷΧϥϜͱͯ͠ੜ੒ &MPRVFOU.PEFMͰ͸σϑΥϧτͰidΛ੔਺ʹΩϟετ ࿈൪*%ͷܽ఺ Ϩίʔυ͕࡟আ͞Εͨ৔߹ʹ*%͕ࣃൈ͚ʹͳΔ 63-ʹ*%ΛؚΉ৔߹ʹ߈ܸ͞Ε΍͘͢ͳΔՄೳੑ͕͋Δ 7

Slide 8

Slide 8 text

66*%6-*%ͱ͸ 66*%ੈքதͰҰҙ͔ͭϥϯμϜͳ*% ੜ੒͞ΕΔ66*%͕িಥ͢Δ֬཰͕ඇৗʹ௿͍ 66*%W͕࠷΋޿͘ར༻͞Ε͍ͯΔ 6OJWFSTBMMZ6OJRVF*%FOUJ fi FSͷུ 6-*%ੜ੒͞ΕͨॱʹιʔτՄೳͳ66*% 66*%W͸ιʔτͯ͠΋ੜ੒͞ΕͨॱʹͳΒͳ͍ 6OJWFSTBMMZ6OJRVF-FYJDPHSBQIJDBMMZ4PSUBCMF*%FOUJ fi FSͷུ 8

Slide 9

Slide 9 text

66*%6-*%Λར༻͢ΔϝϦοτ ϥϯμϜͳจࣈྻʹͳΔͨΊ*%͕ࣃൈ͚ʹͳΒͳ͍ 6-*%Λར༻͢Ε͹ੜ੒ॱʹιʔτ΋Մೳ *%͕ਪଌ͞ΕͮΒ͘ͳΔ ςʔϒϧʹJOTFSU͢Δࡍʹࣄલʹ*%Λ֬ఆͰ͖Δ ࿈൪*%ͷ৔߹͸JOTFSU͞ΕΔ·Ͱ*%͕֬ఆ͞Εͳ͍ 9

Slide 10

Slide 10 text

ςʔϒϧͷ*%Λ 66*%6-*%ʹ͢Δํ๏ 10

Slide 11

Slide 11 text

NJHSBUJPOͰ66*%6-*%ͷࢦఆ ςʔϒϧͷΧϥϜܕʹ66*%6-*%Λࢦఆ͢ΔϝιουΛར༻ 66*%Illuminate\Database\Schema\Brueprint::uuid() 6-*%Illuminate\Database\Schema\Brueprint::ulid() 13*."3:,&:੍໿Λઃఆ͢ΔͨΊʹprimary()Λར༻ ΧϥϜ໊ΛJEʹ͢ΔͨΊʹ͸'id'ΛҾ਺ʹࢦఆ uuid()σϑΥϧτͷΧϥϜ໊͸uuid ulid()σϑΥϧτͷΧϥϜ໊͸ulid 11

Slide 12

Slide 12 text

NJHSBUJPOͷ࣮૷ྫ 12 Schema::create('users', function (Blueprint $table) { $table->uuid('id')->primary(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); }); Schema::create('users', function (Blueprint $table) { $table->ulid('id')->primary(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); });

Slide 13

Slide 13 text

ςʔϒϧʹ66*%6-*%Λૠೖ StrΫϥεͷuuid() ulid()Ͱ66*%6-*%ͷ஋Λऔಘ 66*%Illuminate\Support\Str::uuid() 6-*%Illuminate\Support\Str::ulid() 'BDUPSZ΍4FFEFSͰ66*% 6-*%Λૠೖ͢Δ৔߹ʹར༻ 13

Slide 14

Slide 14 text

GBDUPSZͷ࣮૷ྫ 14 public function definition(): array { return [ 'id' => Str::uuid(), 'name' => fake()->name(), 'email' => fake()->unique()->safeEmail(), 'password' => static::$password ??= Hash::make('password'), ]; } public function definition(): array { return [ 'id' => Str::ulid(), 'name' => fake()->name(), 'email' => fake()->unique()->safeEmail(), 'password' => static::$password ??= Hash::make('password'), ]; }

Slide 15

Slide 15 text

&MPRVFOU.PEFMͷ*%Λ 66*%6-*%ʹ͢Δํ๏ 15

Slide 16

Slide 16 text

&MPRVFOU.PEFMͷ*% &MPRVFOU.PEFMͷidϓϩύςΟ͸σϑΥϧτͰ੔਺ܕ ςʔϒϧଆ͕จࣈྻͰ΋&MPRVFOU.PEFMͰ͸੔਺஋ʹΩϟετ͞ΕΔ 16 > User::first() = App\Models\User {#7008 id: "01HGNMB0B0C35Q6WZ8BJ61V574", name: "Hector Nikolaus", email: "[email protected]", #password: "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi", created_at: "2023-12-02 16:03:44", updated_at: "2023-12-02 16:03:44", } > User::first()->id = 1 "01HGNMB0B0C35Q6WZ8BJ61V574"Λ੔਺ʹΩϟετͨ͠஋

Slide 17

Slide 17 text

&MPRVFOUͰ*%ʹ66*%6-*%Λࢦఆ &MPRVFOU.PEFMʹUSBJUΛ௥Ճ 66*%Illuminate\Database\Eloquent\Concerns\HasUuids 6-*%Illuminate\Database\Eloquent\Concerns\HasUlids .PEFMͷidΛ66*%6-*%ͷ஋Ͱऔಘ 17 > User::first() = App\Models\User {#7008 id: "01HGNMB0B0C35Q6WZ8BJ61V574", ...中略..., } > User::first()->id = "01HGNMB0B0C35Q6WZ8BJ61V574"

Slide 18

Slide 18 text

&MPRVFOU.PEFMͷ࣮૷ྫ 18 use Illuminate\Database\Eloquent\Concerns\HasUlids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class User extends Model { use HasFactory, HasUlids; } use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class User extends Model { use HasFactory, HasUuids; }

Slide 19

Slide 19 text

૯ׅ -BSBWFMͰςʔϒϧͷ*%Λ66*%6-*%ʹ͢Δํ๏Λ঺հ NJHSBUJPO$table->uuid('id') $table->ulid('id')Ͱ࣮૷ GBDUPSZ TFFEFSStr::uuid() Str::ulid()Ͱ66*%6-*%Λऔಘ &MPRVFOU.PEFMͷJEΛ66*%6-*%ʹ͢Δํ๏Λ঺հ HasUuids HasUlidsUSBJUΛར༻ 19

Slide 20

Slide 20 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠