Slide 1

Slide 1 text

2021-03-19 SIGPX #8 Tomoya Matsuura/দӜ஌໵ 
 https://matsuuratomoya.com me@matsuuratomoya.com ԻͱԻָͷͨΊͷ
 ϓϩάϥϛϯάݴޠͷ
 αʔϕΠ 1

Slide 2

Slide 2 text

• ਆಸ઒ݝכϲ࡚ࢢग़਎(1994) • ਆಸ઒૯߹ߴߍଔ(2013) • ౦ژܳज़େֶԻָ؀ڥ૑଄Պଔ(2017) • ۝भେֶେֶӃܳज़޻ֶ෎ 
 म࢜/ത࢜ޙظ՝ఔ(2017,2019~) • ࿇পࣥଠϑϧϑΟϧ(2018~) • YCAM(Intern,2015),teamlab(2015~2017),
 School for Poetic Computation(2018) ࣗݾ঺հ 2 photo: Takehiro Goto

Slide 3

Slide 3 text

3 minimal musical medium / a programming language as an Infrastructure for sound & music. https://github.com/mimium-org/mimium 3

Slide 4

Slide 4 text

• Իָϓϩάϥϛϯάݴޠͷ֓೦త੔ཧɺൺֱΛͨ͠ࢿྉ͕গͳ͍ • ಛʹ࣮૷ऀ͔Βݟͨڞ௨ͷޠኮɺඞཁͳ஌͕ࣝڞ༗͞Ε͓ͯΒ ͣɺԻָͷͨΊͷݴޠΛ࡞Δϋʔυϧ͕ߴ͍ɺධՁ͢Δͷ͕೉͠ ͍ • ۩ମతࣄྫͷࡉ͔͍঺հ͸աڈͷαʔϕΠʹͳΔ΂͘೚ͤͯཧ࿦ త੔ཧΛ͍ͨ͠ • ࠓճ͸ಛʹϦΞϧλΠϜ৴߸ॲཧͰ͖ΔݴޠΛத৺ʹ࿩͠·͢ ൃදࣗମͷ໨త 4

Slide 5

Slide 5 text

• ԻָϓϩάϥϛϯάݴޠΛ࡞Δ໨త • ԻָϓϩάϥϛϯάݴޠͷաڈͷαʔϕΠ • ୅දతͳ؀ڥͷ঺հ • 2000೥Ҏޙͷݴޠઃܭʹ͓͚Δओཁͳ՝୊ • ݴޠͷ࣮૷ύλʔϯͱΞʔΩςΫνϟ • ݴޠΛಛ௃͚ͮΔཁૉͱಛ௃ͷ෼ྨ • ·ͱΊɺະདྷͷԻָݴޠͷ͋Γํ ߏ੒ 5

Slide 6

Slide 6 text

ԻָʹίϯϐϡʔλʔΛ༻͍ΔϞνϕʔγϣϯ ԻָϓϩάϥϛϯάݴޠΛ࡞ΔϞνϕʔγϣϯ • ϋʔυ΢ΣΞૢ࡞ʢϝϞϦɺεϨουɺεέδϡʔϦϯάʣ
 ͷӅṭʢԻָՈ͸ϝϞϦͷ͜ͱΛؾʹͨ͘͠ͳ͍ʣ • ԋ૗/࡞ۂΠϯλʔϑΣʔεͱͯ͠ͷϓϩάϥϛϯάʢLive Codingʣ • ϝσΟ΢Ϝͱͯ͠ͷιʔείʔυʢ#SC140ɺMML΍ςΩετԻָαΫϥͳͲʣ • ϓϩάϥϛϯάڭҭͷπʔϧͱͯ͠(EarSketch,Sonic Pi) Իָϓϩάϥϛϯάݴޠͷ໨త 6 • ίϯϐϡʔλʔͰͳ͚Ε͹ෆՄೳͳදݱɺ৽͍͠දݱʢmicrosoundͳͲʣ • ݱ࣮ͷָثɺ؀ڥͷγϛϡϨʔτ(VSTɺ෺ཧϞσϦϯά߹੒)

