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
カート刷新プロジェクトにおけるOpenAPIを活用したコード自動生成の今と明日 / astudy20190419
Search
Akihito Nakano
April 19, 2019
Programming
2
550
カート刷新プロジェクトにおけるOpenAPIを活用したコード自動生成の今と明日 / astudy20190419
アスクル社内勉強会で発表した資料です!
Akihito Nakano
April 19, 2019
Tweet
Share
More Decks by Akihito Nakano
See All by Akihito Nakano
OpenAPI Generator Meetup #1
akihito_nakano
1
1.1k
Libraの現状と技術面をざっくりと / astudy20191114
akihito_nakano
4
990
平静を保ち、コードを生成せよ 〜 OpenAPI Generator誕生の背景と軌跡 〜 / gunmaweb34
akihito_nakano
24
51k
プライベートAPIのクライアントをいい感じにしたい / pepabo_ec_tech_mtg02
akihito_nakano
0
1.6k
サーキットブレーカー 〜 有料契約店舗数 国内 No.1 ECサービスに神を宿す 〜 / pepabo_ec_tech_mtg01
akihito_nakano
1
3.6k
並行・並列処理のテストは難しい
akihito_nakano
2
4k
並列処理で消耗しているかたへ - Snidel のご紹介 -
akihito_nakano
4
3.2k
Other Decks in Programming
See All in Programming
ペパボOpenTelemetry革命
pyama86
2
170
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
170
GitLab CI/CD で C#/WPFアプリケーションのテストとインストーラーのビルド・デプロイを自動化する
hacarus
0
510
Revisiting the Hotwire Landscape after Turbo 8 @ RailsConf 2024, Detroit
marcoroth
0
340
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
4
550
Going beyond Apache Parquet's default settings
xhochy
0
140
slow types ってなんだろう?
karad
0
180
“Seeing Like a Programmer”—Resiliency, Limits, and Moral Hazards in Software Engineering (LambdaConf 2024)
chriskrycho
0
340
Open AI APIを使う前に知っておきたいアカウントTier の話
akki_megane
0
110
業務ツールとして使うPostman
msys75
0
120
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
350
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
1.1k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
12
1k
Building Adaptive Systems
keathley
32
1.9k
GraphQLとの向き合い方2022年版
quramy
33
12k
Debugging Ruby Performance
tmm1
70
11k
Facilitating Awesome Meetings
lara
43
5.6k
Designing Experiences People Love
moore
136
23k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Embracing the Ebb and Flow
colly
80
4.2k
Automating Front-end Workflow
addyosmani
1357
200k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
9
1.3k
Faster Mobile Websites
deanohume
300
30k
Transcript
தڿਓΞεΫϧגࣜձࣾ "4UVEZ ΞεΫϧࣾษڧձ Χʔτ৽ϓϩδΣΫτʹ͓͚Δ 0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜͷ ࠓͱ໌ ͋͢
8FCΞϓϦέʔγϣϯΤϯδχΞ தڿਓ!/","/0@"LJIJUP IUUQTBDLJOUPTIHJUIVCJPBCPVU
044׆ಈ w0QFO"1*(FOFSBUPS wIUUQTHJUIVCDPN0QFO"1*5PPMTPQFOBQJHFOFSBUPS w(BOFTIB Ψωʔγϟ wIUUQTHJUIVCDPNBDLJOUPTIHBOFTIB w4OJEFM εφΠσϧ
wIUUQTHJUIVCDPNBDLJOUPTITOJEFM
8&# %#13&447PM ಛू <ޮٸ্ঢ>εΩʔϚۦಈ8FC"1*։ൃ ষޙʙষΛࣥච͍͖ͤͯͨͩ͞·͠ ͨ!ײँ IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM
None
ΞεΫϧࣾษڧձ ฏ࠷ޙͷAStudy
࣍ wͳͥίʔυΛࣗಈੜ͢Δͷ͔ʁ w0QFO"1* w υΩϡϝϯτϑΥʔϚοτपลπʔϧͷ֓ཁ w εΩʔϚۦಈ։ൃ wΧʔτ৽ϓϩδΣΫτ w 0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜ
w 0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱ࠷ݶͷςετ͕ࣗಈతʹΔੈք ίʔυࣗಈੜͷ׆༻ঢ়گΛཧ ͨ͠͏͑Ͱɺ0QFO"1*Λ׆༻ͯ͠ ͬͱੜ࢈ੑΛߴΊΔͨΊʹɺ ۙͰΓ͍ͨ͜ͱΛ͓͠·͢ʂ
ͳͥਓྨ ίʔυΛࣗಈੜ͢ΔͷͩΖ͏͔
࢈ۀֵ໋ʹΈΔਐԽͷྺ࢙ ୈҰ࣍࢈ۀֵ໋ ୈೋ࣍࢈ۀֵ໋ ୈࡾ࣍࢈ۀֵ໋ ୈ࢛࣍࢈ۀֵ໋
࢈ۀֵ໋ʹΈΔਐԽͷྺ࢙ ୈҰ࣍࢈ۀֵ໋ ୈೋ࣍࢈ۀֵ໋ ୈࡾ࣍࢈ۀֵ໋ ୈ࢛࣍࢈ۀֵ໋ ػցιϑτΣΞͰஔ͖͑ͯ ޮԽ͍ͯ͘͠ਐԽͷྺ࢙
ίʔυΛॻ͘ͱ͍͏ӦΈʹ͓͚ΔਐԽ wίʔυͷࣗಈੜʹΑͬͯ։ൃΛࢧԉ͢Δπʔϧͨͪ wఆܕతͳίʔυπʔϧʹͤΔ͜ͱͰ։ൃऀੜ࢈ੑΛߴΊɺۀϩδοΫ ʹूதͰ͖Δ ϘΠϥʔϓϨʔτίʔυͷੜ पลπʔϧʹΑΔίʔυੜͷαϙʔτ ίʔυੜΛแͨ͠ύϥμΠϜ IUUQTQSPKFDUMPNCPLPSH IUUQTXXXKFUCSBJOTDPNJEFB IUUQTPQFOBQJHFOFSBUPSUFDI
IUUQTXXXKIJQTUFSUFDI IUUQTHSBQIRMDPEFHFOFSBUPSDPN IUUQTHSQDJP
ͭ·ΓɺਐԽͷͨΊ
None
࣍ wͳͥίʔυΛࣗಈੜ͢Δͷ͔ʁ w0QFO"1* w υΩϡϝϯτϑΥʔϚοτपลπʔϧͷ֓ཁ w εΩʔϚۦಈ։ൃ wΧʔτ৽ϓϩδΣΫτ w 0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜ
w 0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱ࠷ݶͷςετ͕ࣗಈతʹΔੈք ίʔυࣗಈੜͷ׆༻ঢ়گΛཧ ͨ͠͏͑Ͱɺ0QFO"1*Λ׆༻ͯ͠ ͬͱੜ࢈ੑΛߴΊΔͨΊʹɺ ۙͰΓ͍ͨ͜ͱΛ͓͠·͢ʂ
OpenAPI
0QFO"1*֓ཁ IUUQTHJUIVCDPN0"*0QFO"1*4QFDJpDBUJPO The OpenAPI Specification w0QFO"1* 0QFO"1*TQFDJpDBUJPO wچ4XBHHFSTQFDJpDBUJPO w3&45"1*ͷ༷Λهड़͢ΔϑΥʔϚοτ
w0QFO"1**OJUJBUJWF w0QFO"1*ͷϑΥʔϚοτΛਪਐ͢Δஂମ w.JDSPTPGUɺ(PPHMFɺ*#.ɺ4NBSU#FBSͳͲ͕ ࢀՃ
w݄0QFO"1**OJUJBUJWF݁ w݄4XBHHFSTQFDJpDBUJPO͕0QFO"1**OJUJBUJWFʹدଃ͞ΕΔ w4XBHHFSTQFDJpDBUJPO͕0QFO"1*TQFDJpDBUJPOʹϦωʔϜ͞ ΕΔ w݄0QFO"1*TQFDJpDBUJPOϦϦʔε w݄ݱࡏͷόʔδϣϯ0QFO"1*TQFDJpDBUJPO 0QFO"1*ྺ࢙ 4XBHHFSϓϩδΣΫτ 0QFO"1**OJUJBUJWF 0QFO"1*TQFD
4XBHHFSTQFD 4XBHHFSUPPMT
0QFO"1*ϑΥʔϚοτ IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS
0QFO"1*ϑΥʔϚοτ ϝλใ IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS
0QFO"1*ϑΥʔϚοτ ΤϯυϙΠϯτ IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS
0QFO"1*ϑΥʔϚοτ ίϯϙʔωϯτ IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS
पลπʔϧ
0QFO"1*पลπʔϧ w 4XBHHFS&EJUPS w 0QFO"1*υΩϡϝϯτ εΩʔϚ ͷهड़Λࢧԉ w IUUQTFEJUPSTXBHHFSJP w
4XBHHFS6* w "1*༷Λࢹ֮ԽɺΠϯλϥΫςΟϒͳ"1*ૢ࡞ w IUUQTQFUTUPSFTXBHHFSJP w 0QFO"1*(FOFSBUPS w 0QFO"1*υΩϡϝϯτ͔ΒιʔείʔυΛࣗಈੜ w IUUQTPQFOBQJHFOFSBUPSUFDI IUUQTPQFOBQJUPPMT
εΩʔϚۦಈ։ൃ
εΩʔϚۦಈ։ൃ IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM ͡ΊʹΈΜͳͰ8FC"1*ͷ༷Λ૬ஊܾͯ͠Ίͯ 0QFO"1*υΩϡϝϯτΛهड़ͯ͠ पลπʔϧΛ׆༻ͯ͠։ൃΛޮԽ͢Δ ։ൃνʔϜશମͷϫʔΫϑϩʔ εΩʔϚͰ։ൃΛۦಈ͢Δ͜ͱ
εΩʔϚۦಈ։ൃͱपลπʔϧ IUUQTCMPHPOLOJOKBTDIFNB@pSTU@EFWFMPQNFOU API هड़ݴޠҎޙͷੈք 0QFO"1*υΩϡϝϯτͷهड़ ༷ͷڞ༗ɾ֬ೝ ελϒੜػೳΛར༻ͨ͠εΩϟϑΥʔϧσΟϯά ੜͨ͠ελϒΛར༻ͨ͠ฏߦ։ൃ ੜͨ͠ΫϥΠΞϯτΛར༻ͨ͠ݮ ςετίʔυͷࣗಈੜ
Swagger Editor Swagger UI OpenAPI Generator
0QFO"1*υΩϡϝϯτͷهड़ ༷ͷڞ༗ɾ֬ೝ Swagger Editor Swagger UI ίʔυࣗಈੜͷԸܙେ͖͍ IUUQTCMPHPOLOJOKBTDIFNB@pSTU@EFWFMPQNFOU API هड़ݴޠҎޙͷੈք
ελϒੜػೳΛར༻ͨ͠εΩϟϑΥʔϧσΟϯά ςετίʔυͷࣗಈੜ OpenAPI Generator ੜͨ͠ελϒΛར༻ͨ͠ฏߦ։ൃ ੜͨ͠ΫϥΠΞϯτΛར༻ͨ͠ݮ
࣍ wͳͥίʔυΛࣗಈੜ͢Δͷ͔ʁ w0QFO"1* w υΩϡϝϯτϑΥʔϚοτपลπʔϧͷ֓ཁ w εΩʔϚۦಈ։ൃ wΧʔτ৽ϓϩδΣΫτ w 0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜ
w 0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱ࠷ݶͷςετ͕ࣗಈతʹΔੈք ίʔυࣗಈੜͷ׆༻ঢ়گΛཧ ͨ͠͏͑Ͱɺ0QFO"1*Λ׆༻ͯ͠ ͬͱੜ࢈ੑΛߴΊΔͨΊʹɺ ۙͰΓ͍ͨ͜ͱΛ͓͠·͢ʂ
Χʔτ৽ϓϩδΣΫτ
Χʔτ৽ϓϩδΣΫτ w-0)"$0ͷچ0SEFSγεςϜΛ৽"1*ج൫γεςϜʹҠߦ͢Δ wϓϩδΣΫτ໊UJBNBU ςΟΞϚτ wϨΨγʔΛ٫͠ɺ։ൃޮαʔϏεͷ࣭Λ্͢Δ wΧʔτɾϨδը໘ΛരԽ͢Δ շదͳ͓ങ͍ମݧͷఏڙ
Χʔτ৽ϓϩδΣΫτͷͬ͘͟Γͨ͠ਤ #'' ૹ Ϣʔβʔ จ "1*ج൫ ,PUMJO 4QSJOH#PPU 4QSJOH8FC'MVY
,PUMJO+BWB 4QSJOH#PPU "QBDIF$BNFM 5ZQF4DSJQU +2VFSZ 0QFO"1* 1SPUPDPM#V⒎FST "1*༷ɾεΩʔϚఆٛ
"1*༷ɾεΩʔϚఆٛ ૹ Ϣʔβʔ จ ,PUMJO 4QSJOH#PPU 4QSJOH8FC'MVY ,PUMJO+BWB 4QSJOH#PPU
"QBDIF$BNFM 5ZQF4DSJQU +2VFSZ 0QFO"1*Λͱʹͨ͠ίʔυੜͷ׆༻ঢ়گ "1*ج൫ 0QFO"1* 1SPUPDPM#V⒎FST #'' #''ͰͷϞσϧΫϥεੜͷΈ
0QFO"1*υΩϡϝϯτͷهड़ ༷ͷڞ༗ɾ֬ೝ Swagger Editor Swagger UI ίʔυࣗಈੜ׆༻ͷ༨͋Δ IUUQTCMPHPOLOJOKBTDIFNB@pSTU@EFWFMPQNFOU API هड़ݴޠҎޙͷੈք
ελϒੜػೳΛར༻ͨ͠εΩϟϑΥʔϧσΟϯά ςετίʔυͷࣗಈੜ OpenAPI Generator ੜͨ͠ελϒΛར༻ͨ͠ฏߦ։ൃ ੜͨ͠ΫϥΠΞϯτΛར༻ͨ͠ݮ
"1*༷ɾεΩʔϚఆٛ ૹ Ϣʔβʔ จ ,PUMJO+BWB 4QSJOH#PPU "QBDIF$BNFM 5ZQF4DSJQU +2VFSZ
׆༻ͷ༨͋Δ"1*ΫϥΠΞϯτ "1*ج൫ ,PUMJO 4QSJOH#PPU 4QSJOH8FC'MVY 0QFO"1* 1SPUPDPM#V⒎FST #'' ίϧʔνϯͰ͍͍͢Α͏ʹ 8FC$MJFOUΛಠࣗʹϥοϓͨ͠Ϋϥε Λ͍ͬͯΔͷͰɺ ࣗಈੜͷ׆༻͍͔͠ "1*ΫϥΠΞϯτͷࣗಈੜ
"1*༷ɾεΩʔϚఆٛ ,PUMJO 4QSJOH#PPU 4QSJOH8FC'MVY 5ZQF4DSJQU +2VFSZ ׆༻ͷ༨͋Δ"1*αʔόʔ #'' ,PUMJO+BWB 4QSJOH#PPU
"QBDIF$BNFM ૹ Ϣʔβʔ จ "1*ج൫ 0QFO"1* 1SPUPDPM#V⒎FST ελϒੜΛར༻ͨ͠εΩϟϑΥʔϧσΟϯά ࠾༻͍ͯ͠Δٕज़͕ɺ 0QFO"1*(FOFSBUPS͕ੜ͢Δ ελϒͷίʔυͱҧ͏ͷͰ͑ͳ͍͔
׆༻ͷ༨͋Δͷͷ #'' ૹ Ϣʔβʔ จ "1*ج൫ ,PUMJO 4QSJOH#PPU 4QSJOH8FC'MVY
,PUMJO+BWB 4QSJOH#PPU "QBDIF$BNFM 5ZQF4DSJQU +2VFSZ 0QFO"1* 1SPUPDPM#V⒎FST "1*༷ɾεΩʔϚఆٛ ಋೖͷखؒʹݟ߹͏͚ͩͷޮՌ͕ಘΒΕΔ͔Ͳ͏͔ ඍົͳ͜ͱ͕ଟ͔ͬͨ తɺίʔυࣗಈੜͷ׆༻Ͱͳ͘։ൃͷੜ࢈ੑΛ্͛Δ͜ͱ ͦ͜Ͱ
APIͷE2Eςετ(ͷҰ෦)Λ ࣗಈੜ͍ͨ͠
εΩʔϚۦಈ։ൃ IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM ୈষ0QFO"1*ʹΑΔεΩʔϚۦಈ։ൃ ʮεΩʔϚΛ༻͍༷ͯͱ࣮ͷҰகΛࣗಈςετ͢Δʯ 3VCZPO3BJMTͰ࣮ͨ͠"1*αʔόͷϨεϙϯε ͕ɺ0QFO"1*υΩϡϝϯτͱဃ͍ͯ͠ͳ͍͔ࣗ ಈతʹνΣοΫ͢Δ࣮Λհ͍ͯ͠Δɻ 34QFD PBT@QBSTFS KTPO@TDIFNB
$PNNJUUFF
IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM εΩʔϚۦಈ։ൃ ୈষ0QFO"1*ʹΑΔεΩʔϚۦಈ։ൃ ʮεΩʔϚΛ༻͍༷ͯͱ࣮ͷҰகΛࣗಈςετ͢Δʯ 3VCZPO3BJMTͰ࣮ͨ͠"1*αʔόͷϨεϙϯε ͕ɺ0QFO"1*υΩϡϝϯτͱဃ͍ͯ͠ͳ͍͔ࣗ ಈతʹνΣοΫ͢Δ࣮Λհ͍ͯ͠Δɻ 34QFD PBT@QBSTFS KTPO@TDIFNB
$PNNJUUFF Χʔτ৽ϓϩδΣΫτ͕࠾༻͍ͯ͠Δٕज़Ͱ Ͳ͏࣮ݱ͢Δ͔
Spring Cloud Contract (SCC)
4QSJOH$MPVE$POUSBDU 4$$ w$POTVNFS%SJWFO$POUSBDUT $%$ EFWFMPQNFOU w IUUQXXXTFSWJDFEFTJHOQBUUFSOTDPN8FC4FSWJDF&WPMVUJPO$POTVNFS%SJWFO$POUSBDUT w"1*ར༻ऀ͕ظ͢ΔڍಈΛυΩϡϝϯτԽ͢Δ $POUSBDU
w"1*ར༻ऀఏڙऀͷํ͕$POUSBDUΛͱʹςετΛߦ͏͜ͱͰ࣭Λอ ͪͳ͕ΒχʔζΛຬͨ͢։ൃΛߦ͏ w4QSJOH$MPVE$POUSBDU$%$ͷ࣮ફΛαϙʔτ͢Δπʔϧ w$POUSBDUͷهड़(SPPWZͱ:".-͕͑Δ w$POUSBDU͔ΒελϒαʔόςετΛࣗಈੜͰ͖Δ IUUQTHJUIVCDPNTQSJOHDMPVETQSJOHDMPVEDPOUSBDU
4QSJOH$MPVE$POUSBDU 4$$ $POUSBDU (SPPWZ%4- ࣗಈੜ͞ΕΔςετίʔυ
4$$ͷ$POUSBDUͱ0QFO"1*υΩϡϝϯτͷҧ͍ w4$$ͷ$POUSBDU wϦΫΤετ˓˓˓Λૹ৴ͨ͠ΒɺϨεϙϯº͕ฦͬͯ͘Δ ˠʮετʔϦʔʯ w0QFO"1*υΩϡϝϯτ wड͚ΔϦΫΤετύϥϝʔλ໊9ɺܕ99 ฦ͢Ϩεϙϯεͷߏ:ɺܕ:: ˠʮ༷ʯ ߏܕΛఆٛ͢Δ͚ͩ
$POUSBDUΛ0QFO"1*υΩϡϝϯτʹຒΊࠐΉͱ͍͏ൃ w0QFO"1*υΩϡϝϯτͷ֦ுྖҬʹ$POUSBDU :".-%4- ΛຒΊࠐΉ͜ͱͰɺఆٛ༰ͷॏෳΛഉআ͠ɺ୯ҰͷυΩϡ ϝϯτͰ༷ͱετʔϦʔΛཧՄೳʹͳΔ w0QFO"1* $POUSBDUͷυΩϡϝϯτΛίϯόʔλʹ௨͢͜ͱ ͰɺετʔϦʔ෦Λݕূ͢ΔςετίʔυΛੜ͢Δ IUUQTHJUIVCDPNTQSJOHGSBNFXPSLHVSVTQSJOHDMPVEDPOUSBDUPB 4QSJOH$MPVE$POUSBDU0QFO"1*$POUSBDU$POWFSUFS
+PIO5IPNQTPO !TQSJOHGSBNFXPSLHVSV IUUQTTQSJOHGSBNFXPSLHVSVEFpOJOHTQSJOHDMPVEDPOUSBDUTJOPQFOBQJ
$POUSBDUΛ0QFO"1*υΩϡϝϯτʹຒΊࠐΉͱ͍͏ൃ ϦΫΤετ Ϩεϙϯε
Γ͍ͨࣄͱͪΐͬͱҧ͏ ͜Ε͜ΕͰૉఢ͚ͩͲ
0QFO"1*υΩϡϝϯτ͔ΒςετίʔυΛੜ͍ͨ͠ w"1*αʔό͕ฦ͢Ϩεϙϯεͷߏ͕0QFO"1*υΩϡϝϯτͷͦΕͱဃͯ͠ ͍ͳ͍͔ςετ͍ͨ͠ w $POUSBDUͳͲॻ͔ͣʹૉͷ 0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱɺ࠷ݶ ͷςετ ˞ ͕ࣗಈతʹΔੈք w
˞ 0QFO"1*ʮ༷ʯͷهड़͚ͩͳͷͰɺςετͰ͖Δ͜ͱݶΒΕΔ w͕ɺϨεϙϯεͷߏςετͰ͖Δ
4QSJOH$MPVE$POUSBDU0QFO"1* w0QFO"1*υΩϡϝϯτͷఆٛΛ4$$ͷ$POUSBDUʹ ม͢Δ(SBEMF.BWFOϓϥάΠϯ wϨεϙϯεͷߏΛςετ͢Δ$POUSBDUʹมͯ͠ ςετίʔυΛੜ͢Δ IUUQTHJUIVCDPNBDLJOUPTITQSJOHDMPVEDPOUSBDUPQFOBQJ ແ͍ͳΒ࡞Ε͍͍
4QSJOH$MPVE$POUSBDU0QFO"1* ಈ࡞Πϝʔδ 0QFO"1*υΩϡϝϯτ 4QSJOH$MPVE$POUSBDU0QFO"1* 4$$Λར༻ͯ͠$POUSBDU͔Β ςετίʔυΛੜ 0QFO"1*υΩϡϝϯτʹఆٛ͞Ε͍ͯΔ ϨεϙϯεͷߏΛ$POUSBDUΦϒδΣΫτʹม
4QSJOH$MPVE$POUSBDU0QFO"1* w·ͩ࡞Γ࢝Ί͔ͨΓ wͱΓ͋͑ͣςετ͕ੜ͞ΕΔ ಈ࡞͢Δ͔ෆ໌ ͷϨϕϧ w࣮༻Ϩϕϧʹ্࣮͛ͯࡍʹ׆༻͍͖͍ͯͨ͠ wΞεΫϧͷ044ͱͯ͠ҭ͍͖͍ͯͯͨ
ίʔυࣗಈੜΛ׆༻ͯ͠ ໌དྷΔΤϯδχΞϦϯάΛʂ ΞεΫϧ