Slide 1

Slide 1 text

1FSMͷ্ʹ΋ࡾ೥ ͣͬͱΠέͯΔαʔϏεΛ ࡞Γଓ͚Δٕज़ IJUPEF

Slide 2

Slide 2 text

ࢿྉ͖ͬ͞·Ͱ

Slide 3

Slide 3 text

Slide 4

Slide 4 text

͕Μ͹Ζ͏

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

͕Μ͹Ζ͏

Slide 7

Slide 7 text

1FSMͷ্ʹ΋ࡾ೥ ͣͬͱΠέͯΔαʔϏεΛ ࡞Γଓ͚Δٕज़ IJUPEF

Slide 8

Slide 8 text

IJUPEF

Slide 9

Slide 9 text

IJUPEF झຯ͸Πϯλʔωοτ

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

͸ͯͳϒϩά

Slide 15

Slide 15 text

͸ͯͳϒϩά ೥݄։ൃ։࢝ ೥݄Ќ൛ ೥݄ਖ਼ࣜԽ ։ൃ೥໨ ·ͩ·ͩ։ൃத

Slide 16

Slide 16 text

͸ͯͳϒϩάͷΫϥε਺

Slide 17

Slide 17 text

։ൃམͪண͍ͨαʔϏε

Slide 18

Slide 18 text

·ͩ·ͩ։ൃத

Slide 19

Slide 19 text

ΠέͯΔαʔϏεͱ͸

Slide 20

Slide 20 text

໾ཱͭ ଎͍ ͨͷ͍͠ ͔͍͍ͬ͜ Πϝʔδ͕Α͍ ΈΜͳ࢖ͬͯΔ

Slide 21

Slide 21 text

ͦͷͨΊʹ͸ ։ൃΛܧଓ ໎Θͣॻ͚Δ Ұ؏ͨ͠ࢦ਑ ࠷৽ͷࢦ਑

Slide 22

Slide 22 text

ࣗݾ঺հ ʙࠓ·Ͱ ͸ͯͳϒϩά ࡞ͬͯ·͢

Slide 23

Slide 23 text

͍Ζ͍Ζ͋ͬͨͷͰ ͍͍࿩Λ͍ͨ͠

Slide 24

Slide 24 text

࿩͍ͨ͜͠ͱ ϑϨʔϜϫʔΫͷྺ࢙ ϒϩάͷϑϨʔϜϫʔΫ ΦϒδΣΫτࢦ޲ ϨΨγʔͳίʔυͷॻ͖׵͑ υϝΠϯۦಈઃܭ ໊લ ৮Γ΍͢͞

Slide 25

Slide 25 text

ࣾ಺ϑϨʔϜϫʔΫͷྺ࢙

Slide 26

Slide 26 text

)BUFOB ΞϯςφμΠΞϦʔਓྗ )BUFOB ϒοΫϚʔΫϑΥτϥΠϑάϧʔϓΞΠσΞϦϯά 3JEHF.P$P ϒοΫϚʔΫϋΠΫίίελʔϥϯυ0OF

Slide 27

Slide 27 text

3JEHF 3BJMT෩ͷ8"' .P$P "DUJWF3FDPSE෩ͷ03.

Slide 28

Slide 28 text

3JEHF package Bookmark::Engine::Index; use strict; use warnings; use Bookmark::Engine -Base; sub default : Public { my ($self, $r) = @_; $r->res->content_type('text/plain'); $r->res->content('Welcome to the Ridge world!'); } 1; IUUQTHJUIVCDPNIBUFOB)BUFOB5FYUCPPLCMPCNBTUFSNWDXFCBQQMJDBUJPONE

Slide 29

Slide 29 text

3JEHF #PPLNBSL&OHJOF*OEFY #PPLNBSL&OHJOF 3JEHF&OHJOF

Slide 30

Slide 30 text

3JEHF DPOUSPMMFS͸ܧঝ Ϋϥε໊͔ΒϧʔςΟϯά

Slide 31

Slide 31 text

3JEHF ݁ہશ෦ಡ·ͳ͍ͱ ಈ͔ͤͳ͍ ͷͰ͍ͨ΁Μ

Slide 32

Slide 32 text

%#*Y.P$0 "DUJWF3FDPSE෩ͷ03. package Vocaloid::MoCo::Artist; use base 'DBIx::MoCo'; __PACKAGE__->table('artist'); my $artists = Vocaloid::MoCo::Artist->search( where => { name => { -like => 'ڸԻ%' }, }, order => 'id ASC', limit => 10, ); $artists->each(sub { print $_->name, "\n"; });

Slide 33

Slide 33 text

.P$P 7PDBMPJE.P$P"SUJTU %#*Y.P$P

Slide 34

Slide 34 text

3JEHF.P$P ͱΓ͋͑ͣܧঝ͔ͯ͠Β࢖͏ ෆࢥٞͳग़དྷࣄ͕ى͖Δ ෆࢥٞͳͱ͖ʹίʔυಡΉ

Slide 35

Slide 35 text

ϓϩδΣΫτ΁ͷ૊ࠐΈ TVCNPEVMFʹ௥Ճ େ͖͍ͷ͔Βখ͍͞ͷ·Ͱ ϓϩδΣΫτʙ

Slide 36

Slide 36 text

ίʔυ͸ެ։͞ΕͯΔ͚Ͳ ओʹࣾ಺Ͱͷར༻

Slide 37

Slide 37 text

ޙํޓ׵ੑอͭඞཁ ڍಈͷมߋ͸ϞϯΩʔύον