Slide 7

Slide 7 text

• "Languages for Computer Music”,Frontiers in Digital Humanities(2018), Roger B. Dannenberg • ԻָݴޠΛಛ௃͚ͮΔ6ཁૉͷఏҊɺԻָݴޠҰൠʹڞ௨͢Δ՝୊ͷ੔ཧ • “Computer Music Languages and Systems: The Synergy Between Technology and Creativity”,pp 1-49 in Handbook of Digital Games and Entertainment Technologies(2016),Hiroki Nishino and Ryohei Nakatsu • “The Development of Computer Music Programming Systems”, Journal of New Music research,42(1), pp97-100(2013) Victor Lazzrini • ↑2ͭ͸ओʹྺ࢙త؍఺ͷ੔ཧ • “Idiomatic Patterns and Aesthetic Influence in Computer Music Languages”, Organized Sound,25(1),pp53-63(2020),Andrew Mcpherson and Koray Tahlroǧlu • Իָϓϩάϥϛϯά؀ڥ͕ͲͷΑ͏ʹͦͷݴޠݻ༗ͷදݱΛੜΈग़͢ͷ͔ΛΠϯλϏϡʔ͔Β ԻָϓϩάϥϛϯάݴޠͷαʔϕΠ 7

Slide 8

Slide 8 text

ԻָϓϩάϥϛϯάݴޠҰཡ 8 l-BOHVBHFTGPS$PNQVUFS.VTJD 3PHFS#%BOOFOCFSHz 'SPOUJFSTJO%JHJUBM)VNBOJUJFT /PW Ճච͸দӜ

Slide 9

Slide 9 text

ԻָϓϩάϥϛϯάݴޠҰཡ 9 l-BOHVBHFTGPS$PNQVUFS.VTJD 3PHFS#%BOOFOCFSHz 'SPOUJFSTJO%JHJUBM)VNBOJUJFT /PW Ճච͸দӜ Overtone Sam Aaron (2011?) Sonic PI Sam Aaron (2012) TidalCycles Alex Mclean (2006~) Chronic Eli Blandt (2002) Kronos Versa Norilo (2015) LC Hiroki Nishino (2013) ixi lang Thor Magnusson (2012) Gibber Charlie Roberts (2012) FoxDot Jean-François Parent (2015) Extempore Andrew Sorensen (2012) impromptu Andrew Sorensen (2010) Common Lisp Music Bill Schottstaedt (1989) SuperCollider- Clients SOUL ROLI (2018) Vult Leonardo Laguna Ruiz (2016) mimium Tomoya Matsuura (2020) Gwion Jérémie Astor (2017) ଞɺmidiϨϕϧΛϝΠϯͷର৅ʹͨ͠؀ڥʹAlda(2012)΍Takt(2014)ɺORCΛ(2017)ͳͲ

Slide 10

Slide 10 text

10 ΦʔσΟΦϓϩάϥϛϯάݴޠAdvent Calender 2020 by aike͞Μ ͋ΒΏΔݴޠͰαΠϯ೾+σΟϨΠΛ࡞ͬͯΈΔ https://qiita.com/advent-calendar/2020/audiolang

Slide 11

Slide 11 text

ྺུ࢙֓ 11 50s~80s DSPϋʔυ΢ΣΞʹର͢Δ໋ྩ 90s~ All CPUɺ൚༻OS্ͰͷϦΞϧλΠϜॲཧ(Max,Pd,SC,CSound) 00s~ ৴߸ॲཧͷJITίϯύΠϧ/τϥϯεύΠϧ(Faust,Soul,Vult) ಛఆͷදݱʹಛԽͨ͠DSL in DSL(Sonic Pi,TidalCycles) Πϕϯτॲཧͷਖ਼֬ͳεέδϡʔϦϯά(ChucK,Extempore)

