Slide 1

Slide 1 text

WBMJEBUJPOʹ͍ͭͯ

Slide 2

Slide 2 text

ࣗݾ঺հ w גࣜձࣾϢχίϯ w 5XJUUFS!SZPOFYU w ήʔϚʔ w ΋Μ͸Μͱ͔εϓϥτΡʔϯͱ͔ w ;ͩΜ͸3BJMT΍ͬͯ·͢

Slide 3

Slide 3 text

࠷ۙͷਐḿͰ͢ w ࠓճ͸ΏͬͨΓ΍ͬͯΔͷͰ·ͩ)3Ͱ͢ w ΤϯδχΞϞϯϋϯ4MBDL্ཱͪ͛ͯΔͷͰڵຯ͋Δํ͓ ੠͕͚͍ͩ͘͞

Slide 4

Slide 4 text

ษڧձʗίϛϡχςΟ w 4IJCVZBSC w :PLPIBNBSC w ,BXBTBLJSC w ͋ͨΓʹࢀՃͯ͠·͢ɻ

Slide 5

Slide 5 text

ձࣾͰ΍͍ͬͯΔ͜ͱ ւ֎޲͚ήʔϜΩϡʔϨγϣϯαʔϏεͷ 3PDL6.FEJBDSBGU IUUQTNFEJBDSBGUSPDLVBQQTDPN ΍ ւ֎޲͚ήʔϜϑΥʔϥϜͷ 3PDL65BML IUUQTUBMLSPDLVBQQTDPN ͷ։ൃΛ΍͍ͬͯ·͢ɻ

Slide 6

Slide 6 text

ࠓ೔࿩͢͜ͱ w γεςϜͷͨΊͷWBMJEBUJPOʹ͍ͭͯ w 3BJMTͰWBMJEBUJPO͢Δ࿩ w %#Ͱ੍໿Λ͔͚Δ࿩ w 69ͷͨΊͷWBMJEBUJPOʹ͍ͭͯ w +4ͰWBMJEBUJPO͢Δ࿩

Slide 7

Slide 7 text

ίʔυʹ͍ͭͯ w ίʔυ͸ීஈࢲ͕ۀ຿Ͱ࢖͍ͬͯΔ3BJMTͰͷ࣮ ૷ྫʹͳΓ·͕͢ɺ8FCϑϨʔϜϫʔΫશൠʹ ͍ͭͯಉ͜͡ͱ͕ݴ͑ΔΜ͡Όͳ͍͔ͳ͊ͱࢥ ͍·͢

Slide 8

Slide 8 text

WBMJEBUJPO͠·͠ΐ͏

Slide 9

Slide 9 text

Ϣʔβ໊ͷཁ݅͸͜ΕͰ w ௕͞จࣈ·Ͱ w ඞਢ

Slide 10

Slide 10 text

3BJMTͩͱ class User < ActiveRecord::Base validates :name, length: { maximum: 20 }, presence: true end

Slide 11

Slide 11 text

͜͏ͳΔ

Slide 12

Slide 12 text

؆୯ʂ

Slide 13

Slide 13 text

ͱ͜Ζ͕

Slide 14

Slide 14 text

3BJMTͷWBMJEBUJPO͸ΞϓϦϨΠϠʔͰ ݕূՄೳͳϝιουͷ৔߹ʹͷΈ ݕূ͢Δ͚ͩͳͷͰ

Slide 15

Slide 15 text

௚઀Ϩίʔυʹ*OTFSU w */4&35JOUPVTFSTTFUOBNF B@OBNF@UIBU@JT@PWFS@UIBO@@DIBSBDUFST

Slide 16

Slide 16 text

WBMJEBUJPO͕૸Βͳ͍ϝιου Λ࢖͏ VTFSVQEBUF@DPMVNO OBNF  MPOH@OBNF@UIBU@PWFS@UIBO@UXFOUZ@DIBSBDUFST VTFSTBWF WBMJEBUFGBMTF

Slide 17

Slide 17 text

ͷΑ͏ͳૢ࡞Ͱɺ؆୯ʹ WBMJEBUJPOҧ൓ͷσʔλ͕࡞ΕΔ

Slide 18

Slide 18 text

ͦͯ͜͠ΕΛը໘͔Β ૢ࡞͠Α͏ͱ͢Δͱ w ࠓճͷૢ࡞Ͱ໊લΛมߋ͍ͯ͠ͳ͍ʹ΋͔͔Θ Βͣɺ໊લͰΤϥʔʹͳΔ มߋͨ͠ͷ͸͜͜

