Upgrade to Pro — share decks privately, control downloads, hide ads and more …

技育祭2022春 1時間に詰め込む「はてなインターン」

0a5fcdd6e4d181e86f675fb56a133500?s=47 Hatena
March 22, 2022

技育祭2022春 1時間に詰め込む「はてなインターン」

2022/03/19 https://talent.supporterz.jp/geeksai/2022spring/
はてなリモートインターンシップ2022 の開催告知はこちら! https://developer.hatenastaff.com/entry/intern-2022-preentry

0a5fcdd6e4d181e86f675fb56a133500?s=128

Hatena

March 22, 2022
Tweet

More Decks by Hatena

Other Decks in Programming

Transcript

  1. ࣌ؒʹ٧ΊࠐΉ ʮ͸ͯͳΠϯλʔϯʯ ٕҭࡇय़ "TBUP8",*4"," JEBTUK

  2. ͓͸Α͏͍͟͝·͢

  3. ੠ग़͠׻ܴ w ίϝϯτͳͲΨϯΨϯνϟοτ࢖͍͖ͬͯ·͠ΐ͏ w ࣭໰ͱ͔͋Ε͹੠ʢ෺ཧʣग़ͯ͠ःͬͯ0,Ͱ͢ w νϟοτ΋໪࿦׻ܴ w νϟοτͷ࣭໰Λ๻͕๨Εͯͦ͏ͳΒ੠ग़ͯ͠ڭ͍͑ͯͩ͘͞ʂʂ

  4. ͜ͷઌ͋Δͱخ͍͠෺ w λʔϛφϧ -JOVY .BD  w 8FCϒϥ΢β w 23ίʔυͰ63-ΛಡΈऔΕΔͳʹ͔

    w ࠷ۙͷ"OESPJEJ04ͳΒඪ४ͷΧϝϥΞϓϦ
  5. None
  6. ࿬ࡔேਓ (JU)VC!BTUK5XJUUFS!BTU@K w גࣜձࣾ͸ͯͳγχΞΤϯδχΞ ৽ଔೖࣾ  w ͸ͯͳϒοΫϚʔΫɺ͸ͯͳϒϩάɺδϟϯϓϧʔΩʔɺ 
 .JJWFSTFɺ.BDLFSFMɺFUDʜʜ

    w ࠷ۙ͸ϑϩϯτΤϯυଟΊ w 5ZQF4DSJQU 3FBDU (SBQI2- w J04 4XJGU "OESPJE ,PUMJO
  7. None
  8. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  9. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  10. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  11. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  12. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  13. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  14. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  15. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  16. גࣜձࣾ͸ͯͳΤϯδχΞ࠾༻ࢿྉΑΓ

  17. ͸ͯͳΠϯλʔϯ

  18. ͸ͯͳΠϯλʔϯ w ֶੜ޲͚ͷαϚʔΠϯλʔϯγοϓ w ೥͔Β΍ͬͯ·͢ w ʂʂʂࠓ೥΋΍Γ·͢ʂʂʂ w ίϩφલ͸ژ౎Ͱɻۙ೥͸ϦϞʔτͰ w

    िؒ w ߨٛύʔτͱ࣮ફύʔτͷ෦ߏ੒
  19. Πϯλʔϯߨٛύʔτ w ΢ΣϒαʔϏεͷ։ൃʹؔ͢Δߨٛͱ՝୊ w ۙ೥ͷ༷ࢠ w  w 4DBMBPS1FSMͰϒϩάαʔϏε w

      w (Pͱ3FBDUΛ༻͍ͨϒϩάαʔϏε w   w ,VCFSOFUFT H31$ͷϚΠΫϩαʔϏεʹΑΔϒϩάγεςϜ
  20. ΠϯλʔϯͷߨٛΧϦΩϡϥϜ w 8FC"1* w 8FCαʔϏεΠϯϑϥೖ໳ w ίϯςφٕज़ͱ%PDLFS w ,VCFSOFUFTͷ࢓૊Έͱ 


    ϋϯζΦϯ w ϚΠΫϩαʔϏε w ݱ୅తͳϑϩϯτΤϯυ։ൃ w 3%#.4 w 1FSM࠶ೖ໳ w 8FCΤϯδχΞͷͨΊͷ 
 σβΠϯೖ໳ w 8FCαʔϏεͷاը w "84ߨٛ
  21. ΠϯλʔϯͷߨٛΧϦΩϡϥϜ w 8FC"1* w 8FCαʔϏεΠϯϑϥೖ໳ w ίϯςφٕज़ͱ%PDLFS w ,VCFSOFUFTͷ࢓૊Έͱ 


    ϋϯζΦϯ w ϚΠΫϩαʔϏε w ݱ୅తͳϑϩϯτΤϯυ։ൃ w 3%#.4 w 1FSM࠶ೖ໳ w 8FCΤϯδχΞͷͨΊͷ 
 σβΠϯೖ໳ w 8FCαʔϏεͷاը w "84ߨٛ
  22. Πϯλʔϯ࣮ફύʔτ w ࣮ࡍͷϓϩμΫτʹରͯ͠৽ػೳͷاըɾ։ൃ΍ݚڀ w ͸͜Μͳײ͡ w ΧΫϤϜϢʔβʔ͞Μ΁ͷ௨஌ػೳͷڧԽ w ϚϯΨϑΝϯϨλʔɾΤϐιʔυίϝϯτػೳ w

    ͸ͯͳϒοΫϚʔΫϚΠϒοΫϚʔΫฒͼସ͑ɾߜΓࠐΈ w γεϓϥ౿Έ୆αʔόͷ4-*μογϡϘʔυ
  23. ຊ೔ͷ಺༰

  24. ΠϯλʔϯͷߨٛΧϦΩϡϥϜ w 8FC"1* w 8FCαʔϏεΠϯϑϥೖ໳ w ίϯςφٕज़ͱ%PDLFS w ,VCFSOFUFTͷ࢓૊Έͱ 


    ϋϯζΦϯ w ϚΠΫϩαʔϏε w ݱ୅తͳϑϩϯτΤϯυ։ൃ w 3%#.4 w 1FSM࠶ೖ໳ w 8FCΤϯδχΞͷͨΊͷ 
 σβΠϯೖ໳ w 8FCαʔϏεͷاը w "84ߨٛ ࠶ܝ
  25. ΠϯλʔϯͷߨٛΧϦΩϡϥϜ w 8FC"1* w 8FCαʔϏεΠϯϑϥೖ໳ w ίϯςφٕज़ͱ%PDLFS w ,VCFSOFUFTͷ࢓૊Έͱ 


    ϋϯζΦϯ w ϚΠΫϩαʔϏε w ݱ୅తͳϑϩϯτΤϯυ։ൃ w 3%#.4 w 1FSM࠶ೖ໳ w 8FCΤϯδχΞͷͨΊͷ 
 σβΠϯೖ໳ w 8FCαʔϏεͷاը w "84ߨٛ
  26. 4FSWFSTJEF 8FC"1*ߨٛ w )551 w )551d)551d)551 w 8FC"1* w 3&45"1*

    (SBQI2- H31$
  27. None
  28. 8FC"1*ߨٛ

  29. 4FSWFSTJEF 8FC"1*ߨٛ w )551 w )551d)551d)551 w 8FC"1* w 3&45"1*

    (SBQI2- H31$ ࠶ܝ
  30. "1* "QQMJDBUJPO1SPHSBNNJOH*OUFSGBDF w HMJCD • window.alert() • https://api.github.com/repos/mackerelio/mkr $ curl

    https://api.github.com/repos/mackerelio/mkr { "id": 25763415, "node_id": "MDEwOlJlcG9zaXRvcnkyNTc2MzQxNQ==", "name": "mkr", "full_name": "mackerelio/mkr", "private": false,
  31. )551 )ZQFS5FYU5SBOTQPSU1SPUPDPM IUUQTEFWFMPQFSNP[JMMBPSHKBEPDT8FC)5510WFSWJFX

  32. )551ͷྺ࢙ w )551 w )5514 w )551 w )551 w

    (PPHMF͕41%:Λൃද w (PPHMF͕26*$Λൃද w 41%:Λݩʹ)551 ඪ४Խ w )551PWFS26*$Λ )551ʹվ໊ w 26*$ඪ४Խ w 9)551ඪ४Խʁ
  33. )551 • RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1 •

    RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 • RFC 7230 Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing • RFC 7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content • RFC 7232 Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests • RFC 7233 Hypertext Transfer Protocol (HTTP/1.1): Range Requests • RFC 7234 Hypertext Transfer Protocol (HTTP/1.1): Caching • RFC 7235 Hypertext Transfer Protocol (HTTP/1.1): Authentication
  34. HTTP/1.1 status-code reason Header: Value body )551ϦΫΤετͱϨεϙϯε $MJFOU 4FSWFS METHOD

    target HTTP/1.1 Header: Value body
  35. )551ϦΫΤετͱϨεϙϯε $MJFOU 4FSWFS GET / HTTP/1.1 Host: www.hatena.ne.jp User-Agent: curl/7.79.1

    Accept: */* HTTP/1.1 200 OK Date: Wed, 16 Mar 2022 19:13:41 GMT Content-Type: text/html; charset=utf-8 Content-Length: 320777 Connection: keep-alive Server: nginx <!DOCTYPE html><html lang="ja"><head><script> ...
  36. HTTP/1.1 status-code reason Header: Value body )551ϦΫΤετͱϨεϙϯε $MJFOU 4FSWFS METHOD

    target HTTP/1.1 Header: Value body
  37. )551ͷηϚϯςΟΫε w ϦΫΤετߦ w ϝιου w (&51045165)&"%%&-&5&015*0/453"$&$0//&$51"5$) w λʔήοτ w

    ઈରύεͱΫΤϦ FHTFBSDI RUFYU  w όʔδϣϯ )551 GET / HTTP/1.1 Host: www.hatena.ne.jp User-Agent: curl/7.79.1 Accept: */*
  38. )551ͷηϚϯςΟΫε w εςʔλεߦ w όʔδϣϯ )551  w TUBUVTDPEF w

    1xx*OGPSNBUJPOBM w 2xx4VDDFTTGVM w 3xx3FEJSFDUJPO w 4xx$MJFOU&SSPS w 5xx4FSWFS&SSPS w SFBTPO HTTP/1.1 200 OK Date: Wed, 16 Mar 2022 19:13:41 GMT Content-Type: text/html; charset=utf-8 Content-Length: 320777 Connection: keep-alive Server: nginx <!DOCTYPE html><html lang="ja"><head><script> ...
  39. )551ͷηϚϯςΟΫε w ϔομ w ϦΫΤετʹ΋Ϩεϙϯεʹ΋͋Δ w ඪ४ϔομɺඇඪ४ϔομ GET / HTTP/1.1

    Host: www.hatena.ne.jp User-Agent: curl/7.79.1 Accept: */* HTTP/1.1 200 OK Date: Wed, 16 Mar 2022 19:13:41 GMT Content-Type: text/html; charset=utf-8 Content-Length: 320777 Connection: keep-alive Server: nginx <!DOCTYPE html><html lang="ja"><head><script> ...
  40. ඇඪ४ϔομ

  41. )551ͷηϚϯςΟΫε w ϘσΟ w ϦΫΤετʹ΋Ϩεϙϯεʹ΋ؚΊΒΕΔ w ϔομ͔ΒߦۭߦΛڬΉ w σʔλͷछྨ͸$POUFOU5ZQFϔομͰ w

    ѹॖ͢Δ͜ͱ΋Ͱ͖·͢ POST /upload HTTP/1.1 Content-Type: application/x-www-form-urlencoded key=value&another_key=another_value HTTP/1.1 200 OK Date: Wed, 16 Mar 2022 19:13:41 GMT Content-Type: text/html; charset=utf-8 Content-Length: 320777 Connection: keep-alive Server: nginx <!DOCTYPE html><html lang="ja"><head><script> ...
  42. 63- 6OJGPSN3FTPVSDF-PDBUPS w ʮΞυϨεʯ w จࣈ௨Γɺ͋ΔϦιʔεͷʢωοτϫʔΫ্ͷʣ৔ॴΛࣔ͢ w )551ͰΑ͘ݟΔ͕ͦΕҎ֎ͷεΩʔϜͰ΋࢖͏ https://localhost:8000/search?q=text#hello εΩʔϜ

    ϗετ ϙʔτ ύε ΫΤϦ ϑϥάϝϯτ
  43. ΍ͬͯΈΑ͏)551

  44. None
  45. None
  46. None
  47. )5514 )551PWFS5-4 w )551͸ϦΫΤετ΋Ϩεϙϯε΋҉߸Խ͞Ε͍ͯͳ͍ w ௨৴Λ๣डɾվ͟Μ͞ΕΔ͓ͦΕ͕͋Δ w ΞϓϦέʔγϣϯ૚͸͍··Ͱͷ)551ͷ·· w τϥϯεϙʔτ૚Ͱެ։伴ূ໌ॻΛ༻͍ͨ҉߸ԽΛ࣮ࢪ

  48. )5514ͷීٴ཰ IUUQTUSBOTQBSFODZSFQPSUHPPHMFDPNIUUQTPWFSWJFX

  49. None
  50. None
  51. None
  52. None
  53. ͜͜·Ͱ)551 w )5.-ͳͲ8FCͷσʔλసૹͷϓϩτίϧ w ʢ௨ৗ͸ʣ5$1઀ଓͷ্ͰσʔλΛૹड৴͢Δ w ςΩετͰϦΫΤετͱϨεϙϯεΛૹΓ߹͏ w )5514Λ࢖͏ͱ҉߸ԽͰ͖Δ

  54. )551 w ΑΓޮ཰తʹసૹ͢ΔͨΊͷϓϩτίϧ w 8FCͷൃୡͰϦΫΤετͷαΠζྔ͕૿Ճ w ݩʑ͸(PPHMF͕41%:ͱͯ͠ൃදͨ͠෺͕ϕʔε w ೥ʹඪ४Խ w

    طʹଟ͘ͷΫϥΠΞϯταʔόʔ͕ରԠ͍ͯ͠Δ
  55. )551 w جຊతͳηϚϯςΟΫε͸)551ͱಉ͡ w ओͳಛ௃ w σʔλΛόΠφϦܗࣜͰૹड৴͢Δ w ͭͷ5$1઀ଓͰෳ਺ͷετϦʔϛϯά w

    ʢ΄΅5-4্Ͱͷར༻͕લఏʣ
  56. )551ϑϨʔϜ 5$1TUSFBN

  57. )551ϑϨʔϜ +-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8)

    | Flags (8) | +-+-------------+---------------+-------------------------------+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +---------------------------------------------------------------+ +---------------+ |Pad Length? (8)| +---------------+-----------------------------------------------+ | Data (*) ... +---------------------------------------------------------------+ | Padding (*) ... +---------------------------------------------------------------+ +---------------+ |Pad Length? (8)| +-+-------------+-----------------------------------------------+ |E| Stream Dependency? (31) | +-+-------------+-----------------------------------------------+ | Weight? (8) | +-+-------------+-----------------------------------------------+ | Header Block Fragment (*) ... +---------------------------------------------------------------+ | Padding (*) ... +---------------------------------------------------------------+ %"5" )&"%&34
  58. ͜͜·Ͱ)551 w ΑΓޮ཰తͳσʔλ఻ૹͷͨΊʹ࡞Γ௚͞Εͨ w ͻͱͭͷ5$1ίωΫγϣϯͰෳ਺ͷετϦʔϛϯά w ΑΓෳࡶͳϦΫΤετͷ੍ޚ w ϔομͷѹॖ w

    )551ͷηϚϯςΟΫεΛ౿ऻ w طʹଟ͘ͷ؀ڥͰ࢖ΘΕ͍ͯΔ
  59. )551 ͞Βʹޮ཰తͳσʔλ఻ૹΛ͍ͨ͠ʂʂʂʂʂʂ

  60. )551)551PWFS26*$ w τϥϯεϙʔτ૚ʹखΛೖΕΔ͜ͱͰ͞Βʹޮ཰Խ͢Δ w 5$1઀ଓ͕ύέϩε࣌ʹޮ཰͕ѱ͍ w ࠷ॳͷϋϯυγΣΠΫΛ5$1ͱ5-4Ͱผݸʹߦ͍ͬͯΔ w 26*$5$1ͱ5-4ʢͷҰ෦ʣΛ6%1্ʹ࠶࣮૷͢Δ w

    )55126*$্ʹ)551  Λ࠶࣮૷ w ݩʑ)551PWFS26*$ͱݺ͹Ε͍ͯͨ෺
  61. ͜͜·Ͱ)551 w ΢ΣϒΛࢧ͑Δ௨৴ϓϩτίϧ w )551d)551d)551 w جຊతͳηϚϯςΟΫε͸)551ͷࠒʹఆ·͍ͬͯΔ w ΑΓޮ཰తʹσʔλసૹ͢ΔͨΊʹਐԽΛଓ͚͍ͯΔ w

    )551͸޿͘࢖ΘΕͭͭ͋Δɻ)551΋ࠓޙʹظ଴
  62. 8FC"1*

  63. 8FC"1* w ඪ४Խ͞Εͨఆٛ͸ͳ͍ w αʔόʔαΠυ8FC"1*ʢతͳ෺ʣࠓ೔͸͜Ε w )551ܦ༝Ͱ৘ใΛऔಘͨ͠Γॻ͖׵͑ͨΓ͢Δ w ਓؒʹݟͤΔͨΊͰ͸ͳͯ͘ػցతʹૢ࡞͢ΔͨΊ w

    +40/ͱ͔9.-Λ࢖͏͜ͱ͕ଟ͍ w ΫϥΠΞϯταΠυ8FC"1*ʢతͳ෺ʣ w 8FCϑϩϯτΤϯυ͔Βݺͼग़ͤΔϒϥ΢βͷ"1*ͱ͔
  64. 3&45"1* 3&45GVM"1* w ڱٛͰ͸3&45ͷઃܭݪଇʹैͬͨ"1* w ޿ٛͰ͸΋ͬͱͬ͘͟Γͱ࢖ΘΕΔ͜ͱ͕ଟ͍ w Ϧιʔεࢦ޲ w εςʔτϨε

    w )551 w +40/PS9.-
  65. Ϧιʔεࢦ޲ w Ϧιʔεͷ৔ॴΛࢦࣔ͢͠63- ૢ࡞ͷछผΛද͢)551ϝιου w ྫ͑͹(JU)VCͷΠγϡʔίϝϯτͷૢ࡞ • GET /repos/:owner/:repo/issues/comments/:comment_id •

    POST /repos/:owner/:repo/issues/:issue_number/comments • PATCH /repos/:owner/:repo/issues/comments/:comment_id • DELETE /repos/:owner/:repo/issues/comments/:comment_id w Ϧιʔεࢦ޲Ͱ͸ͳ͍"1*63-ͷྫ • GET /api/graphql
  66. 0QFO"1* w 8FC"1*ͷ࢓༷Λهड़͢Δ࢓૊Έ͕΄͍͠ w 0QFO"1*3&45GVM"1*Λهड़͢ΔͨΊͷϑΥʔϚοτ w :".-΍+40/Ͱ"1*ͷ࢓༷ʢεΩʔϚʣΛදݱ͢Δ w εΩʔϚ͔ΒυΩϡϝϯτ΍ίʔυੜ੒͕Ͱ͖Δ

  67. ૝ఆར༻ऀʹΑΔ"1*ͷ෼ྨ w -46%T -BSHF4FUPG6OLOPXO%FWFMPQFST ޲͚"1* w ༷ʑͳϢʔεέʔεΛຬͨ͢൚༻తͳ"1* w 3&45Ͱఏڙ͞ΕͨύʔπΛ͍Ζ͍Ζ૊Έ߹Θͤͯ΋Β͏ w

    44,%T 4NBMM4FUPG,OPXO%FWFMPQFST ޲͚"1* w ΫϥΠΞϯτͷಛੑʹ࠷దԽͨ͠"1*
  68. ϗʔϜը໘ʹ͍Ζ͍Ζද͍ࣔͨ͠ w ͍ΖΜͳ৘ใΛͻͱͭͷը໘ʹද͍ࣔͨ͠έʔε w ΞϓϦͷϗʔϜը໘ w ʮεΫϦʔϯ"1*ίʔϧʯʮηʔϒ"1*ίʔϧʯ w Ϧιʔε͝ͱͷ"1*Λఏڙ͢Δ͚ͩͰ͸ޮ཰͕ѱ͍ w

    ʮϗʔϜը໘༻"1*ʯ͕஀ੜ͢Δ w యܕతͳ44,%T޲͚"1* w ศརʹͳΓ·ͨ͠Ͷʂ
  69. ͍ΖΜͳը໘ʹ͍Ζ͍Ζද͍ࣔͨ͠ w "1*͸αʔόʔଆ͕ఆٛͨ͠৘ใ͔͠ฦͤͳ͍ w ը໘͝ͱͷ"1*Λఏڙ͢ΔϞσϧͰը໘͕ͲΜͲΜ૿͍͑ͯ͘ͱʜ w ʮࠓ౓ϗʔϜը໘ʹ͓͢͢ΊαϒεΫ৘ใ΋ग़͠·͠ΐ͏Αʯ w ʮηʔϧதͷ঎඼ͷׂҾ཰΋΍ͬͺΓදࣔͨͯ͘͠ʜʯ

  70. (SBQI2-"1* w 'BDFCPPLʹΑͬͯ։ൃ͞Εͨ w ΫϥΠΞϯτ͔Βޮ཰తʹσʔλΛऔಘ͢ΔͨΊͷ"1* w ඞཁͳ৘ใΛΫϥΠΞϯτଆ͔Βࢦఆͯ͠ϦΫΤετ͢Δ w ʢαʔόʔ͕ఏڙ͢ΔϦιʔεͷൣғͰʣࣗ༝ʹ૊Έସ͑ΒΕΔ w

    औಘՄೳͳσʔλ͕εΩʔϚͰఆٛ͞Ε͍ͯΔ w ఆٛ͸-46%Tతɺ࢖͍ํ͸44,%Tత
  71. (SBQI2-"1* w ࢓૊Έͱͯ͠͸+40/"1* w ΤϯυϙΠϯτ͸ͻͱͭ w εΩʔϚΛݩʹΫΤϦΛ૊ΈཱͯΔ w ΫΤϦΛϦΫΤετϘσΟʹೖΕͯૹΔ w

    ΫΤϦʹԊͬͨσʔλ͕ಘΒΕΔ
  72. interface Actor { login: String! } type Issue { author:

    Actor body: String! title: String! } type Repository { issue(number: Int!): Issue } type Query { repository(name: String!, owner: String!): Repository }
  73. query GetFirstIssue { repository(name: "Hatena-Intern-2020", owner: "hatena") { issue(number: 1)

    { author { login } body title } } }
  74. (SBQI2-৮ͬͯΈΔ w ແྉͰެ։͞Ε͍ͯΔ$PVOUSJFT(SBQI2-"1*Λ৮ͬͯΈ·͢ w IUUQTHJUIVCDPNUSFWPSCMBEFTDPVOUSJFT w ϒϥ΢β্ͰΫΤϦΛ࣮ߦͯ͠Έ·͠ΐ͏ w ։ൃࢧԉͷΤίγεςϜ͕ॆ࣮͍ͯ͠Δ

  75. (SBQI2-৮ͬͯΈΔ ͨͿΜ4BGBSJͩͱಈ͔ͳ͍ʜ IUUQTCJUMZVDL)S

  76. (SBQI2-৮ͬͯΈΔ IUUQTCJUMZVDL)S

  77. (SBQI2-৮ͬͯΈΔ IUUQTCJUMZVDL)S

  78. 31$ 3FNPUF1SPDFEVSF$BMM w ϓϩάϥϜͷதʹॻ͍͍ͯΔίʔυͷҰ෦ͷखଓ͖ʢαϒϧʔν ϯؔ਺ʣΛผͷϓϩάϥϜ͔Β࣮ߦ͢ΔͨΊͷ࢓૊Έ w "1* w *%- ΠϯλʔϑΣʔεهड़ݴޠ

     w ݺͼग़͢ଆͱݺͼग़͞ΕΔଆͷ௨৴ن֨ΛఆΊΔ w 3&45తͰͳ͍෺ɺͱͯ͠ݴٴ͞ΕΔ͜ͱ΋
  79. H31$ w (PPHMF੡ w αʔϏεؒͰϋΠύϑΥʔϚϯεͳ31$Λ࣮ݱ͢Δ w ωΠςΟϒ࣮૷͸)551্ w 8FCϑϩϯτΤϯυ͔Β࢖͏ͨΊͷH31$8FC΋ w

    σϑΥϧτͷ*%-ʹ1SPUPDPM#V ff FST w όΠφϦදݱ
  80. 1SPUPDPM#VGGFST w ߏ଄Խ͞ΕͨσʔλΛόΠφϦʹγϦΞϥΠζ͢Δ w QSPUPϑΝΠϧͷ*%-ͰσʔλܕΛهड़͢Δ w 31$ͷͨΊͷهड़Λαϙʔτ͍ͯ͠Δ

  81. 1SPUPDPM#VGGFST syntax = "proto3"; package account; service Account { rpc

    Signup(SignupRequest) returns (SignupReply); } message SignupRequest { string name = 1; string password = 2; } message SignupReply { string token = 1; }
  82. H31$ͱ(SBQI2- w ͲͪΒ΋ݱ୅ͷ8FC։ൃͰར༻γʔϯ͕૿͍͑ͯΔ w ͦΕͧΕ͕ڧΈΛൃش͢Δయܕతͳγʔϯ w ϑϩϯτΤϯυͰॊೈ͔ͭޮ཰తʹσʔλΛऔಘ͍ͨ͠ w ωοτϫʔΫӽ͠ͷ໋ྩݺͼग़͠ͰߴεϧʔϓοτΛ࣮ݱ͍ͨ͠

  83. 3&45͸ʁ w H31$΋(SBQI2-΋3&45ʹൺ΂ͯߴػೳ w ߴػೳͳ୅ΘΓʹෳࡶͳ࣮૷΍τϨʔυΦϑ͕͋Δ w )551ͷੑ࣭ʹΑ͘Ϛονͨ͠3&45ʢ෩ʣ"1*͸ѻ͍΍͍͢ w ୯ػೳ΍খن໛ͳέʔε w

    ྫϩάΠϯ"1*ɺϑϩϯτΤϯυϦονͰͳ͍8FCͷิॿత ͳ"1*
  84. ͸ͯͳͷ8FC"1* w -46%T޲͚)BUFOB%FWFMPQFS$FOUFSʹ͍ͯΖ͍Ζ w IUUQEFWFMPQFSIBUFOBOFKQ w 44,%T޲͚ w (SBQI2-ϑϩϯτΤϯυʢ8FCεϚϗʣ͔Βͷར༻͕૿͍͑ͯΔ w

    ৽نαʔϏε͸(SBQI2-"1*Λ࣠ʹ͢Δ͜ͱ͕ଟ͍ w H31$γεςϜ಺෦ͷϚΠΫϩαʔϏε௨৴Ͱ࢖͍࢝Ί͍ͯΔ
  85. 8FC"1*Ͱͨ͠ w 3&45 w -46%T7444,%T w (SBQI2- w H31$

  86. ߨٛऴ

  87. None
  88. 8FC"1*ߨٛμΠδΣετͰͨ͠ w ͸ͯͳΠϯλʔϯͷߨٛͷҰ෦ͱͯ͠ɺ8FC"1*ʹؔ͢ΔߨٛΛ μΠδΣετʹ͓ͯ͠ಧ͚͠·ͨ͠ w ͜͏͍͏ײ͡Ͱ8FCαʔϏε։ൃʹؔΘΔ͍Ζ͍ΖͳτϐοΫΛ ߨٛύʔτͰֶͼɺ՝୊Λ΍Γ·͢ w ͦͯ͠ޙ൒ͷνʔϜ഑ଐͰ͸։ൃνʔϜͰࣾһͱҰॹʹ࣮ࡍͷϓϩ μΫτ։ൃ΍ݚڀΛ΍Γ·͢

    w ͦΜͳ͸ͯͳΠϯλʔϯΛʜʜ
  89. ͸ͯͳϦϞʔτΠϯλʔϯ w ࡢ೔ࠂ஌͠·ͨ͠ w ݄ޙ൒d݄લ൒ͷिؒ w Ԡืड෇։࢝͸݄த०ͳͷͰ΋͏গ͓͠଴͍ͪͩ͘͞ w ࠂ஌ϒϩά͔Β͓஌Βͤొ࿥Ͱ͖ΔͷͰੋඇ IUUQTEFWFMPQFSIBUFOBTUB

    ff DPNFOUSZJOUFSOQSFFOUSZ
  90. None
  91. ऴ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