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

Web System Architecture に最適化された並列処理系

Web System Architecture に最適化された並列処理系

* 情報量爆発
* 半導体トレンド
* レスポンス性の維持・向上
* 耐障害性の追求
* 高負荷計算処理アプリケーションの増加
* 習得容易にする必要性

徹底的に並列性・分散性・レスポンス性・耐障害性を追求する処理系 Elixir (エリクサー) の採用

* 3種類の並列性とそれぞれに関わる最適化を提案する
* 命令並列性 → 静的命令スケジューリング
* SIMD型並列性 → Hastega (ヘイスガ)
* MIMD型並列性 → Sabotender (サボテンダー)
* これらにより並列性だけでなくレスポンス性と耐障害性も維持・向上できる

Susumu Yamazaki (ZACKY)

April 13, 2019
Tweet

More Decks by Susumu Yamazaki (ZACKY)

Other Decks in Technology

Transcript

  1. 84"ʹ࠷దԽ͞Εͨฒྻॲཧܥ
    ࢁ࡚ਐɹ৿ਖ਼࿨ɹٱߐ༤تɹߴ੉ӳر
    ʲ֓ཁʳ
    w छྨͷฒྻੑͱͦΕͧΕʹؔΘΔ࠷దԽΛఏҊ͢Δ
    w ໋ྩฒྻੑɹɹˠ੩త໋ྩεέδϡʔϦϯά
    w 4*.%ܕฒྻੑˠ)BTUFHB ϔΠεΨ

    w .*.%ܕฒྻੑˠ4BCPUFOEFS αϘςϯμʔ

    w ͜ΕΒʹΑΓฒྻੑ͚ͩͰͳ͘Ϩεϙϯεੑͱ଱ো֐ੑ΋ҡ࣋ɾ޲্Ͱ͖Δ
    ˢ
    w పఈతʹฒྻੑɾ෼ࢄੑɾϨεϙϯεੑɾ଱ো֐ੑΛ௥ٻ͢Δॲཧܥ&MJYJSͷ࠾༻
    ˢ
    w ৘ใྔരൃ
    w ൒ಋମτϨϯυΫϩοΫप೾਺৳ͼ಄ଧͪίΞ਺૿Ճ෼ࢄܕΞʔΩςΫνϟ༏Ґ
    w Ϩεϙϯεੑͷҡ࣋ɾ޲্
    w ଱ো֐ੑͷ௥ٻ
    w ߴෛՙܭࢉॲཧΞϓϦέʔγϣϯͷ૿Ճ
    w शಘ༰қʹ͢Δඞཁੑ
    1
    ˜4VTVNV:BNB[BLJ

    View Slide

  2. ࣗݾ঺հ
    w ๺۝भࢢཱେֶࠃࡍ؀ڥ޻ֶ෦

    ।ڭत
    w New!φοδࣾձ࣮૷ݚڀηϯλʔ

    ηϯλʔ௕
    w New!ֶੜɾब৬ࢧԉ୲౰
    w 1FSTPOBM7JTJPO$P$SFBUPS
    w ,,4)J'5
    w &MJYJSਪ͠GVLVPLBFY)BTUFHB
    ;&".
    w ٕज़૬ஊɼڞಉݚڀґཔɼਐ࿏૬ஊɼ

    ద৬਍அͳͲɼਵ࣌ड෇·͢


    ˜4VTVNV:BNB[BLJ

    View Slide

  3. എܠ৘ใྔരൃ
    3
    ˜4VTVNV:BNB[BLJ

    View Slide

  4. ৘ใྔരൃ
    ೥ʹσʔλͷ૯ྔ͕θλόΠτ
    ೥ʹθλόΠτʹୡ͢ΔݟࠐΈ
    4
    ˜4VTVNV:BNB[BLJ

    View Slide

  5. ৘ใྔരൃ
    ೥ʹຖ݄ΤΫαόΠτ૿Ճ
    ೥ʹຖ݄ΤΫαόΠτ૿ՃݟࠐΈ
    ৘ใͷ૿Ճྔ͕Ճ଎
    5
    ˜4VTVNV:BNB[BLJ

    View Slide

  6. എܠ൒ಋମτϨϯυ
    6
    ˜4VTVNV:BNB[BLJ

    View Slide

  7. ܭࢉೳྗ͕௥͍͔ͭͳ͍
    )FOOFTZ1BUUFSTPO

    ೥ʹ$16ΫϩοΫप೾਺͸಄ଧͪʹ
    7
    ˜4VTVNV:BNB[BLJ

    View Slide

  8. ͳͥΫϩοΫप೾਺Λ৳͹ͤͳ͍͔ʁ
    w ΫϩοΫप೾਺ͷ૿େ͸ফඅిྗͱൃ೤ྔͷ૿େΛট͘
    w ిݯڙڅྔͱ೤఻ಋ཰͓Αͼྫྷ٫ೳྗ͕௥͍͔ͭͳ͍
    w ʙ()[ఔ౓ͰৗԹͰ҆ఆಈ࡞͢ΔݶքΛܴ͍͑ͯΔ
    w ڝٕ༻ΦʔόʔΫϩοΫͰ͸ӷମ஠ૉ౳ʹਁ͚Δ౳ʹ
    ΑΓ()[Ҏ্Ͱಈ࡞͍ͤͯ͞Δ
    w ௨ৗͷ1$΍αʔόʔͰ͸ৗԹՔಇͰ͖Δ͜ͱ͕ཁ݅
    8
    ˜4VTVNV:BNB[BLJ

    View Slide

  9. ͔ΘΓʹίΞ਺͕૿Ճ
    w ೥Ҏ߱ͷϓϩηοαͷਐԽ
    w ºΫϩοΫप೾਺
    w ˓ίΞ਺


    ˜4VTVNV:BNB[BLJ
    *OUFM$PSF

    &YUSFNF9

    ΫϩοΫ ()[
    ίΞ਺
    *OUFM$PSFJ

    9&

    ΫϩοΫ ()[
    ίΞ਺

    View Slide

  10. ࠓޙͷ൒ಋମτϨϯυ
    w ϝϞϦͷߴ଎Խ͕ϓϩηοαͷߴ଎Խʹ௥͍͍͍ͭͯͳ͍
    w ίΞ਺͸ࠓޙ΋૿େ͠ଓ͚ͯɼ.*.%Ͱ਺ઍίΞ΋ݱ࣮ʹ
    w ൒ಋମϓϩηεඍࡉԽ͸ݶքΛܴ͑ͭͭ͋Δ
    w ଞͷ֤छूੵٕज़ʹΑΓճ࿏ن໛͸౰෼૿େͷ༨஍͕͋Δ
    w ճ࿏௕͕ࠓ·ͰҎ্ʹ௕͘ͳΔ
    w ࠓ·ͰҎ্ʹϝϞϦΞΫηεͱޫ଎͕཯଎ʹͳΔ
    w ڞ༗ϝϞϦিಥɼϑΥϯɾϊΠϚϯɾϘτϧωοΫ
    w ճ࿏શମͰΫϩοΫΛಉظͤ͞Δ͜ͱ͕ෆՄೳʹ
    w ڞ༗ܕΞʔΩςΫνϟΑΓ΋෼ࢄܕΞʔΩςΫνϟ༏Ґ
    10
    ˜4VTVNV:BNB[BLJ

    View Slide

  11. എܠϨεϙϯεੑͱ
    ଱ো֐ੑ͕ߴ͍84"
    11
    ˜4VTVNV:BNB[BLJ

    View Slide

  12. Ϩεϙϯεੑͷߴ͍84"
    w ϞόΠϧͷීٴ
    w ϖʔδදࣔʹ͕͔͔࣌ؒΔͱ཭୤
    ‎Ϩεϙϯεੑ͕ߴ͍84"͕ٻΊΒΕΔ
    w ࣌ؒ͋ͨΓϦΫΤετ਺͕૿͑ͯ΋Ϩεϙϯεੑ͕҆ఆ
    ͍ͯ͠Δ͜ͱ΋ٻΊΒΕΔ
    12
    ˜4VTVNV:BNB[BLJ

    View Slide

  13. ଱ো֐ੑͷߴ͍84"
    w ༏लͳΤϯδχΞͷ࠾༻ڝ૪ͷܹԽ
    w ಇ͖ํվֵͷਐల
    w ো֐ʹΑΔ໷ؒૣேɾٳ೔ͷग़ۈΛݮΒ͢ඞཁੑ
    ‎ো֐͕Ίͬͨʹى͜Βͳ͍84"͕ٻΊΒΕΔ
    13
    ˜4VTVNV:BNB[BLJ

    View Slide

  14. എܠߴෛՙܭࢉॲཧ
    ΞϓϦέʔγϣϯͷ૿Ճ
    14
    ˜4VTVNV:BNB[BLJ

    View Slide

  15. ߴෛՙܭࢉॲཧΞϓϦέʔγϣϯͷ૿Ճ
    w ػցֶशٕज़ͷਐలʹΑΓɼ΢ΣϒΞϓϦέʔγϣϯʹ΋
    ߴෛՙܭࢉॲཧ͕ٻΊΒΕΔ࣌୅͕౸དྷ͢Δ
    w ͔ͭલड़ͷ௨Γɼ΢ΣϒΞϓϦέʔγϣϯʹ͸Ϩεϙϯε
    ੑ͕ٻΊΒΕΔ
    w ߴϨεϙϯεੑೳࢦ޲ͷ࠷దԽٕज़͕ٻΊΒΕΔ
    w ैདྷͷ)1$Ͱ୳ٻ͞Εͨߴεϧʔϓοτࢦ޲ͷ࠷దԽ
    Ͱ͸ෆे෼
    15
    ˜4VTVNV:BNB[BLJ

    View Slide

  16. ޿ٕ͘ज़ల։͢Δʹ͸

    शಘ༰қ͕NVTU
    16
    ˜4VTVNV:BNB[BLJ

    View Slide

  17. ༗๬ͳιϦϡʔγϣϯ

    &MJYJS
    17
    ˜4VTVNV:BNB[BLJ

    View Slide

  18. 4IBSFE%BUB
    $PSF #1 $PSF2
    3.14
    ैདྷͷݴޠͷ໰୊఺
    w ෳ਺ͷίΞͰσʔλΛڞ༗͠
    ͍ͯΔͱԾఆ͢Δ


    ˜4VTVNV:BNB[BLJ

    View Slide

  19. 4IBSFE%BUB
    $PSF #1 $PSF2
    3.14
    →1.5
    ഁյతߋ৽͕ϘτϧωοΫ
    w ͋ΔίΞ͕ڞ༗σʔλΛ

    ഁյతߋ৽ͨ͠৔߹
    w ଞͷίΞʹ௨஌ͯ͠

    ॲཧΛࢭΊΔඞཁ͕͋Δ
    w ଎౓௿Լʹͭͳ͕Δ
    w ίΞ਺͕૿͑Ε͹૿͑Δ΄Ͳ

    ਂࠁͳӨڹΛ΋ͨΒ͢


    ˜4VTVNV:BNB[BLJ
    6QEBUF /PUJGZ
    4UPQ1SPDFTTJOH

    View Slide

  20. 4IBSFE%BUB
    $PSF #1 $PSF2
    3.14
    &MJYJS͸શ͕ͯΠϛϡʔλϒϧͰ͋Δ
    w &MJYJSͰ͸σʔλͷഁյతߋ৽
    ͕ൃੜ͢Δ͜ͱ͸ͳ͍
    w ଞͷίΞͷॲཧΛࢭΊͳͯ͘
    ྑ͍
    w ίΞ਺͕૿͑ͯ΋ॲཧೳྗΛ
    ҡ࣋Ͱ͖Δ
    ‎ฒྻੑʹ༏ΕΔ


    ˜4VTVNV:BNB[BLJ
    %PO`U

    6QEBUF
    %PO`UOFFEUP

    TUPQQSPDFTTJOH

    View Slide

  21. 4IBSFE%BUB
    $PSF #1 $PSF2
    3.14
    4DBMBʹର͢Δ༏Ґੑ
    w 4DBMB΋جຊ͸ΠϛϡʔλϒϧͰ͋Δ
    w ͔͠͠ϚϧνύϥμΠϜΏ͑ʹϛϡʔλϒϧͳίʔυ΋ࠞࡏ͍ͯ͠Δ
    w ϛϡʔλϒϧͳίʔυͷଘࡏʹΑΓ࠷దԽͷલఏΛపఈͰ͖ͣશମͷੑೳ͕ѱԽ͢Δ


    ˜4VTVNV:BNB[BLJ
    %PO`U

    6QEBUF
    %PO`UOFFEUP

    TUPQQSPDFTTJOH
    4IBSFE%BUB
    $PSF #1 $PSF2
    3.14
    →1.5
    6QEBUF /PUJGZ
    4UPQ1SPDFTTJOH

    View Slide

  22. &MJYJSͷ($
    w &MJYJS͸ϓϩηε͝ͱʹಠཱͨ͠ϝϞϦۭؒΛ࣋ͪɼ($΋ϓϩηε͝ͱʹ
    ಠཱ͍ͯ͠Δ
    w ϓϩηεؒ௨৴Ҏ֎Ͱ͸ϓϩηεؒͰσʔλΛڞ༗͠ͳ͍͍ͯ͘લఏ
    w ͔ͭฒߦ($Ͱ͋Δ
    w +BWBͰ໰୊ʹͳΔ'VMM($ʹΑΔ4UPQUIFXPSME͕ൃੜ͠ͳ͍
    w ͜ͷ఺΋4DBMBʹର͢Δ༏Ґੑ
    w ෼ࢄܕΞʔΩςΫνϟʹద߹͢Δ
    w ࠓޙͷ൒ಋମτϨϯυΛ౿·͑Δͱ༗ར
    22
    ˜4VTVNV:BNB[BLJ

    View Slide

  23. ΢ΣϒγεςϜʹ͓͚Δ&MJYJSͷ༏Ґੑ
    ୯Ґ࣌ؒ͋ͨΓϦΫΤετ਺͕૿Ճͯ͠΋

    ϨεϙϯελΠϜΛҡ࣋Ͱ͖Δ
    23
    ˜4VTVNV:BNB[BLJ
    ↑Slower
    ↓Faster
    'FESFDIFTLJ ( $PTUB -$1BOE;V⒎P .,&MJYJSQSPHSBNNJOHMBOHVBHFFWBMVBUJPOGPS*P5
    *&&&*OUFSOBUJPOBM4ZNQPTJVNPO$POTVNFS&MFDUSPOJDT *4$&
    QQr POMJOF
    %0*
    *4$&

    View Slide

  24. ྫ֎ɾҟৗॲཧ
    w USZDBUDI SFTDVF
    ʹΑΔྫ֎ɾҟৗॲཧ͸ɼਖ਼͘͠هड़͞Εͳ͍͜ͱ͕͋·Γʹ΋ଟ͍
    w &MJYJSͰ͸࣍ͷྫ֎ɾҟৗॲཧͷ࢓૊ΈΛ୅ΘΓʹఏڙ͍ͯ͠Δ
    w ྫ֎ॲཧ͋Β͔͡Ί૝ఆ͞ΕΔॲཧ͸λϓϧͰฦ͢

    \PL SFTVMU^\FSSPS SFBTPO^
    w ҟৗॲཧ૝ఆ͍ͯ͠ͳ͍ΠϨΪϡϥʔͳೖྗΛ༩͑ΒΕͨ࣌
    ϓϩηε͝ͱҟৗऴྃ͢Δ
    ؂ࢹϓϩηε͕ҟৗऴྃΛݕ஌͢Δ
    ؂ࢹϓϩηε͕֘౰ϓϩηεΛ࠶ىಈ͢Δ
    ͳʹ͝ͱ΋ͳ͘ɼ࣍ͷೖྗΛड͚෇͚ΒΕΔ
    㾎ϓϩηε୯ҐͰϝϞϦۭ͕ؒ෼཭͍ͯ͠Δ͜ͱͰɼϓϩηε୯Ґͷ࠶ىಈ͕ՄೳʹͳΔ
    24
    ˜4VTVNV:BNB[BLJ

    View Slide

  25. 1IPFOJYͷ༏Ґੑ
    w Ϩεϙϯεੑʹ༏ΕΔ
    w جຊੑೳྑ޷
    w )551αϙʔτ
    w -JWF7JFX
    ‎ϖʔδදࣔʹ͕͔͔࣌ؒΒͳ͍ͷͰ཭୤๷ࢭʹد༩
    w ଱ো֐ੑʹ༏ΕΔ
    w ؂ࢹϓϩηεʹΑΔҟৗ෮ؼ
    w ఆظతϓϩηε࠶ىಈˠϝϞϦϦʔΫ͕ݪҼͷύϑΥʔϚϯεѱԽɾো֐ͷ๷ࢭ
    w GVMM($ʹΑΔTUPQUIFXPSME͕ൃੜ͠ͳ͍
    ‎ো֐ൃੜ਺͕ܹݮ͢ΔͷͰɼ໷ؒૣேٳ೔ग़ۈܹݮɼΤϯδχΞͷಇ͖ํվળʂ
    25
    ˜4VTVNV:BNB[BLJ

    View Slide

  26. शಘ༰қ


    ˜4VTVNV:BNB[BLJ
    @@
    c&OVNNBQ .GPP


    c&OVNNBQ .CBS



    EFGNPEVMF.EP
    EFGGPP O
    EPO
    EFGCBS O
    EPO
    FOE
    w ӈͷίʔυྫ
    w ͔Β ·ͰͷϦετʹର͠
    w ֤ཁૉʹGPPΛద༻ Y

    w ֤ཁૉʹCBSΛద༻

    w ͨ݁͠ՌΛಘΔ
    w σʔλΛ্͔Βॱʹม׵͍ͯ͘͠ύϥμΠϜͰ
    هड़Ͱ͖Δ
    w ؔ਺ͷݺग़ઌ͸جຊతʹҰҙʹಛఆͰ͖Δ
    ‎ॳֶऀʹ͸ΦϒδΣΫτࢦ޲ύϥμΠϜΑΓ

    शಘ༰қ
    㾎ࠓ·ͰͷύϥμΠϜʹͳ͡Μͩਓʹ͸
    VOMFBSOJOH͢Δඞཁ͕͋Δ

    View Slide

  27. &MJYJS;FO4UZMF


    ˜4VTVNV:BNB[BLJ
    @@
    c&OVNNBQ .GPP


    c&OVNNBQ .CBS



    EFGNPEVMF.EP
    EFGGPP O
    EPO
    EFGCBS O
    EPO
    FOE
    &MJYJS;FO4UZMF

    &OVNNBQελΠϧ

    w ષͰ͋Δཧ༝
    w ષͱ͸ຊ࣭ඒͰ͋Δ
    w ӈͷελΠϧ͸σʔλม׵ͷϑ
    ϩʔΛද͍ͯ͠Δ
    w σʔλม׵ͷϑϩʔͱͯ͠

    ϓϩάϥϛϯάΛଊ͑Δ

    ύϥμΠϜ͸ຊ࣭Λଊ͍͑ͯͯ

    ୯७͕ͩදݱੑ๛͔Ͱ͋Δ
    ‎ӈͷελΠϧ͸ຊ࣭ඒͰ͋Δ

    ͢ͳΘͪષͰ͋Δ

    View Slide

  28. &MJYJS;FO4UZMFͱ΢Σϒϓϩάϥϛϯά
    w &MJYJS;FO4UZMFͱ8FCϓϩάϥϛϯά͸૬ੑ͕͍͍
    w (&5

    cՃ޻ ϦΫΤετˠΫΤϦ

    c%#ಡࠐΈ

    cՃ޻ ݁ՌˠϨεϙϯε

    w 1045

    cՃ޻ ϦΫΤετˠΫΤϦ

    c%#ॻࠐΈ

    cՃ޻ ݁ՌˠϨεϙϯε

    28
    ˜4VTVNV:BNB[BLJ

    View Slide

  29. ٕज़త՝୊
    w ػցֶशͷϥΠϒϥϦͷॆ࣮͕ඞཁ

    ˠ։ൃதɼϓϩτλΠϓ࣮૷͋Γ
    w ύϑΥʔϚϯεݱঢ়
    w $ $ 3VTU+BWB 4DBMB&MJYJS3VCZ 1)1
    w ͞ΒͳΔύϑΥʔϚϯε͕ඞཁ
    w ଞͷ޷·͍͠ੑ࣭͸ݎ͍࣋ͯͯ͠΄͍͠
    w ຊൃදͰ͸ύϑΥʔϚϯεͷ໰୊ʹϑΥʔΧε
    29
    ˜4VTVNV:BNB[BLJ

    View Slide

  30. छྨͷฒྻੑ
    30
    ˜4VTVNV:BNB[BLJ

    View Slide

  31. छྨͷฒྻੑ
    w ໋ྩฒྻੑ
    w 4*.%ฒྻੑ
    w .*.%ฒྻੑ
    31
    ˜4VTVNV:BNB[BLJ

    View Slide

  32. ໋ྩฒྻੑ
    w ӈͰ͸ԼهΛฒྻܭࢉͰ͖Δ
    w DGPP B

    w ECBS C

    w ྆ऀʹσʔλґଘؔ܎͕ͳ͍
    ͜ͱ͕ಡΈऔΕΔ
    w ೥୅ͷ()$΍,-Ͱ

    ࣮ݱ͠Α͏͍ͯͨ͜͠ͱ


    ˜4VTVNV:BNB[BLJ
    def module M do
    def func(a, b) do
    c = foo(a)
    d = bar(b)
    {c, d}
    end
    def foo(n), do: n * 2
    def bar(n), do: n + 1
    end

    View Slide

  33. 4*.%ฒྻੑ
    w ӈͰ͸GPP CBSͷద༻Λ

    ฒྻͰ࣮ߦͰ͖Δ
    w ୯Ұίʔυྻෳ਺σʔλ

    ˠ4*.%


    ˜4VTVNV:BNB[BLJ
    def module M do
    def func do
    1..1_000_000
    |> Enum.map(& foo(&1))
    |> Enum.map(& bar(&1))
    end
    def foo(n), do: n * 2
    def bar(n), do: n + 1
    end

    View Slide

  34. .*.%ฒྻੑ
    w ϓϩηεͰද͞ΕΔฒྻੑ
    w ֤ϓϩηε͸ಠ໋ཱͨ͠ྩྻͱͦΕͧΕͷσʔλΛ࣋ͭ

    ˠ.*.%
    w &MJYJSͷϓϩηε͸ΞΫλʔϞσϧʹجͮ͘
    w ϓϩηε΁ͷϝοηʔδ͸౸ணॱͰγϦΞϥΠζ
    w ֤ϓϩηεͷ࣮ߦ͸୯ҰεϨου
    w جຊతʹܭࢉࢿݯ͸ͭͷϓϩηεͰ؅ཧ͞ΕΔ
    ‎ϓϩηε಺ͷܭࢉࢿݯͷഉଞ੍ޚ͕ෆཁ
    34
    ˜4VTVNV:BNB[BLJ

    View Slide

  35. ໋ྩฒྻੑͷ࠷దԽ
    35
    ˜4VTVNV:BNB[BLJ

    View Slide

  36. ໋ྩฒྻੑͷ࠷దԽ
    w ࣍ͷͭͷ৔߹ʹ෼͚Δ
    w ૈཻ౓ ϓϩηεىಈͯ͠΋ݩ͕औΕΔ৔߹

    w ࡉཻ౓ ͦ͏Ͱͳ͍৔߹

    36
    ˜4VTVNV:BNB[BLJ

    View Slide

  37. ૈཻ౓ͷ໋ྩฒྻੑ
    w ؔ਺ؙ͝ͱผϓϩηεىಈͯ͠ܭࢉ͢ΔΑ͏ʹίʔυม׵
    w .*.%ฒྻੑͷ࠷దԽΛ͔͚Δ
    w Ͱ͖Δ͚ͩಉ͡ίΞͷ4.5 ϋΠύʔεϨοσΟϯά
    ʹ

    ͳΔΑ͏ʹׂΓ౰ͯΔ
    37
    ˜4VTVNV:BNB[BLJ

    View Slide

  38. ࡉཻ౓ͷ໋ྩฒྻੑ
    w ґଘؔ܎ͷͳ໋͍ྩྻ͕ҟͳΔϨδελΛ࢖͏Α͏ʹ

    ׂΓ౰ͯΔ
    w $16ͷಉ࣮࣌ߦՄೳͳ໋ྩ਺ʹ߹Θͤͯɼ

    ґଘؔ܎ͷͳ໋͍ྩྻΛಉ࣌ൃߦͰ͖ΔΑ͏

    ͔ͭύΠϓϥΠϯʹཚΕ͕ੜ͡ͳ͍Α͏ʹ

    ੩త໋ྩεέδϡʔϦϯά͢Δ
    38
    ˜4VTVNV:BNB[BLJ

    View Slide

  39. ߟ࡯
    w ࡉཻ౓໋ྩฒྻ࠷దԽͰߦͳ͍ͬͯΔ͜ͱ͸ɼ

    7-*8޲͚ίϯύΠϥʹΑΔ࠷దԽͱ࣮࣭తʹಉ౳
    w &MJYJS;FO4UZMFͰ͸ґଘղੳΛߦ͏ͷ͕༰қ
    w εʔύʔεΧϥʔ Ξ΢τɾΦϒɾΦʔμʔ࣮ߦ
    ͸

    ෆཁͰ͸ʁ
    w ࣮ࡍɼεʔύʔεΧϥʔํࣜͷํ͕7-*8ํࣜΑΓ

    ίΞαΠζ͕ۃ୺ʹେ͖͘ͳΔ܏޲ʹ͋Δ
    w ίΞαΠζ͕খ͍͞ํ͕ίΞ਺ΛՔ͛Δ
    ‎7-*8ͷ෮ݖʹͭͳ͕ΔͷͰ͸ʁ
    39
    ˜4VTVNV:BNB[BLJ

    View Slide

  40. 4*.%ฒྻੑͷ࠷దԽ
    40
    ˜4VTVNV:BNB[BLJ

    View Slide

  41. )BTUFHB
    w 4*.%ฒྻੑΛೝࣝͯ͠4*.%໋ྩΛ࢖ͬͨίʔυ΍(16ۦಈ͢Δίʔυʹ

    ίϯύΠϧ͢Δ
    w কདྷతʹ͸8FC"TTFNCMZ4*.%΍8FC(- 8FC(16ͷ׆༻ʹΑΓɼ΢Σϒ
    ΫϥΠΞϯτ্ͷ$16(16ࢿݯ΋׆༻͢Δ
    w ֤छϓϩτλΠϓ࣮૷ɾੑೳධՁࡁ
    w &MJYJSͷݩͷίʔυͷʙഒͷ଎౓޲্ 130೥݄೥݄

    w 1ZUIPO$V1ZͷഒҎ্ͷ଎౓޲্ 130೥݄

    w -POFTUBS&MJYJS$POGͰੈքσϏϡʔ͠ɼେ൓ڹΛݺͿ
    w ೥ՆʹϑΝʔετϦϦʔε༧ఆ
    41
    ˜4VTVNV:BNB[BLJ

    View Slide

  42. )BTUFHBͷݪཧ


    ˜4VTVNV:BNB[BLJ
    @@
    c&OVNNBQ .GPP


    c&OVNNBQ .CBS



    EFGNPEVMF.EP
    EFGGPP O
    EPO
    EFGCBS O
    EPO
    FOE
    &MJYJS;FO4UZMF

    &OVNNBQελΠϧ

    @@LFSOFMWPJEDBMD
    @@HMPCBMMPOHJOQVU
    @@HMPCBMMPOHPVUQVU \
    TJ[F@UJHFU@HMPCBM@JE

    MPOHUFNQJOQVU
    UFNQGPP UFNQ

    UFNQCBS UFNQ

    PVUQVUUFNQ
    ^
    0QFO$-

    Χʔωϧ෦

    w ࠨͷίʔυ͸ ฒྻͷՄೳੑ͕͋Δ
    w ࠨͷίʔυ͔Βӈͷίʔυ΁ػցతʹม׵Ͱ͖Δ
    w ࠷৽(16ͷ Ҏ্ͷ4*.%ίΞͰฒྻ࣮ߦՄೳ

    View Slide

  43. )BTUFHBͷίʔυྫ


    ˜4VTVNV:BNB[BLJ
    EFGNPEVMF)EP
    SFRVJSF)BTUFHB
    JNQPSU)BTUFHB
    EFGIBTUFHBEP
    EFGGVOD MJTU
    EP
    MJTU
    c&OVNNBQ

    c&OVNNBQ

    FOE
    IBTUFHBTUVC
    FOE
    FOE
    w SFRVJSF)BTUFHBͰ)BTUFHBΛಡࠐΈ
    w JNQPSU)BTUFHBͰϞδϡʔϧ໊Λ෇ه

    ͤͣʹEFGIBTUFHB΍IBTUFHBTUVC͕

    ར༻Ͱ͖Δ
    w EFGIBTUFHBEPʜFOEͰʜͷίʔυΛ

    ॲཧܥʹಡࠐΉ
    w IBTUFHBTUVCͰίʔυੜ੒Λߦ͏

    View Slide

  44. NBQNBQϑϡʔδϣϯ


    ˜4VTVNV:BNB[BLJ
    @@
    c&OVNNBQ .GPP


    c&OVNNBQ .CBS



    EFGNPEVMF.EP
    EFGGPP O
    EPO
    EFGCBS O
    EPO
    FOE
    @@
    c&OVNNBQ 

    c.GPP

    c.CBS



    EFGNPEVMF.EP
    EFGGPP O
    EPO
    EFGCBS O
    EPO
    FOE
    w NBQNBQϑϡʔδϣϯʹΑΓɼࠨͷίʔυΛӈͷίʔυʹม׵
    w &OVNNBQʹ൐͏෼഑ɾूܭΛ࡟ݮ͢ΔޮՌ͕ظ଴Ͱ͖Δ

    View Slide

  45. &MJYJSͷϝλϓϩάϥϛϯά


    ˜4VTVNV:BNB[BLJ
    JFY
    RVPUFEP@@c&OVNNBQ

    \c
    <
    \ < >^
    \\ <> <\@@BMJBTFT@@ <&OVN>^ NBQ>^ <>
    <\ <> <\ <\ <> <>^ >^>^>^
    >^
    &MJYJSͰ"45Λग़ྗͨ͠ྫ
    w +PTÉ7BMJN͕։ൃͨ͠&MJYJSϚΫϩʹΑͬͯఏڙ
    w "45͸ϦετͱλϓϧͰߏ੒ɼ-*41ͱࣅ͍ͯΔ
    w RVPUFʹΑͬͯίʔυ͔Β"45Λग़ྗɼVORVPUFͰ஋Λૠೖ
    w 7BMVFPGBJT\B^zͱࣅ͍ͯΔ
    :>
    ..
    1 1000000
    .
    Enum map
    &
    *
    &
    1
    2
    "45ͷਤࣔ

    View Slide

  46. |>
    |>
    NBQNBQϑϡʔδϣϯ

    w "45Λ࠶ؼతʹ૸ࠪͯ͠ɼ

    ύΠϓϥΠϯԋࢉࢠͷωετΛ
    ݕग़͢Δ
    w ύλʔϯϚονΛ༻͍Δ
    w ύΠϓϥΠϯԋࢉࢠcʹ

    Ϛον͠ɼࢠϊʔυ΋

    ύΠϓϥΠϯԋࢉࢠͰ͋Δ

    ৔߹Λݕग़
    w ͜ͷ৔߹͸ɼඞͣ൪໨ͷࢠ
    Ͱ͋Δ


    ˜4VTVNV:BNB[BLJ

    View Slide

  47. |>
    |>
    .
    Enum map
    .
    Enum map
    NBQNBQϑϡʔδϣϯ

    w ωετ͕ଘࡏͨ͠৔߹ɼ

    ࢠϊʔυ͕࣍ͷ૊߹͔ͤ֬ೝ
    w ύΠϓϥΠϯԋࢉࢠ
    w &OVNNBQ
    w ࢠϊʔυͷύΠϓϥΠϯԋࢉ
    ࢠͷࢠϊʔυʹ΋
    &OVNNBQ͕ଘࡏ͢Δ͔Λ֬



    ˜4VTVNV:BNB[BLJ

    View Slide

  48. |>
    .
    Enum map
    &
    |>
    NBQNBQϑϡʔδϣϯ

    w "45Λૢ࡞ͯͭ͠ͷ&OVNNBQΛͭʹ·ͱΊ͋͛Δ
    w &OVNNBQͦΕͧΕͰݺग़͞ΕΔؔ਺ΛύΠϓϥΠϯͰ߹੒͢Δ


    ˜4VTVNV:BNB[BLJ
    |>
    |>
    .
    Enum map
    .
    Enum map

    View Slide

  49. |>
    |>
    NBQNBQϑϡʔδϣϯ

    w ͜ͷΑ͏ͳૢ࡞Λ࠶ؼతʹ

    ߦ͍ɼ࿈ଓ͢Δ&OVNNBQΛ
    ͢΂ͯͭͷ&OVNNBQʹ

    ·ͱΊ্͛Δ·ͰਐΊΔ


    ˜4VTVNV:BNB[BLJ
    |>
    |>
    .
    Enum map
    .
    Enum map
    |>
    .
    Enum map
    &
    |>

    View Slide

  50. ੾ग़͠ͱ෼཭
    w NBQNBQϑϡʔδϣϯͷޙɼ

    ύΠϓϥΠϯԋࢉࢠͱ&OVNNBQͷ૊߹ΘͤΛϚον
    w ֘౰෦෼Λ੾ग़ͯ͠ɼಠཱͨؔ͠਺Λఆٛͯ֨͠ೲ͢Δ
    w ݩ͋ͬͨ෦෼ʹ͸ੜ੒ͨؔ͠਺΁ͷݺग़͠Ͱஔ׵͑Δ
    w Ϛον͠ͳ͔ͬͨΒɼͦͷ··ग़ྗ
    50
    ˜4VTVNV:BNB[BLJ

    View Slide

  51. কདྷ՝୊
    w &MJYJS;FO4UZMFʹ͸ɼසൟʹొ৔͢Δԋࢉύλʔϯ͕

    ෳ਺ଘࡏ͢Δ
    w ҰྫͭͷϦετͷ֤ཁૉͷੵΛܭࢉ͢Δ
    w "45ͷҰ෦͕ɼ͜ͷΑ͏ͳԋࢉύλʔϯʹϚονͨ͠

    ˠେҬతʹݟͯ࠷దͳػցޠ໋ྩΛੜ੒͢Δ
    w ࣮ݱʹ޲͚ͯݚڀணखͨ͠ஈ֊
    51
    ˜4VTVNV:BNB[BLJ

    View Slide

  52. .*.%ฒྻੑͷ࠷దԽ
    52
    ˜4VTVNV:BNB[BLJ

    View Slide

  53. 84"͔Βݟͨϓϩηεͷ՝୊
    w ैདྷͷ84"Ͱ͸ϦΫΤετ͝ͱʹ
    ϓϩηεΛىಈ͢ΔํࣜΛ࠾༻
    w ֤ϓϩηε͕ελοΫϝϞϦΛ֬อ
    w ϦΫΤετ͋ͨΓ਺ඦ,#ʙ਺.#
    ͷϝϞϦΛফඅ
    w ϦΫΤετ͕ूத͢ΔͱϝϞϦΛ

    ࢖͍Ռͨͯ͠εϫοϓ͕ൃੜ
    w ϨεϙϯελΠϜ͕ۃ୺ʹѱԽ
    w "QBDIF౳Ͱ໰୊


    ˜4VTVNV:BNB[BLJ

    View Slide

  54. /PEFϓϩάϥϛϯάϞσϧʹΑΔղܾ
    w /PEFKTͷ࣮ݱํࣜ
    w *0଴ͪΛڥքʹϦΫΤετॲཧΛ
    ෳ਺ͷؔ਺ʹ෼ׂ
    w ্هؔ਺Λ୯Ґͱͯ͠

    εέδϡʔϦϯά͠ɼ࣮ߦՄೳʹ
    ͳͬͨؔ਺͔Βॱ൪ʹίʔϧόοΫ
    w ؔ਺෼ׂͷهड़͸ɼແ໊ؔ਺Λར༻
    ͯ͠ɼϓϩάϥϜͷྲྀΕΛଛͶͳ͍
    Α͏ʹࣗવʹهड़Մೳ
    w ελοΫϝϞϦΛׂΓ౰ͯΔ͜ͱͳ͘
    ϚϧνλεΫΛ࣮ݱͰ͖Δ


    ˜4VTVNV:BNB[BLJ

    View Slide

  55. ࠓ·Ͱͷݚڀ੒Ռ
    w ୈճ84"ݚڀձʹͯຊํࣜΛॳ൸࿐
    w 130೥݄ʹͯ&MJYJSͷϦετʹΑΔίʔϧόοΫ࣮૷ͱ$ͱ૒ํ޲ϦετʹΑΔίʔϧ
    όοΫ࣮૷ʹ͍ͭͯɼλεΫ͋ͨΓͷϝϞϦྔΛධՁ
    w $εϨου,#
    w &MJYJSϓϩηε,#
    w &MJYJSͷϦετʹΑΔίʔϧόοΫ࣮૷,#
    w $ʹΑΔίʔϧόοΫ࣮૷όΠτ
    w ͞Βʹ௥ࢼͰɼ$ݴޠͱ୯ํ޲ϦετʹΑΔίʔϧόοΫ࣮૷Ͱ͸ࢀߟه࿥ͳ͕ΒɼόΠτʹ·
    ͰলϝϞϦԽͰ͖ͨ
    w ͜ͷ͜ͱ͔ΒɼωΠςΟϒίʔυͰຊํࣜͷϚϧνλεΫػߏΛ࣮૷͠ɼ&MJYJS͔Βར༻Ͱ͖ΔΑ
    ͏ʹ͢Δ͜ͱ͕๬·͍͠
    55
    ˜4VTVNV:BNB[BLJ

    View Slide

  56. ଞʹղܾ͍ͨ͠໰୊
    w &MJYJSͰϓϩηεؒ௨৴Λଟ༻͢ΔͱɼϝοηʔδΩϡʔ
    ͕٧·Δ໰୊͕ൃੜ͢Δ
    w ͜Ε͸ɼੜ࢈ऀଆͷϓϩηεͷϝοηʔδੜ੒଎౓ʹର
    ͠ɼফඅऀଆͷϓϩηεͷϝοηʔδফඅ଎౓͕஗͍ͱ
    ੜ͡Δ
    w ͜ͷ໰୊ʹΑΓɼϨεϙϯεੑೳ͕ѱԽ͠ɼϝϞϦফඅྔ
    ΋֨ஈʹѱԽ͢ΔͷͰɼղফ͍ͨ͠
    56
    ˜4VTVNV:BNB[BLJ

    View Slide

  57. ݱঢ়ͷ&MJYJSͰͷ.*.%ฒྻϓϩηεͷ࣮ݱ
    w ਤ͸ϗϫΠτϘʔυʹॻ͘

    w ֤ίΞʹεέδϡʔϥʔͱ࣮ߦΩϡʔΛ࣋ͨͤΔ
    w ͜ΕʹΑΓίΞؒͰεέδϡʔϥʔͱ࣮ߦΩϡʔʹؔ͢Δ

    ഉଞ੍ޚΛ͠ͳ͍ͰࡁΉͷͰɼੑೳ޲্͢Δ
    w ͦͷ୅ΘΓ࣍ͷܽ఺͕͋Δ
    w ϓϩηεͷ࣮ߦॱ͕ೖΕସΘΔՄೳੑ͕͋Δ
    w ͜ͷ໰୊͸ݱঢ়Ͱ͸໧ೝ͍ͯ͠Δ
    w ίΞؒͰϓϩηεෛՙ͕ෆۉ౳ʹͳΔՄೳੑ͕͋Δ
    w ͜ͷ໰୊ʹ͍ͭͯ͸ɼ.JHSBUJPO-PHJDʹΑΓղফ͢Δ
    57
    ˜4VTVNV:BNB[BLJ

    View Slide

  58. 4BCPUFOEFS.*.%ฒྻϓϩηεͷ࠷దԽ
    w ਤ͸ϗϫΠτϘʔυʹॻ͘

    w ࣮ߦ࣌ؒᮢ஋ΛɼϦΞϧλΠϜੑΛߟྀͨ͠஋ʹઃఆ͓ͯ͘͠ ͨͱ
    ͑͹NT

    w ίʔυ͸ίϯύΠϧ࣌ʹ࣍ͷΑ͏ͳڥքͰ෼ׂ͓ͯ͘͠
    w *0଴ͪ
    w ࣮ߦ࣌ؒᮢ஋ͷൣғͰΠςϨʔγϣϯΛଋͶͨ΋ͷ
    w ࣮ߦ࣌ؒᮢ஋ͷൣғͷίʔυϒϩοΫ
    w ͭͷϓϩηεʹ͸ͭͷ࣮ߦ࣌؀ڥ͕͋Δ
    w ෳ਺ίΞڞ༗͞Ε͍ͯΔͳΒ͹ɼࢿݯΞΫηε࣌ʹഉଞ੍ޚΛ
    ͢Δ
    w ֤ίΞʹεέδϡʔϥʔͱ࣮ߦΩϡʔΛ࣋ͨͤɼͦͷ΄͔ʹڞ༗࣮ߦ
    ΩϡʔΛઃ͚Δ
    w ࣮ߦΩϡʔ͸ɼίʔϧόοΫ͢Δؔ਺ͱ࣮ߦ࣌؀ڥͷλϓϧΛ
    Ϧετʹͨ͠΋ͷͰ͋Δ
    w ֤ίΞͷϝοηʔδΩϡʔͱ࣮ߦΩϡʔΛ؂ࢹ͢ΔϓϩηεΛͦΕͧ
    Ε֤ίΞʹ༻ҙ
    w Ͱ͖Δ͔͗Γಉ࣮͡ߦ࣌؀ڥΛ࢖༻͢Δؔ਺Λಉ͡ίΞͷ࣮ߦΩϡʔ
    ʹׂΓ౰ͯΔ
    w ֤ίΞͷ࣮ߦΩϡʔ؂ࢹϓϩηεͷϝοηʔδ௨஌͸࠷༏ઌͰॲཧ
    w ϝοηʔδΩϡʔ͕͋;Εͦ͏ͳΒ͹ɼ࣮ߦΩϡʔதʹଘࡏ͢Δɼͦ
    ͷϓϩηεͷλϓϧΛ͍͔ͭ͘ଞͷίΞʹϚΠάϨʔτ͢Δ
    w ࣮ߦ࣌؀ڥʹෳ਺ίΞڞ༗ͷϑϥάΛ͚ͭΔ
    w ࣮ߦΩϡʔʹͭͳ͕ΕͨλεΫͷ૯࣮ߦ্͕࣌ؒݶΑΓେ͖͘ͳͬͨ
    ͳΒ͹ɼ࣮ߦΩϡʔͷ͋;Εͨ෦෼Λڞ༗࣮ߦΩϡʔʹ௥͍ग़͢
    w ڞ༗Ωϡʔ্͕ݶΛ௒͑ΔͳΒ͹ɼ֤ίΞͷ࣮ߦΩϡʔͷ্ݶ
    Λ্͛ΔϝοηʔδΛɼ֤ίΞͷ࣮ߦΩϡʔ؂ࢹϓϩηεʹ௨

    w ࣮ߦΩϡʔʹͭͳ͕ΕͨλεΫͷ૯࣮ߦ͕࣌ؒԼݶΑΓখ͘͞ͳͬͨ
    ͳΒ͹ɼڞ༗࣮ߦΩϡʔ͔ΒλεΫΛಘΔ
    w ڞ༗Ωϡʔ͕ۭʹͳΔΑ͏ͳΒɼ࣮ߦΩϡʔͷ૯࣮ߦ࣌ؒͷ্
    ݶΛԼ͛ΔϝοηʔδΛɼ֤ίΞͷ࣮ߦΩϡʔ؂ࢹϓϩηεʹ
    ௨஌
    58
    ˜4VTVNV:BNB[BLJ

    View Slide

  59. ݚڀ։ൃ͢΂͖ٕज़
    w /PEFϓϩάϥϛϯάϞσϧ͕ػೳ͢ΔͨΊʹ͸ɼίʔυͷ࣮ߦ࣌
    ؒΛਖ਼֬ʹਪఆ͢Δٕज़
    w ೚ҙͷϓϩάϥϜʹରͯ͠͸ɼఀࢭੑ໰୊ɼ͢ͳΘͪ༗ݶ࣌ؒ
    ಺ʹ׬ྃ͢Δ͔Ͳ͏͔Λ൑ఆ͢ΔΞϧΰϦζϜ͸ଘࡏ͠ͳ͍ͨ
    Ίɼίʔυͷ࣮ߦ࣌ؒΛٻΊΔ͜ͱ͕Ͱ͖ͳ͍
    w Ծઆ&MJYJS;FO4UZMFͰॻ͘͜ͱΛపఈ͢Δͱɼ༗ݶ࣌ؒ಺ʹ
    ׬ྃ͢Δ͜ͱΛอূͰ͖Δɼ͢ͳΘͪఀࢭੑ໰୊ΛճආͰ͖Δ
    w ͜ͷԾઆΛ਺ཧతʹূ໌͠ɼίʔυͷ࣮ߦ࣌ؒΛਪఆ͢Δٕज़
    Λݚڀ։ൃ͢Δ
    59
    ˜4VTVNV:BNB[BLJ

    View Slide

  60. 84"ʹ࠷దԽ͞Εͨฒྻॲཧܥ
    ࢁ࡚ਐɹ৿ਖ਼࿨ɹٱߐ༤تɹߴ੉ӳر
    ʲ֓ཁʳ
    w छྨͷฒྻੑͱͦΕͧΕʹؔΘΔ࠷దԽΛఏҊ͢Δ
    w ໋ྩฒྻੑɹɹˠ੩త໋ྩεέδϡʔϦϯά
    w 4*.%ܕฒྻੑˠ)BTUFHB ϔΠεΨ

    w .*.%ܕฒྻੑˠ4BCPUFOEFS αϘςϯμʔ

    w ͜ΕΒʹΑΓฒྻੑ͚ͩͰͳ͘Ϩεϙϯεੑͱ଱ো֐ੑ΋ҡ࣋ɾ޲্Ͱ͖Δ
    ˢ
    w పఈతʹฒྻੑɾ෼ࢄੑɾϨεϙϯεੑɾ଱ো֐ੑΛ௥ٻ͢Δॲཧܥ&MJYJSͷ࠾༻
    ˢ
    w ৘ใྔരൃ
    w ൒ಋମτϨϯυΫϩοΫप೾਺৳ͼ಄ଧͪίΞ਺૿Ճ෼ࢄܕΞʔΩςΫνϟ༏Ґ
    w Ϩεϙϯεੑͷҡ࣋ɾ޲্
    w ଱ো֐ੑͷ௥ٻ
    w ߴෛՙܭࢉॲཧΞϓϦέʔγϣϯͷ૿Ճ
    w शಘ༰қʹ͢Δඞཁੑ
    60
    ˜4VTVNV:BNB[BLJ

    View Slide