Slide 19

Slide 19 text

͞Βʹ

Slide 20

Slide 20 text

ύεϫʔυมߋը໘ w ଞͷઃఆը໘ͱ͸੾Γग़ͯ͠ɺύεϫʔυ͚ͩ Λมߋ͢Δը໘ͱ͍͏ͭ͘Γ͸Α͋͘Δͱࢥ͍ ·͢

Slide 21

Slide 21 text

ύεϫʔυΛมߋ͢Δը໘ͳͷʹɺ ໊લ͕௕ͯ͘ΤϥʔͱݴΘΕΔ w ΋ͪΖΜɺ͜ͷը໘Ͱ໊લΛม͑Δ͜ͱ͸Ͱ͖ͳ͍ w Ϣʔβ͸Ͳ͏͠Α͏΋ͳ͍

Slide 22

Slide 22 text

͕ͨͬͯ͠ w 8FCΞϓϦϨΠϠʔͰͷ੍໿͚ͩͰ͸ͳ͘ɺ͖ͬ ͪΓͱ%#Ͱͷ੍໿ΛೖΕ·͠ΐ͏

Slide 23

Slide 23 text

class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :name, limit: 20, null: false t.string :password t.timestamps null: false end end end %#ʹMJNJUͱOPUOVMM੍໿Λֻ͚ Δʢ3BJMTͷNJHSBUJPOͰ΍Δྫʣ

Slide 24

Slide 24 text

Μɺ͡Ό͋%#ͷ੍໿͚ͩష͓͚ͬͯ͹ɺ 3BJMTͷWBMJEBUJPOཁΒͳ͍Μ͡ΌͶʁ

Slide 25

Slide 25 text

ͱ͍͏Θ͚Ͱ΍ͬͯΈΔͱ

Slide 26

Slide 26 text

WBMJEBUJPOΤϥʔ͕ฦ͍ͬͯͨ ՕॴͰΤϥʔʹ

Slide 27

Slide 27 text

͡Ό͋͜ͷ%#ͷΤϥʔΛྫ֎DBUDIͯ͠ɺ ద੾ͳΤϥʔϝοηʔδΛฦ͢Α͏ʹ ͯ͠΍Ε͹ɾɾɾ

Slide 28

Slide 28 text

ͦΕɺ3BJMTͷWBMJEBUJPOͷ ํָ͕͡ΌͶ

Slide 29

Slide 29 text

ͱ͍͏Θ͚Ͱ w %#ͷ੍໿͸γεςϜΛकΔͨΊʹઈରʹֻ͚· ͠ΐ͏ɻ͕͜͜ΞϓϦϨΠϠʔͰͷWBMJEBUJPOΑ ΓΏΔ͍ͱ͍͏͜ͱ͕͋ͬͯ͸͍͚ͳ͍ɻ w ΞϓϦϨΠϠʔͰ΋ɺແବͳΫΤϦൃߦΛ͠ͳ ͍ʗΤϥʔॲཧΛద੾ʹ͢ΔͨΊʹWBMJEBUJPOΛ ΍Δ͜ͱΛڧ͘ਪ঑͠·͢ɻ

Slide 30

Slide 30 text

ΊͰͨ͠ΊͰͨ͠

Slide 31

Slide 31 text

Ͱ͸ͳ͍ʂ

Slide 32

Slide 32 text

͜͜·Ͱ w γεςϜͷͨΊͷWBMJEBUJPOͷ࿩

Slide 33

Slide 33 text

͔͜͜Β w 69ͷͨΊͷWBMJEBUJPOͷ࿩

Slide 34

Slide 34 text

69ͷͨΊͷWBMJEBUJPOͱ͸ʁ w Α͋͘ΔϢʔβొ࿥ϑΥʔϜ

Slide 35

Slide 35 text

Ϣʔβ*%ΛೖΕͯΈΔ w ొ࿥ϘλϯΛԡ͢ͱ͢Ͱʹ࢖ΘΕ͍ͯ·͢ɺͱΤ ϥʔ͕ฦͬͯ͘Δ

Slide 36

Slide 36 text

ผͷ*%Λࢼ͢ w ·ౖͨΒΕΔ

Slide 37

Slide 37 text

͞Βʹผͷ*%Λࢼ͢ w ·ͨ·ͨΤϥʔʹͳΔ

Slide 38

Slide 38 text

Ϣʔβʔ͸ౖͬͯ ཭୤ͯ͠͠·͏

Slide 39

Slide 39 text

