Slide 1

Slide 1 text

$ͷύοέʔδϚωʔδϟ
 ʮQPBDʯΛ։ൃͨ͠࿩ ·͚ͭΜ !NBULFO ໋ཱؗେֶ৘ใཧ޻ֶ෦̎೥ੜ

Slide 2

Slide 2 text

ύοέʔδϚωʔδϟͱ͸ ϥΠϒϥϦͷ഑ஔ΍όʔδϣϯ؅ཧɼґଘؔ܎ ղܾ౳ͷ൥ࡶͳ࡞ۀΛϚωδϝϯτͯ͘͠ΕΔ

Slide 3

Slide 3 text

▸ /PEFKTͷOQN΍ZBSO ▸ &MJYJSͷIFY ▸ $ͷDPOBO ▸ 3VTUͷDBSHP ▸ )BTLFMMͷDBCBM ৭ʑͳύοέʔδϚωʔδϟ

Slide 4

Slide 4 text

$ͷDPOBO͸࢖͍ͮΒ͍

Slide 5

Slide 5 text

poac ▸ ΠϯλϑΣʔε͕௚ײత ▸ ཚཱͨ͠ྑ͍ࢿ࢈ΛవΊͯఏڙ ▸ ύοέʔδϚωʔδϟ݉ϏϧυγεςϜ ▸ GitHub: https://github.com/poacpm Website: https://poac.io

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

QPBDͷ༝དྷᶃ Plus of Cͷpocͩͱ঎ඪ͕େྔʹऔΒΕ͍ͯͯා͔ͬͨ

Slide 8

Slide 8 text

ൃԻʹӨڹΛ༩͑ͳͦ͞͏ͳ฼ԻΛೖΕͯɼpoacʹͨ͠ QPBDͷ༝དྷᶃ

Slide 9

Slide 9 text

QPBDͷ༝དྷᶄ ίϚϯυͱͯ͠Կ౓΋ೖྗ͢ΔͷͰɼ
 ଧͪ΍͘͢ɼยख͚ͩʹෛ୲͕ภΒͳ͍ࣄΛॏࢹ ྲྀΕΔΑ͏ʹଧͭ͜ͱ͕Մೳ P, O ӈख A, C ࠨख

Slide 10

Slide 10 text

