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を活用したコード自動生成の今と明日 / astud...
Search
Akihito Nakano
April 19, 2019
Programming
2
630
カート刷新プロジェクトにおける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.4k
Libraの現状と技術面をざっくりと / astudy20191114
akihito_nakano
4
1.1k
平静を保ち、コードを生成せよ 〜 OpenAPI Generator誕生の背景と軌跡 〜 / gunmaweb34
akihito_nakano
25
56k
プライベートAPIのクライアントをいい感じにしたい / pepabo_ec_tech_mtg02
akihito_nakano
0
1.8k
サーキットブレーカー 〜 有料契約店舗数 国内 No.1 ECサービスに神を宿す 〜 / pepabo_ec_tech_mtg01
akihito_nakano
1
4.2k
並行・並列処理のテストは難しい
akihito_nakano
2
4.8k
並列処理で消耗しているかたへ - Snidel のご紹介 -
akihito_nakano
4
3.5k
Other Decks in Programming
See All in Programming
自動テストを活かすためのテスト分析・テスト設計の進め方/JaSST25 Shikoku
goyoki
2
570
Kotlin + Power-Assert 言語組み込みならではのAssertion Library採用と運用ベストプラクティス by Kazuki Matsuda/Gen-AX
kazukima
0
110
AIのバカさ加減に怒る前にやっておくこと
blueeventhorizon
0
160
MCPサーバー「モディフィウス」で変更容易性の向上をスケールする / modifius
minodriven
8
1.4k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
440
Module Harmony
petamoriken
1
110
AIを駆使して新しい技術を効率的に理解する方法
nogu66
0
590
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
140
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
36
11k
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
200
アーキテクチャと考える迷子にならない開発者テスト
irof
6
1.8k
Inside of Swift Export
giginet
PRO
1
530
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Designing Experiences People Love
moore
142
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Side Projects
sachag
455
43k
Site-Speed That Sticks
csswizardry
13
960
Fireside Chat
paigeccino
41
3.7k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Navigating Team Friction
lara
190
15k
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ͱͯ͠ҭ͍͖͍ͯͯͨ
ίʔυࣗಈੜΛ׆༻ͯ͠ ໌དྷΔΤϯδχΞϦϯάΛʂ ΞεΫϧ