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

VoiceText Web APIでのGolang利用事例のご紹介

tmaeda
January 21, 2015

VoiceText Web APIでのGolang利用事例のご紹介

Golang meetup in Sapporo 2015/01/21 #sapgolang

tmaeda

January 21, 2015
Tweet

More Decks by tmaeda

Other Decks in Technology

Transcript

  1. 7PJDF5FYU8FC"1*
    Ͱͷ(PMBOHར༻ࣄྫ
    ͷ͝঺հ
    !UNBFEB͑ʹ͠ςοΫ
    (PMBOHNFFUVQJO4BQQPSP

    View Slide

  2. !UNBFEB
    w ג
    ͑ʹ͠ςοΫͰΤϯδχΞΛ͍ͯ͠·͢ɻ
    w3VCZͷ࢓ࣄ͕ଟ͍Ͱ͢ɻ
    w࠷ۙ͸5ZQF4DSJQUͱ͔3FBDUͱ͔
    JQZUIPOQBOEBTͱ͔ʹڵຯ͕͋Γ·͢ɻ
    wԑ͋ͬͯɺ͜͜೥͙Β͍গ͚ͩ͠(P࢖͍ͬͯ
    ·͢ɻ

    View Slide

  3. ຊ೔ͷ͓࿩
    w7PJDF5FYU8FC"1*ͷ͝঺հ
    w(PΛ࢖ͬͯΈͯͷײ૝

    View Slide

  4. 7PJDF5FYU8FC"1*
    w)0:"αʔϏεגࣜձ༷͕ࣾӡӦ͍ͯ͠Δߴ඼
    ࣭Ի੠߹੒αʔϏεͰ͢ɻ
    w8FC"1*ͷΠϯλʔϑΣʔε෦෼͸ฐࣾͰ։ൃ
    ͷ͓ख఻͍Λͤͯ͞௖͖·ͨ͠ɻ

    View Slide

  5. 7PJDF5FYU8FC"1*
    curl "https://api.voicetext.jp/v1/tts" \

    -o "test.wav" \

    -u "YOUR_API_KEY:" \

    -d "text=͓͸Α͏͍͟͝·͢" \

    -d “speaker=hikari" \

    -d “emotion=happiness” \

    -d “emotion_level=2”

    View Slide

  6. 7PJDF5FYU8FC"1*ͷߏ੒
    Portal(Rails)
    Wrapper (Go)!
    ར༻ऀ
    VoiceText
    Engine
    Ի੠߹੒αʔόʔ
    Heroku
    Postgre!
    SQL
    ɾϩά
    ɾϢʔβʔ
    ೝূɺϩάॻࠐ
    Ϣʔβʔ!
    ొ࿥
    Ϣʔβʔొ࿥
    LoadBalancer
    APIར༻

    View Slide

  7. গ͠ͷؒɺσϞ΋͔ͶͯɺVoiceText
    Ͱ࿩͠·͢ɻ
    showͰ͢ɻςϨϏ౦ژܥྻʮϞϠ
    ϞϠ͞·͊ʙͣ2ʯͱ͍͏൪૊ͷφ
    ϨʔγϣϯΛ୲౰͍ͯ͠·͢ɻ

    View Slide

  8. ͳͥ(Pʁ
    w଎౓ͱฒྻੑ
    w$ͷϥΠϒϥϦͱͷ਌࿨ੑ
    w։ൃޮ཰
    hikariͰ͢ɻ

    View Slide

  9. ͳͥ(Pʁ
    w଎౓ͱฒྻੑ
    w$ͷϥΠϒϥϦͱͷ਌࿨ੑ
    w։ൃޮ཰
    takeruͰ͢ɻ

    View Slide

  10. ͳͥ(Pʁ
    w଎౓ͱฒྻੑ
    w$ͷϥΠϒϥϦͱͷ਌࿨ੑ
    w։ൃޮ཰
    harukaͰ͢ɻ

    View Slide

  11. ͳͥ(Pʁ
    w଎౓ͱฒྻੑ
    w$ͷϥΠϒϥϦͱͷ਌࿨ੑ
    w։ൃޮ཰
    bearͰ͢ɻ

    View Slide

  12. σϞ͓͠·͍
    santaͰ͢ɻ

    View Slide

  13. ྑ͔ͬͨͱ͜Ζ
    GoΛ࢖ͬͯΈͯ

    View Slide

  14. ࣮ߦ଎౓
    w$΄Ͳ͸ϝϞϦ؅ཧ΍ϙΠϯλͷ؅ཧʹؾΛ࢖Θ
    ͳͯ͘ࡁΉ͕ɺ$ͱಉఔ౓ͷ଎౓͕ͰΔɻ
    wHPSPVUJOFͱDIBOOFMΛར༻ͯ͠ɺൺֱత؆୯ʹ
    ϚϧνίΞΛ׆͔͢ฒྻϓϩάϥϛϯά͕Ͱ͖
    Δɻ

    View Slide

  15. $ͱͷ਌࿨ੑ
    wඞཁ࠷খݶͷखଓ͖
    Ͱɺ$Ͱॻ͔Εͨ֎
    ෦ϥΠϒϥϦͷؔ਺
    Λݺͼग़ͤΔɻ
    package rand

    !
    /*

    #include

    */

    import "C"

    !
    func Random() int {

    // Cͷੈքͷrandom()ؔ਺Λݺͼग़ͯ͠

    // ݁ՌΛgoͷੈքͷintʹม׵ͯ͠ฦ͢

    return int(C.random())

    }

    !
    func Seed(i int) {

    // goͷੈքͷintܕͷiΛCͷੈքͷuintʹม׵ͯ͠ɺ

    // Cͷੈքͷsrandomؔ਺ʹҾ਺ͱͯ͠౉͢

    C.srandom(C.uint(i))

    }

    View Slide

  16. ੩తνΣοΫ
    wίϯύΠϧ࣌ʹ੩తܕνΣοΫ͕ಇ͘ͷͰɺ
    ͠ΐʔ΋ͳ͍ϛε͸ίϯύΠϧ࣌ʹ๷͛Δɻ
    wͦͷଞɺએݴͨ͠ͷʹ࢖ͬͯͳ͍ม਺ͱ͔ɺ࢖ͬ
    ͯͳ͍ύοέʔδͱ͔΋ࢦఠͯ͘͠Εͯɺ݁ߏ਌
    ੾ɻ

    View Slide

  17. ॆ࣮ͷϥΠϒϥϦ
    wඞཁ࠷௿ݶͷϥΠϒϥϦ͸ඪ४Ͱଗ͍ͬͯΔɻ
    w਺஋ɺจࣈྻɺਖ਼نදݱɺ഑ྻ΍NBQͳͲͷ
    ίϯςφɺ࣌ؒɺύʔαʔɺ04ɺωοτϫʔ
    Ϋɺ҉߸ɺѹॖɺϩάͳͲͳͲɻ
    wΦʔϓϯιʔεͷϥΠϒϥϦ΋͍Ζ͍Ζ͋Δɻ

    View Slide

  18. γϯϓϧͳݴޠ࢓༷
    wΫϥεͳ͍͚ͲɺܕʹϝιουΛੜ΍ͤΔͷͰ
    ࠔΒͳ͍ɻ
    wྫ֎ॲཧػೳͳ͍͚Ͳɺෳ਺ฦΓ஋ͰͦΜͳʹ
    ࠔΒͳ͍ɻ
    w(FOFSJDTͳ͍͚Ͳɺ഑ྻͱNBQͰ͸ཁૉͷܕΛ
    ࢦఆͰ͖ΔͷͰɺଟ͘ͷέʔεͰ͸ࠔΒͳ͍ɻ

    View Slide

  19. HPGNU
    wݴޠඪ४ͷίʔσΟϯάن໿͕͋ͬͯɺHPGNUί
    ϚϯυΛ࢖͏ͱ੔ܗͰ͖ΔͷͰɺίʔσΟϯά
    ن໿ʹ·ͭΘΔफڭઓ૪͕ى͖Δස౓͕গͳ͍ɻ

    View Slide

  20. ݴޠ࢓༷͕҆ఆ
    w݁ߏසൟʹ(PͷόʔδϣϯΞοϓ͕ߦΘΕΔ
    ͕ɺେ͖͘ڍಈ͕มΘͬͯޓ׵ੑͷ໰୊͕ى͖
    Δɺͱ͍͏͜ͱ͕͋·Γͳ͔ͬͨʢগͳ͘ͱ΋
    ͜Ε·Ͱ͸ʣɻ

    View Slide

  21. ͪΐͬͱෆຬͳͱ͜Ζ

    View Slide

  22. දݱྗ͕গͳΊ
    w(FOFSJDTཉ͍͠
    w୅਺తσʔλܕͱύλʔϯϚονཉ͍͠

    View Slide

  23. ϥΠϒϥϦͷػೳ΍඼࣭
    w௕͍ظؒɺଟ͘ͷਓʹ࢖͍ࠐ·Εͨ؀ڥ +BWBͱ
    ͔3VCZͱ͔
    ͱൺֱ͢ΔͱɺϥΠϒϥϦͷػೳ
    ΍඼࣭͕·ͩ੒ख़͍ͯ͠ͳ͍ײ͡ɻ
    wࣗಈςετ؀ڥ
    wจࣈίʔυม׵ʢ͍ΘΏΔʮ೾μογϡ໰୊ʯ
    ͱ͔ʣ
    wGPSLFYFDඇޮ཰໰୊

    View Slide

  24. ·ͱΊ

    View Slide

  25. ·ͱΊ
    wଟগͷෆຬ఺͸͋Δ΋ͷͷɺશମతʹ͸ඇৗʹ
    όϥϯεͷऔΕͨྑ͍ݴޠɾ؀ڥͰେม࣮༻త
    ͳͷͰେม͓͢͢ΊͰ͖·͢ɻ
    w7PJDF5FYU8FC"1*ΛͲ͏ͧ͝᩾ርʹɻ
    ࢖ͬͯgolang

    View Slide