Slide 38

Slide 38 text

ͳ͔ͳ͔͍ͨ΁Μͳ͜ͱ΋

Slide 39

Slide 39 text

%#*Y.P$P-JTU 3VCZͷ"SSBZ෩ͷΠϯλʔϑΣΠε my $artists = Vocaloid::MoCo::Artist->search( where => { name => { -like => 'ڸԻ%' }, }, order => 'id ASC', limit => 10, ); $artists->each(sub { print $_->name, "\n"; });

Slide 40

Slide 40 text

%#*Y.P$P-JTU 3VCZͷ"SSBZ෩ͷΠϯλʔϑΣΠε ϦετΫϥε-JTU3VCZJTI my $artists = Vocaloid::MoCo::Artist->search( where => { name => { -like => 'ڸԻ%' }, }, order => 'id ASC', limit => 10, ); $artists->each(sub { print $_->name, "\n"; });

Slide 41

Slide 41 text

EFMFUF@JG $list = DBIx::MoCo::List->new([1, 2, 3, 4]); $list->delete_if(sub { ($_ % 2) == 0) }); $list->dump #=> [2, 4] IUUQTNFUBDQBOPSHQPE%#*Y.P$P-JTU

Slide 42

Slide 42 text

EFMFUF@JG $list = List::Rubyish->new([1, 2, 3, 4]); $list->delete_if(sub { ($_ % 2) == 0) }); $list->dump #=> [1, 3] IUUQTNFUBDQBOPSHQPE-JTU3VCZJTI

Slide 43

Slide 43 text

EFMFUF@JG # DBIx::MoCo#delete_if sub delete_if { my ($self, $code) = @_; croak "Argument must be a code" unless ref $code eq 'CODE'; my $last_index = $self->_last_index; for (0..$last_index) { my $item = $self->shift; local $_ = $item; $self->push($item) if $code->($_); } return $self; }

Slide 44

Slide 44 text

EFMFUF@JG # List::Rubyish sub delete_if { my ($self, $code) = @_; croak "Argument must be a code" unless ref $code eq 'CODE'; my $last_index = $self->_last_index; for (0..$last_index) { my $item = $self->shift; local $_ = $item; $self->push($item) unless $code->($_); } return $self; }

Slide 45

Slide 45 text

$self->push($item) if $c

Slide 46

Slide 46 text

$self->push($item) unles

Slide 47

Slide 47 text

Ͳ͕ͬͪফ͑Δ͔෼͔Βͳ͍ ϓϩδΣΫτʹΑͬͯ͸ ϞϯΩʔύονͰڍಈม͑ͨΓ ˠEFMFUF@JG͸࢖ͬͯ͸͍͚ͳ͍

Slide 48

Slide 48 text

ͳ͔ͳ͔͍ͨ΁Μ

Slide 49

Slide 49 text

ηϚϯςΟοΫͳόʔδϣ χϯά͕͋Ε͹ͪΐͬͱ· ͔ͩͬͨ͠΋͠Εͳ͍

Slide 50

Slide 50 text

ϥϘ͸ࣗ༝

Slide 51

Slide 51 text

ϥϘͰ3BJMT

Slide 52

Slide 52 text

ϥϘͰ4JOBUSB Quyo

Slide 53

Slide 53 text

ࣾ಺ϑϨʔϜϫʔΫͷྺ࢙ ͓ΘΓ

Slide 54

Slide 54 text

͸ͯͳϒϩάͷϑϨʔϜϫʔΫ

Slide 55

Slide 55 text

:"1$DIP ΅͘ͷ͔Μ͕͍͖͑ͨ͞ΐ ͏ͷ͏͐Ϳ͋΀Γ͚ʔ͠ΐ Μ;ΕʔΉΘʔ͘ IUUQXXXTMJEFTIBSFOFUDIPZBQDBTJB

Slide 56

Slide 56 text

͜ͷཪͰൃදத ࠓ͙͢ݟʹߦ͜͏

Slide 57

Slide 57 text

:"1$DIP ΅͘ͷ͔Μ͕͍͖͑ͨ͞ΐ ͏ͷ͏͐Ϳ͋΀Γ͚ʔ͠ΐ Μ;ΕʔΉΘʔ͘ IUUQXXXTMJEFTIBSFOFUDIPZBQDBTJB

Slide 58

Slide 58 text

ಡΉίʔυ͕࠷খ ҆શ

Slide 59

Slide 59 text

ϧʔςΟϯά ηΩϡϦςΟରࡦ

Slide 60

Slide 60 text

ϒϩάͰ͸ ͋·Γʹγϯϓϧ ܧঝ͠ͳ͍ 03.࢖Θͳ͍ 42-௚઀ॻ͘

Slide 61

Slide 61 text

$POUSPMMFS ୯ͳΔΫϥεϝιου package Hatena::Epic::Admin::Index; use strict; use warnings; sub default { my ($class, $r) = @_; $r->res->content('Hello, World!'); $r->res->content_type('text/plain'); }

Slide 62

Slide 62 text

$POUSPMMFS 42-΋௚઀ൃߦ package Hatena::Epic::Admin::Index; use strict; use warnings; sub default { my ($class, $r) = @_; my $user = $r->db->single( 'SELECT * FROM user WHERE name=:name', bind => { name => 'sampleuser', }, class => 'Model::User', ); $r->render('index.html', {user => $user}); }

Slide 63

Slide 63 text

$POUSPMMFS͸ͨͩͷؔ਺ 42-΋खͰॻ͘ SFOEFS͢Δ)5.-Λࢦఆ

