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

チャットワークScala化プロジェクトの一年 / Scala Kansai Summit 2015

481a460d2008ec84e545cb877896d08b?s=47 YutaAdachi
August 01, 2015

チャットワークScala化プロジェクトの一年 / Scala Kansai Summit 2015

関西Scalaサミット2015発表分
(2015/08/01)

481a460d2008ec84e545cb877896d08b?s=128

YutaAdachi

August 01, 2015
Tweet

Transcript

  1. νϟοτϫʔΫ ScalaԽϓϩδΣΫτͷҰ೥ ҆ୡ ༐ଠ

  2. ࣗݾ঺հ • ҆ୡ ༐ଠ • ChatWork • 1೥൒લʹೖࣾ • Scalaྺ:

    1೥
  3. • SoftwareDesign 8݄߸ ʮPHPΤϯδχΞɺ ScalaΛֶͿʯ

  4. ࠓ೔ͷ͓࿩ • ͳͥScalaͰ࡮৽͢Δ͜ͱʹͳͬͨͷ͔ • ࡮৽ϓϩδΣΫτɺ࠷ॳͷΰʔϧ͸ʁ • ͲΜͳ෩ʹϓϩδΣΫτΛਐΊ͍ͯΔ͔ • ScalaΛ࠾༻ͯ͠ྑ͔ͬͨͱࢥͬͯΔʁ

  5. νϟοτϫʔΫʁ

  6. νϟοτϫʔΫ

  7. άϧʔϓνϟοτ ϏσΦνϟοτ λεΫ؅ཧ ϑΝΠϧڞ༗

  8. • αʔϏεΠϯ͔Β4೥ • ಋೖࣾ਺: 69,000ࣾ௒ • ຖि1,000ສऑͷϝοηʔδ

  9. ͳͥνϟοτϫʔΫ͸ScalaԽ Λܾҙͨ͠ͷ͔ʁ

  10. νϟοτϫʔΫͷੜཱ͍ͪ • ݩʑɺࣾ಺޲͚πʔϧͱͯ͠։ൃ • PHPͷಠࣗϑϨʔϜϫʔΫ • େن໛ͳαʔϏεͱͳΔ͜ͱΛ૝ఆ͍ͯ͠ͳ ͍ • ίʔυ΋ΞʔΩςΫνϟ΋

  11. ݱߦγεςϜͷ՝୊ • 4೥ؒͷ૿վஙΛ܁Γฦ͢ • ༧ظͤ͵ෆ۩߹Λ࡞Γ͜ΜͰ͠·͏ • Өڹൣғͷ༧ଌ͕ࠔ೉ • Ϣʔβͷٸ૿ʹରԠ͠ͳ͍ͱ͍͚ͳ͍ •

    άϩʔόϧల։
  12. ೖࣾ௚ޙͷࢲ • ʮͳΜͰ͜͜ม͚͑ͨͩͰಈ͔ͳ͘ͳΔΜͩΖ…ɻʯ • ʮ͋Εɺ͜͜ͷ෼ذΛ௨Δ͸ͣͳΜ͚ͩͲͳ…ɻʯ • ʮUtil.phpΛ։͘ͱΤσΟλ͕Ϋϥογϡ͢Δɻ͓֮͑ͯ͜ ͏ɻʯ • ʮϩάΠϯͰ͖ͳ͘ͳͬͨ…ɻʯ

    • ʮ/tmp/cacheͷϑΝΠϧফͨ͠ʁʯ
  13. ৽ػೳ௥ՃͷεϐʔυΞοϓ &εέʔϥϒϧͳΞʔΩςΫ νϟʹ͢ΔͨΊɺ0͔Β࡞Γ ͳ͓ͦ͏ʂ

  14. ݴޠ&ϑϨʔϜϫʔΫબఆ߹॓ • γεςϜͷ࡮৽Λ͢ΔͳΒɺPHP͡Όͳͯ͘ ΋͍͍Μ͡Όͳ͍ʁ • PHP, Python, Scala૊ʹ෼͔Εͯ߹॓ • ͦͯ͠Scala΁

  15. ͳͥScalaͳͷ͔ʁ

  16. ͳͥScalaͳͷ͔ʁ • ੩తย෇͖ݴޠ • ίϯύΠϥͰܕݕࠪͯ͠ཉ͍͠ • IDEͱͷ૬ੑ • ؆ܿͳهड़͕Ͱ͖Δ •

    PHPͳͲLLܥͷΤϯδχΞ͕ଟ͍ • έʔεΫϥεɺڧྗͳύλʔϯϚονɺࣦഊͷՄೳੑΛܕͰදݱ • AWS SDKͷJava൛͕ར༻Ͱ͖Δ
  17. ScalaԽϓϩδΣΫτ։࢝

  18. ϓϩδΣΫτͷ࠷ॳͷΰʔϧ • ϝϯςφϯε & ύϑΥʔϚϯε໘Ͱͷ໰୊Λ ղܾ͢Δ͜ͱ • ৽iPhoneΞϓϦ޲͚ͷAPIΛఏڙ͢Δ͜ͱ • Ώ͘Ώ͘͸AndroidΞϓϦ,

    ϒϥ΢β൛΋
  19. ݴޠΛม͚͑ͨͩͰɺ͢΂ͯ ͷ໰୊͕ղܾͰ͖ΔΘ͚Ͱ͸ ͳ͍

  20. 0͔Β࣮૷Ͱ͖Δ 0͔Β࣮૷͠ͳ͍ͱ͍͚ͳ͍

  21. 0͔Βઃܭ&࣮૷͢Δͱ͍͏͜ͱ • 4೥ؒͰ௥Ճ͞Εͨଟ͘ͷػೳɺ࢓༷Λຬͨ͢ ඞཁ͕͋Δ • ஸೡʹ࣮૷&ઃܭΛ͠ͳ͍ͱɺ·͙ͨ͢ʹϝϯ ςφϯε͠ʹ͍͘ঢ়ଶʹͳͬͯ͠·͏

  22. υϝΠϯۦಈઃܭ΁ͷऔΓ૊Έ • υϝΠϯۦಈઃܭ • ෳࡶͳ࢓༷ͱཱͪ޲͔͏ͨΊͷಓ۩ • ೔ʑͷίϛϡχέʔγϣϯͷޮ཰Խ • ίϛϡχέʔγϣϯͰ࢖͏ݴ༿ͱίʔυΛ ݁ͼ͚ͭΔ

  23. ScalaΛֶͼͳ͕ΒɺͲͷΑ͏ ʹϓϩδΣΫτΛਐΊͨͷ͔

  24. ϖΞϓϩάϥϛϯά • Scalaͷ஌ࣝͷڞ༗ • ྫ.ʮ࣮͸͜Μͳؔ਺͕͋ͬͯɺ1ߦͰஔ͖׵͑ΕΔΑʯ • ۀ຿஌ࣝͷڞ༗ • IDEͷศརͳػೳɺσόοάͷίπΛڞ༗ •

    ྫ.ʮIntelliJʹ͸ϫʔΫγʔτ͍ͬͯ͏ػೳ͕͋ͬͯ..ʯ • ͪΐͬͱͨ͠ࡶஊͰஊস͢Δ
  25. νʔϜͱίʔυ͕੒௕͍ͯ͘͠ • ڞ௨ԽͰ͖ͦ͏ͳύλʔϯ͕ݟ͔ͭΔ • ʮ͋ɺࣅͨΑ͏ͳίʔυΛ࠷ۙ๻΋ॻ͍ͨʂʯ • ઃܭʹؔ͢Δٞ࿦

  26. ྫ. ظݶΛදݱ͢Δ • val period: Option[Date] • Some: ظݶ͋Γ •

    None: ແظݶ
  27. ྫ. ظݶΛදݱ͢Δ • val period: Period • Period • DefinitePeriod:

    ظݶ͋Γ • IndefinitePeriod: ແظݶ • val periodOrdering: Ordering[Period] • Periodͷॱং෇͚Λ͢ΔͨΊʹ༻ҙ • Option[Date]ͷॱং෇͚Ͱ͸ͳ͍
  28. ݸਓͱͯ͠ͷֶशํ๏ • ϖΞϓϩάϥϛϯάͷ͋ͱʹৼΓฦΓΛ͢Δ • ίοϓຊʹ͔͡Γͭ͘ • ϦϑΝϨϯεͬΆ͘࢖ͬͯΔ • ʮScalaؔ਺ܕσβΠϯ&ϓϩάϥϛϯάʯͷ ಡॻձ

  29. ScalaΤϯδχΞΛूΊΔ

  30. ਓ͕଍Γͳ͍ • Scalaઐۀ: 2ਓ + PHPͷϓϩδΣΫτͱ݉ۀͷ ΤϯδχΞ 1 or 2ਓ

    • ΋ͬͱ։ൃͷϖʔεΛ͍͋͛ͨ
  31. ΤϯδχΞΛूΊΔํ๏ • ࣾ಺͔ΒूΊΔ • ऴΘͬͨϓϩδΣΫτ͔ΒਓΛ΋Β͏ • ࣾ֎͔ΒूΊΔ • ։ൃύʔτφʔΛ୳͢ (֎஫͞Μ)

    • ࣾһͱͯ͠࠾༻͢Δ
  32. ࣾ֎͔ΒूΊΔ • ։ൃύʔτφʔΛ୳͢ • CTO΍ΤϯδχΞͷਓ຺Λۦ࢖ͯ͠3ਓͷஶ໊ͳϑϦʔϥϯεͷ ํʹ੠Λ͔͚ͨ • ·͔͞ͷશһOKɺҰϲ݄Ҏ಺ʹδϣΠϯ • ͙͢ʹϓϩδΣΫτʹೃછΜͰ௖͚ͨ

    • ։ൃεϐʔυ΋૝૾Ҏ্ • ʮScalaܦݧͳ͠ʯͬͯݴͬͯͨͷʹ…
  33. ࣾ֎͔ΒूΊΔ • ࠾༻ϖʔδ΍ٻਓαΠτʹٻਓΛग़͚ͩ͢ू·Βͳ͍ • ScalaΛ΍ͬͯΔձࣾͩͱΞϐʔϧ͢Δ • ϒϩάͰScalaʹؔ͢ΔهࣄΛॻ͘ • ΠϕϯτͰൃද͢Δ •

    Scalaʹڵຯͷ͋Δਓ(ܦݧෆ໰)Λ࠾༻͢Δ
  34. ։ൃ͕Ճ଎ͨ͠Έ͍ͨͰ͕͢ɺ ਐḿͲ͏Ͱ͔͢ʁ

  35. ਐḿͲ͏Ͱ͠ΐ͏ • ϦϦʔεͷ໨ॲ͕Α͏΍ཱ͖ͬͯͨ͘ஈ֊

  36. ScalaΛ࠾༻ͯ͠ྑ͔ͬͨͱ ࢥͬͯ·͔͢ʁ

  37. ChatWorkͱͯ͠͸ɺ࠾༻͠ ͯΑ͔ͬͨͱࢥ͍ͬͯΔͷ͔ʁ

  38. ྑ͔ͬͨ • ձࣾΛΞϐʔϧ͢Δػձ͕૿͑ͨ • ߹ಉͰษڧձ͠·͠ΐ͏ʂ • ϒϩά͕όζΔ ͨͩ͠ɺެݴ͔ͨ͠Βʹ͸ࣦഊͰ͖ͳ͍

  39. ࢲݸਓͱͯ͠͸ɺScalaԽϓϩ δΣΫτʹࢀՃͯ͠Α͔ͬͨ ͱࢥ͍ͬͯΔͷ͔ʁ

  40. ྑ͔ͬͨ • ؔ਺ܕϓϩάϥϛϯάͷߟ͑ํΛֶͿྑ͍͖ͬ ͔͚ͱͳͬͨ • ScalaΤϯδχΞ͸͠͹Β͓͘࢓ࣄ͋Γͦ͏ • ʮ͍͋ͭ͸PHPΛࣺͯͨʯͱݴΘΕΔΑ͏ʹ ͳͬͨ

  41. ScalaΛ࠾༻ͨ͠Βɺ௒͑ͳ͚ Ε͹ͳΒͳ͍น

  42. ٕज़໘Ͱͷน • JVMͷӡ༻ • ࣾ಺Ͱখ͘͞ϦϦʔεΛ܁Γฦ͠ɺτϥϒϧΛ ܦݧ͠ͳ͕Β֮͑Δ • New Relic, Mackerel,

    takipiͳͲͷಋೖ • ϓϩδΣΫτͷن໛ɺϝϯόʔͷεΩϧʹ߹ͬͨ ϑϨʔϜϫʔΫ΍ϥΠϒϥϦͷબఆ
  43. ࠾༻໘ͰͷนɺλΠϛϯά • ΤϯδχΞͷ࠾༻΍ڭҭ • ࣾ಺͔Βʁࣾ֎͔Βʁ • ScalaΛ࠾༻͢Δػձ • ৽ϓϩμΫτʁ࡮৽ϓϩδΣΫτʁ

  44. ৯ࣄ໘Ͱͷน • ϏϧυπʔϧʮSBT ʯ(ਣಲ)ͱ্खʹ͓෇͖߹͍ http://www.simpletask.co.jp/seminar/sbt_starter.html

  45. Scalaɺ࠾༻ͯ͠Έ·ͤΜ͔ʁ

  46. ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