Ͳ͏͢Ε͹͍͍ͷ͔ʁ w ೖྗ͢ΔϘλϯԡ͢Τϥʔ͕ฦͬͯ͘ Δɺͱ͍͏Ұ࿈ͷྲྀΕΛ܁Γฦ͢ͷ͸ۤ௧ w ೖྗͨ࣌͠఺Ͱɺͦͷೖྗ͕ड͚ೖΕՄೳ͔Ͳ ͏͔ΛΘ͔ΔΑ͏ʹ͢Δ΂͖

Slide 40

Slide 40 text

Ϣʔβ͕ೖྗΛऴ͑ͨλΠϛϯάͰϑΟʔυόοΫ μϝͳ৔߹͸ͦ΋ͦ΋ԡͤͳ͘͢Δ

Slide 41

Slide 41 text

੒ޭ͢Δ৔߹΋ڭ͑ͯ͋͛Δ

Slide 42

Slide 42 text

w %#Ͱ๷͙ͷ͸γεςϜͷͨΊͷWBMJEBUJPO w Ϣʔβʹշదʹೖྗͯ͠΋Β͏ͨΊͷɺ69ͷͨ ΊͷWBMJEBUJPO͕ඞཁ

Slide 43

Slide 43 text

Ͳ͏࣮ݱ͢Δ͔ʁ w ઌఔͷྫ͸ɺ%#಺ͰͷॏෳνΣοΫ͕ඞཁͳͷ Ͱ+BWBTDSJQU "1*ͷ࿈ܞ͕ඞཁͳέʔεɻ ͪΐͬͱ΍΍͍͜͠ͷͰ͋ͱͰɻ w ·ͣ͸ɺ'PSN͚ͩͰ൑அͰ͖Δɺʮඞਢೖྗʯ ʮ௕੍͞ݶʯʮϑΥʔϚοτνΣοΫʯʹ͍ͭ ͯ࿩͠·͢ɻ

Slide 44

Slide 44 text

'PSNͰ൑அ͢ΔWBMJEBUJPO w ྫ͑͹ɺ)5.-ʹ͸SFRVJSFEଐੑ΍FNBJMଐੑ ͳͲ͕͋Δ w ೖྗඞਢ߲໨ʹೖྗ͍ͯ͠ͳ͔ͬͨΓɺࢦఆͷ ϑΥʔϚοτʹͳ͍ͬͯͳ͔ͬͨΒϒϥ΢βϨ ϕϧͰΤϥʔΛฦͯ͘͠ΕΔ w ·͋ศར

Slide 45

Slide 45 text

Slide 46

Slide 46 text

ͱ͜Ζ͕ w ಈ͔ͳ͍ϒϥ΢β͕

Slide 47

Slide 47 text

w ΋͋Δ͚Ͳɺͦ͏͍͏Ϩϕϧͷ࿩Ͱ͸ͳ͘ w *&͸ࢮΜͩʂ΋͏͍ͳ͍ʂ ΍͋

Slide 48

Slide 48 text

4BGBSJ w ಈ͔ͳ͍ w ࠷৽ͷ.BD04 J04Ͱಈ͔ͳ͍ w ͜ΕͰಈ͔ͳ͍Ҏ্ɺීٴ཰Λߟ͑ΔͱཔΕͳ ͍ͱߟ͑Δ΂͖

Slide 49

Slide 49 text

+BWBTDSJQUͰ΍Δ w K2VFSZͳΒ͍͔ͭ͘ϓϥάΠϯ͕͋Δ w 7VF 3FBDU "OHVMBS౳ͷϑϨʔϜϫʔΫΛ࢖༻ ͍ͯ͠ΔͳΒɺͦ͜Ͱͷྲّྀʹै͏ͱ࣮૷ָ͕ ͳ͸ͣ

Slide 50

Slide 50 text

௨৴͕ඞཁͳ΍ͭ͸ɺ ೖྗͷλΠϛϯάͰ௨৴ͯ݁͠ՌΛग़ͯ͠΍Δ

Slide 51

Slide 51 text

͜͏͍͏Πϝʔδ 'PSN Ϣʔβ +BWBTDSJQU "1* %# ೖྗ มߋΛݕ஌ ೖྗ಺༰ΛૹΔ %#ʹ໰͍߹Θͤ 0,/( 0,/( 0,ʗ/(

Slide 52

Slide 52 text

