Firebase & Google Cloud によるサーバーレス帳票管理 #FJUG / Serverless Architecture in Candy

Firebase & Google Cloud によるサーバーレス帳票管理 #FJUG / Serverless Architecture in Candy

2019/12/03 に Google にて開催された「Firebase Meetup #15」の資料です。

A54b31d4ebbce222dff88a5c42bac033?s=128

Potato4d(Hanatani Takuma)

December 03, 2019
Tweet

Transcript

  1. Firebase & Google Cloud によるサーバーレス帳票管理 2019.12.25 #FJUG Takuma HANATANI @

    ElevenBack LLC.
  2. ΈΜͳେ޷͖ʢ͖Β͍ʣாථ1%'ग़ྗ

  3. 'JSFCBTFͩͱ͋Μ·ΓͭΒ͘ͳ͍࿩

  4. Agenda w ࣗݾ঺հ w $BOEZͷৄࡉͳཁ݅ͱ՝୊ײ w ாථ؅ཧͷ՝୊Λ'JSFCBTFͰ౗͢ w 'JSFCBTFͱ(PPHMF$MPVEͷ࿈ܞʹΑͬͯΑΓଟ͘ͷ՝୊Λղফ͢Δ w

    "QQ&OHJOFͱซ༻ͨ͠ΞʔΩςΫνϟʹ͍ͭͯ
  5. Takuma HANATANI (@potato4d) • Status • Senior Front-End Enginner at

    LINE Corp. • CEO at ElevenBack LLC. • Core skills • Front-End and Cloud Native Application Development • User Interface and Interaction Design • OpenSource Ecosystem • React.js / Vue.js ja document maintainer • Ex-Nuxt.js ja document maintainer • Nuxt.js beginners guide (C&R Institute) author
  6. ౦ژɾ෱ԬͰల։தͷ-*/&ϝϯόʔ͕ओಋͷΠϕϯτɾ1PEDBTUίϛϡχςΟʮ6*5ʯ IUUQTDBOEZBDDBNQBJHOCFUB https://uit-inside.linecorp.com/ https://uit.connpass.com/

  7. 6*5*/4*%&Ͱ͸ʮ3FBDUͷઃܭʯ΍ʮݱ৔ͰͷඇಉظॲཧʯͳͲ-*/&ϝϯόʔͷੜͷ੠͕୔ࢁʂ

  8. ΧϨϯμʔ΍ࣗಈԽʹΑͬͯձܭ؅ཧ͔Βղ์͞ΕΔΫϥ΢υʮ$BOEZʯϕʔλఏڙத IUUQTDBOEZBDDBNQBJHOCFUB

  9. 3FBMUJNF%BUBCBTF͔͠ͳ͔ͬͨ࣌୅ʹॻ͍ͨ͜ͷهࣄϗϯϚʹϝϯςͨ͘͠ͳ͍ͷͰॿ͚ͯཉ͍͠

  10. Agenda w ࣗݾ঺հ w $BOEZͷৄࡉͳཁ݅ͱ՝୊ײ w ாථ؅ཧͷ՝୊Λ'JSFCBTFͰ౗͢ w 'JSFCBTFͱ(PPHMF$MPVEͷ࿈ܞʹΑͬͯΑΓଟ͘ͷ՝୊Λղফ͢Δ w

    "QQ&OHJOFͱซ༻ͨ͠ΞʔΩςΫνϟʹ͍ͭͯ
  11. ཁ݅ͱ՝୊ײʹ͍ͭͯ

  12. Candy ʹஔ͚Δཁ݅ͱ՝୊ײ w $BOEZ w ձܭ؅ཧͷΫϥ΢υιϑτ΢ΣΞ w )JTUPSZϕʔεͰݪຊͱͳΔσʔλΛ؅ཧ͢Δ͜ͱΛཁٻ͞ΕΔ w ϞόΠϧ

    18"8FC ʹಛԽ͍ͨ͠ΘΏΔ41" w ʮؾʹ͠ͳ͍ʯΛ࣠ͱͳΔϓϩμΫτ w 1%'ੜ੒ͱϝʔϧ഑৴ɺεέδϡʔϦϯάػೳ w J$BMFOEBS΍(PPHMF$BMFOEBSͰͷߪಡ༻ͷΤϯυϙΠϯτ
  13. Candy ʹஔ͚Δཁ݅ͱ՝୊ײ w $BOEZ w ձܭ؅ཧͷΫϥ΢υιϑτ΢ΣΞ w )JTUPSZϕʔεͰݪຊͱͳΔσʔλΛ؅ཧ͢Δ͜ͱΛཁٻ͞ΕΔ w ϞόΠϧ

    18"8FC ʹಛԽ͍ͨ͠ΘΏΔ41" w ʮؾʹ͠ͳ͍ʯΛ࣠ͱͳΔϓϩμΫτ w 1%'ੜ੒ͱϝʔϧ഑৴ɺεέδϡʔϦϯάػೳ w J$BMFOEBS΍(PPHMF$BMFOEBSͰͷߪಡ༻ͷΤϯυϙΠϯτ
  14. ݪຊอ؅ͷͨΊͷ History ؅ཧ w ձܭॻྨ͸੫੍্ݪຊอ؅͕ඞਢ w 1%'ɺ΋ͱͷσʔλ྆ํΛݫີʹ؅ཧ w ඇਖ਼نԽͨ͠ߏ଄͕ٻΊΒΕΔ w

    ໊͕ࣾมΘͬͯ΋ϦΞΫςΟϒʹมΘ Βͳ͍ w αʔόʔʹ1%'ͷੜ੒೔࣌ͱϑΝΠ ϧࢀরΛอ͓࣋ͯ͘͠ w ݱঢ়ϦϏδϣϯӾཡػೳ͸ఏڙ͠ͳ͍
  15. PDF ੜ੒ͱϝʔϧ഑৴ʹ͍ͭͯ w Α͋͘Δாථग़ྗػೳ w 1%'ʹΑΔ w 4.51αʔόʔܦ༝Ͱͷϝʔϧૹ෇ w ׬ྃ݁ՌͷσʔλετΞ΁ͷॻ͖ࠐΈ

    w ॳظϦϦʔεʹ͸ͳ͍͕༧໿഑৴Λߟྀ w ࢥ͍ग़ͨ࣌͠ʹૹΕΔΑ͏ʹ w ͋ͱʹͳͬͯ๨Εͳ͍Α͏ʹ
  16. iCal ܗࣜͷΧϨϯμʔͷఏڙ w Ϣʔβʔ͝ͱʹݸผͷ63-Λఏڙ w ߪಡ͢Δ͜ͱͰΧϨϯμʔͱ৘ใΛಉظ w ͍͕ͭૹ෇ظݶ೔͔ w ͍͕ͭΫϥΠΞϯτ͔Βͷೖۚ೔͔

    w ظݶ಺ʹ׬͍ྃͯ͠Δ͔ w ΧϨϯμʔΛΈͯؾ͍ͮͨΒൃߦͰ͖Δ w ϞόΠϧಛԽΏ͑ͷ༏Ґੑ
  17. Agenda w ࣗݾ঺հ w $BOEZͷৄࡉͳཁ݅ͱ՝୊ײ w ாථ؅ཧͷ՝୊Λ'JSFCBTFͰ౗͢ w 'JSFCBTFͱ(PPHMF$MPVEͷ࿈ܞʹΑͬͯΑΓଟ͘ͷ՝୊Λղফ͢Δ w

    "QQ&OHJOFͱซ༻ͨ͠ΞʔΩςΫνϟʹ͍ͭͯ
  18. ாථ؅ཧͷ՝୊Λ'JSFCBTFͰ౗͢

  19. ாථ؅ཧͷ՝୊Λ Firebase Ͱ౗͢  ݪຊอ؅ͷ՝୊Λ'JSFTUPSFͷσʔλ؅ཧͰ౗͢  1%'ग़ྗΛQVQQFUFFS $MPVE'VODUJPOTͰ౗͢  ϝʔϧૹ෇΍εέδϡʔϦϯάɺฒྻ࣮ߦΛ"QQ&OHJOF

    'VODUJPOTͰ౗͢  ΧϨϯμʔ༻ͷ63-͸'JSFCBTFͰ͸౗ͤͳ͍ͷͰ"QQ&OHJOFͰ౗͢
  20. 1. ݪຊอ؅ͷ՝୊Λ Firestore Ͱ౗͢ w 'JSFTUPSF͸υΩϡϝϯτܕͷσʔλϕʔε w Ͱ͖Δ͚ͩϑϥοτͳߏ଄ʹ΋Ͱ͖Δ͠ਂ͘ωετͤ͞Δ͜ͱ΋Ͱ͖Δ w جຊతʹඇਖ਼نԽͨ͠σʔλߏ଄ΛόονॲཧͰ੔߹ੑΛ߹ΘͤΔ͜ͱ͕جຊ

    w ݪຊΛอ؅͢Δ৔߹͸ࣄ৘͕ಛूͱͳΓɺͦΕͧΕ͕࿈ܞঢ়ଶʹͳ͍͜ͱ͕େ੾ w 3FGFSFODFܕΛલఏͱͤͣసࣸ͢ΔɺόονͰυΩϡϝϯτؒͷಉظΛ͠ͳ͍ w 3%#Ͱ͍͏ͱ͜Ζͷ',ΛറΔΑ͏ͳҹ৅
  21. ςετ؀ڥΛϕʔεʹσʔλߏ଄Λ঺հ ˞ձ৔ݶఆ

  22. 2. PDF ग़ྗΛ puppeteer + Cloud Functions Ͱ౗͢ w ͦ΋ͦ΋1%'ग़ྗ͸ͭΒ͍

    w '%1' 1)1  w ͦ΋ͦ΋6OJDPEFະରԠͰ·ͱ΋ʹϝϯςφϯε͞Ε͍ͯͳ͍ w ςϯϓϨʔτػೳ͸͋Δ͚Ͳجຊ࠲ඪϕʔεͰંΓฦ͠΋ͳ͍ w 1SBXO 3VCZ  w ςϯϓϨʔτ1%'ΛಡΈࠐΉػೳ͕ͳ͍ ࣗྗͰશ෦ॻ͘  w ௕Β͘·ͱ΋ʹ࢖ΘΕͯͳͦ͞͏
  23. 2. PDF ग़ྗΛ puppeteer + Cloud Functions Ͱ౗͢ w ͦ΋ͦ΋1%'ग़ྗ͸ͭΒ͍

    w XLIUNMUPQEG ൚༻  w /PEFKTͰ΋ಈ࡞͢ΔͷͰΫϥ΢υ؀ڥͰಈ͖ͦ͏ͳͷ͕خ͍͠ w 8FC,JUͷ͸ͣͳͷʹಈ࡞΋ग़ྗ඼࣭΋ඍົͰ/BUJWF&YUFOTJPO΋ݫ͍͠ w QVQQFUFFS /PEFKT  w )5.-$44ϨΠΞ΢τ͕ॻ͚ͯ·ͱ΋ʹಈ͘ɺ࣮࣭తͳ།Ұ͔ͭ༗ྗͳख๏ w $BOEZͰ͸αʔόʔଆͰ3FBDUͷ443Λͯ͠ܕ҆શʹாථΛίʔσΟϯά w $ISPNJVNͳͷͰී௨ʹ1BB4*BB4Ͱಈ͔͢෼ʹ͸Ϧιʔε͕ͭΒ͍
  24. 2. PDF ग़ྗΛ puppeteer + Cloud Functions Ͱ౗͢ w QVQQFUFFSΛ'JSFCBTF'VODUJPOT͔Βݺͼग़͢

    w 'VODUJPOT͸ؔ਺୯ҐͰϚγϯεϖοΫΛௐ੔Ͱ͖Δ w "ENJO4%,ʹؔ͢Δઃఆ͕ऴΘ͍ͬͯΔͷͰ'JSFTUPSFͱͷ࿈ܞָ͕ w ίϯϐϡʔςΟϯάίετ͕ߴ͍QVQQFUFFS༻ͷεϖοΫΞοϓΛ࠷௿ݶʹ w 1BB4ͷ৔߹ɺશͯΛ૿ڧ͢Δ͔ผͷϓϩδΣΫτΛ࡞Δ͔ͷೋ୒ͩͬͨ w "QQ&OHJOF͸4FSWJDF୯ҐͰͷεϖοΫมߋΛड͚෇͚ͳ͍ͨΊ w 'VODUJPOTΛར༻͢Δ͜ͱͰɺߟྀ͢΂͖ࣄ߲Λ࠷খԽͰ͖Δ
  25. 2. ͷ࣌఺Ͱͷாථൃߦϑϩʔ JOWPJDF1SFWJFX IUUQT$BMMBCMF 1/(#JOBSZ JTTVF*OWPJDF IUUQT$BMMBCMF 6TFS%FWJDF ϑΝΠϧΛอଘ 1

    2 3 4 1%'63-Λอଘ 5 ϝʔϧૹ෇ 6 ੒ޭσʔλΛอଘ 7 4VCTDSJCFͨ͠'JSFTUPSFͷσʔλΛ41"͕ݕ஌
  26. Agenda w ࣗݾ঺հ w $BOEZͷৄࡉͳཁ݅ͱ՝୊ײ w ாථ؅ཧͷ՝୊Λ'JSFCBTFͰ౗͢ w 'JSFCBTFͱ(PPHMF$MPVEͷ࿈ܞʹΑͬͯΑΓଟ͘ͷ՝୊Λղফ͢Δ w

    "QQ&OHJOFΛซ༻ͨ͠΋͏Ұͭͷཧ༝ͱ͜Ε͔Β
  27. (PPHMF$MPVEΛ࿈ܞͯ͠कඋൣғΛ޿͛Δ

  28. 3. ฒྻॲཧͱϝʔϧͳͲίέΔॲཧͷରॲ w جຊతͳாථͷग़ྗ͸QVQQFUFFSͱ'VODUJPOTͰૉ๿ʹ࣮૷Ͱ͖ͨ w ࣮ͨͩࡍͷӡ༻Ͱ͸ߋʹߟྀࣄ߲Λ௥Ճ͠ɺҎԼΛϕʔεʹઃܭ w ݕ౼ࣄ߲ w ༧໿ૹ෇ͷ࣮૷࣌ʹ΋ಉ͡ϩδοΫ͕࢖͍ճͤΔ͔

    w ΠϯελϯεͷݶքͰQVQQFUFFS͕མͪͳ͍͔ w ֎తཁҼʹΑͬͯϝʔϧ഑৴͕ίέͳ͍͔ w ϦτϥΠػߏ͸े෼͔
  29. 3. ฒྻॲཧͱϝʔϧͳͲίέΔॲཧͷରॲ ࠷ऴతͳ࣮૷ํ਑ɹ  $MPVE1VC4VCܖػͰ'VODUJPOTΛ࣮ߦ͠ɺૹ෇ͷ࢓૊ΈΛ౷Ұ  ༧໿ૹ෇͸'VODUJPOTͷDSPOͰFORVFVF͢Δ͚ͩ  খن໛ࣄۀऀͰ4JEFLJRͳͲΛδϣϒΛ࣋ͪͨ͘ͳ͍ਓʹ΋Φεεϝ 

    ༧໿֎ͷૹ෇͸"QQ&OHJOFʹཱͯͨ#''αʔόʔ͔ΒൃՐ  &YBDUMZPODFʹ͍ͨ͠ɺଞͰ#''ཱ͕͍ͬͯΔͷͰศརͳͲ  ࣦഊ࣌͸ࣗ෼ࣗ਎ΛFORVFVF͠௚͢͜ͱͰճ਺੍ݶ͖ͭSFUSZΛ࣮ݱ
  30. ࠷ऴతʹग़དྷ্͕ͬͨΞʔΩςΫνϟਤ (௨ৗ࣌) JOWPJDF1SFWJFX IUUQT$BMMBCMF 1/(#JOBSZ JTTVF*OWPJDF )5511045 6TFS%FWJDF ϑΝΠϧΛอଘ 63-Λอଘ

    ϝʔϧૹ෇ ੒ޭσʔλΛอଘ 9 4VCTDSJCFͨ͠'JSFTUPSFͷσʔλΛ41"͕ݕ஌ #'' 3 2 &ORVFVF 1 4 $POTVNF 5 7 6 8 ࣦഊ࣌͸࠶౓FORVFVF X
  31. ࠷ऴతʹग़དྷ্͕ͬͨΞʔΩςΫνϟਤ (༧໿࣌) JOWPJDF1SFWJFX IUUQT$BMMBCMF 1/(#JOBSZ JTTVF*OWPJDF )5511045 6TFS%FWJDF ϑΝΠϧΛอଘ 63-Λอଘ

    ϝʔϧૹ෇ ੒ޭσʔλΛอଘ 9 4VCTDSJCFͨ͠'JSFTUPSFͷσʔλΛ41"͕ݕ஌ $SPO5BTL 3 2 &ORVFVF 1 4 $POTVNF 5 7 6 8 ࣦഊ࣌͸࠶౓FORVFVF X
  32. Α͏΍͘αʔόʔϨε1%'ग़ྗ׬੒

  33. Կ͕خ͔ͬͨ͠ͷ͔

  34. ݁ہԿ͕خ͔ͬͨ͠ͷ͔ - σʔλߏ଄ฤ w υΩϡϝϯτ%#ΛυΩϡϝϯτ%#Β͘͠ར༻ͯ͠ݪຊΛอ؅͠΍͘͢ͳͬͨ w 3%#Λར༻͢Δ৔߹ͱൺֱͯ͠ૉ௚ͳίʔυهड़͕Մೳ w ߟྀࣄ߲͕ݮΓɺഊ๺ײ΋ͳ͍ w

    ·ͨɺར༻͕݄ ճ͔ͭ૝ఆ."6͕௚ۙ೥Ͱ΋d ఔ౓ͳͷͰྉۚ΋˕ w ϢʔβʔωʔϜεϖʔεΛ࣋ͭΞϓϦέʔγϣϯͱͷ૬ੑͷྑ͞Λڗड w 'SJFOETIJQͷ3FMBUJPO͕͋Δσʔλߏ଄͸'JSFTUPSFͰ͸࡞ΓͮΒ͍ w ࠓճ͸جຊతʹ0OF5P.BOZͷ3FMBUJPO͔͠ແ͔ͬͨͨΊ͏·͘ޮ͍ͨ
  35. ݁ہԿ͕خ͔ͬͨ͠ͷ͔ - αʔόʔϨεԽฤ w 'VODUJPOTΛར༻͢Δ͜ͱͰQVQQFUFFSΛִ཭ͨ͠؀ڥԼͰ࣮ߦͰ͖ͨ w ϚγϯεϖοΫΛඞཁͳͱ͜Ζ্͚ͩ͛ΒΕΔͷͰίετతʹ͍҆ w $ISPNJVNͷϝϞϦϦʔΫͳͲʹ೰·͞ΕΔඞཁ͕ͳ͍ w

    'VODUJPOTͷεέʔϦϯάੑೳΛे෼ʹڗडͰ͖ͨ w ݱ࣌఺Ͱ΋࠷খݶͷίϯϐϡʔςΟϯάར༻Ͱ཈͑ΒΕ͍ͯΔ w ϦϦʔε४උதͷ༧໿ૹ෇Ͱ͸ಛఆ೔࣌ ".࣌ͳͲ ʹεύΠΫ͢ΔՄೳੑ͕ߴ͍ w ٯʹͦΕҎ֎ͷ࣌͸Πϯελϯε͕ඞཁͳ͍͜ͱ΋ଟ͘ͳΔ༧૝
  36. ݁ہԿ͕خ͔ͬͨ͠ͷ͔ - ΞʔΩςΫνϟฤ w ௨ৗૹ෇ɾ༧໿ૹ෇΍ɺࠓޙ࣮૷͢Δఆظૹ෇ͰऔΓѻ͍ʹҧ͍͕ͳ͍ w ըҰతͳͷͰ࣮૷ίετ΋௿͘ɺߟྀࣄ߲΋গͳ͍ w 41""1*1VC4VC'VODUJPOT'JSFTUPSF41"ͷྲྀΕ͕࡞Εͨ w

    41"͸'JSFTUPSFΛߪಡ͢Δ͚ͩͰඇಉظॲཧΛಉظͷΑ͏ʹʹ࣮ߦͰ͖Δ w Ϩεϙϯεࣗମ͸Ұ౓ฦ٫͞Ε͍ͯΔͷͰɺϦτϥΠͳͲͷ࢓૊Έʹࡌͤ΍͍͢ w 41"͕ؔ৺Λ࣋ͭ΂͖ͳͷ͸ҟৗ࣌ͷλΠϜΞ΢τॲཧͷΈͰ؆ܿ
  37. Agenda w ࣗݾ঺հ w $BOEZͷৄࡉͳཁ݅ͱ՝୊ײ w ாථ؅ཧͷ՝୊Λ'JSFCBTFͰ౗͢ w 'JSFCBTFͱ(PPHMF$MPVEͷ࿈ܞʹΑͬͯΑΓଟ͘ͷ՝୊Λղফ͢Δ w

    "QQ&OHJOFΛซ༻ͨ͠΋͏Ұͭͷཧ༝ͱ͜Ε͔Β
  38. "QQ&OHJOF࢖͏ಈػͱͯ͠͸ऑ͍ʁ

  39. iCal ܗࣜͷΧϨϯμʔͷఏڙ w Ϣʔβʔ͝ͱʹݸผͷ63-Λఏڙ w ߪಡ͢Δ͜ͱͰΧϨϯμʔͱ৘ใΛಉظ w ͍͕ͭૹ෇ظݶ೔͔ w ͍͕ͭΫϥΠΞϯτ͔Βͷೖۚ೔͔

    w ظݶ಺ʹ׬͍ྃͯ͠Δ͔ w ΧϨϯμʔΛΈͯؾ͍ͮͨΒൃߦͰ͖Δ w ϞόΠϧಛԽΏ͑ͷ༏Ґੑ
  40. iCal ܗࣜͷΧϨϯμʔͷఏڙ w Ϣʔβʔ͝ͱʹݸผͷ63-Λఏڙ w ߪಡ͢Δ͜ͱͰΧϨϯμʔͱ৘ใΛಉظ w ͍͕ͭૹ෇ظݶ೔͔ w ͍͕ͭΫϥΠΞϯτ͔Βͷೖۚ೔͔

    w ظݶ಺ʹ׬͍ྃͯ͠Δ͔ w ΧϨϯμʔΛΈͯؾ͍ͮͨΒൃߦͰ͖Δ w ϞόΠϧಛԽΏ͑ͷ༏Ґੑ ৗ࣌҆ఆͨܰ͠ඍͳϦΫΤετ͕ඈΜͰ͘Δ
  41. Firebase Functions ͩͱͭΒ͍ྖҬΛ AppEngine ͰΧόʔ w ৗ࣌ϦΫΤετ͕͘Δ΋ͷ͸"QQ&OHJOF Ͱରॲ͍ͨ͠ w 'BB4͸՝ۚܗଶతʹৗ࣌Քಇʹ͸޲͔

    ͳ͍΍Δ΂͖Ͱͳ͍☠ w ٯʹ"QQ&OHJOFʹશ෦ࡌͤΔͱ QVQQFUFFS෼૿ڧ͞Εͨαʔόʔ͕େ ྔʹඞཁʹͳΓ w ͲͷΈͪ'BB4ͱ͸ผʹ"1*͸ඞਢ
  42. جຊతͳٕज़ͷ࣠ʹ͍ͭͯ w ·ͣ͸'JSFCBTF'VODUJPOTͰղܾͰ͖ͳ͍͔ߟ͑Δ w Ͱ͖ͳ͍ͱࢥ͍ͬͯͯ΋Ͱ͖Δ͜ͱ΋ׂͱଟ͍ w #VTZͳ͕࣌ؒ୹͚Ε͹୹͍΄Ͳ'BB4ͷར఺͸૿͢ w ΠϕϯτۦಈͰ࣮૷Ͱ͖ΔͳΒͦͷ΄͏͕ྑ͍ͷͰ)551ͷޱΛۃྗ։͚ͳ͍ w

    Ͳ͏ͯ͠΋ඞཁͳॲཧΛٵऩ͢ΔͨΊʹ1BB4αʔόʔΛ༻ҙ͢Δͱศར w 'JSFCBTFറΓͩͱͭΒ͍෦෼͸ग़ͯ͘Δ w "QQ&OHJOF͸͋Δఔ౓αʔόʔϨεతࢥ૝ͱ͸ݴ͑ίϯϐϡʔςΟϯάͱཧղ͢Δ
  43. ͓ΘΓʹ

  44. ͓ΘΓʹ w ͦ΋ͦ΋ாථͷ1%'ग़ྗΛ࣮૷͢Δͷ͸ͭΒ͍ w αʔϏεͷத৺ʹாථ͕དྷΔ͜ͱ͕ͳ͍ͷͰ͓͟ͳΓʹͳΓ͕ͪ w ͱ͸͍͑QVQQFUFFSͳͲͷొ৔ʹΑͬͯ͋Δఔ౓࡞Γ΍͘͢͸ͳ͍ͬͯΔ w ாථͷσʔλߏ଄ಛ༗ͷ֓೦ʹ͍ͭͯ΋೺Ѳ͓ͯ͘͠ඞཁ͕͋Δ w

    Α͘ແݶʹൃߦͰ͖ΔγεςϜ͕͋Δ͕ɺ͋Ε͸ݫີʹ͸ྑ͘ͳ͍ w ඇਖ਼نԽͨ͠σʔλͱग़ྗ݁ՌΛݪຊͱͯ͠อ؅͢Δʹ͸'JSFTUPSF͕ศར
  45. ͓ΘΓʹ w Ұ࣌తʹεύΠΫ͢ΔՄೳੑ͕͋ΔΑ͏ͳϔϏʔͳॲཧ͸'VODUJPOTͰ0, w ඞཁͳͱ͖͚ͩͦΕͳΓͷεϖοΫ d.#3".ͳͲ ΛआΓΒΕΔ w ར༻͠ͳ͍࣌͸໪࿦՝͕͔͔ۚΒͳ͍ͷͰۚમίετͱͯ͠΋خ͍͠ w

    Ϋϥ΢υ͸ָͯ҆͘͠Ͱ͖Δٕज़ͳͷͰɺշద͞ͱίετΛॏࢹͯ͠ར༻͢Δ w 'BB4ͱ1BB4Λซ༻͢Δ͜ͱͰߟྀࣄ߲΋ݮΓɺ͔ͭ҆͘Ͱ͖Δ w ։ൃମ੍ʹٻΊΒΕ͍ͯΔཁૉΛߟ͑ͭͭΠϯϑϥετϥΫνϟΛߟ࡯͠Α͏