$30 off During Our Annual Pro Sale. View Details »

What can Emacs be? / Hackers Champloo 2019

What can Emacs be? / Hackers Champloo 2019

Wataru MIYAGUNI

June 29, 2019
Tweet

More Decks by Wataru MIYAGUNI

Other Decks in Technology

Transcript

  1. )BDLFST$IBNQMPP
    4BU
    8IBUDBO&NBDTCF
    ٶᅳ౉ !HPOHP;

    View Slide

  2. ࣗݾ঺հ
    w HJUIVCDPNHPOHP
    w !HPOHP;
    w 4NBSU)3 *OD

    View Slide

  3. &NBDTͷ࿩Λ͠·͢

    View Slide

  4. &NBDTͱ͸
    w ςΩετΤσΟλͰ͢
    w ͬͦ͘͞ެࣜ)1ΛݟͯΈΑ͏

    View Slide

  5. IUUQTXXXHOVPSHTPGUXBSFFNBDT

    View Slide

  6. View Slide

  7. &NBDT-JTQΛ࢖ͬͯɺઃఆͷΧελϚΠζ΍
    ػೳͷ௥Ճɾ֦ு͕Ͱ͖Δ

    View Slide

  8. View Slide

  9. ϑΝΠϧ໊΍ߦ਺ɺϞʔυͳͲ͕දࣔ͞Ε͍ͯΔ
    &NBDTͰ͸͓ೃછͷʰϞʔυϥΠϯʱ

    View Slide

  10. View Slide

  11. ΛྲྀͤΔ͙Β͍ࣗ༝ʹΧελϚΠζՄೳ

    View Slide

  12. ࠷৽ ҆ఆ
    ൛͸

    View Slide

  13. View Slide

  14. View Slide

  15. &NBDTʹ͸
    ςΩετΤσΟλͷଞʹ
    ʰผͷ࢟ʱ͕ଘࡏ͢Δ

    View Slide

  16. &NBDTʹ͸
    ςΩετΤσΟλͷଞʹ
    ʰผͷ࢟ʱ͕ଘࡏ͢Δ
    ☝:FT☝

    View Slide

  17. ݟʹߦ͜͏ɺͦͷʰઌʱΛ

    View Slide

  18. &NBDT͕Ͱ͖Δ͜ͱ
    &NBDT͕ͳΕΔ΋ͷ
    &NBDT͕ͳΕΔ΋ͷ
    ·ͱΊ
    ͋͐͡Μͩ

    View Slide

  19. w ࠷దɺ࠷ڧͷ&NBDT؀ڥ
    w ࣗ෼͚ͩͷ&NBDT͸ࣗ෼Ͱݟ͚ͭΔ͔͠ͳ͍

    w ଞͷΤσΟλͱͷൺֱ
    w ࠓ͚ͩ͸&NBDT͚ͩΛݟͯ΄͍͠
    ຊൃදͰ͓఻͑͠ͳ͍͜ͱ

    View Slide

  20. &NBDT͕Ͱ͖Δ͜ͱ
    &NBDT͕ͳΕΔ΋ͷ
    &NBDT͕ͳΕΔ΋ͷ
    ·ͱΊ
    ͋͐͡Μͩ

    View Slide

  21. &NBDT͕Ͱ͖Δ͜ͱ

    View Slide

  22. &NBDT͸ςΩετΤσΟλͳͷͰ
    ʰςΩετΛॻ͘✍ʱ
    ͜ͱΛੜۀͱ͢Δਓʹͱͬͯ
    ศརͳػೳ͕༻ҙ͞Ε͍ͯ·͢

    View Slide

  23. ศརͳػೳͱ͸ ଞʹ΋͋Δ͚ͲɺࠓճͷςʔϚʹԊͬͨ΍ͭ


    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ·ͨ͸6%1
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ

    View Slide

  24. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ

    View Slide

  25. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ
    ݟ΍͘͢ͳͬͯศར

    View Slide

  26. จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    2Կ͕ศར
    "ࢹೝੑ͸݈શͳ৺ͱςΩετΛҭΉ
    w ςΩετ͕࣋ͭҙຯΛࢹ֮తʹ೺ѲͰ͖Δ
    w ೴ͷෛ୲ΛݮΒ͢
    w ৭͚ͩͰͳ͘ελΠϧ΋มߋՄೳ
    w ϘʔϧυɺΠλϦοΫͳͲ

    View Slide


  27. QIQNPEF

    View Slide

  28. จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    ελΠϧͷมߋ͸
    &NBDT-JTQͰ ͔ͳΓࣗ༝ʹ
    ઃఆͰ͖Δ
    0OFNPSFUIJOH

    View Slide

  29. View Slide

  30. ޷͖ͳҐஔʹ޷͖ͳ৭Ͱ
    ண৭Մೳ

    View Slide

  31. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ

    View Slide

  32. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ

    View Slide

  33. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ
    ੈքதͷσʔλΛ
    &NBDT಺Ͱ࢖͑ͯศར

    View Slide

  34. 5$1 ιέοτ
    ௨৴͕Մೳ
    2Կ͕ศར
    "8FCαʔϏε͕&NBDT͔Βར༻Ͱ͖Δ

    View Slide

  35. 5$1 ιέοτ
    ௨৴͕Մೳ
    Α͘໨ʹ͢ΔϓϥάΠϯ
    w
    (PPHMF຋༁΍DPEJDΛ࢖ͬͯ຋༁͍ͨ͠
    w HPPHMFUSBOTMBUFFM FNBDTDPEJDFM
    w
    5XJUUFSͰπΠʔτͨ͠ΓGBWͬͨΓ
    w UXJUUFSJOHNPEF
    w
    ϝʔϧಡΜͩΓ
    w .FX

    View Slide

  36. 5$1 ιέοτ
    ௨৴͕Մೳ
    w ͜ͷؔ਺Λ࢖ͬͯΈ·͢
    w VSMSFUSJFWFTZODISPOPVTMZ63-

    w ࢦఆͨ͠63-ʹ(&5ϦΫΤετΛૹΓɺϨεϙϯεΛऔಘ

    w ͓ࢼ͠8FCαʔϏε
    w JGDPOpHJP
    w ΞΫηε͖ͯͨ͠ਓ ͜ͷ৔߹ࣗ෼ࣗ਎
    ͷ(MPCBM*1"EESFTTͱ͔ɺ
    6TFS"HFOUͱ͔ࠃίʔυͱ͔Λදࣔͯ͘͠ΕΔ ศར

    ࢼ͠ʹ΍ͬͯΈ·͠ΐ͏

    View Slide

  37. View Slide

  38. 5$1 ιέοτ
    ௨৴͕Մೳ
    ߋʹࡉ͔͍ઃఆͰ௨৴Λ։͖͍ͨ࣌͸
    NBLFOFUXPSLQSPDFTTΛ࢖͏
    w 6%1Λ࢖͑ͨΓ
    w ૹ৴͚ͩͰͳ͘ड৴΋ՄೳͱͳͬͨΓ
    0OFNPSFUIJOH

    View Slide

  39. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ

    View Slide

  40. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ

    View Slide

  41. ศརͳػೳͱ͸
    จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ
    5$1 ιέοτ
    ௨৴͕Մೳ

    ಉظϓϩηεΛىಈͰ͖Δ
    ·͡ศར

    View Slide


  42. ಉظϓϩηεΛىಈͰ͖Δ
    2Կ͕ศར
    "ͭ·ΓԿͰ΋Ͱ͖Δ Լه͸ྫ

    View Slide


  43. ಉظϓϩηεΛىಈͰ͖Δ
    ԿͰ΋ྫ
    w ιʔείʔυ੔ܗπʔϧΛىಈ͠ɺࠓ։͍͍ͯΔϑΝΠ
    ϧ៉ྷʹͯ͠΋Β͏
    w HPGNU (P

    w SVGP 3VCZ

    w ෳࡶͳ)551ϦΫΤετΛඞཁͱ͢Δ8FCαʔϏε͸ɺઐ
    ༻ͷΫϥΠΞϯτϥΠϒϥϦ͕͋Δ͸ͣͳͷͰɺϓϩηεىಈ͠
    ͯͦͷ݁Ռ͚ͩΛ&NBDTͰνΣοΫ͢Δ

    View Slide


  44. ಉظϓϩηεΛىಈͰ͖Δ
    ⏯ಉظϓϩηεͷىಈํ๏ ͍͔ͭ͋͘Δ

    w DBMMQSPDFTT
    w ࢦఆͨ͠ίϚϯυΛ࣮ߦ
    w TIFMMDPNNBOE
    w ࢦఆͨ͠ίϚϯυΛγΣϧΛ௨࣮ͯ͠ߦ
    w ͭ·Γlczͱ͔lzͱ͔࢖͑Δʂ

    View Slide

  45. View Slide


  46. ಉظϓϩηεΛىಈͰ͖Δ
    2DBMMQSPDFTTͰ࣌ؒͷ͔͔ΔϓϩηεΛ
    ىಈͨ͠Β&NBDT͕ݻ·ͬͯ͠·ͬͨ
    "&NBDT͸γϯάϧεϨουͳͷͰ
    5ISFBEͷ࣮૷͕ਐΜͰ͍Δͱ͍͏࿩΋ௌ͖·͕͢ɺࠓճ͸ׂѪ
    0OFNPSFUIJOH

    View Slide


  47. ಉظϓϩηεΛىಈͰ͖Δ
    ΋ͪΖΜඇಉظϓϩηε΋ىಈͰ͖Δ
    w TUBSUQSPDFTTΛ࢖ͬͨΓ
    w DBMMQSPDFTTͷඇಉظ൛Έ͍ͨͳౕ
    w TIFMMDPNNBOEͰίϚϯυʹΛ͚ͭͨΓ
    w DBMMQSPDFTTͰ࣮ߦ͢ΔίϚϯυ͸σʔϞϯͱ͠
    ͯىಈ͢Δ෺ʹݶఆͨ͠Γ
    0OFNPSFUIJOH

    View Slide

  48. &NBDT͕Ͱ͖Δ͜ͱ͕Θ͔ͬͨͱ͜ΖͰ

    View Slide

  49. &NBDT͕Ͱ͖Δ͜ͱ
    &NBDT͕ͳΕΔ΋ͷ
    &NBDT͕ͳΕΔ΋ͷ
    ·ͱΊ
    ͋͐͡Μͩ

    View Slide

  50. &NBDT͕ͳΕΔ΋ͷ

    View Slide

  51. ԿʹͳΕΔͷ
    ͭ໨͸͜Ε

    View Slide

  52. ԿʹͳΕΔͷ
    ϝσΟΞϓϨΠϠʔʹͳΕΔ
    ͭ໨͸͜Ε

    View Slide

  53. "QQMF57͍࣋ͬͯ·͔͢
    ಥવͰ͕͢
    Ҿ༻ݩIUUQTXXXBQQMFDPNKQTIPQCVZUWBQQMFUWIEHC
    $PQZSJHIU˜"QQMF*OD"MMSJHIUTSFTFSWFE

    View Slide

  54. "JS1MBZ࢖͍ͬͯ·͔͢
    ͲͪΒ͔ͱ͍͏ͱ
    ˜ۼԬढ़೭
    ˜#"/%"*/".$0&OUFSUBJONFOU*OD
    ˜#/&*ʗ130+&$5J.!4
    ˜#/&*ʗ130+&$5$*/%&3&--"SJHI

    View Slide

  55. "JS1MBZͱ͸
    l"JS1MBZΛ࢖͑͹ɺϏσΦɺࣸਅɺԻָͳͲΛɺ
    "QQMF੡σόΠε͔Β͋ͳͨͷ"QQMF57ɺ
    ͓ؾʹೖΓͷεϐʔΧʔɺਓؾͷεϚʔτςϨϏʹ
    ετϦʔϛϯάͰ͖·͢ɻz
    Ҿ༻ݩIUUQTXXXBQQMFDPNKQBJSQMBZ
    $PQZSJHIU˜"QQMF*OD"MMSJHIUTSFTFSWFE
    ˜ۼԬढ़೭
    ˜#"/%"*/".$0&OUFSUBJONFOU*OD
    ˜#/&*ʗ130+&$5J.!4
    ˜#/&*ʗ130+&$5$*/%&3&--"SJHI

    View Slide

  56. w ͓खܰ
    w "JS1MBZରԠػث͸ଟ͍
    "JS1MBZศར
    ˜ۼԬढ़೭
    ˜#"/%"*/".$0&OUFSUBJONFOU*OD
    ˜#/&*ʗ130+&$5J.!4
    ˜#/&*ʗ130+&$5$*/%&3&--"SJHI

    View Slide

  57. "JS1MBZ͸ศརʂͦ͏ࢥ͍ͬͯͨ͋Δ೔

    View Slide

  58. IUUQTOUPHJUIVCJP"JS1MBZIUNM

    View Slide

  59. “ This document describes these protocols, as
    implemented in Apple TV software version 5.0, iOS
    5.1 and iTunes 10.6. They are based on well-known
    standard networking protocols such as Multicast
    DNS, HTTP, RTSP, RTP or NTP, with custom
    extensions. “

    View Slide

  60. “ This document describes these protocols, as
    implemented in Apple TV software version 5.0, iOS
    5.1 and iTunes 10.6. They are based on well-known
    standard networking protocols such as Multicast
    DNS, HTTP, RTSP, RTP or NTP, with custom
    extensions. “

    View Slide

  61. "JS1MBZ4FSWFS1SPUPDPM
    1045QMBZ ▶7JEFPͷ࠶ੜ
    1045TUPQ ⏹7JEFPͷఀࢭ
    1045SBUF ࠶ੜ଎౓ͷมߋ
    165QIPUP ը૾ͷදࣔ
    ಈը΍ը૾ͷ੍ޚ͸)5513FRVFTUͰՄೳ

    View Slide

  62. ʮ)5513FRVFTUͰૢ࡞Ͱ͖ΔΜͩͳʯ

    View Slide

  63. &NBDTͷ͜ͱΛࢥ͍ग़ͯ͠ΈΑ͏

    View Slide

  64. &NBDTͷ͜ͱΛࢥ͍ग़ͯ͠ΈΑ͏

    View Slide

  65. &NBDT͸ιέοτ௨৴͕Մೳ
    "JS1MBZ͸͘͝Ұൠతͳωοτ
    ϫʔΫϓϩτίϧͰձ࿩͕Մೳ

    View Slide

  66. View Slide

  67. ✨"JSQMBZCJOEJOHTUP&NBDT
    w IUUQTHJUIVCDPNHPOHPBJSQMBZFM
    ⚙ओͳػೳ
    w -"/಺ʹ͋Δ"JS1MBZػثΛݕࡧͰ͖Δ
    w Πϯλʔωοτ্ʹ͋Δը૾΍ಈըΛࢦఆͨ͠
    "JS1MBZػثͰ࠶ੜͰ͖Δ
    &NBDT͔Β"JS1MBZΛ৮Ε·ͨ͠

    View Slide

  68. &NBDT͔Β"JS1MBZΛ৮Ε·ͨ͠
    6TBHF
    SFRVJSFBJSQMBZ

    BJSQMBZEFWJDFCSPXTF

    lz
    "JS1MBZαʔόͷ৘ใ
    BJSQMBZJNBHFWJFX6TFSTHPOHP%FTLUPQBQQMFUWKQH

    BJSQMBZWJEFPQMBZIUUQTFYBNQMFDPNFNBDTNW

    View Slide

  69. BJSQMBZFM͕΍͍ͬͯΔ͜ͱ
    -"/಺ʹ͋Δ"JS1MBZαʔό ػث
    Λௐࠪ͠ɺ*1
    ΞυϨεΛήοτ
    Ͱݟ͚ͭͨ"JS1MBZαʔόʹ޲͚ͯʮ͜͜ʹஔ͍
    ͯ͋ΔಈըϑΝΠϧΛ࠶ੜͯ͘͠ΕΑͳʯͱૹ৴
    ͋ͱ͸"JS1MBZαʔόଆͰউखʹ࠶ੜ։࢝

    View Slide

  70. BJSQMBZFM͕΍͍ͬͯΔ͜ͱ
    -"/಺ʹ͋Δ"JS1MBZαʔό ػث
    Λௐࠪ͠ɺ*1
    ΞυϨεΛήοτ
    Ͱݟ͚ͭͨ"JS1MBZαʔόʹ޲͚ͯʮ͜͜ʹஔ͍
    ͯ͋ΔಈըϑΝΠϧΛ࠶ੜͯ͘͠ΕΑͳʯͱૹ৴
    ͋ͱ͸"JS1MBZαʔόଆͰউखʹ࠶ੜ։࢝
    N%/4ͱ͍͏࢓૊ΈΛ࢖͍ͬͯ͘Α

    View Slide

  71. N%/4 NVMUJDBTU%/4

    “ In computer networking, the multicast
    DNS (mDNS) protocol resolves host names
    to IP addresses within small networks that do
    not include a local name server. “
    Ҿ༻ݩIUUQTFOXJLJQFEJBPSHXJLJ.VMUJDBTU@%/4

    View Slide

  72. N%/4 NVMUJDBTU%/4

    View Slide

  73. N%/4 NVMUJDBTU%/4

    View Slide

  74. N%/4 NVMUJDBTU%/4

    View Slide

  75. N%/4 NVMUJDBTU%/4

    View Slide

  76. N%/4 NVMUJDBTU%/4

    View Slide

  77. N%/4 NVMUJDBTU%/4

    (let ((process (make-network-process :name "mdns"
    :coding 'binary
    :buffer (current-buffer)
    :host "224.0.0.251"
    :service 5353
    :type 'datagram))
    (send-text (dns-write
    `((id ,(random 65000))
    (opcode query)
    (queries (("_airplay._tcp.local" (type PTR))))))))
    (process-send-string process send-text))
    ࢀߟ: LAN ಺ͷ AppleTV ͷ IP ΞυϨεΛऔಘ͢Δ Emacs Lisp
    http://gongo.hatenablog.com/entry/2013/01/17/004306

    View Slide

  78. BJSQMBZFM͕΍͍ͬͯΔ͜ͱ
    -"/಺ʹ͋Δ"JS1MBZαʔό ػث
    Λௐࠪ͠ɺ*1
    ΞυϨεΛήοτ
    Ͱݟ͚ͭͨ"JS1MBZαʔόʹ޲͚ͯʮ͜͜ʹஔ͍
    ͯ͋ΔಈըϑΝΠϧΛ࠶ੜͯ͘͠ΕΑͳʯͱૹ৴
    ͋ͱ͸"JS1MBZαʔόଆͰউखʹ࠶ੜ։࢝

    View Slide

  79. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ

    View Slide

  80. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ

    View Slide

  81. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ

    View Slide

  82. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ
    1045QMBZ)551
    $POUFOU-FOHUI
    $POUFOU5ZQFUFYUQBSBNFUFST
    $POUFOU-PDBUJPOIUUQFYBNQMFDPNFNBDTNW
    4UBSU1PTJUJPO

    View Slide

  83. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ
    1045QMBZ)551
    $POUFOU-FOHUI
    $POUFOU5ZQFUFYUQBSBNFUFST
    $POUFOU-PDBUJPOIUUQFYBNQMFDPNFNBDTNW
    4UBSU1PTJUJPO
    ʮ։࢝ҐஔΛͷҐஔʹࢦఆʯͷҙ

    View Slide

  84. ʮखݩͷ1$ʹ͋ΔϜʔϏʔϑΝΠϧΛ
    ɹɹ"QQMF57Ͱ࠶ੜͯ͠΄͍͠ͷ͚ͩͲ
    ɹɹ͍͍ͪͪΠϯλʔωοτʹ্͛Δͷ͸େมͩʯ
    ʮ͏ʔΜɺϜʔϏʔσʔλΛ)5513FTQPOTFͰ
    ɹɹฦͯ͋͛͠Ε͹͍͍͚͔ͩͩΒ
    ɹɹϩʔΧϧͰαʔόΛཱͯΕ͹ͳΜͱ͔ʯ
    ศར͚ͩͲʜ෺଍Γͳ͍

    View Slide

  85. ʮ͔ͤͬؔ͘਺Λͭݺͼग़͚ͩ͢Ͱ࠶ੜ
    ɹɹͰ͖Δͷʹࣄલʹ)551αʔόΛཱͯͯ
    ɹɹͦ͜ʹϑΝΠϧΛஔ͍ͯʔͱ͍͏ͷ͸
    ɹɹΊΜͲ͍͔͘͞ͳʯ
    ʮͦ͏ͩͳʔͦ͏ͩΑͶʔʯ
    ศར͚ͩͲʜ෺଍Γͳ͍

    View Slide

  86. ʮɻɻɻʯ

    View Slide

  87. ʮɻɻɻʯ

    View Slide

  88. ʮʂʂʯ

    View Slide

  89. ✌੔͍·ͨ͠

    View Slide

  90. w &NBDT-JTQͰهड़͞Εͨ

    8FCαʔό TJNQMFIUUQEFM
    Λ֦ு
    w "JS1MBZαʔό͔ΒͷϦΫΤετΛॲཧ͢Δ͚ͩ
    w BJSQMBZFMͰ࠶ੜΛ࢝ΊΔλΠϛϯάͰ

    ඇಉظϓϩηεͰىಈ͢Δ
    BJSQMBZWJEFPTFSWFSFM HPOHPBJSQMBZFMʹಉࠝ

    View Slide

  91. 2Ͳ͏ͯ͠ඇಉظͰىಈ͢Δͷ

    View Slide

  92. 2Ͳ͏ͯ͠ඇಉظͰىಈ͢Δͷ
    "&NBDT͔ͩΒͶ

    View Slide

  93. ࠶ੜ ഑৴
    ͢ΔϑΝΠϧʹΑͬͯ͸
    ɹҰ౓ͷ௨৴Ͱѻ͏σʔλྔ͕ଟ͘
    ɹ͕͔͔࣌ؒΔ⏱

    ௨৴ʹूத͍ͯ͠Δؒɺ&NBDT͸

    ɹΩʔೖྗΛड͚͚ͭͳ͘ ʹ͘͘
    ͳΔͷͰɺ

    ɹ·ͱ΋ʹ&NBDT͕ૢ࡞Ͱ͖ͳ͍

    View Slide


  94. "JS1MBZͱͷ΍ΓͱΓ͚ͩΛ͢Δ
    &NBDTϓϩηε͕͋Ε͹ྑ͍͡ΌΜ

    View Slide

  95. BJSQMBZWJEFPQMBZ
    ʹϩʔΧϧϑΝΠϧύε͕౉͞ΕΔͱ

    BJSQMBZWJEFPTFSWFSFMΛ&NBDTͷEBFNPONPEFͰىಈ
    TJNQMFIUUQEΛ࢖ͬͯɺͰࢦఆͨ͠ϑΝΠϧΛTFSWF͢ΔΑ͏ͳ

    8FCαʔόΛىಈ
    ىಈͨ͠8FCαʔόͷ*1ΞυϨεͱϙʔτ൪߸Λ࢖͍ɺ

    BJSQMBZFM͕"JS1MBZػثʹʮl\JQBEES^\QPSU^zͰ഑৴ͯ͠ΔಈըΛ࠶ੜͯ͠ʯͱ

    1045ϦΫΤετΛૹΔ
    ϦΫΤετΛड͚ͱͬͨ"JS1MBZػث͕BJSQMBZWJEFPTFSWFSʹΞΫηε͢Δ
    BJSQMBZWJEFPTFSWFS͕͍͍ײ͡ʹσʔλΛฦͯ͋͛͠Δ
    ࠶ੜΛఀࢭ͢ΔλΠϛϯάͰɺىಈͨ͠BJSQMBZWJEFPTFSWFS΋ఀࢭ͢Δ
    BJSQMBZFMBJSQMBZWJEFPTFSWFSFM
    ࣍ͷεϥΠυ͔ΒਤͰઆ໌͠·͢➡

    View Slide

  96. View Slide

  97. View Slide

  98. View Slide

  99. View Slide

  100. View Slide

  101. View Slide

  102. ͬͪ͜ͷ&NBDT͸Ҿ͖ଓ͖ૢ࡞Մೳ

    View Slide

  103. View Slide

  104. View Slide

  105. View Slide

  106. View Slide

  107. View Slide

  108. ԿʹͳΕΔͷ
    ϝσΟΞϓϨΠϠʔʹͳΕΔ
    ͭ໨͸͜Εͷ·ͱΊ

    View Slide

  109. ԿʹͳΕΔͷ
    ϝσΟΞϓϨΠϠʔʹͳΕΔ͠
    ɹϝσΟΞαʔόʹ΋ͳΕΔ
    ͭ໨͸͜Εͷ·ͱΊ

    View Slide

  110. &NBDT͕Ͱ͖Δ͜ͱ
    &NBDT͕ͳΕΔ΋ͷ
    &NBDT͕ͳΕΔ΋ͷ
    ·ͱΊ
    ͋͐͡Μͩ

    View Slide

  111. &NBDT͕ͳΕΔ΋ͷ

    View Slide

  112. ԿʹͳΕΔͷ
    ͭ໨͸͜Ε

    View Slide

  113. ԿʹͳΕΔͷ
    ήʔϜػʹͳΕΔ
    ͭ໨͸͜Ε

    View Slide

  114. ϑΝϛϦʔίϯϐϡʔλ͝ଘ஌Ͱ͔͢
    ಥવͰ͕͢
    Ҿ༻ݩIUUQTKBXJLJQFEJBPSHXJLJϑΝϛϦʔίϯϐϡʔλ

    View Slide

  115. &NBDTͰಈ͘७౓&NBDT-JTQͷ
    ϑΝϛϦʔίϯϐϡʔλͷΤϛϡϨʔλ
    Λ։ൃͨ͠࿩Λ͠·͢
    IUUQTHJUIVCDPNHPOHPFNBDTOFT
    ݁࿦͔Βݴ͏ͱ

    View Slide

  116. FNBDTOFT·ͰͷಓͷΓ

    View Slide

  117. w $16 .04ͷΧελϜ൛
    ͷ໋ྩηο
    τ͸ެ։͞Ε͍ͯΔ
    w IUUQPCFMJTLNFVLSFGFSFODFIUNM
    w ղઆهࣄ΍ςετ༻30.΋ଟ਺͋Δ
    w IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT
    ϑΝϛίϯ/JOUFOEP&OUFSUBJONFOU4ZTUFN Ҏ߱/&4

    View Slide

  118. ʮϓϩάϥϛϯάݴޠͰ/&4ͷΤϛϡϨʔλΛ࡞੒͢Δʯ͸
    ࡢࠓ௝͘͠ͳ͍ίϯςϯπ Լه΋΄ΜͷҰྫ

    w 3VCZ੡
    w IUUQTHJUIVCDPNNBNFPQUDBSSPU
    w 1)1੡
    w IUUQTHJUIVCDPNIBTFHBXBUPNPLJQIQUFSNJOBMOFTFNVMBUPS
    w (P੡
    w IUUQTHJUIVCDPNGPHMFNBOOFT ˡ೥લ

    ࢓༷͕͋ΔͳΒ࠶ݱͰ͖ΔΑͶ

    View Slide

  119. ʮϫγ΋΍ͬͯΈ͍͚ͨͲɺ
    ɹɹ΋͸΍ग़ਚͯͯ͘͠ࠓߋײ͋Δͳʯ
    ʮͦΕʹͳΜ͔ͩΜͩͰ೉ͦ͠͏ͩʯ
    ਺೥લͷ๻

    View Slide

  120. ͦΜͳ͋Δ೥݄

    View Slide

  121. Ҿ༻ݩCVJMEFSTDPO
    IUUQTCVJMEFSTDPOJPUPLZPTFTTJPOBBCDFECG

    View Slide

  122. ʮΊͬͪΌΘ͔Γ΍͍͢ Θ͔Βͳ͍
    ʯ
    ʮ΋͏Ұ౓ࢿྉಡΈ௚ͯ͠ΈΔ͔ʯ
    ൃදݟͨ͋ͱͷ๻

    View Slide

  123. ʮ/&4͸ҎԼͷσόΠεͰߏ੒͞Ε͍ͯΔʯ
    ;Ή;Ήɻɻɻ

    View Slide

  124. ʮ/&4͸ҎԼͷσόΠεͰߏ੒͞Ε͍ͯΔʯ
    ;Ή;Ήɻɻɻ

    View Slide

  125. ʮ/&4͸ҎԼͷσόΠεͰߏ੒͞Ε͍ͯΔʯ
    w Χηοτ
    w $16
    w 116 1JDUVSF1SPDFTTJOH6OJU

    w 3".
    w ίϯτϩʔϥ
    ;Ή;Ήɻɻɻ

    View Slide

  126. w Χηοτ
    w $16
    w 116
    w 3".
    w ίϯτϩʔϥ
    Χηοτ಺ͷ30.ʹࠁ·Ε͍ͯΔ
    ΩϟϥΫλʔ΍എܠσʔλΛಡΈࠐΉ
    ϑΥʔϚοτ͸ܾ·͍ͬͯΔ

    ʮɻɻɻɻɻʯ

    View Slide

  127. w Χηοτ
    w $16
    w 116
    w 3".
    w ίϯτϩʔϥ
    ʮɻɻɻɻɻɻʯ
    ໋ྩηοτΛݸ࣮ͣͭ૷͍ͯ͘͠
    جຊతʹ࿦ཧԋࢉ͕Ͱ͖Ε͹ྑ͍

    View Slide

  128. w Χηοτ
    w $16
    w 116
    w 3".
    w ίϯτϩʔϥ
    ʮɻɻɻɻɻɻɻʯ
    ͬ͘͟Γݴ͑͹ը໘ʹ৭͚͍ͭͯ͘ɻ
    ೚ҙͷҐஔʹ೚ҙͷ৭Λ

    View Slide

  129. w Χηοτ
    w $16
    w 116
    w 3".
    w ίϯτϩʔϥ
    ʮɻɻɻɻɻɻɻɻʯ
    ϝϞϦۭؒΈ͍ͨͳ΋ͷͩ
    ༷ʑͳܭࢉ݁ՌΛอ؅Ͱ͖Ε͹0,

    View Slide

  130. w Χηοτ
    w $16
    w 116
    w 3".
    w ίϯτϩʔϥ
    ʮɻɻɻɻɻɻɻɻɻʯ
    "ͱ͔#ͱ͔ेࣈͱ͔
    ͱʹ͔͘ೖྗ൑ఆͰ͖Ε͹ྑ͍ͷͩΖ͏

    View Slide

  131. ʮɻɻɻɻɻɻɻɻɻɻʯ
    w Χηοτ
    w $16
    w 116
    w 3".
    w ίϯτϩʔϥ

    View Slide

  132. w Χηοτ
    w $16
    w 116
    w 3".
    w ίϯτϩʔϥ
    ʮʂʂʂʂʂʂʂʂʂʂʂʯ

    View Slide

  133. ✌&NBDTͰͰ͖Δ͡ΌΜ

    View Slide

  134. ७౓&NBDT-JTQ/&4&NVMBUPS
    IUUQTHJUIVCDPNHPOHPFNBDTOFT
    վΊͯ঺հ
    ֤σόΠεΛͲͷΑ͏ʹͯ͠&NBDTͰ࣮ݱͯ͠
    ͍Δ͔ɺ۷ΓԼ͍͖͛ͯ·͢

    View Slide

  135. ΧηοτͷऔΓѻ͍
    OFTDBSUSJEHFFM

    View Slide

  136. Χηοτ͔Βٵ͍ग़ͨ͠30.Πϝʔδ͸
    J/&4ͱݺ͹ΕΔϑΝΠϧϑΥʔϚοτͰ
    ߏ੒͞Ε͍ͯΔ
    IUUQTXJLJOFTEFWDPNXJOEFYQIQ*/&4
    ΧηοτͷऔΓѻ͍

    View Slide

  137. Χηοτ͔Βٵ͍ग़ͨ͠30.Πϝʔδ͸
    J/&4ͱݺ͹ΕΔϑΝΠϧϑΥʔϚοτͰ
    ߏ੒͞Ε͍ͯΔ
    IUUQTXJLJOFTEFWDPNXJOEFYQIQ*/&4
    ✂ϑΥʔϚοτܾ·͍ͬͯΔͳΒ
    ܾΊଧͪͰσʔλநग़Ͱ͖ΔΑͶʂʂ
    ΧηοτͷऔΓѻ͍

    View Slide

  138. * ϑΝΠϧͷϔομ৘ใΛऔಘ
    ** ☝ϔομ৘ใ͔Βɺ৭σʔλ΍

    ΩϟϥΫλʔύλʔϯͷҐஔΛಛఆ
    ***⛏͋ͱ͸ͻͨ͢ΒSFBE͍ͯ͘͠
    ΧηοτͷऔΓѻ͍

    View Slide

  139. * ϑΝΠϧͷϔομ৘ใΛऔಘ
    ** ☝ϔομ৘ใ͔Βɺ৭σʔλ΍

    ΩϟϥΫλʔύλʔϯͷҐஔΛಛఆ
    ***⛏͋ͱ͸ͻͨ͢ΒSFBE͍ͯ͘͠
    (defconst nes/cartridge-ines-header-spec
    '((constant vec 4 u8)
    (size-of-prg-rom u8)
    (size-of-chr-rom u8)
    (flags6 u8)
    (flags7 u8)
    (size-of-prg-ram u8)
    (flags9 u8)
    (flags10 u8)
    (zero-pad vec 5 u8)))
    (bindat-unpack
    nes/cartridge-ines-header-spec
    (encode-coding-string rom-data 'raw-text))
    ΧηοτͷऔΓѻ͍

    View Slide

  140. * ϑΝΠϧͷϔομ৘ใΛऔಘ
    ** ☝ϔομ৘ใ͔Βɺ৭σʔλ΍

    ΩϟϥΫλʔύλʔϯͷҐஔΛಛఆ
    ***⛏͋ͱ͸ͻͨ͢ΒSFBE͍ͯ͘͠
    ΧηοτͷऔΓѻ͍

    View Slide

  141. $16ͷΤϛϡϨʔτ
    OFTDQVFM

    View Slide

  142. ͷ໋ྩҰཡ
    $16ͷΤϛϡϨʔτ

    "%$ "/% "4- #$$ #$4 #&2 #*5 #.* #/& #1- #3, #7$ #74 $-$
    $-% $-* $-7 $.1 $19 $1: %&$ %&9 %&: &03 */$ */9 */: +.1
    +43 -%" -%9 -%: -43 /01 03" 1)" 1)1 1-" 1-1 30- 303 35*
    354 4#$ 4&$ 4&% 4&* 45" 459 45: 5"9 5": 549 59" 594 5:"

    View Slide

  143. ͷ໋ྩҰཡ

    "%$ "/% "4- #$$ #$4 #&2 #*5 #.* #/& #1- #3, #7$ #74 $-$
    $-% $-* $-7 $.1 $19 $1: %&$ %&9 %&: &03 */$ */9 */: +.1
    +43 -%" -%9 -%: -43 /01 03" 1)" 1)1 1-" 1-1 30- 303 35*
    354 4#$ 4&$ 4&% 4&* 45" 459 45: 5"9 5": 549 59" 594 5:"
    ✍ͻͨ͢Βॻ͍͍͔ͯ͘͠Ͷ͑
    $16ͷΤϛϡϨʔτ

    View Slide

  144. $16ͷΤϛϡϨʔτ
    (logand #b0101 #b1100) ;; AND => #b0100
    (logior #b0101 #b1100) ;; OR => #b1101
    (logxor #b0101 #b1100) ;; XOR => #b1001
    ;; Emacs Lisp ʹ͸ඪ४Ͱແ͔ͬͨͷͰࣗ࡞
    (logbitp 0 #b1010) ;; => nil
    (logbitp 1 #b1010) ;; => t
    (logbitp 2 #b1010) ;; => nil
    FNBDTOFTͰΑ͘࢖ͬͨϏοτԋࢉؔ਺

    View Slide

  145. (defun nes/instruction-dex (c _address _mode)
    "Decrement X Register"
    (let* ((register (nes/cpu->register c))
    (data (logand (1- (nes/cpu-register->idx-x register)) #xff)))
    (setf (nes/cpu-register->idx-x register) data)
    (nes/instruction--set-zero-and-negative-flags register data)))
    (defun nes/instruction-dey (c _address _mode)
    "Decrement Y Register"
    (let* ((register (nes/cpu->register c))
    (data (logand (1- (nes/cpu-register->idx-y register)) #xff)))
    (setf (nes/cpu-register->idx-y register) data)
    (nes/instruction--set-zero-and-negative-flags register data)))
    (defun nes/instruction-adc (c addr-or-data mode)
    "Add with Carry"
    (let* ((register (nes/cpu->register c))
    (data (if (eq mode :immediate)
    addr-or-data
    (nes/cpu-read c addr-or-data)))
    (acc (nes/cpu-register->acc register))
    (result (+ acc
    data
    (if (nes/cpu-register->sr-carry register)
    1 0))))
    (nes/instruction--set-zero-and-negative-flags register result)
    (setf (nes/cpu-register->sr-carry register) (> result #xff))
    (setf (nes/cpu-register->sr-overflow register)
    (and (not (nes--logbitp 7 (logxor acc data)))
    (nes--logbitp 7 (logxor acc result))))
    (setf (nes/cpu-register->acc register) (logand result #xFF))))
    ͻͨ͢ΒϏοτԋࢉ
    $16ͷΤϛϡϨʔτ

    View Slide

  146. 116ͷΤϛϡϨʔτ
    OFTQQVFM

    View Slide

  147. FNBDTOFTʹ͓͚Δը໘ͱ͸
    ͢ͳΘͪ&NBDT όοϑΝ
    Ͱ͋Δ
    116ͷΤϛϡϨʔτ

    View Slide

  148. FNBDTOFTʹ͓͚Δը໘ͱ͸
    ͢ͳΘͪ&NBDT όοϑΝ
    Ͱ͋Δ
    &NBDTͳΒͰ͖Δ
    116ͷΤϛϡϨʔτ

    View Slide

  149. FNBDTOFTͰ͸HBNFHSJEFMΛ࢖༻
    lHBNFHSJEFMMJCSBSZGPSJNQMFNFOUJOHHSJECBTFEHBNFTPO&NBDTz
    &NBDTʹඪ४Ͱଘࡏ͢ΔϥΠϒϥϦ
    116ͷΤϛϡϨʔτ

    View Slide

  150. FNBDTOFTͰ͸HBNFHSJEFMΛ࢖༻
    lHBNFHSJEFMMJCSBSZGPSJNQMFNFOUJOHHSJECBTFEHBNFTPO&NBDTz
    &NBDTʹඪ४Ͱଘࡏ͢ΔϥΠϒϥϦ
    IUUQHPOHPIBUFOBCMPHDPNFOUSZ
    116ͷΤϛϡϨʔτ

    View Slide

  151. FNBDTOFTͰ͸HBNFHSJEFMΛ࢖༻
    lHBNFHSJEFMMJCSBSZGPSJNQMFNFOUJOHHSJECBTFEHBNFTPO&NBDTz
    &NBDTʹඪ४Ͱଘࡏ͢ΔϥΠϒϥϦ
    ͳΜ͔͍͍ײ͡ʹ
    ৭͚ͭΕͯศར
    IUUQHPOHPIBUFOBCMPHDPNFOUSZ
    116ͷΤϛϡϨʔτ

    View Slide

  152. 3".ͷΤϛϡϨʔτ

    View Slide

  153. 3".ͷΤϛϡϨʔτ
    WJEFPSBN NBLFWFDUPSY


    ͜Ε͚ͩ

    View Slide

  154. ΩʔϘʔυͷΤϛϡϨʔτ
    OFTLFZCPBSEFM

    View Slide

  155. &NBDT͸ςΩετΤσΟλͳͷͰɺ
    ΋ͪΖΜΩʔόΠϯυઃఆ͸Մೳ
    ΩʔϘʔυͷΤϛϡϨʔτ

    View Slide

  156. &NBDT͸ςΩετΤσΟλͳͷͰɺ
    ΋ͪΖΜΩʔόΠϯυઃఆ͸Մೳ
    ΩʔϘʔυͷΤϛϡϨʔτ
    ྫ$USMYˠKͰTLLNPEF͕ىಈ͢Δ
    HMPCBMTFULFZ LCE$YK
    TLLNPEF

    View Slide

  157. ΩʔϘʔυͷΤϛϡϨʔτ
    ;; w Λԡ͢ͱ্ɺs Λԡ͢ͱԼ
    (defvar nes/keypad:up (kbd "w"))
    (defvar nes/keypad:down (kbd “s"))
    ;; CPU ʹରͯ͠ʮ্(4)͕ԡ͞Εͨͧʯͱ఻͑Δ key binding
    (define-key map nes/keypad:up
    (lambda () (interactive) (nes/keypad-check k 4)))
    ;; CPU ʹରͯ͠ʮԼ(5)͕ԡ͞Εͨͧʯͱ఻͑Δ key binding
    (define-key map nes/keypad:down
    (lambda () (interactive) (nes/keypad-check k 5)))

    View Slide

  158. ४උ͸੔͍·ͨ͠

    View Slide

  159. ४උ͸੔͍·ͨ͠

    View Slide

  160. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ
    ςετ༻30.Λಈ͔ͯ͠ΈΔ
    צ
    σόοά͢Δ
    ͱΛ܁Γฦ͢
    ̋̋Λಈ͔ͯ͠ΈΔ

    View Slide

  161. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ
    ςετ༻30.Λಈ͔ͯ͠ΈΔ
    צ
    σόοά͢Δ
    ͱΛ܁Γฦ͢
    ̋̋Λಈ͔ͯ͠ΈΔ

    View Slide

  162. ΤϛϡϨʔλʔ༻ͷ30.͕๛෋
    w OFTUFTUOFT ඞਢڃ

    w ༷ʑͳ$16໋ྩΛ࣮ߦ
    w ͜ΕΛύε͢Δ͜ͱ͔Β࢝·Δ
    w QBMFUUFOFT ͜͜Ͱࠞཚ͢Δ

    w ΧϥʔύϨοτΈ͍ͨͳͷΛදࣔͯ͠ΈΔ༻
    w ͜͜Ͱ่Ε͕ൃੜ్ͯ͠ํʹ͘ΕΔ
    IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT

    View Slide

  163. ΤϛϡϨʔλʔ༻ͷ30.͕๛෋
    w OFTUFTUOFT ඞਢڃ

    w ༷ʑͳ$16໋ྩΛ࣮ߦ
    w ͜ΕΛύε͢Δ͜ͱ͔Β࢝·Δ
    w QBMFUUFOFT ͜͜Ͱࠞཚ͢Δ

    w ΧϥʔύϨοτΈ͍ͨͳͷΛදࣔͯ͠ΈΔ༻
    w ͜͜Ͱ่Ε͕ൃੜ్ͯ͠ํʹ͘ΕΔ
    IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT

    View Slide

  164. ΤϛϡϨʔλʔ༻ͷ30.͕๛෋
    w OFTUFTUOFT ඞਢڃ

    w ༷ʑͳ$16໋ྩΛ࣮ߦ
    w ͜ΕΛύε͢Δ͜ͱ͔Β࢝·Δ
    w QBMFUUFOFT ͜͜Ͱࠞཚ͢Δ

    w ΧϥʔύϨοτΈ͍ͨͳͷΛදࣔͯ͠ΈΔ༻
    w ͜͜Ͱ่Ε͕ൃੜ్ͯ͠ํʹ͘ΕΔ
    IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT

    View Slide

  165. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ
    ςετ༻30.Λಈ͔ͯ͠ΈΔ
    צ
    σόοά͢Δ
    ͱΛ܁Γฦ͢
    ̋̋Λಈ͔ͯ͠ΈΔ

    View Slide

  166. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ
    ςετ༻30.Λಈ͔ͯ͠ΈΔ
    צ
    σόοά͢Δ
    ͱΛ܁Γฦ͢
    ̋̋Λಈ͔ͯ͠ΈΔ
    ໨νΣοΫ
    ָ͍͠
    ·ͨը໘
    ่ΕͯΔ΍Μ͚

    View Slide

  167. σόοάͷखॱ
    ςετ30.Λ࣮ߦ➡ಈ͔ͳ͍
    ଞͷΤϛϡϨʔλͰಈ͔ͯ͠ΈΔ➡ಈ͘
    ͷιʔείʔυΛಡΉ
    ࢀߟʹ͢Δ
    ʹ໭Δ㽉

    View Slide

  168. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ
    ςετ༻30.Λಈ͔ͯ͠ΈΔ
    צ
    σόοά͢Δ
    ͱΛ܁Γฦ͢
    ̋̋Λಈ͔ͯ͠ΈΔ

    View Slide

  169. IUUQTHJUIVCDPNHPOHPFNBDTOFTQVMM

    View Slide

  170. Ͱ͖͚ͨͲɺ·ͩ·ͩ໰୊͋Γ
    ·ͣ஗͍ ͖ͬ͞ͷౕɺഒ଎

    νϥ͖ͭ΋ͪΐͬͱؾʹͳΔ

    View Slide

  171. Ͱ͖͚ͨͲɺ·ͩ·ͩ໰୊͋Γ
    ·ͣ஗͍ ͖ͬ͞ͷౕɺഒ଎

    νϥ͖ͭ΋ͪΐͬͱؾʹͳΔ
    ɹɹɹɹɹ͍͔ͭղܾ͢ΔͰ͠ΐ͏

    View Slide

  172. ԿʹͳΕΔͷ
    ήʔϜػʹͳΕΔ
    ͭ໨͸͜Εͷ·ͱΊ
    ࠷ۙήʔϜϘʔΠ൛΋ݟ͚ͭ·ͨ͠
    IUUQTHJUIVCDPNWSFF[FFCPZ

    View Slide

  173. &NBDT͕Ͱ͖Δ͜ͱ
    &NBDT͕ͳΕΔ΋ͷ
    &NBDT͕ͳΕΔ΋ͷ
    ·ͱΊ
    ͋͐͡Μͩ

    View Slide

  174. w ιέοτ௨৴ͱϓϩηεىಈ͕

    ͋Ε͹େ఍ͷ͜ͱ͸Ͱ͖Δ
    w &NBDTͷࣗ༝͞ͱ૊߹ΘͤΔ͜ͱͰ

    ςΩετΤσΟλͷ࿮Λ௒͑ͨ͜ͱ͕

    ࣮ݱͰ͖Δ
    ·ͱΊ

    View Slide

  175. ·ͱΊ
    ͋ͳͨͷྗͰɺ&NBDTͷதʹ຾Δ
    ·ͩݟ͵ʰԿ͔ʱΛ࡞ͬͯΈ·ͤΜ͔

    View Slide

  176. w &NBDTͰಈ͘/&4ΤϛϡϨʔλΛ࡞͍ͬͯΔ࿩
    w IUUQHPOHPIBUFOBCMPHDPNFOUSZ
    w .FSSZ$ISJTUNBTJO&NBDT
    w IUUQHPOHPIBUFOBCMPHDPNFOUSZ
    w &NBDTͷNPEFMJOFʹण͕࢘ྲྀΕΔ೔
    w IUUQHPOHPIBUFOBCMPHDPNFOUSZ
    w &NBDTͱ"QQMF57ͷՍ͚ڮͱͳΔBJSQMBZFM
    w IUUQHPOHPIBUFOBCMPHDPNFOUSZ
    ͓ΘΓ

    View Slide