Slide 1

Slide 1 text

ࡾ୐༔հ / Pepabo R&D Institute, GMO Pepabo, Inc. 2020.07.14 Fukuoka.go#16 GoݴޠͰγϛϡϨʔγϣϯ༻ͷ γϯϓϧͳϑϨʔϜϫʔΫ StageΛͭͬͨ͘

Slide 2

Slide 2 text

1SJODJQBMFOHJOFFS :VTVLF.*:",&!NPOPDISPNFHBOF 1FQBCP3%*OTUJUVUF (.01FQBCP *OD IUUQTCMPHNPOPDISPNFHBOFDPN

Slide 3

Slide 3 text

1. ͸͡Ίʹ 2. ίϯϐϡʔλγϛϡϨʔγϣϯ ϑϨʔϜϫʔΫStage 3. ·ͱΊ 4. ͓·͚ 3 ໨࣍

Slide 4

Slide 4 text

1. ͸͡Ίʹ

Slide 5

Slide 5 text

• ঢ়گʹԠͨ͡ΫϦοΫ਺ͷ࠷େԽ΍มԽ఺ݕग़ͷΑ͏ͳɺγεςϜͷదԠతͳ ৼΔ෣͍Λݕূ͢ΔͨΊʹɺ࣌ܥྻʹର͢ΔίϯϐϡʔλγϛϡϨʔγϣϯΛ ߦ͏͜ͱ͕͋Δɻ • → ֬཰తͳৼΔ෣͍΍ɺ࣮؀ڥͰൃੜ͢ΔϥϯμϜͳޡࠩΛදݱ͢Δ৔ ߹ɺཚ਺Λ༻͍ͨγϛϡϨʔγϣϯٕ๏Ͱ͋ΔϞϯςΧϧϩ๏΋ར༻͢Δ 5 ίϯϐϡʔλγϛϡϨʔγϣϯ

Slide 6

Slide 6 text

6 ίϯϐϡʔλγϛϡϨʔγϣϯ Arm0 Arm1 Arm2 User(s) System ଴ͪߦྻ ଟ࿹όϯσ Οοτ໰୊ ౸ணաఔʹϙΞιϯ෼෍ɺαʔϏεաఔʹࢦ਺ ෼෍Λద༻ͨ͠଴ͪߦྻϞσϧͷγϛϡϨʔ γϣϯ ར༻ऀͷᅂ޷͔Β੒Δ঎඼ʹର͢Δ൓Ԡʢใ ुʣΛ͋Δ֬཰෼෍ʹݟཱͯɺظؒதͷྦྷੵใ ुΛ࠷େԽ͢ΔํࡦΛ୳ΔγϛϡϨʔγϣϯ

Slide 7

Slide 7 text

• γϛϡϨʔγϣϯର৅͸ຖճҟͳΔ͕ɺࣅͨΑ͏ͳॲཧ͸ຖճ࣮૷͍ͯ͠Δ • Ұ࿈ͷॲཧʢධՁର৅ͷɺ͋Δےॻ͖ʹର͢ΔৼΔ෣͍Λෳ਺ճ؍ଌʣ • γϛϡϨʔγϣϯͷฒྻԽ • ਐḿͷ؂ࢹʢϓϩάϨεόʔʣ • ϩάग़ྗ • ཚ਺γʔυͷ؅ཧ • →࿦จࠪಡϓϩηεʹ͓͍ͯ࠶࣮ߦͯ͠ಉ݁͡Ռ͕ಘΒΕΔ؀ڥ͸ॏཁ • ݁ՌͷՄࢹԽ 7 ίϯϐϡʔλγϛϡϨʔγϣϯ࣮૷ͷ՝୊

Slide 8

Slide 8 text

2. Stage

Slide 9

Slide 9 text

• ཚ਺Λ༻͍ͨίϯϐϡʔλγϛϡϨʔγϣϯʹ൐͏Ұ࿈͔ͭ൥ࡶͳॲཧΛ։ൃ ऀ͔ΒӅṭ͢ΔγϯϓϧͳϑϨʔϜϫʔΫ • Goݴޠ੡ 9 monochromegane/stage https://github.com/monochromegane/stage

Slide 10

Slide 10 text

