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

家計簿管理システム Midas について / balance system Midas

firedial
September 25, 2019

家計簿管理システム Midas について / balance system Midas

趣味で作った家計簿管理システムについて。
API 側の Golang をメインに紹介した。

firedial

September 25, 2019
Tweet

More Decks by firedial

Other Decks in Programming

Transcript

  1. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ firedial DesignOne Go #5 September 25, 2019 firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 1 / 28
  2. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࣗݾ঺հ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 2 / 28
  3. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࣗݾ঺հ ໊લ: firedial ੜޙ: 9829 ೔ ग़਎: ࣎լݝ झຯ: ϏϦϠʔυɺ਺ֶɺ౎಺ࢄࡦɺ٤஡ళۦಈ։ൃ ࠷ۙݟ͚ͭͨެࣜ: n ∑ k=0 (−1)k n Ck kn+m = n+m Pn tm (n) tm (n) := lim x→0 dm dxm ( ex − 1 x ) n firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 3 / 28
  4. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࣗݾ঺հ ࠓ·Ͱ৮Ε͖ͯͨओͳݴޠ (ख़஌͍ͯ͠Δͱ͸ݴ͍ͬͯͳ͍) C (3 ೥) PHP (2 ೥൒) C++ (1 ೥) VBA (1 ೥) Haskell (൒೥) Elm (൒೥) Golang (൒೥) Ruby on Rails (3 ϲ݄) firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 4 / 28
  5. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࠷ۙͨ͠ۦಈ։ൃ ࠷ۙͨ͠ۦಈ։ൃ͸... firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 5 / 28
  6. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࢁ௖ۦಈ։ൃ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 6 / 28
  7. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Πϯελө͑ ͢Έ·ͤΜɺຊ౰͸ࢁ௖Ͱ։ൃ͍ͯ͠·ͤΜɻ ׬શʹΠϯελө͑ૂ͍ͬͯ·ͨ͠ɻ Πϯελ͸΍͍ͬͯ·ͤΜɻ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 7 / 28
  8. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Midas ͷ঺հ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 8 / 28
  9. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Midas ͷ֓ཁ Midas (ϛμε) ͱ͸Ոܭ฽؅ཧγεςϜͷ͜ͱͰ͋Δɻ ؅ཧ͢Δ৘ใ͸ҎԼͷ΋ͷͰ͋Δ (balance ςʔϒϧ)ɻ ֹۚ (-500 ԁ) ߲໨ (͏ͲΜ) छผ (ன͝͸Μ) ༧ࢉ (৯අ) ৔ॴ (ࡒ෍) ೔෇ (2019/9/14) छผɺ༧ࢉɺ৔ॴ͸ ID Խ͞Ε͍ͯΔ (attribute ςʔϒϧ)ɻ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 9 / 28
  10. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Midas ͷઆ໌ ϑϩϯτ: Elm API: Golang (Gin ϑϨʔϜϫʔΫ) DB: MySQL ϦόʔεϓϩΩγ: Nginx firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 10 / 28
  11. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Elm ͱ͸ͳʹ͔ Elm ͱ͸ AltJs ͷҰछͰɺؔ਺ܕݴޠͰ͋Δɻ Elm ͸༗໊ͳͷͰɺΈͳ͞Μ͝ଘ஌Ͱ͢ΑͶʁʁʁ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 11 / 28
  12. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Elm ͱ͸ͳʹ͔ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 12 / 28
  13. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Elm ͱ͸ͳʹ͔ ͦ͏ɺԿΛӅͦ͏ɺ ࠓߋֶ͹ͳ͍͍ͯ͘ݴޠ1Ґ Ͱ͢ʂʂʂʂ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 13 / 28
  14. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ؓ࿩ٳ୊ ؓ࿩ٳ୊ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 14 / 28
  15. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ߏ੒ਤ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 15 / 28
  16. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Misuzu ʹ͍ͭͯ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 16 / 28
  17. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Misuzu ͷઆ໌ Misuzu ͷ API ͰͰ͖Δ͜ͱ औಘ ▶ balance ςʔϒϧ ▶ attribute ςʔϒϧ ૠೖ ▶ balance ςʔϒϧ ▶ ༧ࢉͱ৔ॴͷҠಈ (balance ςʔϒϧʹ 2 Ϩίʔυૠೖ) ूܭ ▶ छผ (·ͨ͸༧ࢉ΍৔ॴ) ͷ ID ผͷ߹ܭ ▶ ೔෇ผͷ߹ܭ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 17 / 28
  18. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ґଘؔ܎ਤ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 18 / 28
  19. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ໰୊఺ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 19 / 28
  20. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ໰୊఺ Midas ʹ͸໰୊͕͋ͬͨɻͦ͏ɺೝূΛ͍ͯ͠ͳ͍ͷͰ͋Δɻ ༑ਓʹ wi-fi Λିͨ࣌͠ɺ http://192.168.1.6:8080/api/v1/sum/ Λୟ͔ΕΔͱશࡒ࢈͕औಘͰ͖ͯ͠·͏...ɻ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 20 / 28
  21. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ೝূ ͱ͍͏͜ͱͰɺೝূγεςϜΛ࡞Γ·͠ΐ͏ɻ ࠓճ͸ Authorization ϔομʔΛ࢖ͬͨೝূΛ͢Δ (RFC7235)ɻ ϦΫΤετϔομʔʹɺ Authorization: Bearer access token ΛೖΕɺ access token ʹΑͬͯೝূΛߦ͏ํࣜɻ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 21 / 28
  22. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ೝূ Listing 1: main.go 1 func main() { 2 r := gin.Default() 3 r.Use(Auth()) 4 // (ommited) 5 r.Run() 6 } 7 8 func Auth() gin.HandlerFunc { 9 return func(c *gin.Context) { 10 token := c.Request.Header.Get("Authorization") 11 12 if token != "Bearer token" { 13 c.AbortWithStatus(401) 14 } 15 c.Next() 16 } 17 } firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 22 / 28
  23. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࣮ԋ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 23 / 28
  24. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࣮ԋ ࣮ࡍʹݟ͍͖ͯͨͩ·͢ɻ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 24 / 28
  25. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ͜ΕͰ ͜ΕͰɺ༑ਓ͕དྷͨ࣌΋҆৺ͯ͠ wi-fi Λି͢͜ͱ͕Ͱ͖·͢ʂ (͑ͬʁ SSL Խ௨৴͍ͯ͠ͳ͍ͬͯʁ ܅ͷΑ͏ͳצͷ͍͍ΨΩ͸ ݏ͍ͩΑ) firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 25 / 28
  26. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ·ͱΊ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 26 / 28
  27. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ·ͱΊ ·ͱΊ ▶ ஌ΒΕͨ͘ͳ͍৘ใͷೝূ͸େ੾ʂ ▶ Midas ͸ DB ΍ϑϩϯτ΍ API ͳͲΛࣗ෼ͰઃܭͰָ͖͍ͯ͠ ࠓޙͷల։ (Midas) ▶ ·ͩ·ͩϑϩϯτ͕શવͳͷͰͦ͜Λॆ࣮͍͖͍ͤͯͨ͞ ▶ Docker Ͱىಈ͍ͤͨ͞ ࠓޙͷల։ (Golang) ▶ ରہ࣌ܭͷϓϩάϥϛϯά͕͍ͨ͠ firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 27 / 28
  28. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ιʔείʔυ Misuzu (Golang): https://github.com/firedial/midas-misuzu Nagisa (Elm): https://github.com/firedial/midas-nagisa firedial (DesignOne Go #5) Ոܭ฽؅ཧγεςϜ Midas ʹ͍ͭͯ September 25, 2019 28 / 28