+4͔ΒݺͿ ʢલεϥΠυ  ͷεςοϓ 4 $ -> 5 $("#username").keyup(-> 6 $.get( 7 "/accounts/exists", 8 { username: $('#username').val() }, 9 (data) -> 10 if data.result 11 $("#account-result").html("
͜ͷϢʔβ໊͸࢖ΘΕ͍ͯ·͢
") 12 $("#submit-button").prop("disabled", true) 13 else 14 $("#account-result").html("
͜ͷϢʔβ໊͸࢖༻ՄೳͰ͢
") 15 $("#submit-button").prop("disabled", false) 16 ) 17 ) 18 w $P⒎FF4DSJQUͰ͢ w ࣮ࡍʹLFZVQͰ΍Δͱ௨৴ස౓ଟ͗͢ΔͷͰEFCPVDF͢ΔQMVHJOͳͲ࢖͍·͠ΐ͏ w ྫ͸K2VFSZͰ͕͢ɺԿΒ͔ͷϑϨʔϜϫʔΫΛ࢖͏ͷ΋ΦεεϝͰ͢

Slide 53

Slide 53 text

֬ೝ༻"1*࡞Δ ʢdͷεςοϓ Rails.application.routes.draw do resources :accounts do collection do get "exists", to: "accounts#exist" end end end class AccountsController < ApplicationController def exist if Account.exists?(username: params[:username]) render json: { result: true }.to_json else render json: { result: false }.to_json end end end

Slide 54

Slide 54 text

͜͜Ͱ w +4ͷWBMJEBUJPO͚ͩ΍͓͚ͬͯ͹ɺ%#ͷ੍໿ཁ Βͳ͍Μ͡Όͳ͍ʁ

Slide 55

Slide 55 text

Μͳͨ͜ʔͳ͍ w +4͸ඇରԠϒϥ΢βʗΦϑʹ͢Δʗ௚઀1045 ͷ63-Λୟ͘౳ɺճආ༨༟

Slide 56

Slide 56 text

w +4ͱ%#͚ͩ΍͓͚ͬͯ͹3BJMTͷ΍ͭ͸͍Βͳ ͍Μ͡Όͳ͍ʁ

Slide 57

Slide 57 text

͋·ΓΑ͘ͳ͍ w +4ճආ͢ΔΑ͏ͳΞΫηεʹରͯ͠ɺ3BJMTͰద ੾ͳWBMJEBUJPOͰΤϥʔϝοηʔδΛฦͯ͠΍Δ ඞཁͳ͍·͋Θ͔Δ w %#ʹରͯ͠ແବͳ௨৴ʗΫΤϦ͕ൃߦ͞ΕΔՄ ೳੑ͕͋ΔΑ͘ͳ͍

Slide 58

Slide 58 text

͞Βʹ w "1*Խ΋͢ΔͷͰ͋Ε͹ɺ3BJMTͷNPEFMʹΑΔ WBMJEBUJPO͕๷͙ՕॴͱͳΔ w େͨ͠खؒͰ͸ͳ͍ͷͰɺNPEFMͰͷWBMJEBUJPO ΋΍͓ͬͯ͘΄͏͕ྑ͍ɻ

Slide 59

Slide 59 text

8FCΞϓϦͰ͸ͳ͘εϚϗͷ ৔߹͸ʁ w "1*αʔόཱͯͯɺεϚϗ͔Β"1*Λୟ͘΍ͭ

Slide 60

Slide 60 text

69ͷͨΊͷWBMJEBUJPO͸ ΫϥΠΞϯτଆͰ w +4ͷ࣌ͱಉ͡Α͏ʹɺۃྗແବͳ௨৴Λൃੜ͞ ͤͣʹɺϢʔβͷೖྗʹରͯ͠ૉૣ͘ϑΟʔυόο ΫΛฦ͢

Slide 61

Slide 61 text

αʔόଆ w %#ଆ͸ݴ͏·Ͱ΋ͳ͘ඞཁ w ΫϥΠΞϯτ͕όά͍ͬͯΔՄೳੑ΋͋ΔͷͰɺ 8FCΞϓϦͷNPEFM૚ͰͷWBMJEBUJPO΋ඞཁɻ

Slide 62

Slide 62 text

·ͱΊ w ࠷ޙඌ %# Ͱෆਖ਼ͳ஋͸ઈର๷ޚ͢Δγες ϜͷͨΊͷWBMJEBUJPO w ࠷લྻ +4 ΫϥΠΞϯτΞϓϦ Ͱਖ਼ৗೖྗͷͨ ΊͷಋઢΛ࡞ͬͯ͋͛Δ69ͷͨΊͷ WBMJEBUJPO

Slide 63

Slide 63 text

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