Slide 64

Slide 64 text

OP03. 3PXʹCMFTT͢Δ͚ͩ ਌Ϋϥεͳ͠ ୯ͳΔΦϒδΣΫτ

Slide 65

Slide 65 text

શ෦खॻ͖ ബ͍ϑϨʔϜϫʔΫͰ ͢͹΍͘։ൃ

Slide 66

Slide 66 text

%3:

Slide 67

Slide 67 text

ճίϐϖͨ͠Βڞ௨Խ

Slide 68

Slide 68 text

ճίϐϖͨ͠Βڞ௨Խ ա৒ͳந৅ԽΛආ͚Δ งғؾΑͦ͞͏

Slide 69

Slide 69 text

ΤϯδχΞਓ

Slide 70

Slide 70 text

ΤϯδχΞਓ͕ಉ࣌ʹίϐϖ ίϐϖͨ͠42-ʹόά

Slide 71

Slide 71 text

ΤϯδχΞਓ͕ಉ࣌ʹίϐϖ ίϐϖͨ͠42-ʹόά ճ௚͢

Slide 72

Slide 72 text

σʔλͷอଘ

Slide 73

Slide 73 text

DPOUSPMMFS͔Β61%"5& ຖճ޻෉ $POUSPMMFSͰ·ͱΊΔ೿ .PEFMʹTBWFϝιου೿

Slide 74

Slide 74 text

.PEFM $POUSPMMFS 7JFX ճίϐϖ͞Εͨ૚

Slide 75

Slide 75 text

ίϐϖղফձ৔ $PNNPO

Slide 76

Slide 76 text

$PNNPO&OUSZ هࣄʹؔ͢Δૢ࡞ͷ͏ͪ ճίϐϖ͞ΕͨίʔυΛूΊΔ

Slide 77

Slide 77 text

ݏͳ༧ײ

Slide 78

Slide 78 text

$PNNPOͩͱ ΰϛஔ͖৔Խͦ͠͏

Slide 79

Slide 79 text

໊͍͍લʜ

Slide 80

Slide 80 text

4FSWJDF

Slide 81

Slide 81 text

4FSWJDF&OUSZ هࣄͷݕࡧ΍อଘͳͲ هࣄͷૢ࡞ΛूΊͨ Ϟδϡʔϧ

Slide 82

Slide 82 text

͡Ό͋ͦΕͰ

Slide 83

Slide 83 text

ݱࡏ 4FSWJDFҎԼʹΫϥε

Slide 84

Slide 84 text

ݱࡏ 4FSWJDFҎԼʹΫϥε .PEFM͸Ϋϥε

Slide 85

Slide 85 text

ݱࡏ 4FSWJDFҎԼʹΫϥε .PEFM͸Ϋϥε ςʔϒϧ୯ҐͰ͸ͳ͍

Slide 86

Slide 86 text

4FSWJDF %%%తʹ͸3FQPTJUPSZ "QQMJDBUJPO4FSWJDF ͋ͱͰొ৔

Slide 87

Slide 87 text

ΦϒδΣΫτͷऔಘ my $user = Hatena::Epic::Service::User->find_user_by_name( $db, 'sampleuser' );

Slide 88

Slide 88 text

my $entries = Hatena::Epic::Service::Entry->find_entries_of_blog( $db, { blog => $blog, permission => 'public', limit => 3, }); ΦϒδΣΫτͷऔಘ

Slide 89

Slide 89 text

ͦͷ࣮૷ 42-खॻ͖ sub find_user_by_name { my ($class, $db, $name) = @_; my $user = $db->single( 'SELECT * FROM user WHERE name=:name', bind => { name => $name, }, class => 'Model::User', ); return $user; }

Slide 90

Slide 90 text

อଘ ϒϩάͷొ࿥ my $blog = Hatena::Epic::Service::Register->register_new_blog( $db, { user => $user, id => 'subdomain', domain => 'hatenablog.com', } );

Slide 91

Slide 91 text