Slide 12

Slide 12 text

Pd,SuperColliderҎޙͷओཁ՝୊ 12 2.௿ϨΠϠͷ֦ுੑ ৴߸ॲཧͷϓϦϛςΟϒ(UGen)Λ૿΍ͨ͢ΊʹC΍C++Λॻ͔ͳ͖Ό͍͚ͳ͍ ৴߸ॲཧͱΠϕϯτॲཧͰผͷܕͷಉ͡ॲཧ(+ͱ+~ͱ͔)Λ࢖͍෼͚ͳ͖Ό͍͚ͳ͍ 3.ߴϨΠϠͷ֦ுੑ
 ݴޠͦͷ΋ͷͷ֦ுੑɺࣗݾ൓өੑʹݶ౓͕͋Δ ಛఆͷԻָྖҬʹ͞ΒʹಛԽͨ͠ݴޠ/ϥΠϒϥϦΛ࡞Γ͍ͨ 1.ਖ਼֬ͳΠϕϯτεέδϡʔϦϯά
 ϓϦΤϯϓςΟϒϚϧνλεΫʢϢʔβϓϩάϥϜ͕OSͷλεΫεέδϡʔϦϯάʹ ؔ༩Ͱ͖ͳ͍ʣ؀ڥԼͰͲ͏΍ͬͯαϯϓϧϨϕϧͰਖ਼֬ͳΠϕϯτॲཧΛ͢Δ͔ʁ

Slide 13

Slide 13 text

1.ΠϕϯτεέδϡʔϦϯά໰୊ 13 ΦʔσΟΦόοϑΝʢྫ:256αϯϓϧʣຖʹΠϕϯτΩϡʔΛফԽ PuredataɺSuperColliderͳͲ ಉظ(Synchronous) ࿦ཧ࣌ؒʢLogical TimeʣͰॱংΛอূ ChucK,Gwion,mimiumͳͲ w ࣮૷͸ΘΓͱ؆୯ɺಈ࡞ܰྔ w .*%*΍6%1ͳͲ*0བྷΈͷ͕࣌ؒਖ਼֬Ͱ͸ͳ͍ w $PODVSSFOUͳॲཧʹ࠷దԽ͠Α͏ͱࢥ͏ͱେม w *0ؔ࿈΋ൺֱతਖ਼֬ʹॲཧͰ͖Δ w εϨου҆શͳ࣮૷ͭΒ͍ w ཁݸผ04ຖͷରԠɺ૊ΈࠐΈͱ͔ʹ͸Ҡ২ͮ͠Β͍ ඇಉظ(Asynchronous) εϨου෼͚ͯϦΞϧλΠϜεέδϡʔϧ Max※,ExtemporeͳͲ ※ਖ਼֬ʹ͸Max͸ΦʔσΟΦͱεϨουΛ෼͚͍ͯΔ͕ΦʔσΟΦͱผϨʔτ(ඪ४ 20msຖ)ͰΠϕϯτΩϡʔΛpoll͍ͯ͠Δɻ
 Extempore͸λεΫ଴ͪ࣌ؒΛܭࢉͯ͠λεΫ͕͋Δ࣌ͷΈىಈ ϋΠϒϦου Ϣʔβʔ͕໌ࣔͯ͠ಉظ/ඇಉظΛ੾Γସ͑ LC(Nishino2013)ͳͲ ྫɿͽͬͨΓαϯϓϧຖʹม਺Λมߋ͍ͨ͠ʜ ͚Ͳຖαϯϓϧॲཧ͢Δͷ͸ա৒ ྫɿͽͬͨΓαϯϓϧຖʹม਺Λมߋ͍ͨ͠ʜ ͚Ͳຖαϯϓϧॲཧ͢Δͷ͸ա৒

Slide 14

Slide 14 text

