Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS CDKにおけるL2 Constructの仕組み / aws-cdk-l2-construct
Search
k.goto
March 13, 2025
Programming
6
1.3k
AWS CDKにおけるL2 Constructの仕組み / aws-cdk-l2-construct
2025/03/13開催「JAWS-UG東京 IaC Night 〜入門から上級まで!AWSをコードで構築しよう〜」での登壇資料です。
k.goto
March 13, 2025
Tweet
Share
More Decks by k.goto
See All by k.goto
AWS CDKの仕組み / how-aws-cdk-works
gotok365
13
2k
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
7
1.7k
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
10
810
とあるEdTechベンチャーのシステム構成こだわりN選 / edtech-system
gotok365
7
740
CodePipelineのアクション統合から学ぶAWS CDKの抽象化技術 / codepipeline-actions-cdk-abstraction
gotok365
5
470
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
3
450
AWS CDKにおける「再利用性」を考える / aws-cdk-reusability
gotok365
8
3.3k
OSS活動のススメ / oss-activities
gotok365
5
1.3k
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
9
2k
Other Decks in Programming
See All in Programming
ソフトウェア設計の実践的な考え方
masuda220
PRO
3
420
プログラマのための作曲入門
cheebow
0
530
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
440
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
500
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
170
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
220
私はどうやって技術力を上げたのか
yusukebe
43
17k
プログラミングどうやる? ~テスト駆動開発から学ぶ達人の型~
a_okui
0
190
Swift Concurrency - 状態監視の罠
objectiveaudio
2
450
Pythonスレッドとは結局何なのか? CPython実装から見るNoGIL時代の変化
curekoshimizu
4
1.2k
AIで開発生産性を上げる個人とチームの取り組み
taniigo
0
130
iOSDC.pdf
chronos2500
2
650
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
19
1.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
The World Runs on Bad Software
bkeepers
PRO
71
11k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
How to Ace a Technical Interview
jacobian
280
23k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Done Done
chrislema
185
16k
Transcript
LHPUP AWS CDKʹ͓͚Δ L2 ConstructͷΈ +"846(౦ژ*B$/JHIU ʙೖ͔Β্ڃ·Ͱʂ"84ΛίʔυͰߏங͠Α͏ʙ
ࣗݾհ 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
"84$%,ʹ͓͚Δ -$POTUSVDUͷΈ
w -$POTUSVDUͷΈΛΔ͜ͱͰ$%,Λ༻͍ͨ։ൃͷώϯτΛಘΔ w -$POTUSVDUΛ࡞ΕΔΑ͏ʹͳΔ ͨΊͷֻ͔Γʹ ‣ ຊηογϣϯ͚ͩͰͦͷશͯΛΧόʔͰ͖ͳ͍ ‣ ͬ͘͟ΓͰ֓ཁΛ௫ΊΔͱHPPE
ຊηογϣϯͷత
w 044Ͱ͋Δ"84$%,5ZQF4DSJQUͰ࣮͞Ε͍ͯΔ ‣ HJUIVCDPNBXTBXTDEL w ຊηογϣϯͰొ͢Δίʔυͯ͢$%,ͷ෦ίʔυ W࣌ ‣ ඞͣ͠ۀͰ$%,Λ͏ࡍͷίʔυʹͯΊΔ͖ͷͰͳ͍
‣ ͕ɺۀݸਓͰͷ$POTUSVDU։ൃ$%,ίϯτϦϏϡʔγϣϯͷࢀߟʹͳΕ ຊηογϣϯͷલఏ
$POTUSVDU ίϯετϥΫτ ͬͯʁ
$POTUSVDU ίϯετϥΫτ ͱ w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84ϦιʔεఆٛͷநԽ ‣ -$POTUSVDUෳͷϦιʔεΛؚΉҰൠతͳߏύλʔϯ ‣
-$POTUSVDUσϑΥϧτศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ ˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠நԽͨ͠୯ҰϦιʔε͋Γ ந
w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84ϦιʔεఆٛͷநԽ ‣ -$POTUSVDUෳͷϦιʔεΛؚΉҰൠతͳߏύλʔϯ ‣ -$POTUSVDUσϑΥϧτศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ
˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠நԽͨ͠୯ҰϦιʔε͋Γ ந w ಛఆͷϢʔεέʔεΛݺͼग़͠Ͱ࣮ݱ FH"-# 'BSHBUF w ൚༻ੑ͕͍ͷͰ͏γνϡΤʔγϣϯݶΒΕΔ w $%,ຊՈ͔Β΄ͱΜͲެ։͞Ε͍ͯͳ͍ $POTUSVDU ίϯετϥΫτ ͱ
w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84ϦιʔεఆٛͷநԽ ‣ -$POTUSVDUෳͷϦιʔεΛؚΉҰൠతͳߏύλʔϯ ‣ -$POTUSVDUσϑΥϧτศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ
˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠நԽͨ͠୯ҰϦιʔε͋Γ ந w ୯ҰϦιʔε Ћ $MPVE8BUDI-PHTͱ͔*".ϩʔϧͱ͔ ͳͨΊ൚༻ੑ͕ߴ͍ w ྑ͍۩߹ʹநԽͯ͘͠Εͯศར நΛԼ͛Δ͜ͱՄ w ΈࠐΈόϦσʔγϣϯͰσϓϩΠલʹΤϥʔݕ $POTUSVDU ίϯετϥΫτ ͱ ˠΤεέʔϓϋον
w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84ϦιʔεఆٛͷநԽ ‣ -$POTUSVDUෳͷϦιʔεΛؚΉҰൠతͳߏύλʔϯ ‣ -$POTUSVDUσϑΥϧτศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ
˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠நԽͨ͠୯ҰϦιʔε͋Γ ந w શͯͷϓϩύςΟΛ໌ࣔతʹࢦఆ͢Δඞཁ͕͋Δ w ϓϩύςΟʹ༻Ͱ͖Δܕͷछྨ͕গͳ͍ -Ͱ๛ $POTUSVDU ίϯετϥΫτ ͱ
w ৄ͘͠"84#MBDL#FMUΛࢀর IUUQTQBHFTBXTDMPVEDPNST5;.JNBHFT"84#MBDL#FMU@@"84$%,#BTJD0WFSWJFX@@WQEG $POTUSVDU ίϯετϥΫτ ͱ
w ͋ͷେมͳ71$ઃఆ͜Μͳ͓खܰʹ ‣ ˞ͪ͜Β7ͰɺΑΓΧελϜ͍͢͠7QD7Ћ൛ͰϦϦʔεࡁΈ $POTUSVDUͷศརػೳ
w ͍͍ײ͡ͷ*".ݖݶΛ༩ͯ͘͠ΕΔHSBOUϝιου ͜ͷόέοτͱΦϒδΣΫτʹର͢Δ T(FU0CKFDU T(FU#VDLFU T-JTU $POTUSVDUͷศརػೳ
w $%,ϨΠϠʔͰ5ZQF4DSJQU -BNCEB ͷϏϧυ ‣ /PEFKT'VODUJPO Ϗϧυ্ͨ͠ͰΞηοτ -BNCEBͰݺͿ;*1ϑΝΠϧ Λ$%,༻ͷ4ʹΞοϓϩʔυ
$POTUSVDUͷศརػೳ
w $%,ϨΠϠʔͰ%PDLFSϏϧυ&$3ϓογϡ ‣ %PDLFS*NBHF"TTFU Ϗϧυ্ͨ͠ͰΞηοτ &$4͔ΒݺͿΠϝʔδ Λ$%,༻ͷ&$3ʹϓογϡ ‣ &$3%FQMPZNFOU
ಛఆͷ&$3ʹίϐʔ $POTUSVDUͷศརػೳ
w $%,ϨΠϠʔͰ4Ξοϓϩʔυ ‣ #VDLFU%FQMPZNFOU ΞηοτΛ4ʹΞοϓϩʔυ ;*1Λల։͢Δ͜ͱՄೳ $POTUSVDUͷศརػೳ
ͳΜͰ-$POTUSVDU ͷΛ͢Δͷ ʁ
w -$POTUSVDUʁ ‣ ൚༻ੑ͕ͯ͑͘Δέʔε͕͋·Γͳ͘ɺͦͦຊՈ͔Β͋·Γग़͍ͯͳ͍ ‣ ϢʔβଆͰಠࣗͷΧελϜ - $POTUSVDUΛ࡞Δͷ͕ओྲྀ --$POTUSVDUΛࣗϓϩμΫτͷϢʔεέʔεʹ߹Θͤͯࣗ༝ʹΈ߹ΘͤΔ
ͦͷͨΊ༷༷ࣜʑ w -$POTUSVDUʁ ‣ நԽ͕ͳ͍ศརػೳ͕ͳ͍ܕͷදݱ͕ऑ͍ ‣ -$POTUSVDU͕ରԠ͍ͯ͠ͳ͍෦ΛΧόʔ͢Δ͍ํ͕ଟ͍ ͳΜͰ-$POTUSVDU ͷΛ͢Δͷ ʁ $%,ͱ͍ͬͨΒ-$POTUSVDUʂʂ
-$POTUSVDUͷΈ
-$POTUSVDUͷΈ ֓ཁ -$POTUSVDU $POTUSVDU*%3FTPVSDF *".3PMF1PMJDZ -PH(SPVQ FUD ϓϥΠϚϦϦιʔε ηΧϯμϦϦιʔε -$POTUSVDU
1SPQT QSPQFSUZ" QSPQFSUZ# QSPQFSUZ$ QSPQFSUZ% SPMF MPH(SPVQ ʜ ʜ ͳ͚Εࣗಈੜ ͳ͚ΕσϑΥϧτ ϝιου ϝιου ϝιου
-$POTUSVDUͷΈ ৄࡉ
-$POTUSVDUͷΈ ৄࡉ
-$POTUSVDUͷΈ ৄࡉ
-$POTUSVDUͷΈ ৄࡉ
-$POTUSVDUͷΈ ৄࡉ ࡞Δ͖ͷ͜Ε͚ͩ
-$POTUSVDUͷΈ ৄࡉ
-$POTUSVDUͷΈ ৄࡉ
None
w 6OPXOFE3FTPVSDFTͷͨΊͷ#FIBWJPSBM*OUFSGBDF *9YYܕ ‣ ελοΫ֎ͷϦιʔεΛٖࣅతʹελοΫཧԼʹऔΓࠐΉͨΊͷಡΈࠐΈ༻ܕ FH *#VDLFUɺ*5PQJDɺ*2VFVF
㱠DELJNQPSU ˡ࣮ࡍʹελοΫͷཧϦιʔεʹҠ͢ *&YBNQMF $%,ελοΫ Ϛωίϯ -BNCEB 4 #VDLFU ελοΫॴ༗ ࣮$POTUSVDU HSBOU1VU ελοΫඇॴ༗ *#VDLFU JOUFSGBDF ٖࣅऔΓࠐΈ GSPN#VDLFU"UUSJCVUFT
w zGSPN9YY"SO zͳͲͷಡΈࠐΈϝιου͕ٖࣅϦιʔεΛ͜ͷܕͰฦ͢ w ී௨ͷ$POTUSVDUͱ ΄΅ ಉ͡Α͏ʹϓϩύςΟऔΕΔ͠ϝιουݺΔ *&YBNQMF *#VDLFUܕ
w ී௨ͷ$POTUSVDUͱ ΄΅ ಉ͡Α͏ʹϓϩύςΟ͕औΕΔΈ ‣ ͨ͠Λͱʹ$POTUSVDUΛٖࣅߏͯ͠6OPXOFE3FTPVSDFTܕͱͯ͠ฦ͢ *&YBNQMF GSPN#VDLFU"SO Ͱόέοτͷ"SOΛ͢
ͦΕ͕CVDLFU"SOʹηοτ "SOͷ໋໊نଇʹԊͬͯ/BNFΛநग़ɺCVDLFU/BNFϓϩύςΟʹηοτ 㾎ଞʹ͜ͷ4UBDL3FHJPOใ͔Βಋ͖ग़ͤΔϓϩύςΟηοτ͞ΕΔ "SO͔Βಋ͚ͳ͍VOEF fi OFEʹͳΔ͕ɺGSPN"UUSJCVUFT ͩͱશͯͤΔ GSPN-PPLVQ ͱ͍͏4%,Ͱ࣮ࡍʹΛऔಘ͢Δಛघͳϝιου͋Δ
w ී௨ͷ$POTUSVDUͱ ΄΅ ಉ͡Α͏ʹϝιου͕ݺΔΈ ‣ -$POTUSVDU࣮ମ ͘͠#BTFΫϥε ͜ͷJOUFSGBDFΛJNQMFNFOUT͢Δ *&YBNQMF
$POTUSVDU࣮ମ6OPXOFE3FTPVSDFTͷ࣋ͭఆٛΛશͯ࣋ͭ ޓੑ 㾎&YBNQMFJNQMFNFOUT*&YBNQMF 㾎&YBNQMF#BTFJNQMFNFOUT*&YBNQMF ਖ਼͘͠ʮ࣮$POTUSVDU͕6OPXOFE3FTPVSDFTܕͱಉ͜͡ͱ͕Ͱ͖Δʯ
w 6OPXOFE3FTPVSDFTܕͷܕఆٛʹ͍ͭͯ ‣ *3FTPVSDFΛFYUFOET ‣ ඞཁ͕͋Ε*(SBOUBCMF *$POOFDUBCMF FUDʜFYUFOET HSBOUϝιουɺBMMPX5PϝιουͳͲͷରʹ͍ͨ͠߹
*&YBNQMF
w 6OPXOFE3FTPVSDFTܕͷϓϩύςΟఆٛʹ͍ͭͯ ‣ ಡΈࠐΈ༻Ϧιʔε͔Βެ։͍ͨ͠ϓϩύςΟΛఆٛ $MPVE'PSNBUJPOͰϦιʔε࡞࣌ʹฦ٫͞ΕΔϓϩύςΟ جຊతʹ ࣋ͨͤΔ 㾎3FG (FU"UUͳͲͰฦ͞ΕΔͷYY/BNF
YY"SO FUD ໋໊ͷYY෦লུ͠ͳ͍ 㾎ͦΕΒʹ!BUUSJCVUFϥϕϧΛ͚ͭΔ $%,ಠࣗͰఆٛͨ͠ϓϩύςΟʹෆཁ *&YBNQMF
w 6OPXOFE3FTPVSDFTܕͷϝιουఆٛʹ͍ͭͯ ‣ JOUFSGBDFʹ࣮Λॻ͚ͳ͍ͷͰ࣮ࡍͷॲཧ࣮ઌͰఆٛ ಡΈࠐΈ༻ͷΫϥεΛผͰఆٛ͢Δ ʮ&YBNQMF -$POTUSVDU ʯʹͯޙड़
‣ ͜ͷϦιʔεࣗମʹมߋΛՃ͑ͳ͍ྨͷϝιουͷΈఆٛ ͦͷ$POTUSVDU͕ॴ༗͢ΔผϦιʔεͷߋ৽ܥՄೳͳέʔε ߋ৽ϝιουΛఆٛ͠ɺ࣮ମͰ࣮ࡍͷॲཧɺಡΈࠐΈ༻Ͱμϛʔ࣮Λ͢Δ͜ͱ ‣ HSBOUϝιουಡΈࠐΈ༻ϦιʔεͰ͑ΔͷͰجຊతʹఆٛ͢Δ͜ͱ͕ଟ͍ ͜ͷϦιʔεʹΞΫηε͢ΔͨΊͷݖݶΛΞΫηεݩͷϦιʔεʹ༩͢ΔͨΊ *&YBNQMF
w $POTUSVDUͷ1SPQTͰड͚औΔϦιʔε6OPXOFE3FTPVSDFTܕʹ ‣ ελοΫͰ࡞ͨ͠Ϧιʔε֎͔ΒಡΈࠐΜͩϦιʔεͤΔ -$POTUSVDU &YBNQMF ͜ͷܕ *&YBNQMF ΛJNQMFNFOUT͢ΔͨΊܕͷޓੑ͕͋Δ
ϝιου͑ΔͷͰɺϓϦϛςΟϒܕ TUSJOHͳͲ ΑΓ͜ͷܕʹ͓ͯ͜͠͏ w $POTUSVDU͔Β֎ʹެ։͢ΔϦιʔε6OPXOFE3FTPVSDFTܕʹ ‣ ͦͷϦιʔεΛ࡞ͨ͠$POTUSVDUͷ֎Ͱߋ৽͞Εͳ͍Α͏ʹͰ͖Δ ͷɾ҆શੑͷ্ *&YBNQMF
None
&YBNQMF"UUSJCVUFT w GSPN9YY"UUSJCVUFT ϝιουʹ͢4USVDUT*OUFSGBDF ‣ ͜ͷใΛͱʹ6OPXOFE3FTPVSDFT͕ߏ͞ΕΔ ͜ΕΑΓελοΫ֎ͷϦιʔεͰٖࣅ$POTUSVDUͱͯ͠ѻ͑ΔΑ͏ʹ *&YBNQMF 6OPXOFE3FTPVSDFT
GSPN&YBNQMF"UUSJCVUFT TDPQF JE FYBNQMF"UUSJCVUFT *&YBNQMF YY"SO YY/BNF &YBNQMF"UUSJCVUFT *&YBNQMFΛJNQMFNFOUTͨ͠ ΫϥεͷΠϯελϯε͕ฦΔ
&YBNQMF"UUSJCVUFT w શͯͷϓϩύςΟSFBEPOMZ 4USVDUT*OUFSGBDFͷಛ ‣ *OQVUͱͳΔͷΠϛϡʔλϒϧ มߋෆՄೳ Ͱ͋Δ͠
None
&YBNQMF#BTF w ͭͷϦιʔεʹରͯ͠ෳͷ$POTUSVDUΛ࣮͢ΔͷͨΊͷڞ௨Ϋϥε ‣ $POTUSVDUΛෳ࡞Βͳ͍߹ແͯ͘ྑ͍͕֦ுͷͨΊʹ࡞͓ͬͯ͘ͷ͕ਪ ‣ ͜Ε͕͋ΔͱಡΈࠐΈ༻ΫϥεΛ࡞Δࡍʹ࠶ར༻Ͱ͖Δ ޙड़ ྫBXTBQJHBUFXBZϞδϡʔϧ ྫBXTTϞδϡʔϧ
&YBNQMF#BTF w #BTFΫϥεͷܕఆٛʹ͍ͭͯ ‣ BCTUSBDUΫϥε ‣ 3FTPVSDFΫϥεΛFYUFOET -$POTUSVDUͱ3FTPVSDFΫϥεΛܧঝͨ͠ͷ
3FTPVSDFΫϥε-$POTUSVDUڞ௨ͷใΛ࣋ͭ 㾎JT3FTPVSDF JT3FTPVSDF QIZTJDBM/BNF FUD ‣ 6OPXOFE3FTPVSDFTܕ *9YYܕ ΛJNQMFNFOUT ͜ΕͰಡΈࠐΈ༻ͷܕͷ࣋ͭϓϩύςΟɾϝιουఆٛΛҾ͖ܧ͙
&YBNQMF#BTF w #BTFΫϥεͷϓϩύςΟఆٛʹ͍ͭͯ ‣ جຊ6OPXOFE3FTPVSDFTͷଐੑΛҾ͖ܧ͍ͩͷ #BTFΫϥεݻ༗ͷଐੑ࡞ͬͯྑ͍ ‣ -$POTUSVDU αϒΫϥε
ଆͰઃఆ͍ͨ͠ଐੑBCTUSBDUʹ
&YBNQMF#BTF w #BTFΫϥεͷDPOTUSVDUPSఆٛʹ͍ͭͯ ‣ Ҿ 9YY#BTF1SPQTPS3FTPVSDF1SPQT ‣ ॲཧ αϒΫϥεͷ-$POTUSVDUଆʹճͯ͠0,
ཧ໊ηοτɺڞ௨ϓϩύςΟηοτɺڞ௨όϦσʔγϣϯɺFUDʜ ‣ #BTFଆͰॳظԽॲཧ͕ෆཁͳ߹DPOTUSVDUPS͕ͳ͍͜ͱ ͦͷ߹-$POTUSVDUࣗମ αϒΫϥε Ͱఆٛ͢Δ
&YBNQMF#BTF w #BTFΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ ֤-$POTUSVDUͰڞ௨Ͱ༻͍ͨ͠ϝιουΛఆٛ ‣ ಡΈࠐΈ༻Ϋϥε ޙड़ Ͱ༻͍ͨ͠ϝιουఆٛ ‣
HSBOUܥϝιουNFUSJDܥϝιου͍͍ͩͨ͜͜Ͱఆٛ
&YBNQMF#BTF w #BTFΫϥε͕ͳ͍έʔε͋Δ ‣ ଞͷछྨ ੜ ͷ$POTUSVDU͕ͳ͍ɾখ͍͞$POTUSVDUͷ߹ͳͲ ‣ γϯϓϧʹͳΔ͕࡞͓͍ͬͯͨํ͕ϕλʔ
None
w #BTFΫϥεͷೖྗͷͨΊͷ4USVDUT*OUFSGBDF ‣ ڞ௨Ͱηοτ͍ͨ͠ϓϩύςΟ͕͋Ε࡞Δ ߏϧʔϧ-$POTUSVDUͷ1SPQT &YBNQMF1SPQTɿޙड़ ͱಉ͡ ͦͦ#BTFΫϥεʹDPOTUSVDUPS͕ͳ͍߹ɾ3FTPVSDF1SPQTΛ͢߹ෆཁ
‣ 3FTPVSDF1SPQTΛFYUFOETͯ͠ྑ͍ &YBNQMF#BTF1SPQTFYUFOET3FTPVSDF1SPQT &YBNQMF#BTF1SPQT
None
&YBNQMF1SPQT w -$POTUSVDUͷೖྗͷͨΊͷ4USVDUT*OUFSGBDF ‣ ϓϦϛςΟϒܕ OVNCFSͳͲ ɺFOVNɺJOUFSGBDFɺΫϥεɺྻɺFUDΛ࣋ͭ 9YY#BTF1SPQT͕͋ΕFYUFOET
ͯ͢ͷϓϩύςΟΛSFBEPOMZʹ Ϧιʔε(L2 Construct)Λ͍ͨ͠߹Unowned ResourcesܕͰఆٛ
&YBNQMF1SPQT w ಛఆͷϓϩύςΟ܈Λผinterface(ωετ)ʹͯ͠ྑ͍͕ϑϥοτ͕ਪ ‣ JavaͳͲͷݴޠͩͱωετ͞ΕͨΦϒδΣΫτͷੜ͕େมͳͨΊ ‣ ϑϥοτʹ͢Δ͜ͱͰoptionalʹͤ͟ΔΛಘͳ͍߹όϦσʔγϣϯͰΧόʔ DPO fi HVSBUJPOΛઃఆ͢Δ߹ͦͷதͷ֤ϓϩύςΟඞਢ
ϑϥοτʹ͢Δ͜ͱͰͲͪΒPQUJPOBMʹͳͬͯ͠·͏ DPO fi HVSBUJPOࣗମ͕ͦͦෆཁͳ߹͕͋ΔͷͰ ͳ͕ͣɾɾɾ
&YBNQMF1SPQT w ৼΔ͍(ϝιου)Λ࣋ͭͱศརͳϓϩύςΟΫϥεʹ͢Δͱදݱ͕͕Δ
None
w -$POTUSVDUຊମʢΫϥεʣ ‣ -$POTUSVDUΛ͍উखΑ͘நԽͨ͠ͷ ؔ࿈ϦιʔεੜɺਪͷσϑΥϧτઃఆɺศརϝιουɺόϦσʔγϣϯɺFUDʜ &YBNQMF -$POTUSVDU
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷܕఆٛʹ͍ͭͯ ‣ -$POTUSVDUͱ3FTPVSDFΫϥεΛܧঝͨ͠ͷ ࠶ܝ ‣ #BTFΫϥεΛFYUFOET
#BTFΫϥε͕͢Ͱʹ3FTPVSDFΫϥεΛܧঝ͍ͯ͠Δ ‣ #BTFΫϥε͕ͳ͚Ε 3FTPVSDFΫϥεΛFYUFOET 6OPXOFE3FTPVSDFT *9YY ΛJNQMFNFOUT
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϓϩύςΟఆٛʹ͍ͭͯ ‣ #BTFΫϥεͰBCTUSBDUͰఆٛͨ͠ͷͯ͢ఆٛ #BTFΫϥε͕ͳ͚Ε6OPXOFE3FTPVSDFT *9YY Ͱఆٛͨ͠ͷΛఆٛ
‣ ଞʹ֎͔ΒΞΫηεͰ͖ΔΑ͏ʹ͍ͨ͠ϓϩύςΟQVCMJDʹ SFBEPOMZਪ ͷʹΑͬͯͦ͏Ͱͳ͍ͷ͋Δ ॲཧʹඞཁͳQSJWBUFQSPUFDUFEϓϩύςΟͷઃఆࣗ͝༝ʹ
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷDPOTUSVDUPSఆٛʹ͍ͭͯ ‣ ཧ໊ηοτ #BTFΫϥεͰͬͯ0, ະࢦఆͷ߹$MPVE'PSNBUJPO͕ࣗಈੜ
‣ ະࢦఆͷ߹Ͱ$%,ଆͰੜ͢Δ͜ͱ ཧ໊ͷ໋໊ϧʔϧʹ߹Θͤͯ-B[ZTUSJOH /BNFTVOJRVF3FTPVSDF/BNF ΞΧϯτϦʔδϣϯލ͗༻ʹ1IZTJDBM/BNF(&/&3"5&@*'@/&&%&%
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷDPOTUSVDUPSఆٛʹ͍ͭͯ ‣ 1SPQT ϩδοΫͷॲཧ݁Ռ Λͱʹ-$POTUSVDU $GO9YY ੜ
$POTUSVDU*%z3FTPVSDFz ύϥϝʔλܾఆͷॲཧQSJWBUFϝιουʹΓ͚ͯ0,
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷDPOTUSVDUPSఆٛʹ͍ͭͯ ‣ σϑΥϧτηοτɾؔ࿈Ϧιʔεͷࣗಈੜ 1SPQTͰ͞Ε͍ͯͨΒͦΕΛ͏ "84αʔϏεͱͯ͠ਪ͖͢ઃఆ͕ͳ͚Ε$%,ଆͰσϑΥϧτͷηοτͤͣɺ
$MPVE'PSNBUJPOͷσϑΥϧτʹͤΔ͜ͱͷํ͕ଟ͍
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷDPOTUSVDUPSఆٛʹ͍ͭͯ ‣ όϦσʔγϣϯ 5PLFOJT6OSFTPMWFE ͰτʔΫϯΛνΣοΫ͠ɺτʔΫϯόϦσʔγϣϯ͠ͳ͍
IUUQTBXTBNB[PODPNKQCVJMEFST fl BTIDELWBMJEBUJPO ֤छόϦσʔγϣϯख๏ʹՃ͑ɺτʔΫϯͱԿ͔ॻ͍͍ͯ·͢ʂ
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ ಡΈࠐΈ༻Ϧιʔε 6OPXOFE3FTPVSDFT ͷͨΊͷTUBUJDGSPNϝιου 6OPXOFE3FTPVSDFT GSPN&YBNQMF"UUSJCVUFT
&YBNQMF"UUSJCVUFT GSPN&YBNQMF"SO GSPN-PPLVQ GSPN&YBNQMF*% GSPN&YBNQMF/BNF GSPN&YBNQMF9Z[ "84ΞΧϯτ &YBNQMF Ϧιʔε औಘ ͢ ͢ "3/ *% /BNF 9Z[ ࣮ࡍͷϦιʔεใ ٖࣅ$POTUSVDUੜ ಡΈࠐΈ༻ ˞͜ͷߏʹԊ͍ͬͯͳ͍έʔε͋Δ FH4FDVSJUZ(SPVQ
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ GSPN9YY"UUSJCVUFTϝιουͰಡΈࠐΈ༻ΫϥεఆٛΠϯελϯεฦ٫
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ GSPN9YY"UUSJCVUFTϝιουͰಡΈࠐΈ༻ΫϥεఆٛΠϯελϯεฦ٫ #BTFΫϥεΛFYUFOET ͘͠*9YYܕΛJNQMFNFOUT 3FTPVSDFΫϥεΛFYUFOET
㾎#BTFΫϥε͕͋Δͱ#BTFΫϥεͰఆٛͨ͠ϝιουͳͲΛ࠶ར༻Ͱ͖Δ 㾎͜ΕʹΑΓಡΈࠐΈ༻ϦιʔεͰHSBOUϝιουͳͲ͕ݺΔ ϝιουͦΕΛ*9YYܕͷٖࣅ$POTUSVDU ಡΈࠐΈ༻ ͱͯ͠ฦ͢
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ ྻϓϩύςΟͳͲʹΠϯελϯεॳظԽޙʹՃ͢ΔBEEϝιου -$POTUSVDUʹϝιουݺͼग़͠ޙʹԆ࣮ߦ͞ΕΔʮ-B[ZʯͰ͢
&YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ QSJWBUFϝιου ॲཧ͕ͯ͘·ͱΊ͍ͨɺ࠶ར༻͍ͨ͠ ‣ ศརܥϝιου
˞HSBOUNFUSJDϝιουಡΈࠐΈ༻ΫϥεͰ͍͍ͨͷͰجຊ#BTFଆͰ࣮
None
None
˞ຊηογϣϯͷհྫͱগ͠ҟͳΓ·͢ IUUQTHJUIVCDPNBXTBXTDELCMPCWQBDLBHFT!BXTDELFYBNQMFDPOTUSVDUMJCSBSZMJCFYBNQMFSFTPVSDFUT
$%,͕֤ϓϩάϥϛϯάݴޠͰಈ͘Έ $%,Ϣʔβ ߏఆٛ ෦ॲཧ ֤$POTUSVDUΫϥε 5ZQF4DSJQU ֤$POTUSVDUΫϥε ߏఆٛ 1ZUIPO༻ +BWB༻
(P༻ $༻ 5ZQF4DSJQU༻ +BWB4DSJQU༻ ͖ͳݴޠ Ͱ༻ ߏఆ͔ٛΒ෦ॲཧݺͼग़͠ ߏఆ͚֤ٛͩݴޠʹࣗಈม $%,ίϯτϦϏϡʔτͷൣғ HJUIVCDPNBXTBXTDEL ଞݴޠͰ࣮ͷ߹$%,࣮ߦʹ /PEFKTϥϯλΠϜ͕ඞཁ ˞֤ݴޠʹม͢ΔͨΊ 5ZQF4DSJQUݻ༗ͷܕදݱ/( ˞֤ݴޠʹม͠ͳ͍ͨΊ 5ZQF4DSJQUݻ༗ͷ࣮0, KTJJίϯύΠϥ "84ଟݴޠมπʔϧ ʰKTJJʱ HJUIVCDPNBXTKTJJ KTJJϥϯλΠϜ /PEFKTϓϩηε $%,ެ։࣌ 044ଆ $%,࣮ߦ࣌ Ϣʔβଆ τϥϯεύΠϧ
એɿࣗ࡞πʔϧOSSͷ͝հ
ࣗ࡞044"84πʔϧ ʲDMTʳ4όέοτΛߴʹআɾۭʹ͢Δπʔϧ ‣ IUUQTHJUIVCDPNHPUPLDMT ʲEFMTUBDLʳ"84$MPVE'PSNBUJPOελοΫڧ੍আπʔϧ ‣ IUUQTHJUIVCDPNHPUPLEFMTUBDL ʲMBNWFSʳ-BNCEBϥϯλΠϜόʔδϣϯݕࡧπʔϧ ‣ IUUQTHJUIVCDPNHPUPLMBNWFS
ࣗ࡞044"84πʔϧ ʲDMTʳ4όέοτΛߴʹআɾۭʹ͢Δπʔϧ ରͰݕࡧͯ͠ɺෳόέοτฒྻҰׅআʂ ඇݱߦόʔδϣϯͷΈআՄೳʂࠓͷ45BCMFTͷআʹରԠʂ
ࣗ࡞044"84πʔϧ ʲEFMTUBDLʳ"84$MPVE'PSNBUJPOελοΫڧ੍আπʔϧ $'OআͰࣦഊ͢ΔϦιʔε͕͋ͬͯελοΫϦιʔε͝ͱڧ੍আʂ ରͰݕࡧͯ͠ɺෳελοΫҰׅআՄೳʂ ґଘؔΛՃຯͯ͠৽͍͠ͷ͔Βॱʹআ
ࣗ࡞044"84πʔϧ ʲMBNWFSʳ-BNCEBϥϯλΠϜόʔδϣϯݕࡧπʔϧ ϦʔδϣϯԣஅݕࡧʂશબϑΟϧλϦϯάՄʂ $47ग़ྗΦϓγϣϯ͋Γʂ
ࣗ࡞044"84πʔϧ ʲMBNWFSʳ-BNCEBϥϯλΠϜόʔδϣϯݕࡧπʔϧ ϦʔδϣϯԣஅݕࡧʂશબϑΟϧλϦϯάՄʂ $47ग़ྗΦϓγϣϯ͋Γʂ
ࣗ࡞044"84$%,$POTUSVDUϥΠϒϥϦ ʲJNBHFTDBOOFSXJUIUSJWZʳ$%,Ͱ5SJWZͰίϯςφΠϝʔδεΩϟϯ ‣ IUUQTDPOTUSVDUTEFWQBDLBHFTJNBHFTDBOOFSXJUIUSJWZ ʲJNBHFTDBOOFSXJUIEPDLMFʳ$%,Ͱ%PDLMFͰίϯςφΠϝʔδεΩϟϯ ‣ IUUQTDPOTUSVDUTEFWQBDLBHFTJNBHFTDBOOFSXJUIEPDLMF ʲFMCPUIFSYYBMBSNʳ$%,ͰϚΠφʔͳYY
ͷ&-#ΞϥʔϜ ‣ IUUQTDPOTUSVDUTEFWQBDLBHFTJNBHFTDBOOFSXJUIEPDLMF
5IBOL:PV LHPUP "84%FW5PPMT)FSP 9!@TUFQ@UFDI (JU)VC!HPUPL