• ཚ਺Λ༻͍ͨίϯϐϡʔλγϛϡϨʔγϣϯʹ൐͏Ұ࿈͔ͭ൥ࡶͳॲཧΛ։ൃ ऀ͔ΒӅṭ͢ΔγϯϓϧͳϑϨʔϜϫʔΫ 10 monochromegane/stage • Ұ࿈ͷॲཧʢධՁର৅ͷɺ͋Δےॻ͖ʹର͢ΔৼΔ෣͍Λෳ਺ճ؍ଌʣ • γϛϡϨʔγϣϯͷฒྻԽ • ਐḿͷ؂ࢹʢϓϩάϨεόʔʣ • ϩάग़ྗ • ཚ਺γʔυͷ؅ཧ • ݁ՌͷՄࢹԽ 4UBHF͕ର৅ͱ͢Δൣғ ˎ౎౓ҟͳΔɺධՁର৅ͱےॻ͖ͷΈ Λ࣮૷͢Δ 4UBHF͕ର৅ͱ͠ͳ͍ൣғ ˎγϛϡϨʔγϣϯʹΑͬͯޮՌతͳՄࢹԽ͕ҟͳΔͷͰϩάग़ྗҎ߱͸౎౓࣮૷͕ྑ͍ͱ൑அ

Slide 11

Slide 11 text

11 γφϦΦͱΞΫλʔ • StageͰ͸γϛϡϨʔγϣϯΛܶʹྫ͑ͨϝλϑΝʔΛ࠾༻ • Stage = ܶ৔ɺScenario = ୆ຊʢγφϦΦʣɺActor = ԋऀ • ։ൃऀ͸ɺҰճͷγϛϡϨʔγϣϯͷ؀ڥͷมԽΛγφϦΦͱɺͦͷ؀ڥʹԠ ͨ͡ԋऀͷৼΔ෣͍ΛίʔυͰ࣮૷͢Δ

Slide 12

Slide 12 text

12 StageϑϨʔϜϫʔΫͷϝΠϯॲཧʢٙࣅίʔυʣ γφϦΦ͔ΒηϦϑΛಡΈग़͢ ԋऀ͕ηϦϑʹै͍ԋٕ ԋٕͷ݁ՌΛॻ͖ग़͢

Slide 13

Slide 13 text

13 StageϑϨʔϜϫʔΫͷϝΠϯॲཧʢٙࣅίʔυʣ ܶ৔Ͱ͸͕ܶԿ౓΋։࠵͞ΕΔɻ HPSPVUJOFͰͰ͖Δ͚ͩಉ্࣌өʹʂ

Slide 14

Slide 14 text

• Scenarioͷ࣮૷ 14 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ1/3ʣ γφϦΦΛಡΈਐΊΔɻ Χ΢ϯλΛΠϯΫϦϝϯτ͢ΔॲཧͳͲΛ࣮૷ Χ΢ϯλ࣌఺Ͱͷ؀ڥ৘ใΛ-JOFͰฦ͢

Slide 15

Slide 15 text

• Scenarioͷ࣮૷ 15 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ1/3ʣ γφϦΦΛಡΈਐΊΔɻ Χ΢ϯλΛΠϯΫϦϝϯτ͢ΔॲཧͳͲΛ࣮૷ Χ΢ϯλ࣌఺Ͱͷ؀ڥ৘ใΛ-JOFͰฦ͢ ·͋Ͱ΋JOUFSGBDF\^͸Ͳ͏͔ͳ͋ɻ จࣈྻΛѻ͏ͱܾΊͯ4DBOOFS͕ ͦͷ··࢖͑ΔΑ͏ʹͨ͠΄͏͕ศར͔΋

Slide 16

Slide 16 text

• ActorͱActionͷ࣮૷ 16 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ2/3ʣ "DUJPOͷ4USJOH ͕ϩάʹग़ྗ͞ΕΔ -JOFʹର͢ΔৼΔ෣͍Λ࣮૷ɻ ԋٕͷ݁ՌΛ"DUJPOͱͯ͠ฦ͢

Slide 17

Slide 17 text

• ࣮ߦ 17 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ3/3ʣ ࣮ߦճ਺ͱฒྻ਺ɺॳظ ཚ਺γʔυΛࢦఆ ։࢝࣌ࠁ୯ҐͰ࣮ߦ͝ͱͷϩάͱཚ਺γʔυΛه࿥

