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
3
180
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 ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
260
AWS CDKにおける「再利用性」を考える / aws-cdk-reusability
gotok365
7
2.7k
OSS活動のススメ / oss-activities
gotok365
4
1k
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
5
1.6k
S3バケットを高速で削除・空にするツール「cls3」 / s3-deletion-tool-cls3
gotok365
4
830
AWS CDKで コンテナイメージスキャンを行う 〜ECRとその他の方法〜 / cdk-container-image-scan
gotok365
2
1.4k
スタートアップでこそCDKが活きた〜生産性を向上できた5つの理由〜 / startup-cdk-productivity
gotok365
13
4k
AWS CDKで"使う"GoFデザインパターン 〜実際どうなの?〜 / GoF design patterns used with AWS CDK
gotok365
4
1.7k
AWS CDKで学ぶGoFデザインパターン〜IaCにもコード設計〜 / aws dev day cdk gof design patterns
gotok365
13
6.4k
Other Decks in Programming
See All in Programming
フロントエンドオブザーバビリティ on Google Cloud
yunosukey
0
110
ABEMA iOS 大規模プロジェクトにおける段階的な技術刷新 / ABEMA iOS Technology Upgrade
akkyie
1
270
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
9
2.7k
Jakarta EE meets AI
ivargrimstad
0
860
Modern Angular with Signals and Signal StoreNew Rules for Your Architecture @bastacon 2025 in Frankfurt
manfredsteyer
PRO
0
160
良いコードレビューとは
danimal141
10
9.5k
Lambdaの監視、できてますか?Datadogを用いてLambdaを見守ろう
nealle
2
850
Djangoにおける複数ユーザー種別認証の設計アプローチ@DjangoCongress JP 2025
delhi09
PRO
4
520
高セキュリティ・高耐障害性・サブシステム化。そして2億円
tasukulab280
2
410
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
240
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
130
Devin入門 〜月500ドルから始まるAIチームメイトとの開発生活〜 / Introduction Devin 〜Development With AI Teammates〜
rkaga
5
1.6k
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
11
560
Building Adaptive Systems
keathley
40
2.4k
Thoughts on Productivity
jonyablonski
69
4.5k
How to Ace a Technical Interview
jacobian
276
23k
A Modern Web Designer's Workflow
chriscoyier
693
190k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Agile that works and the tools we love
rasmusluckow
328
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
1.9k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Being A Developer After 40
akosma
89
590k
Six Lessons from altMBA
skipperchong
27
3.6k
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