QPBDͷ༝དྷᶅ /p/͸࠷΋໌Δ͍ҹ৅Λ༩͑Δ ग़యɿ೔ຊޠΦϊϚτϖͷجຊײ৘࣍ݩͱ೔ຊޠԻײૉͷجຊϨϕϧʹ͍ͭͯ (http://hdl.handle.net/10112/12311)

Slide 11

Slide 11 text

QPBDͷ༝དྷᶅ /p/͸࠷΋ॊΒ͔͍ҹ৅Λ༩͑Δ ग़యɿ೔ຊޠΦϊϚτϖͷجຊײ৘࣍ݩͱ೔ຊޠԻײૉͷجຊϨϕϧʹ͍ͭͯ (http://hdl.handle.net/10112/12311)

Slide 12

Slide 12 text

QPBDͷϩΰ ੨ ਫ ւ ޫ ਂւ C++ͷҋ

Slide 13

Slide 13 text

QPBDͷϩΰ ޫ C++ͷҋ

Slide 14

Slide 14 text

ରԠ04 ▸ NBD04 TJFSSB ▸ -JOVY Y@ ▸ 8JOEPXT 84-

Slide 15

Slide 15 text

࢖༻ٕज़ 4FSWFS Frontend Elm firebase
 hos2ng $MJFOU C++ Backend TypeScript firebase
 func2ons Upload API Golang App Engine

Slide 16

Slide 16 text

▸ JOTUBMM ύοέʔδΛΠϯετʔϧ ▸ VOJOTUBMM ύοέʔδΛΞϯΠϯετʔϧ ▸ TFBSDI ύοέʔδΛݕࡧ ▸ JOJU QPBDZNMϑΝΠϧΛੜ੒ ▸ OFX ϓϩδΣΫτςϯϓϨʔτΛੜ੒ ▸ QVCMJTI ࣗ࡞ύοέʔδΛެ։ ▸ UFTU ςετΛߦ͏ ▸ VQEBUF ύοέʔδΛΞοϓσʔτ ▸ CVJME Ϗϧυ͢Δ ▸ SVO Ϗϧυͱ࣮ߦΛߦ͏ αϒίϚϯυ Ұ෦

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

ΞʔΩςΫνϟ $ poac args... vector Command I/O Builder Resolver components Inference

Slide 22

Slide 22 text

*OGFSFODF template >> auto _apply(S&& func, const OpTypeE& cmd, VS&& arg) { return branch(std::move(func), cmd, std::move(arg)); } template >> std::string apply(S&& func, const S& cmd, VS&& arg) { namespace except = core::exception; if (auto itr = subcmd_map.find(cmd); itr != subcmd_map.end()) return _apply(std::move(func), itr->second, std::move(arg)); else if (itr = option_map.find(cmd); itr != option_map.end()) return _apply(std::move(func), itr->second, std::move(arg)); else throw except::invalid_first_arg("Invalid argument"); }

Slide 23

Slide 23 text

*OGFSFODF // Create function pointer table: { &func<0>, &func<1>, ... } // Execute function: &func[idx]() template >> static auto execute(std::index_sequence, int idx, VS&& vs) { // Return ""(empty string) because match the type to the other two functions. return make_array({ +[](VS&& vs){ return (op_type_list_t::at_t()(std::move(vs)), ""); }... })[idx](std::move(vs)); } template static auto summary(std::index_sequence, int idx) { return make_array({ +[]{ return op_type_list_t::at_t::summary(); }... })[idx](); } template static auto options(std::index_sequence, int idx) { return make_array({ +[]{ return op_type_list_t::at_t::options(); }... })[idx](); }

Slide 24

Slide 24 text

($$ͷόά #if BOOST_COMP_GNUC template >> static auto execute2(VS&& vs) { return (T()(std::move(vs)), ""); } template static auto summary2() { return T::summary(); } template static auto options2() { return T::options(); } template >> static auto execute(std::index_sequence, int idx, VS&& vs) { using func_t = decltype(&execute2, VS>); static func_t func_table[] = { &execute2>... }; return func_table[idx](std::move(vs)); } template static auto summary(std::index_sequence, int idx) { using func_t = decltype(&summary2>); static func_t func_table[] = { &summary2>... }; return func_table[idx](); } template static auto options(std::index_sequence, int idx) { using func_t = decltype(&options2>); static func_t func_table[] = { &options2>... }; return func_table[idx](); } #else

Slide 25

Slide 25 text

ΞʔΩςΫνϟ $ poac args... vector Inference Command I/O Builder Resolver components

Slide 26

Slide 26 text

3FTPMWFS core semver SAT solver

Slide 27

Slide 27 text

compiler shell-command core #VJMEFS

Slide 28

Slide 28 text

*0 cli network file

Slide 29

Slide 29 text

ΞʔΩςΫνϟ $ poac args... vector Inference Command I/O Resolver Builder components

Slide 30

Slide 30 text

ΞʔΩςΫνϟ vect B Re com Client API

Slide 31

Slide 31 text

Client ΞʔΩςΫνϟ API

Slide 32

Slide 32 text

"1* #BTJD 6QMPBE (PMBOH 5ZQFTDSJQU

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

ࠓޙ΍͍ͬͯ͘͜ͱ ▸ ύοέʔδͷ௥Ճɾ੔උ ▸ υΩϡϝϯτͷ֦ॆ ▸ ϏϧυγεςϜվળ ▸ ଎౓ͷվળ ▸ ιʔείʔυͷվળ ▸ ΤσΟλͷ֦ுػೳ։ൃ ▸ ϏϧυࡁΈύοέʔδͷΠϯετʔϧ ▸ άϩʔόϧΠϯετʔϧ ▸ EFW%FQFOEFODZɾUFTU%FQFOEFODZ ▸ EPDίϚϯυɾGNUίϚϯυ

Slide 35

Slide 35 text

poac ▸ ΠϯλϑΣʔε͕௚ײత ▸ ཚཱͨ͠ྑ͍ࢿ࢈ΛవΊͯఏڙ ▸ ύοέʔδϚωʔδϟ݉ϏϧυγεςϜ ▸ GitHub: https://github.com/poacpm Website: https://poac.io