Slide 18

Slide 18 text

• ΠςϨʔγϣϯ׬ྃ͝ͱʹݺ͹ΕΔίʔϧόοΫͷ࢓૊ΈΛ༻ҙͯ͠㽂 18 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢਐḿ؂ࢹʣ

Slide 19

Slide 19 text

ෳ਺ͷγφϦΦΛ࣋ͭ γϛϡϨʔγϣϯͷྫ

Slide 20

Slide 20 text

γϛϡϨʔγϣϯͷྫ 20 • มԽݕग़ͷΞϧΰϦζϜʢADWINʣʹର͢ΔγϛϡϨʔγϣϯ • ࣌ܥྻͷมԽͷ౓߹͍ʢٸܹɺΏͬ͘Γʣʹରͯ͠ΞϧΰϦζϜΛධՁ γφϦΦͰهड़ γφϦΦʹର͢Δԋٕ

Slide 21

Slide 21 text

γϛϡϨʔγϣϯͷྫ 21 Scenario (Abrupt change) Scenario (Gradual change) Actor (ADWIN) Action ({x, mu, sum, W}) • มԽݕग़ͷΞϧΰϦζϜʢADWINʣʹର͢ΔγϛϡϨʔγϣϯ • ࣌ܥྻͷมԽͷ౓߹͍ʢٸܹɺΏͬ͘Γʣʹରͯ͠ΞϧΰϦζϜΛධՁ

Slide 22

Slide 22 text

γϛϡϨʔγϣϯͷྫ 22 Scenario (Abrupt change) Scenario (Gradual change)

Slide 23

Slide 23 text

γϛϡϨʔγϣϯͷྫʢΞϧΰϦζϜͷ௥Ճʣ 23 Scenario (Abrupt change) Scenario (Gradual change) Actor (ADWIN) Actor (ADWIN2) Action ({x, mu, sum, W}) • มԽݕग़ͷΞϧΰϦζϜʢADWINʣʹର͢ΔγϛϡϨʔγϣϯ • ࣌ܥྻͷมԽͷ౓߹͍ʢٸܹɺΏͬ͘Γʣʹରͯ͠ΞϧΰϦζϜΛධՁ

Slide 24

Slide 24 text

3. ·ͱΊ

Slide 25

Slide 25 text

• ࣌ܥྻΛѻ͏ίϯϐϡʔλγϛϡϨʔγϣϯ༻ͷγϯϓϧͳϑϨʔϜϫʔΫ StageΛGoݴޠͰ࣮૷ͨ͠ • ֤γϛϡϨʔγϣϯʹ͓͍ͯγφϦΦͱΞΫλʔͱ͍͏ཁૉͷΈΛҙࣝ͢Ε͹ Α͘ͳΓ࣮૷ͷޮ཰͕֨ஈʹ্͕Γίʔυͷݟ௨͠΋Α͘ͳͬͨ • GoݴޠΛ࢖͏͜ͱͰฒྻԽ͕༰қʹ࣮૷Ͱ͖γϯϓϧͳϑϨʔϜϫʔΫͰ͋ Γͳ͕Βे෼ʹ҆ఆͯ͠ߴ଎ԽΛୡ੒Ͱ͖ͨ • ෇Ճతͳར఺ͱͯ͠ɺϩάߏ੒ͳͲ͕౷Ұ͞Εͨ͜ͱͰޙஈͷղੳ΍άϥϑԽ ͷεΫϦϓτ΋ڞ௨Խ͕ਐΜͰ͍Δ 25 ·ͱΊ

Slide 26

Slide 26 text

4. ͓·͚

Slide 27

Slide 27 text

• γφϦΦɺΞΫλʔ͚࣮ͩ૷ͯ͠΋ͦΕΛ੾Γସ͑ΔίϚϯυϥΠϯΦϓγϣ ϯΛॻ͍ͯɺՄࢹԽ༻ͷεΫϦϓτʹΦϓγϣϯ௥Ճͯ͠ɺͦΕΛ·ͱΊΔ γΣϧεΫϦϓτʹ΋Φϓγϣϯ౉ͤΔΑ͏ʹͯ͠… 27 ίϚϯυϥΠϯΦϓγϣϯʹΑΔڍಈมߋͷ࣮૷ ֤ݴޠͰͷίϚϯυϥΠϯύʔαʔͷॻ֮ࣜ͑ͯͳ͍໰୊