อଘ ಺෦Ͱ͸*/4&35 sub register_new_blog { my ($class, $db, $values) = @_; ... my $blog = $db->execute( 'INSERT INTO blog ...

Slide 92

Slide 92 text

*/4&35Ͱ΋ ؾ࣋ͪ͸ॆ࣮ͨ͠ϝιου register_new_blog join_blog_member post_new_entry reserve_scheduled_entry

Slide 93

Slide 93 text

DSFBUF@ͩͱ$36%ײ ؾ෼͕ग़ͳ͍ create_blog create_blog_member create_entry find_or_create_scheduled_entry

Slide 94

Slide 94 text

Πϝʔδ ͜ͷ໊લͷΤϯτϦ͍ͩ͘͞ 4FSWJDF&OUSZ .PEFM&OUSZ ͸͍

Slide 95

Slide 95 text

Πϝʔδ ͜ͷهࣄอଘ͠ͱ͍ͯ 4FSWJDF&OUSZ .PEFM&OUSZ ͠·ͨ͠

Slide 96

Slide 96 text

Πϝʔδ ਓؾͷهࣄूܭͯ͠ 4FSWJDF)PU&OUSZ ͠·ͨ͠

Slide 97

Slide 97 text

4FSWJDFͷϝιου͸ ୯ͳΔΫϥεϝιου جఈΫϥεͳ͠ جఈΫϥε͸ංେԽ͕ͪ͠ sub register_new_blog { my ($class, $db, $values) = @_;

Slide 98

Slide 98 text

4FSWJDFͷߟ͑ํ ςʔϒϧͱҰରҰʹ͠ͳ͍ ػೳ͝ͱ

Slide 99

Slide 99 text

ϒϩάͷओͳςʔϒϧ 6TFS #MPH &OUSZ $PNNFOU

Slide 100

Slide 100 text

6TFS #MPH &OUSZ $PNNFOU ͜ΕΒʹू·͍ͬͯ͘ͱ ૿͑͗͢Δ

Slide 101

Slide 101 text

1PTU&OUSZ %FMFUF&OUSZ #MPH3FHJTUFS %FTUSPZ"MM4QBNNFST ػೳ໊͝ͱʹ࡞Δ

Slide 102

Slide 102 text

ݺͼग़͠ଆ͔ΒݟΔͱ ΦϒδΣΫτಉ࢜ͷ ΍ΓͱΓʹݟ͑ΔΑ͏ʹ ۮવ.Z42-ʹอଘͯ͠Δ

Slide 103

Slide 103 text

ཪଆ.POHP%#Ͱ΋ 8FC"1*Ͱ΋ ಉ͡ΠϯλʔϑΣΠε my $user = Hatena::Epic::Service::User->find_user_by_name( $db, 'sample' );

Slide 104

Slide 104 text

4FSWJDFͷొ৔ $POUSPMMFSεοΩϦ

Slide 105

Slide 105 text

4FSWJDF͸Ͳ͔͜ΒͰ΋ ࢖͑Δ $POUSPMMFS 5FTU #BUDI4DSJQU 0OFUJNF4DSJQU

Slide 106

Slide 106 text

͍͍Ͱ͢Ͷ

Slide 107

Slide 107 text

͍͍Ͱ͢Ͷ Ϋϥεϝιου࠷ߴ

Slide 108

Slide 108 text

͍͍Ͱ͢Ͷ ͍͍͚Ͳ

Slide 109

Slide 109 text

͜Ε͸ ΦϒδΣΫτࢦ޲ͳͷ͔

Slide 110

Slide 110 text

ͦͷ͜Ζ ΦϒδΣΫτࢦ޲ೖ໳ ಡΜͰͨ

Slide 111

Slide 111 text

No content

Slide 112

Slide 112 text

࠷ߴ

Slide 113

Slide 113 text

0CKFDU 0SJFOUFE 4PGUXBSF $POTUSVDUJPO

Slide 114

Slide 114 text

0CKFDU0SJFOUFE 4PGUXBSF$POTUSVDUJPO ΦϒδΣΫτࢦ޲ೖ໳ ݪஶ͸શવೖ໳͡Όͳ͍ ݪஶ͸೥ ೔ຊޠ൛͸೥

Slide 115

Slide 115 text

্Լר ϖʔδ

Slide 116

Slide 116 text

࠷ߴ

Slide 117

Slide 117 text

ষܖ໿ʹΑΔઃܭ ࠷ߴͷষ

Slide 118

Slide 118 text

ࣄલ৚݅ࣄޙ৚݅ʜϧʔνϯͷੑ࣭ ෆมද໌ʜΫϥεͷੑ࣭

Slide 119

Slide 119 text

Ϋϥεͱސ٬ͷؒͷؔ܎ ͸ɼ͓ޓ͍ͷݖརͱٛ຿Λ ݱͨ͠ਖ਼ࣜͳಉҙͱݟͳ͢ ͜ͱ͕Ͱ͖Δ

Slide 120

Slide 120 text

ެཧ \1^"\2^ ೚ҙͷ"ͷ࣮ߦ͸ɼ1ͷঢ় ଶʹͳͬͨͱ͖ʹ࢝·Γɼ 2ͷঢ়ଶʹͳͬͨͱ͖ʹऴ ྃ͢Δ

Slide 121

Slide 121 text

ެཧ \1^"\2^ \Y^YY\Y^ ͷؒҧ͍Ͱ͸ͳ͍ ऑ͍৚݅

Slide 122

Slide 122 text

ࣄલ৚݅ ϧʔνϯͷݺͼग़͠લʹސ٬͕ຬͨ ͞ͳ͚Ε͹ͳΒͳ͍৚݅ ࣄޙ৚݅ ϧʔνϯͷݺͼग़͠ޙʹڙڅऀ͕ຬ ͨ͞ͳ͚Ε͹ͳΒͳ͍৚݅

Slide 123

Slide 123 text

αΠζʹ্ݶͷ͋ΔελοΫ

Slide 124

Slide 124 text

ࣄલ৚݅ ελοΫʹۭ͖͕͋Δ͜ͱ ࣄޙ৚݅ ελοΫʹJUFN͕૿͑Δ αΠζ͕૿͑Δ ελοΫ͸ۭͰ͸ͳ͍ $stack->push($item);

Slide 125

Slide 125 text

͓ޓ͍ͷ໿ଋ ੹೚֎ͷ͜ͱΛ νΣοΫ͠ͳ͍ ඇ৑௕ੑͷݪଇ

Slide 126

Slide 126 text

͓ޓ͍৴པ͢Δ͜ͱͰ ίʔυ͖ͬ͢Γ มͳΤϥʔग़ͨͱ͖ʹ ୭ͷ੹೚͔໌Β͔

Slide 127

Slide 127 text

Ϋϥεෆมද໌ ΫϥεΠϯελϯεʹ ڞ௨͢Δશମతͳಛੑ

Slide 128

Slide 128 text

͋ΔΦϒδΣΫτͷҰੜ create a.make(...) 4 4 a.f(...) 4 a.g(...)

Slide 129

Slide 129 text

͋ΔΦϒδΣΫτͷҰੜ create a.make(...) 4 4 a.f(...) 4 a.g(...) ࣄલ ࣄޙ ࣄલ ࣄޙ ෆม

Slide 130

Slide 130 text

͜ͷߟ͑ํ͸ ΫϥεΛઃܭ͢Δͱ͖ 1FSMͰ΋࢖͑Δ

Slide 131

Slide 131 text

࢖͑Δ͚Ͳ ݴޠతͳࢧԉ͸ͳ͍

Slide 132

Slide 132 text

No content

Slide 133

Slide 133 text

࢖͑Δ͚Ͳ ݴޠతͳࢧԉ͸ͳ͍ γʔτϕϧτͳ͠Ͱര૸

Slide 134

Slide 134 text

্רͷޙ൒ʙԼר͸ Ԇʑͱܧঝͷ࿩

Slide 135

Slide 135 text

छྨͷܧঝ ෦෼ܕܧঝ Ϗϡʔܧঝ ੍໿ܧঝ ֦ுܧঝ ϑΝϯΫγϣφϧόϦΤʔγϣϯܧঝ ܕόϦΤʔγϣϯܧঝ ແޮԽܧঝ ۩ମԽܧঝ ߏ଄ܧঝ ࣮૷ܧঝ ڞ༗ੑ࣭ܧঝ

Slide 136

Slide 136 text

ΦϒδΣΫτࢦ޲೉͍͠

Slide 137

Slide 137 text

೉қ౓ ܧঝ Ϋϥε ؔ਺ ແ ؆୯ ΍Γͨ͘ͳ͍ ೉͍͠

Slide 138

Slide 138 text

ίʔυߦ΋ ॻ͔ͣʹࡁΊ͹ ͦΕʹӽͨ͜͠ͱ͸ͳ͍

Slide 139

Slide 139 text

Πϯελϯε࡞Βͣ ܧঝͤͣࡁΊ͹ ͦΕʹӽͨ͜͠ͱ͸ͳ͍

Slide 140

Slide 140 text

ඞཁͳ͍ΦϒδΣΫτੜ੒ ඞཁͳ͍ܧঝ ؾΛ͚ͭͯ࠷খʹ

Slide 141

Slide 141 text

ϓϩδΣΫτʹ઎ΊΔࢠΫϥε཰ VTFQBSFOUCBTF཰

Slide 142

Slide 142 text

ΞϓϦέʔγϣϯશମͰ ࢖͑Δ΋ͷΛઃܭ͠ ࢖͍ଓ͚Δͷ͸೉͍͠

Slide 143

Slide 143 text

ঢ়ଶͷͳͯ͘ࡁΉ΋ͷʹ ঢ়ଶΛ༩͑ͯ͸͍͚ͳ͍

Slide 144

Slide 144 text

ΫϥεϝιουͳΒ৺഑ͳ͍

Slide 145

Slide 145 text

ΦϒδΣΫτࢦ޲ΛֶΜ্ͩͰ ͳΔ΂͘ෳࡶͳࣄଶΛආ͚Δ

Slide 146

Slide 146 text

Ϋϥεϝιουͦͷޙ

Slide 147

Slide 147 text

Ϋϥεϝιου࠷ߴظ ͳΜͰ΋ΫϥεϝιουͰ ෳࡶͳ͜ͱ͢Δ Ҿ਺ͲΜͲΜ૿͍͑ͯ͘

Slide 148

Slide 148 text

͍͍Ͱ͢Ͷ Service::PostEntry->post($db, %values);

Slide 149

Slide 149 text

هࣄ͸ෳࡶ WBMVFTͷLFZ͕ݸʙ Service::PostEntry->post($db, %values); title body date url categories user_id blog_id comment_count og_image og_description permission is_scheduled ...

Slide 150

Slide 150 text

هࣄΛ౤ߘ هࣄΛߋ৽ Լॻ͖ʹ໭͢ Լॻ͖Λߋ৽ ༧໿౤ߘΛެ։ هࣄΛ࡟আ Ϣʔεέʔε͞·͟·

Slide 151

Slide 151 text

ΤϯτϦͷ૊Έཱͯʹ࢖͏Ϋϥε 1PTU&OUSZ'BDUPSZ

Slide 152

Slide 152 text

هࣄͷ౤ߘ my $factory = Factory->new; $factory->set_title($title); $factory->set_body($body); $factory->format_body($formatter); ...; $entry = $factory->get_entry;

Slide 153

Slide 153 text

Լॻ͖ͷެ։ my $factory = Factory->new; $factory->load_entry($draft); $factory->set_as_public; my $entry = $factory->get_entry;

Slide 154

Slide 154 text

ެ։هࣄΛԼॻ͖ʹ໭͢ my $factory = Factory->new; $factory->load_entry($entry); $factory->set_as_private; my $draft = $factory->get_entry;

Slide 155

Slide 155 text

೉͍͠ૢ࡞ ॊೈͳΠϯλʔϑΣΠε ෳ਺ਓฤू΍༧໿౤ߘͳͲ ࡞ΕΔΑ͏ʹͳͬͨ

Slide 156

Slide 156 text

͋ΔΦϒδΣΫτͷҰੜ create a.make(...) 4 4 a.f(...) 4 a.g(...)

Slide 157

Slide 157 text

͍ͯͶ͍ʹ࡞Δͱ ໾ʹཱͭ ΦϒδΣΫτࢦ޲࠷ߴ

Slide 158

Slide 158 text

࠷ߴ

Slide 159

Slide 159 text

͖ͷ͏ؾ෇͍ͨ

Slide 160

Slide 160 text

Լר ࡏݿͳ͍

Slide 161

Slide 161 text

ͩΜͩΜΑ͘ͳ͖͚ͬͯͨͲ ੲॻ͍ͨίʔυ͕େྔʹ͋Δ

Slide 162

Slide 162 text

ςετίʔυʹ ಉ͡42-͕ ݸ͘Β͍ 4&-&$5'30.FOUSZ

Slide 163

Slide 163 text

શ෦ม͑Δͷ͍ͨ΁Μ ੩తղੳͯ͠ॻ͖׵͑

Slide 164

Slide 164 text

੩తղੳ ڈ೥ͷൃදΛݟͯ͘Ε

Slide 165

Slide 165 text

print (1 * 2) + 3; ߏจ໦

Slide 166

Slide 166 text

‘;’ ߏจ໦ ‘print’ ‘ ‘ List ‘ ‘ ‘ ‘ ‘1’ ‘ ‘ ‘*’ ‘ ‘ ‘2’ ‘+’ ‘3’ Statement Document print (1 * 2) + 3;

Slide 167

Slide 167 text

ߏจ໦ print "(1 * 2) + 3";

Slide 168

Slide 168 text

‘;’ ߏจ໦ ‘print’ ‘ ‘ Statement Document print "(1 * 2) + 3"; ‘"(1 * 2) + 3"’

Slide 169

Slide 169 text

͜͏͍͏΍ͭͰ ಛఆͷτʔΫϯྻΛஔ׵ ͢Δ΍ͭ࡞ͬͨ

Slide 170

Slide 170 text

4&-&$5'30.FOUSZ ˣ 4FSWJDF&OUSZpOE@FOUSZ

Slide 171

Slide 171 text

3FQMBDF.FUIPE$BMM IUUQIJUPEFIBUFOBCMPHDPNFOUSZ

Slide 172

Slide 172 text

ओʹςετͰίϐϖ͞Ε· ͬͯͨ͘42-Λ 4FSWJDF૚ʹҠৡ

Slide 173

Slide 173 text

εΫϦϓτͰճͯ͠ίϛοτ ߦ΄Ͳػցతʹมߋ

Slide 174

Slide 174 text

"QQ135 1FSMͷϦϑΝΫλϦϯά πʔϧ࡞Γ·ͨ͠ ;ͩΜ͍͢͝࢖ͬͯΔ ڈ೥ͷൃදݟͯ͘Ε

Slide 175

Slide 175 text

௕೥։ൃͯ͠Δͱ ஌ݟू·ͬͯ͘Δ ৽͍͠ࢦ਑ʹ͋Θͤͯ ͋ͱ͔Β௚ͤΔͷ͕ॏཁ

Slide 176

Slide 176 text

աڈΛࣺͯ ࠷ߴͷઃܭʹ ޲͔͍͍ͨ

Slide 177

Slide 177 text

No content

Slide 178

Slide 178 text

࠷ߴ

Slide 179

Slide 179 text

ΤϦοΫɾΤϰΝϯεͷ υϝΠϯۦಈઃܭ ग़൛ ೔ຊޠ൛ ,JOEMF൛

Slide 180

Slide 180 text

ίΞυϝΠϯʹूதͯ͠ ॆ࣮ͨ͠ϞσϧΛ࡞Ζ͏

Slide 181

Slide 181 text

ίΞυϝΠϯ ιϑτ΢ΣΞͷ͏ͪ ΋ͬͱ΋ॏཁͰ೉͍͠ͱ͜Ζ

Slide 182

Slide 182 text

ίΞυϝΠϯʹ஫ྗ ίΞυϝΠϯҎ֎Ͱ ࡞ΓࠐΈ͗͢Δͱແବ

Slide 183

Slide 183 text

ϨΠϠԽΞʔΩςΫνϟ

Slide 184

Slide 184 text

ϨΠϠԽΞʔΩςΫνϟ ϢʔβΠϯλϑΣʔε ΞϓϦέʔγϣϯ υϝΠϯ ΠϯϑϥετϥΫνϟ

Slide 185

Slide 185 text

ϨΠϠԽΞʔΩςΫνϟ ϢʔβΠϯλϑΣʔε ΞϓϦέʔγϣϯ υϝΠϯ ΠϯϑϥετϥΫνϟ ৘ใͷදࣔɼίϚϯυͷղऍ ௐ੔໾ബ͍૚ Ϗδωεϧʔϧ ιϑτ΢ΣΞͷ֩৺ ӬଓԽ΍ϝοηʔδૹ৴ͳͲ Ұൠతͳٕज़

Slide 186

Slide 186 text

υϝΠϯͷΦϒδΣΫτ ΤϯςΟςΟ ஋ΦϒδΣΫτ

Slide 187

Slide 187 text

ΤϯςΟςΟ Ϣʔβʔ΍ϒϩά ঢ়ଶΛ࣋ͭ ಉ໊͡લͰ΋ผΠϯελϯε Ұҙͷ*%

Slide 188

Slide 188 text

஋ΦϒδΣΫτ ෆมͳ΋ͷ ྫ৭ɼ਺ࣈɼ਺ ΠϯελϯεΛڞ༗Ͱ͖Δ

Slide 189

Slide 189 text

͸ͯͳϒϩάʹ͓͚Δ ΤϯςΟςΟͷྫ .PEFM6TFS .PEFM#MPH .PEFM&OUSZ

Slide 190

Slide 190 text

͸ͯͳϒϩάʹ͓͚Δ ஋ΦϒδΣΫτͷྫ .PEFM#MPH1MVT#BEHF

Slide 191

Slide 191 text

ΤϯςΟςΟͱ ஋ΦϒδΣΫτ ҙࣝͯ͠࡞Δͱ ߟ͑Δ͜ͱ͕ݮΔ

Slide 192

Slide 192 text

ΤϯςΟςΟ͍ͨ΁Μ ͳΔ΂͘஋ΦϒδΣΫτʹ

Slide 193

Slide 193 text

ΤϯςΟςΟͷҰੜ create a.make(...) 4 4 a.f(...) 4 a.g(...)

Slide 194

Slide 194 text

஋ΦϒδΣΫτͷҰੜ create a.make(...) 4 ঢ়ଶͳ͠

Slide 195

Slide 195 text

ͦͷଞ αʔϏε

Slide 196

Slide 196 text

αʔϏε υϝΠϯͷૢ࡞Ͱ͋Γͳ͕ ΒΤϯςΟςΟʹ΋஋Φϒ δΣΫτʹ΋མͪண͔ͳ͍

Slide 197

Slide 197 text

ঢ়ଶΛ࣋ͨͳ͍αʔϏεͱ ͯ͠ಠཱͤ͞Δ ྫޱ࠲ͷৼସػೳ

Slide 198

Slide 198 text

$POUSPMMFS͔Β୤ग़ͨ͠ ͱ͜Ζ4FSWJDFʹ୧Γͭ ͍͚ͨͲυϝΠϯۦಈઃܭ తʹ͸Ұൠతͳ֓೦ͩͬͨ

Slide 199

Slide 199 text

࠷ߴ

Slide 200

Slide 200 text

࠷ۙͷϓϩδΣΫτ %%%ΛऔΓೖΕΑ͏

Slide 201

Slide 201 text

͸ͯͳϒοΫϚʔΫ ϑϧεΫϥονத XJUI4DBMB

Slide 202

Slide 202 text

4DBMBؔ੢4VNNJU ͸ͯͳϒοΫϚʔΫJO4DBMB IUUQXXXTMJEFTIBSFOFUPBSBUTDBMB

Slide 203

Slide 203 text

No content

Slide 204

Slide 204 text

υϝΠϯۦಈઃܭχϡʔε

Slide 205

Slide 205 text

No content

Slide 206

Slide 206 text

࠷ߴ

Slide 207

Slide 207 text

࣮ફυϝΠϯۦಈઃܭ ۩ମతͳ࣮૷ +BWB )JCFSOBUF .POHP%#

Slide 208

Slide 208 text

ࣾ಺Ͱษڧձ िষ ͏ͪͷϓϩδΣΫτͰ͸ʙ ײ૝΍࣭໰͸ (JU)VC*TTVF

Slide 209

Slide 209 text

No content

Slide 210

Slide 210 text

No content

Slide 211

Slide 211 text

ΈΜͳͰಡΉͱ௙Δ

Slide 212

Slide 212 text

ʮ͸ͯͳࣾ಺Ͱ։࠵ͨ͠ %%%ษڧձͷ༷ࢠΛ͝঺ հ͠·͢ʯ IUUQEFWFMPQFSIBUFOBTUB⒎DPNFOUSZ

Slide 213

Slide 213 text

໊લͷ࿩

Slide 214

Slide 214 text

ϢϏΩλεݴޠ νʔϜͰڞ༗͢Δݴޠ ීஈͷձ࿩͔Βίʔυ·Ͱ

Slide 215

Slide 215 text

શһ͕ಉ͡ݴ༿Ͱ࿩ͤΔͱ௙Δ

Slide 216

Slide 216 text

٬ʮে༉ʯ ৬ਓʮࢵʯ ࣮ࡍʹ͸ಉ͡΋ͷΛࢦ͢

Slide 217

Slide 217 text

σΟϨΫλʔʮ͓Έ͘͡ʯ ΤϯδχΞʮ-PUΫϥεʯ ࣮ࡍʹ͸ಉ͡΋ͷΛࢦ͢

Slide 218

Slide 218 text

͜ΕͰ͸͍͚ͳ͍

Slide 219

Slide 219 text

ΤϯδχΞ΋ σΟϨΫλʔ΋ σβΠφʔ΋ اը΋ฤू΋ νʔϜϝϯόʔશһ ಉ͡ݴ༿Λ࿩͢

Slide 220

Slide 220 text

৽نҊ݅Λ࢝ΊΔͱ͖ͷձ࿩ ʮ˓˓ͱººɼ;ͩΜͲͬͪͰݺͼ·͔͢ʯ ʮºº͔ͳʯ ʮººΫϥε࡞Γ·͢ʯ ʮºº͸˚˚͠·͔͢ʯ ʮºº͸˘˘͠·͢ʯ ˠººΫϥεʹ˘˘ϝιου࡞Δ

Slide 221

Slide 221 text

No content

Slide 222

Slide 222 text

DMBTT0NJLVKJ DMBTT0NJLVKJ$PNQPOFOU DMBTT0NJLVKJ7JFX PNJLVKJVSBOBV

Slide 223

Slide 223 text

೔ຊޠ͕͍͍͔͸ٞ࿦ͷ༨஍ JGPNJLVKJFNQUZ NPTJPNJLVKJLBSB

Slide 224

Slide 224 text

೔ຊޠ͕͍͍͔͸ٞ࿦ͷ༨஍ ެ༻ޠ͕ӳޠͩͱΑ͍ JGPNJLVKJFNQUZ NPTJPNJLVKJLBSB

Slide 225

Slide 225 text

·ͩ·ͩ͜Ε͔Β

Slide 226

Slide 226 text

͸ͯͳϒϩά΋ ౷ҰͰ͖ͯͳ͍

Slide 227

Slide 227 text

αΠυόʔʹஔ͚Δ΍ͭ

Slide 228

Slide 228 text

αΠυόʔʹஔ͚Δ΍ͭ ΢ΟδΣοτ Ϟδϡʔϧ

Slide 229

Slide 229 text

ϓϩδΣΫτ໊ ͸ͯͳϒϩά

Slide 230

Slide 230 text

ίʔυωʔϜ &QJD

Slide 231

Slide 231 text

)BUFOB&QJD 1FSM )BUFOB%JBSZ +4 )BUFOB#MPH $IFG

