たのしいOSSコードリーディング:Let's read "cookies"🍪

たのしいOSSコードリーディング:Let's read "cookies"🍪

Transcript

  1. ͨͷ͍͠044ίʔυϦʔσΟϯά -FU`TSFBElDPPLJFTz ԘҪඒ࡙!DPF@ +VM 5BNB3VCZձٞ

  2. ⚠ૣޱ஫ҙ⚠ ίʔυΛҰߦͣͭಡΜͩৄࡉهࣄΛ 2JJUBʹ౤ߘ͠·͢ͷͰ ޙ΄ͲΏͬ͘Γࠪ͝ऩ͍ͩ͘͞ IUUQTRJJUBDPNDPF@JUFNTBEEDGFDCFBG ɹ օ༷͔Βͷٕज़తࢦఠΛ͓଴͓ͪͯ͠Γ·͢

  3. ࣗݾ঺հ ԘҪඒ࡙!DPF@  5BNB3VCZձٞӡӦ 5BNBSCɺ"TBLVTBSCɺ'VLVPLBSCʢ࿦ཧʣʹ͍·͢ झຯ͸٤஡ళ☕ͱ044ίʔυϦʔσΟϯά

  4. ࣗݾ঺հ ԘҪඒ࡙!DPF@  5BNB3VCZձٞӡӦ 5BNBSCɺ"TBLVTBSCɺ'VLVPLBSCʢ࿦ཧʣʹ͍·͢ झຯ͸٤஡ళ☕ͱ044ίʔυϦʔσΟϯά ‐ࠓ೔ͷ͓࿩

  5. ͋Δ೔ɺ3BJMTνϡʔτϦΞϧΛಡΜͰ͍Δͱʜ ͜Μͳϝιου͕ొ৔ DPPLJFT<VTFS@JE>VTFSJE ‎VTFSJEΛ$PPLJFʹӬଓతʹอଘ͢Δ ग़యɿ3VCZPO3BJMTνϡʔτϦΞϧ ɹɹɹୈষൃలతͳϩάΠϯػߏϩάΠϯঢ়ଶͷอ࣋

  6. ͓͍͠͸ؾʹͳͬͨ DPPLJFT<VTFS@JE>VTFSJE ɹͦ͏͍͑͹ɺDPPLJFTϝιουͬͯ ɹͲ͏΍࣮ͬͯ૷͞Ε͍ͯΔͷ͔ͳʜʁ ɹݟͨ໨͸ϋογϡͬΆ͍͚ΕͲʜ

  7. ͱ͍͏͜ͱͰɺ ૣ଎ಡΜͰ͍͖·͠ΐ͏

  8. ΋͘͡ ᶃͨͷ͍͠044ίʔυϦʔσΟϯά ʲࣄલ஌ࣝʳ3BDLϛυϧ΢ΣΞͷ͓࿩ ʲɹຊฤɹʳ-FUTSFBEDPPLJFT ᶄͳͥ044ΛಡΉͷʁ

  9. ᶃͨͷ͍͠044ίʔυϦʔσΟϯά ʲࣄલ஌ࣝʳ3BDLϛυϧ΢ΣΞͷ͓࿩

  10. 3BDLͷ͓࿩  ‎3BJMTΞϓϦέʔγϣϯ͸3BDLϓϩτίϧΛຬͨ͠ɺ ɹ3BDLϥΠϒϥϦΛ಺෦Ͱ࢖༻͍ͯ͠Δ ɹ3BDLͱ͸ ◦ 8FCΞϓϦέʔγϣϯͱ8FCαʔόʔΛܨ͙ϓϩτίϧ ◦ 8FCΞϓϦέʔγϣϯͱ8FCαʔόʔΛܨ͙ϥΠϒϥϦ ը૾ग़యɿIUUQTSVCZPOSBJMTPSH͓ΑͼIUUQTSBDLHJUIVCJP

  11. 3BDLϛυϧ΢ΣΞͷ͓࿩ ɹ8FCΞϓϦέʔγϣϯ͕ ɹ͍࣋ͬͯΔ΂͖ɺ ɹʮಛఆͷ൚༻తͳػೳʯΛ ɹ੾Γग़ͨ͠3BDLϥΠϒϥϦ $ rails middleware use Webpacker::DevServerProxy

    use ActionDispatch::HostAuthorization use Rack::Sendfile use ActionDispatch::Static ɹ (ུ)...
  12. "DUJPO%JTQBUDI$PPLJFT͸3BDLϛυϧ΢ΣΞ $PPLJFΛอଘ͢ΔͨΊͷ"DUJPO%JTQBUDI$PPLJFTΫϥε ʜ3BJMTΞϓϦέʔγϣϯ͕࢖͏3BDLϛυϧ΢ΣΞͷͻͱͭ $ rails middleware ɹ (ུ)... use ActionDispatch::Cookies

    use ActionDispatch::Session::CookieStore use ActionDispatch::Flash use ActionDispatch::ContentSecurityPolicy::Middleware use Rack::Head use Rack::ConditionalGet use Rack::ETag use Rack::TempfileReaper run Myapp::Application.routes
  13. DPPLJFTϝιουͷ࣮૷ DPPLJFT<VTFS@JE>VTFSJE ɹ BDUJPOQBDLMJCBDUJPO@DPOUSPMMFSNFUBMDPPLJFTSCDPPLJFT ɹ DPPLJFTϝιου͸DPPLJF@KBSϝιουΛ ݺͼग़͍ͯ͠Δ͚ͩ 3 module ActionController

    4 module Cookies . . . 12 def cookies 13 request.cookie_jar 14 end
  14. DPPLJFTϝιουͷ࣮૷ DPPLJFT<VTFS@JE>VTFSJE ɹ BDUJPOQBDLMJCBDUJPO@DPOUSPMMFSNFUBMDPPLJFTSCDPPLJFT ɹ 3 module ActionController 4 module

    Cookies . . . 12 def cookies 13 request.cookie_jar 14 end  ΞϓϦέʔγϣϯ͔ΒDPPLJFTϝιουΛݺͿ ‎"DUJPO%JTQBUDI$PPLJFTϛυϧ΢ΣΞΛ࢖༻͢Δ DPPLJF@KBSϝιουͷ಺෦Ͱ "DUJPO%JTQBUDI$PPLJFTͷ ΠϯελϯεΛੜ੒
  15. ᶃͨͷ͍͠044ίʔυϦʔσΟϯά ʲɹຊฤɹʳ-FUTSFBEDPPLJFT

  16. DPPLJFT<VTFS@JE>VTFSJE͢Δͱɺ Կ͕ى͜Δʁ ௐࠪ؀ڥɿ3BJMTSD ɹɹɹɹɹ5SBDF-PDBUJPO

  17. શମͷྲྀΕΛ֬ೝCZ5SBDF-PDBUJPO ϝιου͕ݺ͹ΕΔܦ࿏Λௐ΂ͯ͘ΕΔHFN

  18. શମͷྲྀΕΛ֬ೝCZ5SBDF-PDBUJPO ……

  19. େมڪॖͰ͕͢ εϥΠυʹऩ·Γ͖Βͳ͔ͬͨͨΊ ཁ໿͍ͨ͠·͢

  20. શମͷྲྀΕ͸͜Μͳײ͡ ɹ ɹ <3BJMT>"DUJPO$POUSPMMFS.FUBMDPPLJFT ɹ <3BJMT>"DUJPO%JTQBUDI3FRVFTUDPPLJF@KBS ɹ <3BDL>3FRVFTU&OWGFUDI@IFBEFS΋͘͠͸ ɹɹ<3BDL>3FRVFTU&OWTFU@IFBEFS ɹ

    ɹɹɹɹ<3BJMT>"DUJPO%JTQBUDI$PPLJFT$PPLJF+BSCVJME <3BDL>3FRVFTU)FMQFSTDPPLJFT ɹ <3BJMT>"DUJPO%JTQBUDI$PPLJFT<> ɿ <3BJMT>"DUJPO%JTQBUDI$PPLJFTDBMM DPPLJFT<VTFS@JE>VTFSJE͢Δͱʜ
  21. શମͷྲྀΕ͸͜Μͳײ͡ ɹ ɹ <3BJMT><3BDL>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢ ݟ͔ͭΒͳ͔ͬͨ৔߹  <3BJMT><3BDL>ۭͷ$PPLJFΛϔομʹ௥Ճ ɹɹɹ"DUJPO%JTQBUDI$PPLJFT$PPLJF+BSͷΠϯελϯεԽ ɹɹɹΠϯελϯεม਺@cookiesͷॳظԽ 

    <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ  <3BJMT>ϛυϧ΢ΣΞ͕ΞϓϦέʔγϣϯΛฦ͢λΠϛϯάͰ ɹɹɹΠϯελϯεม਺ͷ಺༰Λϔομʹॻ͖ࠐΉ DPPLJFT<VTFS@JE>VTFSJE͢Δͱʜ ‐͜͜·ͰಡΈ·͢
  22. ͔͍ͭ·ΜͰ

  23. <3BJMT>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢ BDUJPOQBDLMJCBDUJPO@DPOUSPMMFSNFUBMDPPLJFTSCDPPLJFT 12 def cookies 13 request.cookie_jar 14 end

  24. BDUJPOQBDLMJCBDUJPO@DPOUSPMMFSNFUBMDPPLJFTSCDPPLJFT 12 def cookies 13 request.cookie_jar 14 end BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSC 9

    module ActionDispatch 10 module Request 11 def cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end <3BJMT>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢
  25. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def cookie_jar

    12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end <3BJMT>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢
  26. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def cookie_jar

    12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end <3BDL>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢ SBDLMJCSBDLSFRVFTUSC 69 def fetch_header(name, block) 70 @env.fetch(name, &block) 71 end ϦΫΤετϔομ ˞)BTI\^ )BTIGFUDI
  27. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def cookie_jar

    12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end <3BDL>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢ SBDLMJCSBDLSFRVFTUSC 69 def fetch_header(name, block) 70 @env.fetch(name, &block) 71 end BDUJPO@EJTQBUDIDPPLJFT
  28. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def cookie_jar

    12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end <3BJMT><3BDL>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢ <3BJMT><3BDL>ϦΫΤετ͔Β طଘͷ$PPLJFΛݟ͚ͭͯฦ͢
  29. <3BJMT>ۭͷ$PPLJFΛϔομʹ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def

    cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end Ωʔ͕ݟ͔ͭΒͳ͔ͬͨ৔߹ɺ ϒϩοΫͷ಺෦͕ධՁ͞ΕΔ
  30. <3BJMT>ۭͷ$PPLJFΛϔομʹ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def

    cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end 28 def cookie_jar=(jar) 29 set_header "action_dispatch.cookies", jar 30 end
  31. <3BDL>ۭͷ$PPLJFΛϔομʹ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def

    cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end SBDLMJCSBDLSFRVFTUSC 78 def set_header(name, v) 79 @env[name] = v 80 end )BTI<> ϋογϡͷΩʔʹରͯ͠ ஋Λؔ࿈͚ͮΔ
  32. <3BDL>ۭͷ$PPLJFΛϔομʹ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def

    cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end SBDLMJCSBDLSFRVFTUSC 78 def set_header(name, v) 79 @env[name] = v 80 end $PPLJFT$PPLJF+BSCVJME BDUJPO@EJTQBUDIDPPLJFT
  33. <3BDL>ۭͷ$PPLJFΛϔομʹ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def

    cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end @env = { "action_dispatch.cookies": Cookies::CookieJar.build(self, cookies) } MJCSBDLSFRVFTUSCDPPLJFT ۭͷ$PPLJF
  34. <3BJMT><3BDL>ۭͷ$PPLJFΛϔομʹ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def

    cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end <3BJMT><3BDL>ۭͷ$PPLJFΛϔομʹ௥Ճ
  35. <3BJMT>"DUJPO%JTQBUDI$PPLJFT$PPLJF+BSΛΠϯελϯεԽ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCDPPLJF@KBS 9 module ActionDispatch 10 module Request 11 def

    cookie_jar 12 fetch_header("action_dispatch.cookies") do 13 self.cookie_jar = Cookies::CookieJar.build(self, cookies) 14 end 15 end @env = { "action_dispatch.cookies": Cookies::CookieJar.build(self, cookies) }
  36. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCCVJME 272 class CookieJar 289 def self.build(req, cookies) 290 new(req,

    cookies).tap do |jar| 291 jar.update(cookies) 292 end 293 end <3BJMT>"DUJPO%JTQBUDI$PPLJFT$PPLJF+BSΛΠϯελϯεԽ
  37. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCCVJME 272 class CookieJar 289 def self.build(req, cookies) 290 new(req,

    cookies).tap do |jar| 291 jar.update(cookies) 292 end 293 end <3BJMT>"DUJPO%JTQBUDI$PPLJFT$PPLJF+BSΛΠϯελϯεԽ <3BJMT>"DUJPO%JTQBUDI$PPLJFT$PPLJF+BS ΛΠϯελϯεԽ
  38. <3BJMT>Πϯελϯεม਺@cookiesͷॳظԽ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCCVJME 272 class CookieJar 289 def self.build(req, cookies) 290

    new(req, cookies).tap do |jar| 291 jar.update(cookies) 292 end 293 end 297 def initialize(request) ... 301 @cookies = {}
  39. <3BJMT>Πϯελϯεม਺@cookiesͷॳظԽ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCCVJME 272 class CookieJar 289 def self.build(req, cookies) 290

    new(req, cookies).tap do |jar| 291 jar.update(cookies) 292 end 293 end <3BJMT>Πϯελϯεม਺ @cookiesͷॳظԽ
  40. <3BJMT>Πϯελϯεม਺@cookiesͷॳظԽ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCCVJME 272 class CookieJar 289 def self.build(req, cookies) 290

    new(req, cookies).tap do |jar| 291 jar.update(cookies) 292 end 293 end <3BJMT>Πϯελϯεม਺ @cookiesͷॳظԽ 334 def update(other_hash) 335 @cookies.update other_hash.stringify_keys 336 self 337 end )BTINFSHFͷΤΠϦΞε ۭͷ$PPLJF
  41. <3BJMT>Πϯελϯεม਺@cookiesͷॳظԽ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSCCVJME 272 class CookieJar 289 def self.build(req, cookies) 290

    new(req, cookies).tap do |jar| 291 jar.update(cookies) 292 end 293 end <3BJMT>Πϯελϯεม਺ !DPPLJFTͷॳظԽ <3BJMT>Πϯελϯεม਺@cookiesͷॳظԽ <3BJMT>Πϯελϯεม਺ @cookiesͷॳظԽ
  42. <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSC<> 374 def [ ]=(name, options) 375 if options.is_a?(Hash)

    ... 378 else 379 value = options 380 options = { value: value } 381 end 382 383 handle_options(options) 384 385 if @cookies[name.to_s] != value || options[:expires] 386 @cookies[name.to_s] = value ஫໨
  43. <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSC<> 374 def [ ]=(name, options) ɹ DPPLJFT<VTFS@JE>VTFSJE ‐OBNF

    ‐PQUJPOT
  44. <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSC<> 374 def [ ]=(name, options) 375 if options.is_a?(Hash)

    ... 378 else 379 value = options 380 options = { value: value } 381 end 382 383 handle_options(options) 384 385 if @cookies[name.to_s] != value || options[:expires] 386 @cookies[name.to_s] = value
  45. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSC<> 379 value = options 386 @cookies[name.to_s] = value <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ

    ɹ DPPLJFT<VTFS@JE>VTFSJE ‐OBNF ‐PQUJPOT VTFS@JE VTFSJE
  46. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSC<> 379 value = options 386 @cookies[name.to_s] = value <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ

    ɹ DPPLJFT<VTFS@JE>VTFSJE ‐OBNF ‐PQUJPOT ɹ!DPPLJFT\VTFS@JEVTFSJE^
  47. BDUJPOQBDLMJCBDUJPO@EJTQBUDINJEEMFXBSFDPPLJFTSC<> 379 value = options 386 @cookies[name.to_s] = value <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ

    ɹ DPPLJFT<VTFS@JE>VTFSJE ‐OBNF ‐PQUJPOT <3BJMT>Πϯελϯεม਺@cookiesʹ ৽͍͠$PPLJFͷ஋Λ௥Ճ
  48. શମͷྲྀΕΛ͓͞Β͍ ɹ ɹ <3BJMT>"DUJPO$POUSPMMFS.FUBMDPPLJFT ɹ <3BJMT>"DUJPO%JTQBUDI3FRVFTUDPPLJF@KBS ɹ <3BDL>3FRVFTU&OWGFUDI@IFBEFS΋͘͠͸ ɹɹ<3BDL>3FRVFTU&OWTFU@IFBEFS ɹ

    ɹɹɹɹ<3BJMT>"DUJPO%JTQBUDI$PPLJFT$PPLJF+BSCVJME <3BDL>3FRVFTU)FMQFSTDPPLJFT ɹ <3BJMT>"DUJPO%JTQBUDI$PPLJFT<> ɿɹ <3BJMT>"DUJPO%JTQBUDI$PPLJFTDBMM DPPLJFT<VTFS@JE>VTFSJE͢Δͱʜ
  49. શମͷྲྀΕΛ͓͞Β͍ ɹ ɹ <3BJMT><3BDL>ϦΫΤετ͔Βطଘͷ$PPLJFΛݟ͚ͭͯฦ͢ ݟ͔ͭΒͳ͔ͬͨ৔߹  <3BJMT><3BDL>ۭͷ$PPLJFΛϔομʹ௥Ճ ɹɹɹ"DUJPO%JTQBUDI$PPLJFT$PPLJF+BSͷΠϯελϯεԽ ɹɹɹΠϯελϯεม਺@cookiesͷॳظԽ 

    <3BJMT>Πϯελϯεม਺@cookiesʹ৽͍͠$PPLJFͷ஋Λ௥Ճ  <3BJMT>ϛυϧ΢ΣΞ͕ΞϓϦέʔγϣϯΛฦ͢λΠϛϯάͰ ɹɹɹΠϯελϯεม਺ͷ಺༰Λϔομʹॻ͖ࠐΉ DPPLJFT<VTFS@JE>VTFSJE͢Δͱʜ ‐͜͜·ͰಡΈ·ͨ͠
  50. ͓ർΕ༷Ͱͨ͠✨

  51. ᶄͳͥ044ΛಡΉͷʁ

  52. ͳͥ044ΛಡΉͷʁ จষͱಉ͘͡ɺಡΊΔΑ͏ʹͳΔ͜ͱͰ ɹ ɹ ॻ͚ΔΑ͏ʹͳΔ ΋ͬͱ೉͍͠΋ͷΛಡΊΔΑ͏ʹͳΔ ɹ ɹ ‎੒௕ʹͭͳ͕Δ

  53. ͳͥ044ΛಡΉͷʁ จষͱಉ͘͡ɺಡΊΔΑ͏ʹͳΔ͜ͱͰ ɹ ɹ ॻ͚ΔΑ͏ʹͳΔ ΋ͬͱ೉͍͠΋ͷΛಡΊΔΑ͏ʹͳΔ ɹ ɹ ‎੒௕ʹͭͳ͕Δ 

    ͱɺ͍͏ͷ͸ ஔ͍͓͍ͯͯ
  54. ͳͥ044ΛಡΉͷʁ ָ͍͔͠Βʂ

  55. 044ΛಡΉͷ͸ָ͍͠ ೉ղͳຊΛಡΜͰ͍Δ࣌ͷΑ͏ͳײ֮ Ṗ͕ղ͚ͨॠؒͷ৺஍Α͞ ͜ͷੈքͷͲ͔͜ʹ͍Δ ɹͨ͘͞Μͷʮ୭͔ʯͷࢥߟΛḷΔཱྀ ͦ΋ͦ΋3VCZ͸ָ͍͠

  56. ָ͍͠͸੒௕ʹͭͳ͕Δʢ͖ͬͱʣ ॾઌഐํ͸օ͞Μ3VCZͷָ͠͞Λ ௥ٻ͞Ε͍ͯ·͢✨✨✨

  57. ָ͘͠3VCZΛ ΍͍͖ͬͯ·͠ΐ͏ ը૾ग़యɿIUUQTUBOPTIJJSVCZHJUIVCJP

  58. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ɹ5IBOLT✨ ܟশུ  ɹɹPLVSBNBTBGVNJ ɹɹVE[VSB ɹɹUTVLB ɹɹOBPUZ@L