Slide 1

Slide 1 text

4DBMBͰͭ͘Δ
 ͪΐͬͱͨ͠$-*πʔϧ !UPEPLS ָ͘͠

Slide 2

Slide 2 text

୭ͩ ాॴॣ༎!UPEPLS ٻਓݕࡧΤϯδϯ8FCΫϩʔϥɺ޿ࠂ഑৴γεςϜɺ
 ޿ࠂϩάج൫ɺ0QFO*%$POOFDUೝূɺ3%#.4͓Ҿӽ͠

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

4DBMB w +BWBͱͷ૬ޓӡ༻ੑ w γʔϜϨεͳݺͼग़͠ɺ+BWBඪ४ϥΠϒϥϦͷ࠶ར༻ w ؆ܿੑ w লུՄೳͳߏจɺܕਪ࿦ɺڧྗͳඪ४ϥΠϒϥϦ w ந৅౓ͷߴ͍ίʔυɺ৽੍͍͠ޚߏจΛఆٛͰ͖Δදݱྗ w 8IBUͷڧௐɺ)PXͷӅณ w ੩తܕ෇͚ w ݕূՄೳੑɺϦϑΝΫλͷ͠΍͢͞ɺυΩϡϝϯτੑ

Slide 5

Slide 5 text

4DBMBΛձࣾͰ࢖͍͍͚ͨͲ
 Ͳ͏ͨ͠Β͍͍ͩΖ͏ʁ ձࣾͷٕज़తํ਑ͱ͔ɺϝϯόʔͷख़࿅౓ͱ͔ɺϓϩμΫτॻ͖௚͠ͱ͔

Slide 6

Slide 6 text

4DBMBΛձࣾͰ࢖͍͍͚ͨͲ
 Ͳ͏ͨ͠Β͍͍ͩΖ͏ʁ ձࣾͷٕज़తํ਑ͱ͔ɺϝϯόʔͷख़࿅౓ͱ͔ɺϓϩμΫτॻ͖௚͠ͱ͔ ·ͣ࢖͍·͠ΐ͏ʂ
 ͍͖ͳΓϓϩμΫτʹಋೖ͢Δͷ͸େมɻ
 ͳͷͰɺ·ͣ͸ݸਓͰ׬݁͢Δۀ຿ʹ࢖ͬͯΈͯɺ ʮΑ͔ͬͨΑʂʯʮ໘ന͍Αʂʯͱ෍ڭ͍ͯ͘͠ͷ͕Α͍͔΋͠Ε·ͤΜɻ

Slide 7

Slide 7 text

4DBMBͬͯɺͦͦ͜͜େ͖ͳ
 ϓϩμΫτ޲͚ͳΜ͡Όͳ͍ͷʁ 5XJUUFSͱ͔"QBDIF4QBSLͱ͔ΞυςΫͱ͔

Slide 8

Slide 8 text

4DBMBͬͯɺͦͦ͜͜େ͖ͳ
 ϓϩμΫτ޲͚ͳΜ͡Όͳ͍ͷʁ 5XJUUFSͱ͔"QBDIF4QBSLͱ͔ΞυςΫͱ͔ ͪΐͬͱͨ͠εΫϦϓτΛ
 ॻ͘ͷʹ΋͍͍ײ͡Ͱ͢ (*U)VCͷτϨϯυΛݟΔͱɺ͔֬ʹ෼ࢄγεςϜ΍Ϗοάσʔλɺ
 ػցֶशܥͷϓϩμΫτ͕ଟ͍Ͱ͢ɻ ͕ɺͪΐͬͱͨ͠ίʔυΛॻ͍ͯαοͱಈ͔͢͜ͱ΋࣮͸ಘҙͳΜͰ͢ɻ

Slide 9

Slide 9 text

r.BSUJO0EFSTLZ -FY4QPPO BOE#JMM7FOOFST 5IFOBNF4DBMBTUBOETGPSlTDBMBCMFMBOHVBHFz ʜ
 :PVDBOBQQMZ4DBMBUP
 BXJEFSBOHFPGQSPHSBNNJOHUBTLT 
 GSPNXSJUJOHTNBMMTDSJQUTUPCVJMEJOHMBSHFTZTUFNT

Slide 10

Slide 10 text

4DBMB͸େֻ͔ΓͳϓϩμΫτΛ࡞Δͷʹద͍ͯ͠ΔݴޠͰ͕͢ɺ )BDLZͳ਺ߦd਺ेߦͷ
 εΫϦϓςΟϯά΋े෼
 շదʹͰ͖·͢

Slide 11

Slide 11 text

4DBMB͸େֻ͔ΓͳϓϩμΫτΛ࡞Δͷʹద͍ͯ͠ΔݴޠͰ͕͢ɺ )BDLZͳ਺ߦd਺ेߦͷ
 εΫϦϓςΟϯά΋े෼
 շదʹͰ͖·͢

Slide 12

Slide 12 text