• Pd΍SCͰ͸༻ҙ͞ΕͨجຊϞδϡʔϧɿUnit GeneratorʢUGenɺΦγϨʔλ΍ ϑΟϧλͷ͜ͱʣΛ૊Έ߹ΘͤΔ͜ͱͰ৴߸ॲཧΛهड़Ͱ͖Δ • ৽͍͠جຊϞδϡʔϧΛ࡞Γͨ͘ͳͬͨΒͲ͏͢Δʁ
 →C or C++ͰϓϥάΠϯ࡞ͬͯͶʢͭΒ͍ʣ • JITίϯύΠϧ͢Ε͹ύϑΥʔϚϯεΛଛͳΘͣ௚઀৴߸ॲཧΛهड़Ͱ͖ΔͷͰ͸ʁ • DSPܥݴޠɿFaust,Soul,Vult,Kronos • JITͷόοΫΤϯυ͸͍͍ͩͨLLVMɺC΍C++ίʔυͱͯ͠τϥϯεύΠϧͰ͖Δ ΋ͷ΋ଟ͍ɻWebAssemblyհͯ͠ϒϥ΢βͰಈ࡞͢Δ΋ͷ΋ • ໰୊ɿDSPݴޠࣗମ͸εέδϡʔϦϯάͷSemanticsΛ࣋ͨͳ͍ͷ͕΄ͱΜͲ 2.௿ϨΠϠͷ֦ுੑ 14

Slide 15

Slide 15 text

• ϦζϜύλʔϯ/Ի֊/࿨Իͱ͍ͬͨߴ࣍ͷύϥϝʔλΛϓϩάϥϜ͢Δʹ ͸ݴޠͷந৅Խೳྗʢಛʹܕ·ΘΓʣ͕଍Γͳ͍ • ྫ͑͹PdͩͱϓϦϛςΟϒͱϓϦϛςΟϒ͔Β੒ΔϦετ͔͠ѻ͑ͳ͍ • ϙϐϡϥʔͳղܾࡦɿSuperColliderΛωοτϫʔΫίϚϯυͰૢ࡞Ͱ͖Δ γϯηαΠβʔͱͯ͠࢖͍ɺ৽͍͠DSLΛ࡞Δ • SC͸v3ΑΓૄ݁߹ͳαʔόʔɾΫϥΠΞϯτϞσϧΛ࠾༻ɺ৽͍͠γϯηͷఆٛ(SynthDef)Ҏ֎ ͸΄΅ͳΜͰ΋OSC(UDP্ͷ؆қϓϩτίϧ)Ͱૢ࡞Մೳ • Sonic Pi(Ruby+Erlang)ɺixi(Ruby)ɺFoxDot(Python)ɺTidalCycles(Haskell)ɺOvertone(Clojure)ͳͲ • ໰୊ɿωοτϫʔΫίϚϯυͷਖ਼֬ͳεέδϡʔϦϯάΛ…(σδϟϰ) 3.ߴϨΠϠͷ֦ுੑ 15 DSL on DSLͷϗετͷબ୒ࢶ͸࣮࣭SuperColliderҰ୒ͳͷ͕ݱঢ়

Slide 16

Slide 16 text

• ࣈ۟ղੳ • ݴޠ֦ு • ݴޠಛघԽ • ύΠϓϥΠϯ • ιʔεtoιʔεม׵ SpinellisʹΑΔDSL࣮૷ͷσβΠϯύλʔϯΑΓൈਮ Ͳ͏΍࣮ͬͯ૷͢Δʁ 16 Diomidis Spinellis. Notable design patterns for domain specific languages. Journal of Systems and Software, 56(1):91–99, February 2001. (doi:10.1016/S0164-1212(00)00089-3) Ұ൪ετϨʔτͳΞϓϩʔνɺࣗ༝౓ߴ͍͕࣮૷େม ԋࢉࢠΦʔόʔϩʔυ΍ϚΫϩͳͲɺࣗ༝౓͸ϗετݴޠ࣍ୈ ϘΠϥʔϓϨʔτͱ૊Έ߹ΘͤͨΓɺҰ෦ͷػೳ͚ͩ࢖͏ Cͷιʔεʹม׵ͨ͠Γ͢Δ͜ͱͰόοΫΤϯυ؆ུԽ SuperColliderʹ৴߸ॲཧ෦෼͸͓೚ͤ

