Ruby World Conference 2014 2014.11.13, 14 クラウドサービスを使って簡単に始めるRuby Webアプリケーション開発
ΫϥυαʔϏεΛͬͯ؆୯ʹ࢝ΊΔ3VCZ8FCΞϓϦέʔγϣϯ։ൃ6TFDMPVETFSWJDFTUPFBTJMZEFWFMPQ3VCZXFCBQQMJDBUJPOTޒेཛྷ໌,VOJBLJ*("3"4)*TQJDFMJGF *OD3VCZ8PSME$POGFSFODFHJUIVCJHBJHBUXJUUFSJHBJHBGBDFCPPLLVOJBLJJHBSBTIJ
View Slide
ޒेཛྷ໌גࣜձࣾTQJDFMJGF։ൃ෦෦HJUIVCJHBJHBUXJUUFSJHBJHBGBDFCPPLLVOJBLJJHBSBTIJ
ΤϯδχΞΦϑΟε݅ืूதBUUPCF/:P⒏DFIUUQTXXXqJDLSDPNQIPUPTBTPOBTגࣜձࣾTQJDFMJGFౡࠜࢧࣾઃཱ४උத
"HFOEBw3VCZ 3BJMTͷ։ൃڥͷ࡞ΓํwΫϥυαʔϏε/JUSPVT*0w8PSLTIPQͷ࣮ྫΛ௨ͨ͡ධՁw8FCΞϓϦͷֶशํ๏w3BJMTw4JOBUSB
͢͜ͱwΫϥυڥΛͬͨ3VCZ 3BJMTͷ։ൃwϫʔΫγϣοϓͰ͏ࡍʹؾΛ͚ͭΔ͜ͱw3VCZ 3BJMTͷֶशํ๏ͱֶशࢿྉwରɿϓϩάϥϛϯάΛ͜Ε͔Β࢝ΊΔํ͜ͷൃදΛฉ͘ͱֶश ڭҭΛ࢝ΊΒΕΔ͞ͳ͍͜ͱw+BWB4DSJQUw͍ٕ͠ज़ͷ͜ͷൃදͰ͢͜ͱɾ͞ͳ͍͜ͱ
3VCZ 3BJMTͷ։ൃڥΛ࡞Δͷ͍͠IUUQTXXXqJDLSDPNQIPUPTIJEEFO@WJDF
3VCZ 3BJMTͷ։ൃڥ8JOEPXT"DUJWF4DSJQU3VCZ 3VCZDPNQJMFS3BJMT*OTUBMMFS 3VCZ.BDQSFJOTUBMMFE 3VCZSCFOW 3VCZYDPEFIPNFCSFX-JOVYSCFOW 3VCZDPNQJMFSΑΓ؆୯ʹηοτΞοϓͰ͖Δ3VCZ 3BJMT։ൃڥͷఏҊ/JUSPVT*0
IUUQTXXXOJUSPVTJP
8IBU`T/JUSPVT*0ʁϒϥβ͔Βར༻Ͱ͖ΔΫϥυ্ͷ౷߹։ൃڥ *%&'JMF&YQMPSFS&EJUPS5FSNJOBM
/JUSPVT*0ͷྑ͞ແྉϓϥϯͰձһొΛͨ͠Β͙͢ʹ3VCZͷ։ൃ͕Ͱ͖Δ
/JUSPVT*0ͰͰ͖Δ͜ͱw5FSNJOBM͔Β3VCZίʔυΛ࣮ߦw3BJMT 4JOBUSBͰ8FCΞϓϦ։ൃwHJUΛͬͯHJUIVCͱ࿈ܞw࠷৽όʔδϣϯͷ3VCZΛར༻Մೳ
/JUSPVT*0ͷ͍ํ
/JUSPVT*0Ͱ։ൃΛ࢝ΊΔձһొ
/JUSPVT*0Ͱ։ൃΛ࢝ΊΔ$SFBUF#PY#09։ൃ࣮ߦڥͷ୯Ґ
/JUSPVT*0Ͱ։ൃΛ࢝ΊΔ༗ྉϓϥϯΛ͏߹/0Λߪೖ͢Δ/0/JUSPVT*0ͰͷԾ௨՟ແྉϓϥϯͱͷࠩޙड़
/JUSPVT*0Ͱ։ൃΛ࢝ΊΔμογϡϘʔυఀࢭ࣌4UBSUΛԡͯ͠ىಈఀࢭத ͠Β͘Θͳ͍ͱࣗಈఀࢭ͢Δ
/JUSPVT*0Ͱ։ൃΛ࢝ΊΔμογϡϘʔυ*%&ϘλϯΛԡͯ͠։ൃը໘Ҡಈىಈத
*%&'JMF&YQMPSFS&EJUPS5FSNJOBM
/JUSPVT*0Ͱ3BJMTΞϓϦΛͭ͘ΔTDBGGPMEΛͬͯຊͷใΛొ͢Δ؆୯ͳΞϓϦΛͭ͘Γ·͢EFNPIUUQZPVUVCF4Y*SXQ7%
SBJMTTFSWFSͨ͠ͱ͖ͷଓํ๏˞Πϯλʔωοτ্ʹެ։͞ΕΔͷͰެ։ͨ͘͠ͳ͍߹ɺ1SFWJFX4FU1BTTXPSE͔Β#"4*$ೝূͷύεϫʔυΛઃఆ/JUSPVT*0Ͱ3BJMTΞϓϦΛͭ͘Δ
/JUSPVT*0ͷҙwແྉϓϥϯͰఆظతʹΠϯελϯε͕ఀࢭwཧ༻μογϡϘʔυ͔Β࠶ىಈՄೳʢແྉʣwϫʔΫγϣοϓͷؒʹఀࢭͨ͠έʔεແ͠wωοτϫʔΫ͕ͳ͍ͱ͑ͳ͍
"DBTFTUVEZJOXPSLTIPQ3BJMT(JSMT0TBLBIUUQTXXXqJDLSDPNQIPUPTRVBEJOTFU
"DBTFTUVEZJOXPSLTIPQ3BJMT(JSMTେࡕͰ/JUSPVT*0Λར༻wରऀॳֶऀʢॳϓϩάϥϛϯάͷํʣw࡞ͨ͠ΞϓϦࣸਅߘϛχϒϩάΞϓϦwࢿྉɿIUUQSBJMTHJSMTKQBQQwશ࣌ؒͷ࡞ۀ࣌ؒwڥߏங ձһొ ΞϓϦ࣮ ެ։
"DBTFTUVEZJOXPSLTIPQྑ͍wڥߏங ձһొ͕࣌ؒͰ؆୯ ఔw͔Γқ͍͘қ͍ͱҙతͳҙݟw1$Λସ͑ͨ߹Ҿ͖ଓ͖ར༻Ͱ͖Δw/JUSPVT*0͚ͩͰΠϯλʔωοτެ։Մೳ 1BB4ෆཁ
"DBTFTUVEZJOXPSLTIPQѱ͍w*&ͰҰ෦ػೳ͕͑ͳ͍ͷͰ$ISPNFϒϥβͳͲ͕ඞཁwωοτϫʔΫ͕Εͨ߹ʹ͑ͳ͍wϑΝΠϧΤΫεϓϩʔϥͰҙਤͤͣυϥοάΞϯυυϩοϓͷૢ࡞Λͯ͠͠·͍ɺϑΥϧμ͕ߦํෆ໌ʹͳΔw/JUSPVT*0͕αʔϏεΛఀࢭͨ͠߹ʹར༻Ͱ͖ͳ͘ͳΔࣄલʹઆ໌Λߦ͍ɺଞͷ։ൃڥߏஙͱͲͪΒબՄೳʹ͓ͯ͘͠ͷ͕ྑ͍
TQJDFMJGFࣾһཱྀߦUP/JUSPVT*0ͻͱ͢ΈCSFBLIUUQTXXXqJDLSDPNQIPUPTJHBJHB
/JUSPVT*0JTFYDJUFEUPTFFTPNVDITVQQPSUGSPNPVSGSJFOETJO+BQBO8FXPVMEMPWFUPIFBSGSPNZPVBOETFFXIBUZPV`SFCVJMEJOHXJUI/JUSPVT*0.FTTBHFGSPN/JUSPVT*0
3BJMTΛͬͨ8FCΞϓϦ։ൃͷֶशํ๏ํwରϓϩάϥϛϯά͕ॳΊͯͷํwͰ͖Δ͚͔ͩΓқ͘આ໌͍ͨ͠
3BJMTͷֶशࢿྉͷྫw3BJMT(VJEFT XFCIUUQSBJMTHVJEFTKQw3BJMT5VUPSJBM XFCIUUQSBJMTUVUPSJBMKQw࣮ફ3VCZPO3BJMT ॻ੶wஶࠇా*4#/ϓϩάϥϚ͚͘͠ɺཧղ͕ࠔͳ߹͜ΕΒͷࢿྉͷखલΛຒΊΔɺΑΓ͔Γқ͍ࢿྉΛ࡞ͨ͠
IUUQCJUMZJHB[FNJIUUQTHJUIVCDPNJHBJHBSBJMT@UFYUCPPL
3BJMTͷڭՊॻֶशͷྲྀΕw࣮ࡍʹ࡞ͬͯԿ͕Ͱ͖Δ͔ΛΔw3BJMTΞϓϦͷΈΛΔwखຊͱͳΔίʔυʹ৮ΕΔwσόοάͷํ๏ΛΔw՝Λ͜ͳ͍ͯ͘͠
ࡐը૾ߘػೳ͖ϛχϒϩάΞϓϦ࣮ࡍʹ࡞ͬͯԿ͕Ͱ͖Δ͔ΛΔ
ը૾ߘػೳ͖ϛχϒϩάΞϓϦগ͠ͷίϚϯυͱίʔυྔͰ࣮Ͱ͖Δ3BJMTͷڭՊॻΑΓҰ෦ൈਮ
3BJMTΞϓϦͷΈΛΔ3BJMTͷڭՊॻΑΓҰ෦ൈਮ
αϯϓϧΞϓϦͰखຊͱͳΔίʔυʹ৮ΕΔը૾ߘػೳ͖ϛχϒϩάΞϓϦwTDBGGPME ੜ͞Εͨίʔυྑ͍खຊw$36%جૅw.7$w3BJMTͷॲཧͷྲྀΕwSPVUFT DPOUSPMMFS WJFXw(FN #VOEMFS ը૾ߘDBSFFSXBWFHFNֶͿཁૉ
σόοάͷํ๏ΛΔwΤϥʔͷಡΈํwϩάͷग़͠ํɺಡΈํwϒϥβͷσόοάػೳwQSZͰσόοά
ֶशͷྲྀΕ͜ͷઌͭͮ͘ಓΛࣔ͢w࣮ࡍʹ࡞ͬͯԿ͕Ͱ͖Δ͔ΛΔw3BJMTΞϓϦͷΈΛΔwखຊͱͳΔίʔυʹ৮ΕΔwσόοάͷํ๏ΛΔw՝Λ͜ͳ͍ͯ͘͠
3BJMTΛͬͱֶͼ͍ͨਓ8FC্ͷࢿྉw3BJMTͷڭՊॻwIUUQCJUMZJHB[FNJw3BJMT(VJEFTIUUQSBJMTHVJEFTKQw ཏతͳղઆͰ3BJMTͷػೳΛֶͿw3BJMT5VUPSJBMIUUQSBJMTUVUPSJBMKQw αϯϓϧΞϓϦͮ͘ΓΛ௨ͯ͡3BJMTΛֶͿw ୡਓग़൛ձʹిࢠॻ੶൛͋ΓIUUQUBUTV[JOFDPNCPPLTSBJMTUVUPSJBMॻ੶w࣮ફ3VCZPO3BJMT 3BJMTରԠwஶࠇా*4#/
TQJDFMJGFࣾһཱྀߦJO/:XJUIࣰݪ༗࢘உͻͱ͢ΈCSFBLIUUQTXXXqJDLSDPNQIPUPTBTPOBT
TQJDFMJGFTFSWJDFT
TQJDFMJGFTQPOTPSFEFWFOUT
3BJMT8FCαʔϏε։ൃͷελϯμʔυศར͕ͩෳࡶɺशಘίετ͕ߴ͍4JOBUSBϑΝΠϧͰಈ࡞ γϯϓϧͳߏ8FCΞϓϦͷಈ࡞Λཧղ͢Δͷʹྑ͍ࡐ3VCZ8FC"QQ'SBNFXPSLT
4JOBUSB4BNQMFIFMMPSCHFNJTJOBUSBSVCZIFMMPSCQPSSVCZIFMMPSCQPˢ/JUSPVT*0ͰPΛ༩IUUQMPDBMIPTUϒϥβͰΞΫηεSFRVJSFTJOBUSBHFUEP)FMMPXPSMEFOE݁Ռ
4JOBUSBͱ3BJMTͷൺֱ4JOBUSBpMFIFMMPSC3BJMT
4JOBUSBσʔλอଘ ӬଓԽσʔλอଘͷΈผ్༻ҙ͢Δඞཁ͕͋Δ3BJMTͰඪ४తʹར༻͞Ε͍ͯΔ"DUJWF3FDPSEઃఆ͕ෳࡶʹͳΔ ίʔυेߦָʹσʔλΛอଘ͍ͨ͠ΫϥυαʔϏεpSFCBTFͱ)BTIΛอଘͰ͖ΔpSFCBTFHFNΛར༻
IUUQTXXXpSFCBTFDPN
'JSFCBTFΫϥυ্ͷσʔλཧαʔϏεpSFCBTFHFNΛ͏ͱ͍ίʔυͰ)BTIΦϒδΣΫτͷอଘɺಡΈग़͕͠Մೳແྉϓϥϯར༻Մೳ
ࣄલ४උΞΧϯτΛ࡞͠ɺ%BTICPBSE͔Β$3&"5&/&8"11ϘλϯΛԡͯ͠ΞϓϦΛ࡞͢Δ
pSFCBTFHFNTBNQMFDPEFpSFCBTF@TBNQMFSCSFRVJSFpSFCBTFVSMIUUQTJHBJHBTBNQMFpSFCBTFJPDPNpSFCBTF'JSFCBTF$MJFOUOFX VSMTUPSBHF@OBNFCPYࣗ༝ʹ໋໊ՄೳI\BQQMF HSBQF^อଘ͢Δ)BTI4BWFpSFCBTFTFU TUPSBHF@OBNF I-PBEQSFTVMUpSFCBTFHFU TUPSBHF@OBNFCPEZHFNJpSFCBTFSVCZpSFCBTF@TBNQMFSC ݁Ռ\BQQMF HSBQF^$POpH4BWF-PBE˞VSMEBTICPBSEͰઃఆͨ͠"1163-)BTIΛอଘͯ͠ಡΈࠐΉ3VCZαϯϓϧίʔυ
TJOBUSBpSFCBTFTBNQMFDPEFpSFCBTF@TJOBUSBSCSFRVJSFTJOBUSBSFRVJSFpSFCBTF'JSFCBTFTFUUJOHTVSMIUUQTJHBJHBTBNQMFpSFCBTFJPDPNpSFCBTF'JSFCBTF$MJFOUOFX VSMTUPSBHF@OBNFCPY4BWF ຊདྷQPTU͕ͩɺΞΫηε͕؆୯ͳͷͰHFUHFUOBNFOBNFEPpSFCBTFTFU TUPSBHF@OBNF \OBNFQBSBNT<OBNF>^7JTJUPSOBNF\QBSBNT<OBNF>^FOE-PBEHFUWJTJUPSEPpSFCBTFHFU TUPSBHF@OBNFCPEZUP@TFOEHFNJpSFCBTFTJOBUSBSVCZpSFCBTF@TJOBUSBSCˢ/JUSPVT*0ͰҎԼΛ༩QPOBNFJHBϒϥβͰOBNF999ΞΫηεWJTJUPS\OBNFJHB^OBNF999ΞΫηεͨ͠ࡍʹ4BWF͞ΕͨσʔλΛදࣔ
ͬͱֶͼ͍ͨਓ4JOBUSB 3VCZฤwೖ4JOBUSBw*4#/wߨٛࢿྉ 3VCZฤwIUUQTHJUIVCDPNJHBJHBIJUPUTVCBTIJSVCZwୈճʙୈճ3VCZฤ ୈճʙୈճͷ3BJMTฤ3BJMTͷڭՊॻΛࢀরwͨͷ͍͠3VCZୈ൛w*4#/
·ͱΊw/JUSPVT*0Ͱ؆୯ʹ3VCZ 3BJMT։ൃwIUUQTXXX/JUSPVT*0w3BJMTͷڭՊॻΛ࡞ͨ͠wIUUQCJUMZJHB[FNJwγϯϓϧͳ4JOBUSBͰ8FCΞϓϦΛཧղw'JSFCBTFHFNͰ؆୯ʹσʔλอଘ
3VCZ։ൃऀΛͤʹ͢Δݴޠɻͬͱଟ͘ͷ։ൃऀΛ3VCZͰͤʹ͍ͨ͠ɻ·ͭͱΏ͖ͻΖ
/JUSPVT*0(VZTদԬઌੜɺ-FXJTڭतɺᖛ࡚͞ΜɺχϑςΟגࣜձࣾླઌੜɺٶ͞ΜҰڮେֶͷडߨֶੜͷΈͳ͞·3BJMT(JSMT 3BJMTࣉࢠͷελοϑɺίʔνɺࢀՃऀͷΈͳ͞·৬ಉ྅ँࣙ5IBOLTBCPVUNFHJUIVCJHBJHBUXJUUFSJHBJHBGBDFCPPLLVOJBLJJHBSBTIJU%JBSZIUUQJHBSBTIJLVOJBLJOFU3BJMTͷڭՊॻIUUQCJUMZJHB[FNJ2VFTUJPOʁ
ิTVQQMFNFOUBSZFYQMBOBUJPO
/JUSPVT*0Ͱ3VCZΛόʔδϣϯΞοϓSWNΛར༻͍ͯ͠ΔͷͰɺSWNͷ࡞๏Ͱ࠷৽൛ͷ3VCZΛར༻ՄೳIUUQJHBSBTIJLVOJBLJOFUEJBSZIUNM
pSFCBTFEBTICPBSE
͜ͷ1ͷRubyΤίγεςϜͷϗοττϐοΫͷ1ͭ৽ֶ͍͠ͼͷ͕ͨ͘͞ΜͰ͖ͨ