Slide 232

Slide 232 text

OFX)BUFOB%JBSZ#MPHT#MPH

Slide 233

Slide 233 text

OFX)BUFOB%JBSZ#MPHT#MPH ϓϩδΣΫτ໊ ϒϩάΛ഑৴͢ΔυϝΠϯ ϒϩάͭΛ͋ΒΘ͢Ϟσϧ

Slide 234

Slide 234 text

·ͩ·ͩ͜Ε͔Β

Slide 235

Slide 235 text

໊લͷ؅ཧ

Slide 236

Slide 236 text

༻ޠूNE νʔϜϝϯόʔͰ߹ҙ͔ͯ͠Βهೖ HJUͰ؅ཧ ΤϯςΟςΟͷछྨ ʮ˓˓ϖʔδʯͱ͔ ϝϯόʔ૿͑ͨͱ͖ʹָ ߋ৽ΊΜͲ͏

Slide 237

Slide 237 text

ίϝϯτʹॻ͘ ࣮૷ͱͷဃ཭͕গͳ͍ ϒϩάνʔϜͰ͸ฤू΍اըͷਓʹ ΋͔·ΘͣίʔυΛݟ͍ͤͯΔ ʮͪΐͬͱ͸Կ΍ͬͯΔ͔Θ͔ͬͨʯ