Slide 17

Slide 17 text

SuperColliderʹΑΔه๏ 17 { var noise = PinkNoise.ar(0.2); noise = Mix.new(Array.fill(10, {arg i; Resonz.ar(noise, i * 800 + 200, 0.05)})); noise = (noise * 0.2 + noise * Decay.kr(Dust.kr(0.5),10)); noise = RHPF.ar(noise, LFNoise0.kr(0.5).range(220, 880), rq:0.001); CombL.ar(noise, delaytime:0.5, decaytime:25).dup() * 0.5 }.play; (-> noise = PinkNoise.ar(0.2) noise = Mix Array.fill 10, (i)-> Resonz.ar(noise, i * 800 + 200, 0.05) noise = (noise * 0.2 + noise * Decay.kr(Dust.kr(0.5), 10)) noise = RHPF.ar(noise, LFNoise0.kr(0.5).range(220, 880), rq:0.001) CombL.ar(noise, delaytime:0.5, decaytime:25).dup() * 0.5 ).play() CoffeColliderʹΑΔه๏ CoffeeScriptͷԋࢉࢠΦʔόʔϩʔυ͚ͩͰՄೳͳݶΓه๏Λࣅ͍ͤͯΔ http://mohayonao.github.io/CoffeeCollider/#noise.coffee

Slide 18

Slide 18 text

• $΍#͸ϗετݴޠͰ͋ΔHaskellʹ͓͚Δதஔԋࢉࢠ(ݴޠ֦ு) • sound΍gainɺeveryͳͲ͸Haskell্ͰϥΠϒϥϦͱͯ͠ఆٛ͞Εͨؔ਺ • “”Ͱғ·Εͨ෦෼͸Haskell্Ͱ͸ͨͩͷจࣈྻ • Parsecͱ͍͏Haskellͷࣈ۟ղੳϥΠϒϥϦͰ಺෦తʹύʔε͍ͯ͠Δ • Ϣʔβʔ͸Haskellͷؔ਺ఆٛ΍ܕએݴͳͲߴ౓ͳจ๏Λ஌Δඞཁ͸ͳ͍ ʢݴޠಛघԽʣ • TidalCycles͸SuperColliderʹରͯ͠OSCΛૹΓԻΛग़͢(ύΠϓϥΠϯ) HybridͳྫɿTidalCycles 18 d1 $ sound "bd*4" # gain (every 3 (rev) $ "1 0.8 0.5 0.7") ಉ༷ͳྫͱͯ͠͸FoxDot(ϗετݴޠ:Python)ͳͲ

Slide 19

Slide 19 text

ԻָݴޠͷΞʔΩςΫνϟ 19 ίϯύΠϥ/ ΠϯλϓϦλ ϥϯλΠϜ ιʔείʔυ (ςΩετσʔλ) தؒදݱ UGenάϥϑߏ଄ VM໋ྩྻ Ϛγϯίʔυ ϨΠϠʔ ߴ ௿ ϥΠϒϥϦ ҙຯ֦ு • தؒදݱͷཻ౓ʹΑͬͯදݱͷ෯΍ಈతมߋͷ͠΍͕͢͞มΘͬͯ͘Δ 50~80sɿ DSPϋʔυ΢ΣΞ 00s: UGen

Slide 20

Slide 20 text

