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

TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の...

TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation

2025/05/23, 24開催「TSKaigi 2025」での登壇資料です。

Avatar for k.goto

k.goto

May 23, 2025
Tweet

More Decks by k.goto

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ LHPUP "84)&30 "84$%,ίϯτϦϏϡʔτ 0QFO$POTUSVDUT-JCSBSZ ίϛϡχςΟۦಈ$%,$POTUSVDUϥΠϒϥϦ "84πʔϧ DMT EFMTUBDL MBNWFS

    "84%FW5PPMT)FSP .BJOUBJOFS 5PQ$POUSJCVUPS $PNNVOJUZ3FWJFXFS ࣗ࡞044 $%,$POTUSVDUϥΠϒϥϦ 9!@TUFQ@UFDI (JU)VC!HPUPL
  2. "84$%, "84$MPVE%FWFMPQNFOU,JU ͱ͸ʁ w 5ZQF4DSJQUϢʔβʔ͕େଟ਺ ‣ 54+4 ࣍఺1ZUIPO  ‣

    5ZQF4DSJQU੡044ͱ͍͏͜ͱ΋͋Γ54ͷαϯϓϧίʔυ͕ଟ͍ͳͲ͕ཧ༝ʁ $%,$PNNVOJUZ4VSWFZ 
 IUUQTNBUUIFXCPOJHDPNQPTUTDPNNVOJUZTVSWFZ
  3. "84$%, "84$MPVE%FWFMPQNFOU,JU ͱ͸ʁ w "84$%,ͷσϓϩΠॲཧ͸$MPVE'PSNBUJPOͰ࣮ߦ͞ΕΔ ‣ $%,$MPVE'PSNBUJPOςϯϓϨʔτ KTPO ੜ੒$MPVE'PSNBUJPO"1* w

    $%,5' $%,GPS5FSSBGPSN ΍$%,PO1VMVNJͳͲ΋͋Δ ‣ $MPVE'PSNBUJPOͰͳ͘5FSSBGPSN΍1VMVNJͰσϓϩΠ ‣ DELT $%,GPS,VCFSOFUFT ΋͋Δ
  4. "84$%, "84$MPVE%FWFMPQNFOU,JU ͱ͸ʁ w "84$%,$%,$-* $%,"QQ ݺͼग़͠ "QQ $%,$-* ཁ/PEFKTϥϯλΠϜ

    $%,"QQ 4UBDL T $POTUSVDU $POTUSVDU -BNCEBؔ਺ 4όέοτ -BNCEBؔ਺    "1*(BUFXBZ 424Ωϡʔ -BNCEBؔ਺    ޷͖ͳݴޠͰ࣮૷ $%,Ϣʔβ ίϚϯυ࣮ߦ
  5. "84$%, "84$MPVE%FWFMPQNFOU,JU ͱ͸ʁ w $POTUSVDU$%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84Ϧιʔεఆٛͷந৅Խ ‣ "84$%,ϦϙδτϦ 044

    ͔Βఏڙͷ$POTUSVDU  FH #VDLFU 2VFVF "QQMJDBUJPO-PBE#BMBODFE'BSHBUF4FSWJDF FUDʜ  5ZQF4DSJQUͰ࣮૷͞Ε͍ͯΔ  ֤ݴޠ༻ͷύοέʔδϚωʔδϟʔͰ഑෍͞ΕΔ ‣ ϢʔβଆͰࣗ༝ʹ࡞੒͢ΔΧελϜ$POTUSVDU  $%,ఏڙͷ$POTUSVDU ্ه Λ૊Έ߹ΘͤΔ  Ϣʔβ͕޷͖ͳݴޠͰ࣮૷͢Δ
  6. "84$%, "84$MPVE%FWFMPQNFOU,JU ͱ͸ʁ w $%,$POTUSVDU1SPHSBNNJOH.PEFM ‣ $POTUSVDUΛπϦʔͷΑ͏ʹߏ੒  ந৅Խ 

    ࠶ར༻ "QQ 4UBDL 4UBDL $POTUSVDU $POTUSVDU $POTUSVDU $POTUSVDU $POTUSVDU $POTUSVDU $POTUSVDU
  7. ͳͥ$%,͸֤ϓϩάϥϛϯάݴޠͰ࣮૷Ͱ͖Δͷʁ w 5ZQF4DSJQUίʔυΛ֤ݴޠʹม׵͠ɺ֤ݴޠͰ࣮ߦͰ͖Δ࢓૊Έ͕͋Δ͔Β $%,Ϣʔβ ֤$POTUSVDUΫϥε 5ZQF4DSJQU 1ZUIPO༻ +BWB༻ (P༻ $༻

    5ZQF4DSJQU༻ +BWB4DSJQU༻ ޷͖ͳݴޠ Ͱ࢖༻ ม׵ "84$%, ϦϙδτϦ ֤$POTUSVDUΫϥε $%,͸ʮ5ZQF4DSJQUଞݴޠʯม׵͢Δ͜ͱͰଟݴޠରԠ͍ͯ͠Δ
  8. w "84੡ͷʮଞݴޠม׵ ௨৴ʯϥΠϒϥϦ HJUIVCDPNBXTKTJJ  ‣ 54ίʔυΛ֤ݴޠʹม׵ ֤ݴޠͱ௨৴Ͱ͖ΔΑ͏ʹ͢Δ ‣ º֤ͨͩݴޠʹม׵͢Δ͚ͩ

     ˓54 ࣮ଶ͸+4 ͕ଞݴޠͱ௨৴Ͱ͖ΔΑ͏ʹ  ''* 'PSFJHO'VODUJPO*OUFSGBDF తͳཁૉΛؚΉ KTJJͱ͸ʁ
  9. w $%,ެ։࣌ 044ଆ ม׵ ‣ KTJJDPNQJMFS  54ίϯύΠϧ 5ZQF4DSJQU$PNQJMFS"1* 

    ֦ுॲཧ KTJJͱ͸ʁ 㾎54ͷ$%,ίʔυΛ+4ίʔυͱதؒ੒Ռ෺ KTJJΞηϯϒϦ ʹίϯύΠϧ  KTJJΞηϯϒϦ͸+40/ϑΝΠϧͰग़ྗ 㾎ܕ৘ใͷऩूͱݕূ  ܕνΣοΫ  όϦσʔγϣϯ 㾎$VTUPN5SBOTGPSNFSͷద༻  KTJJͰ࢖༻͢ΔͨΊͷܕ৘ใͷ஫ೖ  EFQSFDBUFEϓϩύςΟͷܯࠂ࡟আ
  10. KTJJΞηϯϒϦͷߏ੒ཁૉ Ϧιʔε͝ͱ 㾎ܕͷछྨ DMBTTJOUFSGBDFFOVNFUD  㾎ܕͷ໊લ Ϋϥε໊ͳͲ  㾎ϝιουҰཡɾDPOTUSVDUPS 

    ϝιου໊ɺҾ਺ͷ໊લͱܕɺ໭Γ஋ͷܕɺFUD 㾎ϓϩύςΟҰཡ 㾎࣮૷ܧঝݩJOUFSGBDF 㾎ܧঝݩΫϥε 㾎ந৅Ϋϥε͔Ͳ͏͔ 㾎JOUFSGBDFͷछྨ ϝιουΛ࣋ͭৼΔ෣͍ܕ͔ϓϩύςΟͷΈͷσʔλܕ͔  㾎ྻڍܕ FOVN ͷϝϯόʔ 㾎FUDʜ
  11. w $%,ެ։࣌ 044ଆ ม׵ ‣ KTJJQBDNBL  KTJJΞηϯϒϦ͔Β֤ݴޠ༻ͷόΠϯσΟϯά ֤ݴޠͰͷίʔυ ੜ੒

    㾎1ZUIPO 㾎+BWB 㾎(P 㾎$ ˞54+4൛$%,Ͱ͸΋ͱͷ54 ͔ΒίϯύΠϧ͞Εͨ+4 ίʔυ͕ͦͷ··࢖༻͞ΕΔ KTJJͱ͸ʁ
  12. w $%,ެ։࣌ 044ଆ ม׵ KTJJͱ͸ʁ KTJJDPNQJMFS $POTUSVDU 54 KTJJQBDNBL 1ZUIPO༻

    +BWB༻ (P༻ $༻ KTJJΞηϯϒϦ +4ίʔυ $POTUSVDU ଞݴޠ
  13. $%,Ϣʔβ ֤$POTUSVDUΫϥε 5ZQF4DSJQU ޷͖ͳݴޠ Ͱ࢖༻ KTJJ "84$%, ϦϙδτϦ ௨৴ ม׵

    KTJJSVOUJNF $%,ެ։࣌ 044ଆ ม׵ $%,࣮ߦ࣌ Ϣʔβଆ ௨৴ 1ZUIPO༻ +BWB༻ (P༻ $༻ 5ZQF4DSJQU༻ +BWB4DSJQU༻ ֤$POTUSVDUΫϥε KTJJDPNQJMFS KTJJQBDNBL KTJJΞηϯϒϦ
  14. w $%,࣮ߦ࣌ɺ֤ݴޠ$%,ͷࢠϓϩηεͰKTJJSVOUJNFىಈ /PEFKTϓϩηε  ‣ $POTUSVDU͕ݺ͹ΕͨΒɺࢠϓϩηεܦ༝Ͱ54 +4 ଆͷ಺෦ॲཧΛݺͼग़͠ ‣ ͦͷͨΊɺଞݴޠͰ࣮૷ͷ৔߹΋$%,"QQ࣮ߦʹ/PEFKTϥϯλΠϜ͕ඞཁ

     ˞ͲͪΒʹ͠Ζ$%,$-*ʹ΋/PEFKTϥϯλΠϜ͕ඞཁͰ͸͋Δ ௨৴ͷ࢓૊Έ ϗετݴޠ$%,ϓϩηε +7. /&5 FUDʜ ߏ଄ఆٛ KTJJSVOUJNF /PEFKTϓϩηε ಺෦ॲཧ ࢠϓϩηε ݺͼग़͠
  15. $%,Ϣʔβ ߏ଄ఆٛ ಺෦ॲཧ ֤$POTUSVDUΫϥε 5ZQF4DSJQU ֤$POTUSVDUΫϥε ߏ଄ఆٛ 1ZUIPO༻ +BWB༻ (P༻

    $༻ 5ZQF4DSJQU༻ +BWB4DSJQU༻ ޷͖ͳݴޠ Ͱ࢖༻ ߏ଄ఆ͔ٛΒ಺෦ॲཧݺͼग़͠ /PEFKTϓϩηε ߏ଄ఆ͚֤ٛͩݴޠʹࣗಈม׵ ଞݴޠͰ࣮૷ͷ৔߹΋$%,࣮ߦʹ /PEFKTϥϯλΠϜ͕ඞཁ KTJJ $%,ެ։࣌ 044ଆ ม׵ $%,࣮ߦ࣌ Ϣʔβଆ ௨৴ ίϯύΠϧ "84$%, ϦϙδτϦ KTJJDPNQJMFS KTJJQBDNBL KTJJΞηϯϒϦ KTJJSVOUJNF
  16. w $%, 044ଆ ࣮૷Ͱ͸5ZQF4DSJQUݻ༗ͷܕͷ࢖༻͸ඇਪ঑ ‣ ֤ݴޠͰରԠ͍ͯ͠ͳ͍දݱ͕͋Δ͔Β ྫ6OJPO   ม׵࣌ʹΤϥʔʹͳΔͷͰ͸ͳ͘ɺม׵Մೳ

    ඇՄٯ ͳ؇͍ܕʹม׵͞ΕΔ 㾎TUSJOHͷ6OJPOˠTUSJOH 㾎Ϋϥεͷ6OJPOˠΦϒδΣΫτ΍BOZͳͲ ݴޠʹΑΔ  ‣ ͨͩ͠ҎԼͷ৔߹Ͱ͸5ZQF4DSJQUݻ༗ͷॻ͖ํΛͯ͠΋໰୊ͳ͍  ۀ຿ͳͲͷ$%,ϓϩδΣΫτͰͷ࣮૷  OQN 54+4༻ ʹ͔͠ެ։͠ͳ͍$POTUSVDUϥΠϒϥϦ ˞$POTUSVDUϥΠϒϥϦ͸ݸਓͰ΋࡞੒ɾ഑෍͕Մೳ ଞݴޠม׵ʹ͓͚Δ੍໿
  17. w &OVN-JLF$MBTT ‣ TUBUJDϓϩύςΟ બ୒ࢶ༻  TUBUJDϝιου ࣗ༝ͳ஋Λࢦఆ͢Δ༻  

    DPOTUSVDUPSΛQSJWBUFʹ͢Δ͜ͱͰݺͼग़͠ํ๏͕౷Ұ͞ΕΑΓFOVNͬΆ͘ ଞݴޠม׵ͷ੍໿ͷ୅ସҊ
  18. $%,Ϣʔβ ߏ଄ఆٛ ಺෦ॲཧ ֤$POTUSVDUΫϥε 5ZQF4DSJQU ֤$POTUSVDUΫϥε ߏ଄ఆٛ 1ZUIPO༻ +BWB༻ (P༻

    $༻ 5ZQF4DSJQU༻ +BWB4DSJQU༻ ޷͖ͳݴޠ Ͱ࢖༻ ߏ଄ఆ͔ٛΒ಺෦ॲཧݺͼग़͠ /PEFKTϓϩηε ߏ଄ఆ͚֤ٛͩݴޠʹࣗಈม׵ ଞݴޠͰ࣮૷ͷ৔߹΋$%,࣮ߦʹ /PEFKTϥϯλΠϜ͕ඞཁ KTJJ $%,ެ։࣌ 044ଆ ม׵ $%,࣮ߦ࣌ Ϣʔβଆ ௨৴ ίϯύΠϧ "84$%, ϦϙδτϦ KTJJDPNQJMFS KTJJQBDNBL KTJJΞηϯϒϦ KTJJSVOUJNF $%,ίϯτϦϏϡʔτͷൣғ HJUIVCDPNBXTBXTDEL ˞֤ݴޠʹม׵͢ΔͨΊ 5ZQF4DSJQUݻ༗ͷܕදݱ͸/( ˞֤ݴޠʹ͸ม׵͠ͳ͍ͨΊ 5ZQF4DSJQUݻ༗ͷ࣮૷΋0,