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

Rust で DDD を実践しながら API サーバーを実装・構築した(つもり)

3fe5b2de229709072a61ccc3c6ac9be0?s=47 tsuchinoko
January 24, 2022

Rust で DDD を実践しながら API サーバーを実装・構築した(つもり)

Rust LT Online #6 で登壇した際の発表資料です。

イベントページ: https://rust.connpass.com/event/234637/

スライド内で紹介した記事: https://qiita.com/tsuchinoko0402/items/dda60c43dbe4e83e729d

3fe5b2de229709072a61ccc3c6ac9be0?s=128

tsuchinoko

January 24, 2022
Tweet

More Decks by tsuchinoko

Other Decks in Programming

Transcript

  1. גࣜձࣾϦϯίʔυ ͭͪͷ͜ Ԭ㟒 ਖ਼ޛ ೥݄೔ʢ݄ʣ !ΦϯϥΠϯ 3VTU-5 3VTUͰ %%%Λ࣮ફ͠ͳ͕Β "1*αʔόʔΛ࣮૷ɾߏஙͨ͠

    ʢͭ΋Γʣ
  2. ͸͡Ί·ͯ͠ʂ

  3. "CPVUNF Ԭ㟒 ਖ਼ޛʢͭͪͷ͜ʣ üॴଐɿגࣜձࣾϦϯίʔυ üۀछɿαʔόʔαΠυΤϯδχΞ üѻ͍ͬͯΔѻͬͨ͜ͱͷ͋Δ΋ͷɿ +BWB 4DBMB 5ZQF4DSJQU (BUTCZ

    "84 αʔόʔϨε 3VTU͸ۀ຿Ͱ࢖ͬͨ͜ͱ͕͋Γ·ͤΜɻ ü3VTUྺɿ೥ະຬ ॳ৺ऀͰ͢ɻ͓खॊΒ͔ʹʜ !UTVDIJOPLP UTVDIJOPLP IUUQTXXX[BLJPLBOFU
  4. ͓࿩ͷझࢫ • %%%ʢυϝΠϯۦಈઃܭʣͳߟ͑ํͰ 3VTUͰ "1*αʔόΛ ߏங͢ΔதͰɺࢲ͕໎ͬͨ఺Λத৺ʹ࿩͠·͢ɻ • %%%ʹೃછΈͷͳ͍ํʹ͸Կͷͬͪ͜ΌʁͱͳΔ͔΋͠ Ε·ͤΜɻ •

    ͲΜͳ࣮૷͔ͨ͠ͷৄ͍͠࿩ʹ͸৮ΕΒΕ·ͤΜɻɻɻ • ෼ͳͷͰɾɾɾ • ৄ͍͠ํʹɾɾɾ2JJUB ͷهࣄʹίϝϯτ ࣮૷ͨ͠΋ͷͷ ίʔυϨϏϡʔͯ͠΋Β͑ͨΒخ͍͠Ͱ͢ɻ • IUUQTRJJUBDPNUTVDIJOPLPJUFNTEEBDE CFFFE • IUUQTHJUIVCDPNUTVDIJOPLPSVTUXFCBQJ TFSWFSTBNQMF
  5. ษڧ͕ͯΒɺ3VTUͰ"1*αʔόʔߏங  • IUUQTHJUIVCDPNUTVDIJOPLPSVTUXFCBQJ TFSWFSTBNQMF • ϙέϞϯͷσʔλΛ୯७ʹ$36%Ͱ͖Δ΋ͷ • )FSPLVʹࡌͤ·ͨ͠ )551ܦ༝Ͱ

    ϦΫΤετ ݁ՌΛฦ٫ $36%ͷ ϦΫΤετ ݁ՌΛฦ٫
  6. ษڧ͕ͯΒɺ3VTUͰ"1*αʔόʔߏங  • ํ਑ɿ%%%ΛؤுΔ • %%%ɿυϝΠϯۦಈઃܭ • ʮυϝΠϯͦͷ΋ͷͱυϝΠϯͷϩδοΫʹয఺Λஔ͘ʯ • ΞʔΩςΫνϟ͕ԿͰ͋Δ͔ͱ͔͸Ͳ͏Ͱ΋ྑ͍ɻ

    • 03.ɿ%JFTFM • IUUQTEJFTFMST • 8FCΞϓϦϑϨʔϜϫʔΫɿBDUJYXFC • IUUQTBDUJYST
  7. None
  8. औΓֻ͔ͬͨ࠷ॳɾɾɾ • ͜ͷਤ஧࣮ʹ࣮૷࢝͠Ίͨɻ

  9. ٧·ͬͨɾɾɾPS[

  10. ϑϨʔϜϫʔΫˍυϥΠόʔ૚ͬͯ Ͳ͏΍࣮ͬͯ૷ ͢Ε͹ྑ͍ͷɾɾɾʁ

  11. Πϯϑϥ૚ͷ࣮૷ʹ٧·Δ • ґଘͷํ޲͕ਤͷ֎ଆ͔Β಺ଆʹ޲͍ͯ ͳ͍ͱ͍͚ͳ͍ɻ • ͕ɺΠϯϑϥ૚ʹ %JFTFMͱ͔ BDUJY Λ ࢖͍ͬͯΔͷͰɺͦΕΒ͔Β಺ଆͷίϯ

    τϩʔϥ૚Λݺͼग़͢ํ๏͕Θ͔Β Μɻɻɻ • ࣮ࡍʹ͸ˣͷΑ͏ʹͳͬͯΔͷͰ͸ʜʁ
  12. ٹੈओɾɾɾʁ

  13. ϔΩαΰφϧΞʔΩςΫνϟ • ϔΩαΰφϧΞʔΩςΫνϟ • %%%Λ࣮ݱ͢ΔΞʔΩςΫνϟͷͭ • ΫϦʔϯΞʔΩςΫνϟ΋%%%Λ࣮ݱ͢Δͱ͍͏఺Ͱಉ͡ • ΞϓϦέʔγϣϯͱͦΕҎ֎ͷΠϯλʔϑΣʔε΍อଘഔମ͸ ෇͚֎͠Ͱ͖ΔΑ͏ʹ͢Δ

    ੒੉ ҸએʮυϝΠϯۦಈઃܭೖ໳ ϘτϜΞοϓͰΘ͔ ΔʂυϝΠϯۦಈઃܭͷجຊʯΑΓ
  14. ΦχΦϯΞʔΩςΫνϟ • ϔΩαΰφϧΞʔΩςΫνϟͷʮ"QQMJDBUJPOʯͷ෦෼Λ΋͏ ͪΐͬͱ۩ମԽͨ͠΋ͷ • IUUQTKFGGSFZQBMFSNPDPNUIFPOJPO BSDIJUFDUVSFQBSU • ΫϦʔϯΞʔΩςΫνϟͷ40-*%ݪଇΛຬͨ͢͜ͱ΋Ͱ͖Δ υϝΠϯϞσϧ૚

    ΞϓϦέʔγϣϯ૚ ʢϢʔεέʔε૚ʣ Πϯϑϥ૚ 6*ϓϨθϯςʔγϣϯ૚ υϝΠϯαʔϏε૚ ґ ଘ ͷ ํ ޲
  15. ΍ͬͯ͸Έͨ΋ͷͷɺ ໎͍͕ੜͯ͡Δɾɾɾ

  16. ґଘੑͷٯసɾɾɾͰ͖ͯΔʁʢʣ • υϝΠϯ૚ɿUSBJUͰϦϙδτϦͷΠϯλϑΣʔεΛఆٛ

  17. ґଘੑͷٯసɾɾɾͰ͖ͯΔʁʢʣ • ΞϓϦέʔγϣϯαʔ Ϗε૚ • ϢʔεέʔεΛఆٛ • %*ʢґଘੑͷ஫ೖʣ ͯ͠ɺυϝΠϯ૚ͷ ΠϯλϑΣʔεΛར

  18. ґଘੑͷٯసɾɾɾͰ͖ͯΔʁʢʣ • Πϯϑϥ૚ɿυϝΠϯ૚ͷϝιουΛ࣮૷

  19. ஋ΦϒδΣΫτͷఆٛͷ࢓ํɾɾɾʁʢʣ • λϓϧߏ଄ ମͰఆٛ • Ұൠతͳܕ ͱͷมͰʹ ͸ 5SZ'SPN Λ࣮૷

  20. ஋ΦϒδΣΫτͷఆٛͷ࢓ํɾɾɾʁʢʣ • ࣮ࡍʹ࢖͓͏ͱ͢Δͱɺ DMPOF USZ@JOUP VOXSBQ ͕࿈ൃ • ͜Μͳ΋Μɾɾɾʁ

  21. ৄ͍͜͠ͱ͸ 2JJUB ʹॻ͖·ͨ͠ • IUUQTRJJUBDPNUTVDIJOPLPJUFNTEEBDECF FFE • ଞʹ΋৭ʑ΍ͬͨ͜ͱΛॻ͍ͯ·͢ • ϩʔΧϧ։ൃ؀ڥͱ͔ɺ)FSPLV΁ͷσϓϩΠͱ͔ɻ

    • ίϝϯτ͍͚ͨͩΔͱ޾͍Ͱ͢ɾɾɾ
  22. ·ͱΊ • ॳ৺ऀͳ͕Β 3VTUͰ "1*αʔόʔͷߏஙΛ %%%Ͱ΍ͬͯ Έ·ͨ͠ɻ • ΤσΟλͷྗΛआΓͨΓ͠ͳ͕ΒɺԿͱ͔ಈ͘΋ͷ͕Ͱ͖· ͕ͨ͠ɺ৭ʑ໎͍͕ੜͯ͡·͢ɻ

    • 3VTUͰ͜ͷखͷ͜ͱΛ΍Γ·ͨ͠ɺΈ͍ͨͳ೔ຊޠͷه ࣄ͕গͳ͍ؾ͕ͯۤ͠࿑͠·ͨ͠ʢ୳͠ํ͕Լ खɾɾɾʁʣ • ಉ͡Α͏ͳ͜ͱΛ΍Ζ͏ͱͨ͠ํ͕͍Βͬ͠ΌͬͨΒࢀߟ ʹͳΕ͹޾͍Ͱ͢ɻ