Slide 238

Slide 238 text

ձ࿩ l࠷΋௕ظؒϢϏΩλεݴޠͷݱঢ়Λ ͖ͪΜͱද͠ଓ͚Δͷ͸ɼνʔϜͰ ͷձ࿩΍ίʔυ಺ͷϞσϧͩɽz ࣮ફυϝΠϯۦಈઃܭ1

Slide 239

Slide 239 text

΄͔ͷ࿩୊

Slide 240

Slide 240 text

ίʔυ͸ม͑ΒΕΔ ετϨʔδ͸Ή͔͍ͣ͠ BMUFSUBCMF ஌ݟืू

Slide 241

Slide 241 text

޷ධ ൃചத

Slide 242

Slide 242 text

৮Γ΍͢͞

Slide 243

Slide 243 text

͸ͯͳΠϯλʔϯ ʙ

Slide 244

Slide 244 text

No content

Slide 245

Slide 245 text

ϒϩάνʔϜͰ͸ ೥͔Β Πϯλʔϯੜड͚ೖΕ

Slide 246

Slide 246 text

No content

Slide 247

Slide 247 text

No content

Slide 248

Slide 248 text

No content

Slide 249

Slide 249 text

No content

Slide 250

Slide 250 text

No content

Slide 251

Slide 251 text