Slide 28

Slide 28 text

• Fukuoka.go#14Ͱ΋঺հͨ͠ • ίϚϯυϥΠϯΦϓγϣϯΛύʔε͢ΔίʔυΛίϚϯυϥΠϯΦϓγϣϯ͔ Βੜ੒͢Δπʔϧ 28 monochromegane/flagen https://github.com/monochromegane/flagen

Slide 29

Slide 29 text

Example of Go (preset template) 29 $ flagen go --dist erlang -e k/l --lambda 1.5 -k 1 -v var ( dist string e string lambda float64 k int v bool ) func init() { flag.StringVar(&dist, "dist", "erlang", "usage of dist") flag.StringVar(&e, "e", "k/l", "usage of e") flag.Float64Var(&lambda, "lambda", 1.5, "usage of lambda") flag.IntVar(&k, "k", 1, "usage of k") flag.BoolVar(&v, "v", false, "usage of v") } ίϚϯυϥΠϯΦϓγϣϯ໊͔Βม਺໊Λੜ੒ ίϚϯυϥΠϯΦϓγϣϯ஋͔ΒܕΛਪଌ ࣮ࡍʹ࢖༻͢ΔίϚϯυϥΠϯΦϓγϣϯ͔Β ίϚϯυϥΠϯͷղੳॲཧΛੜ੒

Slide 30

Slide 30 text

Example of Python (preset template) 30 $ flagen py --dist erlang -e k/l --lambda 1.5 -k 1 -v import argparse parser = argparse.ArgumentParser() parser.add_argument("--dist", default="erlang", help="Help of dist") parser.add_argument("-e", default="k/l", help="Help of e") parser.add_argument("--lambda", type=float, default=1.5, help="Help of lambda") parser.add_argument("-k", type=int, default=1, help="Help of k") parser.add_argument("-v", action="store_false", help="Help of v") args = parser.parse_args() ϋϚΓ͕ͪͳ1ZUIPOͷCPPMͷσϑΥϧτ஋ͷઃఆ΋ ϘΠϥʔςϯϓϨʔτͳͷͰେৎ෉

Slide 31

Slide 31 text

Example of Ruby (preset template) 31 $ flagen rb --dist erlang -e k/l --lambda 1.5 -k 1 -v require 'optparse' opts = { dist: 'erlang', e: 'k/l', lambda: 1.5, k: 1, v: false, } OptionParser.new do |op| op.on('--dist [VALUE]', 'Desc of dist') {|v| opts[:dist] = v } op.on('-e [VALUE]', 'Desc of e') {|v| opts[:e] = v } op.on('--lambda [VALUE]', 'Desc of lambda') {|v| opts[:lambda] = v.to_f } op.on('-k [VALUE]', 'Desc of k') {|v| opts[:k] = v.to_i } op.on('-v', 'Desc of v') {|v| opts[:v] = v } op.parse!(ARGV) end

Slide 32

Slide 32 text

Example of Shell (preset template) 32 $ flagen sh --dist erlang -e k/l --lambda 1.5 -k 1 -v E="k/l" K="1" V="FALSE" while getopts e:k:v OPT do case $OPT in "e" ) E="$OPTARG";; "k" ) K="$OPTARG";; "v" ) V="TRUE";; esac done shift `expr $OPTIND - 1` HFUPQUT͸ҰจࣈͷҾ਺͚ͩѻ͑ΔͷͰ௕͍Φϓγϣϯ͸ແࢹ

Slide 33

Slide 33 text

• flagenΛΤσΟλͱ࿈ܞ͢Δ • ྫ͑͹VimͰ͸ҎԼʹΑΓɺΧʔιϧҐஔʹ݁ՌΛૠೖ͢Δ͜ͱ͕Ͱ͖Δɻ ʢಈతͳίʔυεχϖοτͱͯ͠ͷར༻ʣ 33 Collaboration :r!flagen YOUR_TEMPLATE YOUR_COMMAND_LINE_OPTIONS...

Slide 34

Slide 34 text

No content