ϏδϡΞϧݴޠͷ৔߹ 20 ίϯύΠϥ/ ΠϯλϓϦλ ϥϯλΠϜ ιʔείʔυ (ςΩετ/όΠφϦσʔλ) தؒදݱ UGenάϥϑߏ଄ VM໋ྩྻ Ϛγϯίʔυ ϨΠϠʔ ߴ ௿ ϏδϡΞϥΠβ ʢIDEʣ ஌֮/ฤू Մೳͳදݱ ϥΠϒϥϦ ҙຯ֦ு • ͋Δҙຯී௨ͷݴޠ΋UTF-8ͳͲܾ·ͬͨόΠφϦσʔλΛɺςΩετͱ͍͏ਓؒʹೝࣝՄ ೳͳදݱʹม׵͍ͯ͠ΔͷͰ͜ͷਤʹ౰ͯ͸ΊΔ͜ͱ΋Ͱ͖Δ

Slide 21

Slide 21 text

தؒදݱ͸ͻͱͭͱ͸ݶΒͳ͍ 21 ϥϯλΠϜ ιʔείʔυ (ςΩετ/όΠφϦσʔλ) ϏδϡΞϥΠβ ʢIDEʣ ஌֮/ฤू Մೳͳදݱ ίϯύΠϥ/ ΠϯλϓϦλ தؒදݱ ϥΠϒϥϦ ίϯύΠϥ/ ΠϯλϓϦλ தؒදݱ ϥΠϒϥϦ ίϯύΠϥ/ ΠϯλϓϦλ தؒදݱ ϥΠϒϥϦ

Slide 22

Slide 22 text

TidalCyclesͷྫ 22 HaskellΠϯλϓϦλ(GHCI) TidalCycles BP ύʔα ύλʔϯ
 ϥΠϒϥϦ ιʔείʔυ (ςΩετσʔλ) ҙຯ֦ு SC ΫϥΠΞϯτ OSC ϝοηʔδ SCSynth Pattern σʔλ • ʢ͍·͍ͪ͏·͘ਤࣔͰ͖ͳ͍ʣ

Slide 23

Slide 23 text

• Syntax(౷ޠ࿦) • Semantics(ҙຯ࿦) • Runtime • Libraries • Programming Environments(IDE) • Community&Resources Dannenbergʢ2018ʣʹΑΔ ԻָݴޠΛಛ௃͚ͮΔཁૉ 23

Slide 24

Slide 24 text

• ͜͜ͰͷExpressivenessͱ͸“ಡΈ΍͘͢ॻ͖΍͍͢”ɺ
 Generalͱ͸“Մೳͳදݱͷൣғ͕޿͍”ͱ͍͏ҙຯ Expressive vs General 24 E. Brandt, “Temporal type constructors for computer music programming,” School of Computer Science, Carnegie Mellon University, 2002. ࣮ࡍʹ͸࣮ߦ࣌ύϑΥʔϚϯε͕ ѱ͘ͳΔͱ͍͏৽ͨͳτϨʔυΦ ϑ͕ൃੜ͍ͯ͠Δ

Slide 25

Slide 25 text