No content

Slide 252

Slide 252 text

νʔϜ഑ଐ͔Β िؒͷ͏ͪʹ Կ౓͔ϦϦʔε Կ౓͔ࠂ஌

Slide 253

Slide 253 text

͸ͯͳڭՊॻ (JU)VCͰެ։த IUUQTHJUIVCDPNIBUFOB)BUFOB5FYUCPPL

Slide 254

Slide 254 text

ΠϯλʔϯڭՊॻ ੲ͸3JEHF.P$P ϒϩάͷΞʔΩςΫνϟΛ΋ͱʹ࡮৽ ৽ਓݚमͰ΋

Slide 255

Slide 255 text

༨ܭͳ͜ͱ͠ͳ͍ͷͰ ؾʹͳͬͨΒશ෦ಡΊΔ

Slide 256

Slide 256 text

ࠓ೥ͷΠϯλʔϯ ͓ͱͱ͍഑ଐ ΋͏৽ػೳಈ͖ͭͭ͋Δ

Slide 257

Slide 257 text

ΦϒδΣΫτࢦ޲΍%%% ؾʹ͠ͳͯ͘΋ γϯϓϧʹॻ͚Δ

Slide 258

Slide 258 text

·ͱΊ

Slide 259

Slide 259 text

࿩͍ͨ͜͠ͱ ϑϨʔϜϫʔΫͷྺ࢙ ϒϩάͷϑϨʔϜϫʔΫ ΦϒδΣΫτࢦ޲ ϨΨγʔͳίʔυͷॻ͖׵͑ υϝΠϯۦಈઃܭ ໊લ ৮Γ΍͢͞

Slide 260

Slide 260 text

·ͱΊ ΋͏͙͢೥ ·ͩ·ͩΠέΔ ߴ଎ʹ։ൃͰ͖Δ

Slide 261

Slide 261 text

͍ͪͲ1FSM͔Βग़ͯ ΦϒδΣΫτࢦ޲΍%%% ֎ͷੈքͷ஌ݟΛ 1FSMʹ࣋ͬͯؼΔ

Slide 262

Slide 262 text

׬