#
 %FNPOTUSBUJPO5JNF .BSLEPXOΛࣼΊಡΈ͢Δ

Slide 13

Slide 13 text

TDBMBJP4PVSDF w ϩʔΧϧϦϞʔτͷϑΝΠϧಡΈॻ͖ʹศར w ςΩετϑΝΠϧΛߦ୯ҐDIBS୯ҐͰJUBSBUJWFʹ
 ॲཧͰ͖ΔͷͰɺϑΝΠϧαΠζ͕େ͖ͯ͘΋҆৺ w HFU-JOFTͯ͠ίϨΫγϣϯϝιουͰΩϝΔͳͲ

Slide 14

Slide 14 text

#
 %FNPOTUSBUJPO5JNF εΫϨΠϐϯάΛ΍ͬͯΈΔ

Slide 15

Slide 15 text

4USJOH*OUFSQPMBUJPO w จࣈྻϦςϥϧͷલʹTΛ෇͚Δͱɺม਺Λల։Ͱ͖Δ val price = 1000 s"Price is $price" // => Price is 1000

Slide 16

Slide 16 text

5SJQMF2VPUF "Hello triple quote!\nHello stripMargin!" """Hello triple quote! Hello stripMargin!""" """|Hello triple quote! |Hello stripMargin!""".stripMargin w վߦΛؚΉจࣈྻΛຒΊࠐΉʹ͸ɺΛ࢖͏ w ΠϯσϯτΛଗ͑Δʹ͸Πϯσϯτจࣈ c ͱTUSJQ.BSHJOΛ࢖͏

Slide 17

Slide 17 text

4USJOH*OUFSQPMBUJPOͱ5SJQMF2VPUF val response = s"""HTTP/1.1 ${status.value} |Date: ${rfc1123Formatter.format(now)} |Server: SimpleScalaHttpServer |Content-Type: $contentType |Content-Length: ${body.length.toString} |Connection: Close | |""".stripMargin ͪΐͬͱͨ͠ςϯϓϨʔτΤϯδϯΈ͍ͨʹ࢖͏͜ͱ΋

Slide 18

Slide 18 text

$-*πʔϧʹͯ͠͸
 ΋ͬ͞Γ͗͢͠͡Όͳ͍ʁ ύΠϓͱ͔ͰΨϯΨϯͭͳ͍ͰαΫαΫಈ͔͍ͨ͠ΜͰ͚͢Ͳɻ

Slide 19

Slide 19 text

$-*πʔϧʹͯ͠͸
 ΋ͬ͞Γ͗͢͠͡Όͳ͍ʁ ύΠϓͱ͔ͰΨϯΨϯͭͳ͍ͰαΫαΫಈ͔͍ͨ͠ΜͰ͚͢Ͳɻ ࣮ߦՄೳͳόΠφϦΛੜ੒͠
 αΫαΫಈ͔͢͜ͱ΋Ͱ͖·͢ 4DBMB/BUJWF΍(SBBM7.ͷ4VCTUSBJU7.Λ࢖͍ɺ
 (PͷΑ͏ʹ࣮ߦՄೳͳόΠφϦΛੜ੒͢Δ͜ͱ΋ՄೳͰ͢ɻ +7.ͷىಈΛ଴ͨͣʹαΫαΫಈ͔͢͜ͱ͕Ͱ͖·͢ʂ

Slide 20

Slide 20 text

IUUQXXXTDBMBOBUJWFPSHFOW

Slide 21

Slide 21 text

#
 %FNPOTUSBUJPO5JNF .BSLEPXOࣼΊಡΈΛ4DBMB/BUJWFͰߴ଎Խ

Slide 22

Slide 22 text

·ͱΊ w 4DBMBΛ࢓ࣄͰ࢖͓͏ʂ w ·ͣ͸ݸਓͷۀ຿Ͱ׬݁͢ΔൣғͰ΍ͬͯΈΑ͏ʂ w 4DBMB͸εέʔϥϒϧͳݴޠʂ w େ͖͍ϓϩμΫτ΋ɺখ͞ͳεΫϦϓτ΋͍͍ײ͡ʂ w εΫϦϓςΟϯάʹศརͳػೳΛ஌͓ͬͯ͜͏ʂ w TDBMBJP4PVSDF w 4USJOH*OUFSQPMBUJPO w 5SJQMF2VPUF w ࣮ߦՄೳͳόΠφϦΛੜ੒͢Δ͜ͱ΋Ͱ͖ΔΑʂ w αΫαΫಈ͍ͯɺͦͷ··νʔϜʹڞ༗΋Ͱ͖Δʂ w མͱ݀͠΋͋Δ͔ΒؾΛ͚ͭΑ͏ʂ

Slide 23

Slide 23 text

5IBOLZPV Some(question) match { case Twitter => "@todokr" case GitHub => "@todokr" case Facebook => "shunsuke.tadokoro" case _ => invokeDynamic }