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

コードレビューの話

 コードレビューの話

新卒エンジニア向けにコードレビューを「する」話をしました。
http://hisaichi5518.hatenablog.jp/entry/2014/10/29/165721

hisaichi5518

October 29, 2014
Tweet

More Decks by hisaichi5518

Other Decks in Technology

Transcript

  1. (.01FQBCP *OD
    IJTBJDIJ
    ৽ଔݚम
    ίʔυϨϏϡʔͷ࿩

    View Slide

  2. ࣗݾ঺հ
    ͻ͍ͪ͞

    View Slide

  3. લ৬Ͱ΍ͬͯͨࣄ
    ιʔγϟϧήʔϜͷ"1*࡞ͬͯͨ
    ϦʔυΤϯδχΞ
    ϓϩδΣΫτͷϓϧϦΫɺશ෦ίʔυϨϏϡʔͯ͠
    ͨ
    ଞͷਓͻ͍͕ͪ͞0,͢Ε͹ϚʔδΈ͍ͨͳɻ௒
    େมͩͬͨʜʜʜʜʜ
    ίʔυϨϏϡʔʹ͍ͭͯߟ͑Δ͜ͱ͕ଟ͔ͬͨɻ

    View Slide

  4. ࠓ೔࿩͞ͳ͍ࣄ
    ϨϏϡʔͯ͠΋Β͏ͱ͖ͷ࿩
    ίʔυϨϏϡʔཷ·Δ໰୊ͱ͔ӡ༻
    ͯ͠Δͱग़ͯ͘Δ໰୊
    ίʔυϨϏϡʔಋೖ౳
    ίʔυϨϏϡʔΛʮ͢Δʯ࿩Λ͠·͢ɻ

    View Slide

  5. ίʔυϨϏϡʔͱ͸
    ίʔυϨϏϡʔʢӳ$PEFSFWJFXʣ
    ͸ɺιϑτ΢ΣΞ։ൃ޻ఔͰݟա͝
    ͞ΕͨޡΓΛݕग़ɾमਖ਼͢ΔͨΊʹ
    ιʔείʔυͷମܥతͳݕࠪʢࠪಡʣ
    Λߦ͏͜ͱɻ

    View Slide

  6. ίʔυϨϏϡʔͱ͸
    ίʔυϨϏϡʔʢӳ$PEFSFWJFXʣ
    ͸ɺιϑτ΢ΣΞ։ൃ޻ఔͰݟա͝
    ͞ΕͨޡΓΛݕग़ɾमਖ਼͢ΔͨΊʹ
    ιʔείʔυͷମܥతͳݕࠪʢࠪಡʣ
    Λߦ͏͜ͱɻ

    View Slide

  7. ຊ౰ʹ
    ͦΕ͚ͩʁ

    View Slide

  8. ίʔυϨϏϡʔͷ໨త
    ػցతʹൃݟग़དྷͳ͍ޡΓͷൃݟ
    ٕज़ྗ޲্
    ଐਓੑഉআ

    View Slide

  9. ͜ͷͭͷதͰ
    ৽ଔࢯ͕ʮࠓʯٻΊΒΕΔࣄ

    View Slide

  10. ʮࠓʯɺ৽ଔࢯͨͪʹظ଴͞ΕΔͰ͋Ζ͏͜ͱ
    ٕज़ྗ޲্
    ଐਓੑͷഉআ

    View Slide

  11. ίʔυϨϏϡʔͷ໨త
    ػցతʹൃݟग़དྷͳ͍ޡΓͷൃݟ
    ٕज़ྗ޲্
    ଐਓੑഉআ
    ͍ͭ͜͸ʁʁʁ

    View Slide

  12. ϨϕϧͱϨϕϧ
    Կࣄʹ΋ஈ֊͕͋Δ
    Ϩϕϧͱʹ෼͚ͯɺ·ͣ͸Ϩϕϧ
    Λग़དྷΔΑ͏ʹ͢Δɻ

    View Slide

  13. ֤໨తͷΰʔϧ
    ٕज़ྗ޲্
    ίʔυ͕ͳͥͦ͏ͳ͍ͬͯΔͷ͔ཧղग़
    དྷΔ
    ଐਓੑͷഉআ
    ίʔυ͕ͳͥͦ͏ͳ͍ͬͯΔͷ͔ཧղग़
    དྷΔ

    View Slide

  14. ·Δͬͱ·ͱΊͯ
    ίʔυΛཧղ͢Δ

    View Slide

  15. Ϩϕϧ
    ίʔυΛཧղ͢Δ

    View Slide

  16. ίʔυΛཧղ͢Δͬͯ
    Ͳ͏͢Ε͹͑͑Μ΍ʜ
    ೉͍͠Θʜʜʜ

    View Slide

  17. ϨϕϧΛୡ੒͢ΔͨΊͷ
    ίʔυϨϏϡʔʹ͓͍ͯ
    ΍Δ͜ͱ͸͚ͭͩ

    View Slide

  18. Θ͔Βͳ͍ࣄΛฉ͘

    View Slide

  19. ίʔυ͕ཧղͰ͖ΔΑ͏ʹͳΔʹ͸
    ͳΜͰ͜͏ͳ͍ͬͯΔͷ͔ʁΛߟ
    ͑ͳ͕ΒίʔυΛಡΉ
    Θ͔Βͳ͍ͱ͜Ζ͕͋Δͱ೰Ή
    ෼೰ΜͩΒࣗ෼Ͱ͸Θ͔Βͳ
    ͍ͱ൑அͯ͠ฉ͘ɻ

    View Slide

  20. ίʔυ͕ཧղͰ͖ΔΑ͏ʹͳΔʹ͸
    ʮͳΜͰ͜͜ʹϝιουॻ͍ͯΔΜͩΖʯ
    ʮͳΜͰ"͡Όͳͯ͘#ͬͯॻ͖ํͳΜͩΖʁʯ
    ʮͳΜͰ͜͜Ͱ"ͯ͠ΔΜͩΖʁʯ
    ʮͳΜͰʜʜʜʜʜʯ
    ʮͳΜͰͳΜ΍ʜʜʜʜʯ
    ʮͳΜͰʙʙʙʙʙʙʯ

    View Slide

  21. ͳΜͰɾ೰Ήɾฉ͘
    Λ܁Γฦ͍ͯ͠Δͱ
    Ϩϕϧ͕ग़དྷΔΑ͏ʹͳΔ

    View Slide

  22. ͳΜͰɾ೰Ήɾฉ͘
    Λ܁Γฦ͍ͯ͠Δͱ
    ίʔυ͕ཧղग़དྷΔΑ͏ʹͳΔ

    View Slide

  23. Ϩϕϧୡ੒

    View Slide

  24. ίʔυϨϏϡʔͷ໨త
    ػցతʹൃݟग़དྷͳ͍ޡΓͷൃݟ
    ٕज़ྗ޲্
    ଐਓੑഉআ
    ࣍͸ɺ͍ۙকདྷٻΊΒΕΔɺίΠπʂʂʂ̍̍

    View Slide

  25. Ϩϕϧ
    ػցతʹൃݟग़དྷͳ͍ޡΓͷ
    ൃݟ

    View Slide

  26. ػցతʹൃݟग़དྷΔ΋ͷ
    42-ͷ/໰୊
    ίʔυͷϑΥʔϚοτ

    View Slide

  27. 42-/໰୊
    ϧʔϓͷதͰ42-ൃߦ͠·͘Γ
    ճϧʔϓͨ͠Β42-͕
    ճୟ͔ΕΔʢ˔ʆЏ˔ʣ
    3BJMTʹ͸ɺCVMMFUͱ͍͏ͷ͕͋Δ
    CVMMFU͸ɺ/໰୊Λൃݟग़དྷΔ

    View Slide

  28. ίʔυϑΥʔϚοτ
    SVCPDPQͱ͔Λ࢖ͬͯɺελΠϧʹ
    ҧ൓ͨ͠ΒKFOLJOT͕͚͜Δͱ͔͢
    Δɻ

    View Slide

  29. View Slide

  30. ػցతʹΘ͔Δ΋ͷ͸
    ػցʹ೚ָͤͯΛ͢Δ

    View Slide

  31. ػցతʹൃݟग़དྷͳ͍PSग़དྷΔ͕খ೉͍͠
    ηΩϡϦςΟ
    42-
    ϨʔείϯσΟγϣϯ
    ࢓༷ͱίʔυͷໃ६
    ࣮ߦ଎౓
    ઃܭ
    Θ͔Γ΍͢͞
    "ͱ#ɺͲͪΒ͕φ΢͍ʁ

    View Slide

  32. ηΩϡϦςΟ
    944
    $43'
    42-ΠϯδΣΫγϣϯ
    ৄ͘͠͸

    View Slide

  33. 42-
    ΠϯσοΫε࢖ΘΕͯͳ͍
    ΠϯσοΫεແବʹషͬͯΔ

    View Slide

  34. ϨʔείϯσΟγϣϯ
    ಉ࣌ʹ࣮ߦ͞ΕͨΒ͏ΜͨΒ͔Μͨ
    Βʂʂʂʂʂʂʂʂʂʂʂʂʂ

    View Slide

  35. ࢓༷ͱίʔυͷໃ६
    ͦ΋ͦ΋͜ͷίʔυɺ࢓༷ʹ߹ͬͯ
    ͳ͍݅
    ςετҙຯͳ͍݅

    View Slide

  36. ࣮ߦ଎౓
    ͬͪ͜ͷํ͕ૣ͘Ͷʁʁʁʁ
    ඞͣϕϯνϚʔΫऔΔ
    Ωϟογϡͨ͠ํ͕͍͍͔΋ɺΈͨ
    ͍ͳ࿩ͱ͔΋͢Δ

    View Slide

  37. ઃܭ
    ίϯτϩʔϥʔʹϩδοΫΛॻ͘΂
    ͖Ͱ͸ͳ͍͏ΜͨΒ͔ΜͨΒ
    ίʔυϨϏϡʔͷ࣌఺Ͱ͜ͷ࿩͕ग़
    ΔΑ͏Ͱ͋Ε͹ɺίʔυΛॻ͘લʹ
    ૬ஊ͢ΔΑ͏ʹ͢Δɻ

    View Slide

  38. Θ͔Γ΍͢͞
    "ͱ#ɺൺ΂Δͱ"ͷํ͕Θ͔Γ΍͍͢ʂʂ̍
    WJNWT&NBDTͷΑ͏ͳͨͩͷԥΓ߹͍ʹͳ
    ΔՄೳੑ͕͋Δ
    ౴͕͑ͳ͍΋ͷʹؔͯ͠͸ɺର໘Ͱ࿩͢
    ʙ෼࿩ͯ͠ෆໟͱࢥͬͨΒෆໟͰ͢Ͷͬ
    ͯݴͬͯऴΘΒͤΔɻ

    View Slide

  39. "ͱ#ɺͲ͕ͬͪφ΢͍ʁ
    ࠓ͸ɺͬͪ͜ͷ΄͏͕φ΢͍ͥʂΈ
    ͍ͨͳͷ݁ߏ͋Δ
    άάͬͯݟ͚ͭͨͷ͕Φϫίϯʹͳͬ
    ͯΔՄೳੑ΋ʂʂʂʂʂ

    View Slide

  40. ʢ˔ʆЏʅ˔ʣ

    View Slide

  41. Ϩϕϧ
    ϝονϟϜζΠ

    View Slide

  42. ͜ΕΒ͕ग़དྷΔΑ͏ʹͳΔʹ
    ͸ɺ༷ʑͳ஌ࣝɾܦݧ͕ඞཁ

    View Slide

  43. ͦͯ͠ɺେલఏͱͯ͠
    ଞͷਓͷίʔυΛݟͯ
    ཧղग़དྷΔඞཁ΋͋Δɻ

    View Slide

  44. ͦΜͳ͜ΜͳͰ

    View Slide

  45. ίʔυϨϏϡʔͷ໨తΛཧղͯ͠
    ࠓɺ΍Δ΂͖͜ͱ΋ཧղग़དྷɺ
    ͦͷ΍Γํ΋ཧղग़དྷͨɻ
    ͦͷ࣍ʹ΍Δ͜ͱ΋Θ͔ͬͨʂʂ
    ΋͏ίʔυϨϏϡʔ͸׬ᘳʂʂ

    View Slide

  46. Ͱ͸ͳ͍ͷͰ͢ʜ

    View Slide

  47. ୈೋ෦
    ίʔυϦʔσΟϯάฤ

    View Slide

  48. ίʔυΛಡΉɻ
    τςϞɺϜζΧγΠ

    View Slide

  49. ࠷ߴͷಡΈํΛ
    ڭ͑ͯ΄͍͠ʂ

    View Slide

  50. Զ͕஌Γ͍ͨ
    Θʂʂʂʂʂ
    ʂʂʂʂʂʂ
    ʂʂʂʂʂʂ

    View Slide

  51. ίʔυϨϏϡʔ࣌ͷಡΈํ
    ʙͻ͍ͪ͞ฤʙ

    View Slide

  52. ݸͷεςοϓ

    View Slide

  53. ղܾ͍ͨ͠໰୊Λཧղ͢Δ
    ϓϧϦΫͷαϚϦʔΛಡΉ
    Կ͕͍͔ͨ͠
    ԿͷͨΊʹ͢Δͷ͔

    View Slide

  54. ςετ͕௨ͬͯΔ͔֬ೝ
    ςετ௨ͬͯͳ͍ͱجຊతʹ͸ݟͳ
    ͍

    View Slide

  55. ίϛοτϩάͱมߋ͞ΕͨίʔυΛશ෦ݟΔ
    ҰͭҰͭݟΔ
    ίϛοτϩάʹͳΜͰͦ͏͔ͨ͠ॻ͔ΕͯΔࣄ
    ͕͋ΔͷͰίϛοτϩάΛݟΔɻ
    ؾʹͳΔͱ͜Ζɾٙ໰͕͋ͬͨΒϝϞ͓ͯ͘͠
    ݟͨॠؒʹίϝϯτͨ͘͠ͳΔͷͰɺखݩͰUJH
    Λ࢖ͬͯݟΔɻ

    View Slide

  56. ಈ͔ͯ͠ΈΔ
    ίϛοτϩάΛશ෦ோΊऴΘͬͨΒɺ
    ؾʹͳͬͨͱ͜Ζͱ͔खݩͰಈ͔͠
    ͯΈΔ

    View Slide

  57. 'JMFT$IBOHFEΛோΊΔ
    શମͷ%J⒎ΛݟΔɻ
    εςοϓͰϝϞͨ͠ͱ͜Ζͷ੔ཧ

    View Slide

  58. 'JMFT$IBOHFEͷͱ͜ΖʹίϝϯτΛॻ͘
    ϝϞͨ͠ͱ͜ΖΛ(JUIVCʹίϝϯτ
    ͍ͯ͘͠

    View Slide

  59. ͜ͷݸͷεςοϓ
    ຖճ΍Δඞཁ͋Δʁ

    View Slide

  60. ͳ͍Ͱ͢

    View Slide

  61. ͜ͷ΍Γํ͸ϕετͰ͸ͳ͍͠ɺ
    ϕετ͸ଘࡏ͠ͳ͍ɻ
    ࣗ෼ͳΓͷ΍ΓํΛ୳͠ଓ͚Δ͔͠ͳ͍ɻ

    View Slide

  62. ͦΜͳ͜ΜͳͰ

    View Slide



  63. ΋͏ίʔυϨϏϡʔ
    ͸׬ᘳʂʂ

    View Slide

  64. Ͱ͸ͳ͍ͷͰ͢ʜ

    View Slide

  65. ୈࡾ෦
    ఻͑ํׂ͕ฤ

    View Slide

  66. ͜ͷεϥΠυΛ࡞Δʹ౰ͨͬͯɺ
    લ৬ޙഐ [email protected]
    ʹ
    νʔϜʹδϣΠϯͨ࣌͠ͷ
    ίʔυϨϏϡʔʹ͍ͭͯฉ͍ͯΈͨɻ

    View Slide

  67. ҙ͍ࣝͯͨ͜͠ͱ͸ʁ
    ʮͳΜͰ͜͏ͯ͠ΔΜͩʁʯ͓ͬͯ
    ΋ͬͨΒ·ͣฉ͘
    ϨϏϡʔͷॻ͖ํ

    View Slide

  68. ҙ͍ࣝͯͨ͜͠ͱ͸ʁ
    ʮͳΜͰ͜͏ͯ͠ΔΜͩʁʯ͓ͬͯ
    ΋ͬͨΒ·ͣฉ͘
    ϨϏϡʔͷॻ͖ํ

    View Slide

  69. ԿނɺϨϏϡʔͷॻ͖ํΛ
    ҙࣝ͢Δඞཁ͕͋Δͷ͔ʁ

    View Slide

  70. ࠔͬͨ͜ͱ͸ʁ
    ઌഐ͕ාͯ͘ࢥͬͨ͜ͱ͕ॻ͚ͳ͍
    ࣗ෼͸ྗྔແ͍ͷʹͦΜͳϨϏϡʔ
    ͰҒͦ͏ͳ͜ͱݴ͍͍ͬͯͷ͔

    View Slide

  71. ਓ͕͍ؒΔͱ΄΅࣮֬ʹਓؒؔ܎ͷ໰
    ୊͸ग़ͯ͘Δɻ
    ਓؒؔ܎ͷ໰୊͸ɺޡղ͔Β࢝·Δ͜
    ͱ͕ଟ͍ͱ๻͸ࢥ͍ͬͯΔɻ
    إΛ߹ΘͤͣʹߦΘΕΔίʔυϨϏϡʔ
    ͸ɺͦͷޡղΛੜΈग़͢৔ॴʹͳΔՄ
    ೳੑ͕͋Δͱ΋ࢥ͍ͬͯͯɺϨϏϡʔ
    ͷॻ͖ํΛؾΛ͚ͭΔ͜ͱͰɺͦ͏͍ͬ
    ͨޡղΛੜ·ΕΔͷΛগͳ͘͢Δ΂͖ɻ

    View Slide

  72. ਓؒؔ܎Ͱ೰Έͨ͘ͳ͍ͷͰɺ
    ޡղ͞Εͳ͍Α͏ʹ͢Δɻ

    View Slide

  73. ఻͑ํΛஸೡʹ͢Δ

    View Slide

  74. ཧ༝Λॻ͘

    View Slide

  75. ཧ༝Λॻ͘
    ʮ΄͛΄͛ɺΑ͘ͳ͍ؾ͕͠·͢ʯ
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ
    ͕͠·͢ʯ

    View Slide

  76. ๙ΊΔ

    View Slide

  77. ๙ΊΔ
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ
    ͕͠·͢ʯ
    ʮ͜ͷίʔυՄѪ͍ΜͰ͕͢ɺ΄͛
    ΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ͕͠·
    ͢ʯ

    View Slide

  78. ఏҊ͢Δ

    View Slide

  79. ఏҊ͢Δ
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ
    ͕͠·͢ʯ
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ
    ͕͠·͢ɻ;͕;͕ͷํ͕͍͍ͱ
    ࢥͬͨΜͰ͕͢ɺͲ͏Ͱ͠ΐ͏ʯ

    View Slide

  80. ఏҊʹ΋ཧ༝Λॻ͘

    View Slide

  81. ఏҊʹ΋ཧ༝Λॻ͘
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ͕͠
    ·͢ɻ;͕;͕ͷํ͕͍͍ͱࢥͬͨΜͰ
    ͕͢ɺͲ͏Ͱ͠ΐ͏ʯ
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ͕͠
    ·͢ɻ;͕;͕ͷํ͕ղফ͞Εɺ͔ͭ#ͳ
    ͷͰྑ͍ͱࢥͬͨΜͰ͕͢ɺͲ͏Ͱ͠ΐ
    ͏ʯ

    View Slide

  82. ͳΜͳΒ
    ίʔυͰࣔ͢

    View Slide

  83. ͳΜͳΒίʔυͰࣔ͢
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ͕͠·
    ͢ɻ;͕;͕ͷํ͕ղফ͞Εɺ͔ͭ#ͳͷ
    Ͱྑ͍ͱࢥͬͨΜͰ͕͢ɺͲ͏Ͱ͠ΐ͏ʯ
    ʮ΄͛΄͛͸"ͳͷͰɺΑ͘ͳ͍ؾ͕͠·
    ͢ɻ;͕;͕ͷํ͕ղফ͞Εɺ͔ͭ#ͳͷ
    Ͱྑ͍ͱࢥͬͨΜͰ͕͢ɺͲ͏Ͱ͠ΐ͏ʁ
    ͜͏͍͏ײ͡Ͱ͢ʯ

    View Slide

  84. ╹◡╹
    ŷţƄţŝƄƂƁŦʙ

    View Slide

  85. େৎ෉ʂʂʂʂʂʂ
    ஈ֊͕͋Δʂʂʂʂ

    View Slide

  86. ͜ͷ࿩͸ɺ͖ͬ͞࿩ͨ͠Ϩϕϧ͕ग़དྷ
    Δਓୡ͕΍Δ΂͖͜ͱɻ
    ୭ʹͰ΋ग़དྷΔɺ؆୯ͳ΋ͷ͕͋Δʂʂʂ

    View Slide

  87. σδλϧจࣈʹ͸
    ײ৘͕͜΋Γʹ͍͘
    ͱ͍͏࿩

    View Slide

  88. ର໘Ͱ࿩͍ͯ͠Δͱإ͕ݟ͑Δɻ
    ද৘͕Θ͔Δ
    ޡղʹܨ͕Γʹ͍͘

    View Slide

  89. จࣈͷΈͩͱ
    إ͕ͳ͍
    ද৘͕ͳ͍
    ޡղʹܨ͕Γ΍͍͢

    View Slide

  90. View Slide

  91. ͲͪΒ͕ΊͰ͍ͨ
    ͱײ͡Δʁ

    View Slide

  92. ʮ͍͍ͱࢥ͍·͢ʯ

    View Slide

  93. -(5.-PPLT(PPE5P.F

    View Slide

  94. ͲͪΒ΋ಉ͡ҙຯͳͷʹɺ
    શ͘ΊͰ͕ͨ͞ҧ͏ɻ

    View Slide

  95. View Slide

  96. ΋ͬͱ
    ΊͰͨ͘Ͱ͖Δ

    View Slide

  97. ΊͰͨ͘͢Δͱ͸

    View Slide

  98. ײ৘ׂ૿ʂʂʂ

    View Slide

  99. View Slide

  100. View Slide

  101. ϨϏϡʔͰྑͦ͞͏
    ͱࢥͬͨΒ࢖͏ɻ

    View Slide

  102. View Slide

  103. View Slide

  104. View Slide

  105. View Slide

  106. MHUNJO
    IUUQMHUNJO

    View Slide

  107. UJRBWDPN
    IUUQUJRBWDPN

    View Slide

  108. ͓ͬ͞Μ-(5.͹͔Γͩͱ
    ͭΒ͍ͷͰɺඒঁ-(5.
    IUUQIJTBJDIJIBUFOBCMPHKQFOUSZ

    View Slide

  109. &NPKJ

    View Slide

  110. View Slide

  111. ,BPNPKJ

    View Slide

  112. View Slide


  113. View Slide

  114. View Slide

  115. ͦΜͳ͜ΜͳͰ

    View Slide



  116. ΋͏ίʔυϨϏϡʔ
    ͸׬ᘳʂʂ

    View Slide

  117. ͱࠓ͸ࢥͬͱ
    ͜ʂʂʂ

    View Slide

  118. ࠓ೔࿩ͨ͜͠ͱ
    ίʔυϨϏϡʔͷ໨త
    ࠓ΍Δ΂͖͜ͱɾͦͷ΍Γํ
    ࣍ʹ΍Δ͜ͱ
    ϨϏϡʔͷ࢓ํʢͻ͍ͪ͞ฤʣ
    ϨϏϡʔ͸఻͑ํׂ͕
    ײ৘ࡾׂ૿͠ͰΊͰͨ͞Ξοϓ

    View Slide

  119. ࢀߟॻ੶63-ਓؒ
    [email protected]
    ఻͑ํׂ͕
    IUUQTHJTUHJUIVCDPN.BDP5BTV
    DEEECBGFEC
    IUUQIJUPEFIBUFOBCMPHDPNFOUSZ

    IUUQTIJCBZVIBUFOBCMPHDPNFOUSZ

    IUUQIBLPCFIBUFOBCMPHDPNFOUSZ

    View Slide