Իָϓϩάϥϛϯάʹ͓͍ͯଟݴޠΞϓϩʔνΛऔΔͱɺ Ϣʔβ͸൚༻ੑ (FOFSBMJUZ ͱޮ཰ੑ &GpDJFODZ ͷόϥϯεΛऔΓ΍͘͢ͳΔɻ λεΫʹԠͯ͡ϓϩάϥϚ͸ҟͳΔෳࡶ౓ͷΤϯτϦʔϙΠϯτΛબ୒͢Δ͜ͱ ͕ՄೳʹͳΔɻΑΓ௿͘൚༻తͳϨϕϧͰ͸ΑΓෳࡶͳίʔυͷઃܭ͕ඞཁ͕ͩ ෯޿͍݁ՌΛಘΒΕΔɻҰํɺΑΓߴ͍ɺಛघԽɺ۩ମԽ͞ΕͨϨϕϧͰ͸ϓϩ άϥϛϯάʹඞཁͳ࿑ྗͱ͍͏؍఺͔Βϓϩηε͸ΑΓޮ཰తʹͳΔͩΖ͏ɻ Lazzarini(2013)ΑΓ Efficient vs General 25

Slide 26

Slide 26 text

3ͭͷہॴԽͱ3ͭͷޮ཰ੑ ཁૉ͕༩͑Δಛ௃ͷ෼ྨʢͷҊʣ 26 6ͭΛશ෦৳͹͢ͷ͸ݫ͘͠ɺτϨʔυΦϑ͕͋Δ Expression Generality දݱͷہॴੑ Platform Independency ؀ڥͷہॴੑ Dynamic Modification ܧଓత࣮ߦͷہॴੑ Runtime Efficiency ࣮ߦ࣌ͷܭࢉίετ Learning Efficiency Ϣʔβʔͷֶशίετ Development Efficiency ։ൃίετ গͳ͘ͱ΋ɺ“͋ΒΏΔ؀ڥͰ͋ΒΏΔදݱ͕Ͱ͖ɺಈతมߋ΋͠·͘Εͯ௚ײతʹ࢖͍΍͢ ࣮͘ߦ଎౓΋ωΠςΟϒฒΈ”ͷݴޠΛ࡞Ζ͏ͱ͢Δͱ։ൃίετ͕ͱΜͰ΋ͳ͍͜ͱʹͳΔ

Slide 27

Slide 27 text

27 Syntax Semantics Runtime Libraries Programming Environment Community Resources Development Efficiency Runtime Efficiency Learning Efficiency Expression Generality Dynamic Modification ֤ཁૉͱಛ௃ͷؔ܎ Platform Independency …ຊ౰ʹ͜ΕΒͷཁૉ͚ͩͰݴޠΛධՁͰ͖ΔͷͩΖ͏͔ʁ

Slide 28

Slide 28 text

Idiomaticity ྔతධՁͰ͖ͳ͍ಛ௃ 28 • ཁ໿ɿݴޠʹ͓͚Δཧ࿦తʹՄೳͳදݱͰ͖Δൣғ͕ಉͩͬͨ͡ ͱͯ͠΋ɺͦΕͧΕͷݴޠ͕༠ൃ͢Δදݱͷ࣭ɿIdiomacticity͸ ҟͳΔ • ݴΘΕͯΈΔͱ͋ͨΓ·͑ l*EJPNBUJD1BUUFSOTBOE"FTUIFUJD*OqVFODFJO$PNQVUFS.VTJD-BOHVBHFTz 0SHBOJ[FE 4PVOE QQ "OESFX.DQIFSTPOBOE,PSBZ5BIMSPǧMV

Slide 29

Slide 29 text

ϝλΫϦΤʔγϣϯͱͯ͠ͷݴޠઃܭ 29 զʑͷݚڀ݁Ռ͸ʢ༁஫ɿݴޠ͕༩͑ΔʣಛఆͷඒతӨڹͷূ໌Λҙਤͨ͠ ΋ͷͰ͸ͳ͍͠ɺݸʑͷ࣮ફऀͷ૑଄ੑ͕ৗʹୈҰͰ͋Δ͜ͱʹมΘΓ͸ͳ ͍΋ͷͷɺσδλϧָثͷσβΠϯ͸ɺݴޠ࡞੒ऀͱָثσβΠφʔŠ࠷ऴ తʹͦͷݴޠͷϦιʔεʢͦͯͦ͠Εͱͱ΋ʹɺӅ͞ΕͨεΫϦϓτʣΛࣗ ਎ͷ૑଄త໨ඪʹ߹Θͤͯঌש͢ΔऀŠͱͷɺ࣌ؒͱڑ཭Λ௒͑ͨର࿩Ͱ͋ Δͱݟͳ͢͜ͱ͕Ͱ͖ΔɺͱఏҊͰ͖Α͏ɻͦ͏ͯ͠ɺݴޠઃܭ͸Ұछͷϝ λΫϦΤʔγϣϯߦҝͱͳΓɺ࠷ऴతʹ͸Կे೥ʹ΋ΘͨͬͯඒతͳӨڹΛ ༩͑Δ͜ͱʹͳΔɻ l*EJPNBUJD1BUUFSOTBOE"FTUIFUJD*OqVFODFJO$PNQVUFS.VTJD-BOHVBHFTz 0SHBOJ[FE 4PVOE QQ "OESFX.DQIFSTPOBOE,PSBZ5BIMSPǧMV චऀ༁ɺڧௐ͸චऀ

Slide 30

Slide 30 text

• 2000೥Ҏޙͷओཁͳ3՝୊ • ࣮૷ํ๏͔ΒݟΔԻָݴޠ • ཉ͍͠จ๏ͷࣗ༝౓ʹΑͬͯݴޠ֦ுͰରԠͨ͠Γߏจղੳͨ͠Γ • தؒදݱͷཻ౓ͱ࣮ߦ࣌ύϑΥʔϚϯεɺಈతมߋͷ͠΍͕͢͞มΘΔ • ԻָݴޠΛಛ௃͚ͮΔ6ཁૉʹରͯ͠ɺ࣮ࡍʹݱΕΔ3ͭͷہॴ ੑɺ3ͭͷޮ཰ੑͱ͍͏ࢦඪΛఏҊ ·ͱΊ 30 ௿ϨΠϠͷ֦ு(JIT DSP) ߴϨΠϠͷ֦ு (DSL in DSL) ਖ਼֬ͳεέδϡʔϦϯά

Slide 31

Slide 31 text

• ԻϓϩάϥϛϯάʹඞཁͳυϝΠϯ஌ࣝͱݴޠॲཧܥʹඞཁͳυ ϝΠϯ஌͕ࣝ྆ํඞཁ͚ͩͲ྆ํϔϏʔ • DSPΛJITॲཧͰ͖ΔΑ͏ʹ͠Α͏ͱࢥ͏ͱ࣮૷ͷ95ˋ͸Իͱ͔ ؔ܎ͳ͘ͳͬͯ͘Δ • ݴޠઃܭ͕Α͘Ͱ͖ͯΔ≠࢖ͬͯ΋Β͍΍͍͢ʢύοέʔδϯ άɺCIɺγϯλοΫεϋΠϥΠτɺυΩϡϝϯςʔγϣϯ…ʣ ࣮૷ऀͱͯ͠ײ͡Δࠔ೉ 31

Slide 32

Slide 32 text

• ΠϕϯτεέδϡʔϧͱJIT DSP͕1ͭͷݴޠମܥͰ׬݁͢Δݴޠ • ࣗݾ൓өੑΛڧΊͨݴޠ಺DSLΛ࡞Γ΍͍͢ݴޠ • ςΩετɺඇςΩετΛ૊Έ߹Θͤ/૒ํ޲ධՁͰ͖Δݴޠ • ෳ਺ͷݴޠʹ·͕ͨͬͯ࢖͑ΔLanguage Server/IDEج൫ ະདྷͷԻָϓϩάϥϛϯά 32 Language Oriented Programming(Racket)ͷΑ͏ͳੈք؍ʁ ↓↑DAWʢԻ੍ָ࡞ιϑτ΢ΣΞʣͱͷΑΓࠜຊతͳ࿈ܞʁ →mimiumͰϝΠϯͰ࣮ݱ͍ͨ͜͠ͱ ໺ྑϓϩάϥϛϯάݴޠͷϦϙδτϦ͕਺ඦݸGithubʹస͕ͬͯΔΑ͏ʹɺ਺ඦݸͷԻָݴޠ͔Β޷͖ ͳͷΛϑϨΩγϒϧʹ૊Έ߹ΘͤΒΕΔΑ͏ͳੈք͕དྷͯཉ͍͠ʢເʣ