Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
小鳥さんとアイドルのパーソナルカラーを検索できるWebアプリを100%Kotlinで作る
Search
subroh_0508
September 26, 2020
Programming
680
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
小鳥さんとアイドルのパーソナルカラーを検索できるWebアプリを100%Kotlinで作る
IM@S ENGINEERS ON@IR!!!! 2020のトーク資料です
https://imas.connpass.com/event/186165/
subroh_0508
September 26, 2020
More Decks by subroh_0508
See All by subroh_0508
個人の生産性は青天井、そんな時代のエンジニアはチームに何をなすべきか
subroh0508
0
82
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
3
1.4k
Pull Request、AIレビューだけでマージしてOK?
subroh0508
1
110
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
640
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
2
500
"スキルファースト"で作る、AIの自走環境
subroh0508
2
1k
AIを賢くしたいなら、まずは人間の改善ループから
subroh0508
0
300
"S/N-GUL4R1TY"に向けて人類は何をすべきなのか
subroh0508
0
89
画面の向こうから「気づき」を得る 画面の向こうを「物差し」として捉える
subroh0508
1
460
Other Decks in Programming
See All in Programming
setup-vp GitLab対応の裏側
naokihaba
0
110
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
Building an Out-of-Order CPU
latte72
1
780
一人だけ、Kiroが静止する日
hideg
0
110
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.4k
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
190
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
430
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
340
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.2k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
Intent as Code
shoppingjaws
6
1k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Designing Powerful Visuals for Engaging Learning
tmiket
1
550
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Curious Case for Waylosing
cassininazir
1
510
The browser strikes back
jonoalderson
0
1.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Spectacular Lies of Maps
axbom
PRO
1
1k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Become a Pro
speakerdeck
PRO
31
6.3k
Ethics towards AI in product and experience design
skipperchong
2
380
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Transcript
খௗ͞ΜͱΞΠυϧͷύʔιφϧΧϥʔΛ ݕࡧͰ͖Δ8FCΞϓϦΛ ,PUMJOͰ࡞Δ *.!4&/(*/&&340/!*3 ʹ͜͠Γ͞ͿΖʙ!TVCSPI@
"CPVU.F 2 ʹ͜͠Γ͞ͿΖʙ ✦גࣜձࣾ#FBS5BJM "OESPJE8FC ܦඅਫ਼ࢉ4BB4αʔϏεͷ։ൃ ✦୲ ŧŽŕ
"CPVU.F 3 ʹ͜͠Γ͞ͿΖʙ ✦גࣜձࣾ#FBS5BJM "OESPJE8FC ܦඅਫ਼ࢉ4BB4αʔϏεͷ։ൃ ✦୲ ŧŽŕ
ܦඅਫ਼ࢉ͕ۤखͳ࿀Λ ٹ͏ϓϩμΫτΛ࡞ͬͯ·͢
"CPVU.F ˒,PUMJO͕େ͖ʂ ,POUSJCVUPSʹͳͬͨ 4 ˞,PUMJOͷ$POUSJCVUPSͷ͜ͱ γϟχOEʹʜߦͣͩͬͨ͘ʜ
"CPVU.F ˒,PUMJO͕େ͖ʂ ,POUSJCVUPSʹͳͬͨ 5 ˞,PUMJOͷ$POUSJCVUPSͷ͜ͱ γϟχOEʹʜߦͣͩͬͨ͘ʜ ͱ͞ΜಉҰͷଘࡏ ࣗ໌
ˣ Λߏ͢ΔߦΛॻ͍ͨ ˣ ͞ΜΛߏ͢Δߦ͕ॻ͍ͨʂʂʂ
࣍ 㾎,PUMJO8FCΞϓϦʮ$0-03.!45&3ʯͷհ 㾎࣮ղઆ ,PUMJO+4ͷྑ͍ͱ͜ΖɾͭΒ͍ͱ͜Ζ 㾎,PUMJO+4ͷࠓޙͷల 6
࣍ 㾎,PUMJO8FCΞϓϦʮ$0-03.!45&3ʯͷհ 㾎࣮ղઆ ,PUMJO+4ͷྑ͍ͱ͜ΖɾͭΒ͍ͱ͜Ζ 㾎,PUMJO+4ͷࠓޙͷల 7 ,PUMJO+4Ͱͷ8FCΞϓϦ࣮ গ͠ͰڵຯΛ࣋ͬͯ͘ΕΕʜ
࣍ 㾎,PUMJO8FCΞϓϦʮ$0-03.!45&3ʯͷհ 㾎࣮ղઆ ,PUMJO+4ͷྑ͍ͱ͜ΖɾͭΒ͍ͱ͜Ζ 㾎,PUMJO+4ͷࠓޙͷల 8
$0-03.!45&3 ֓ཁ ΞΠυϧΛݕࡧ ΠϝʔδΧϥʔΛϓϨϏϡʔͰ͖ΔΞϓϦ 8FCΞϓϦ൛͕طʹϦϦʔεࡁʂ "OESPJEJ04൛։ൃத
ϨϙδτϦͷ,PUMJO 9 63-JNBTDPMPSNBTUFSXFCBQQ (JU)VCTVCSPIDPMPSNBTUFS ˞΄΅খௗ͞ΜͱಉҰͷଘࡏ
$0-03.!45&3 ػೳ ϓϨϏϡʔϞʔυ ݕࡧͨ͠ΞΠυϧͷΠϝʔδΧϥʔͷҰཡදࣔ ோΊΔʂʂʂָ͍͠ʂʂʂ ϖϯϥΠτɾέϛΧϧϥΠτͷ৭֬ೝ
8FCαΠτɾΞϓϦͷΧϥʔςʔϚݕ౼ 10
$0-03.!45&3 ػೳ ϓϨϏϡʔϞʔυ ݕࡧͨ͠ΞΠυϧͷΠϝʔδΧϥʔͷҰཡදࣔ ோΊΔʂʂʂָ͍͠ʂʂʂ ϖϯϥΠτɾέϛΧϧϥΠτͷ৭֬ೝ
8FCαΠτɾΞϓϦͷΧϥʔςʔϚݕ౼ 11
$0-03.!45&3 ػೳ ϓϨϏϡʔϞʔυ ݕࡧͨ͠ΞΠυϧͷΠϝʔδΧϥʔͷҰཡදࣔ ோΊΔʂʂʂָ͍͠ʂʂʂ ϖϯϥΠτɾέϛΧϧϥΠτͷ৭֬ೝ
8FCαΠτɾΞϓϦͷΧϥʔςʔϚݕ౼ 12 എܠ৭౮৫ ΞΫηϯτΧϥʔ ਅ೫ ''#"% ΞΫηϯτΧϥʔ Ί͙Δ ''& 㱤͜ͷεϥΠυ࣮࣭Πϧϛωʔγϣϯελʔζ
$0-03.!45&3 ػೳ ϖϯϥΠτϞʔυ બͨ͠ΞΠυϧͷΠϝʔδΧϥʔΛશը໘දࣔ 13 બ λοϓ
$0-03.!45&3 ػೳ ϖϯϥΠτϞʔυ બͨ͠ΞΠυϧͷΠϝʔδΧϥʔΛશը໘දࣔ 14 બ λοϓ ͋ͳͨͷεϚϗ͕
ͦͷͰϖϯϥΠτʹૣมΘΓʂ ΞχΫϥɾ%+όʔͰʮϖϯϥΕͨʯ ͜Μͳ൵ܶͱ͏͓͞Βʂ
$0-03.!45&3 ػೳ ͦͷଞ ͔ͳΓਅ໘ʹ ϨεϙϯγϒରԠ μʔΫςʔϚରԠ
ଟݴޠରԠ ຊޠPSӳޠ 15 μʔΫςʔϚ μʔΫςʔϚ ӳޠදࣔ ͜͜·Ͱਅ໘ʹ࣮ͨ͠,PUMJO+4ΞϓϦ ଞʹଘࡏ͠ͳ͍ͷͰʜ ˞ଞʹଘࡏͨ͠Βࢀߟʹ͍ͨ͠ͷͰڭ͑ͯཉ͍͠ ࣮
࣍ 㾎,PUMJO8FCΞϓϦʮ$0-03.!45&3ʯͷհ 㾎࣮ղઆ ,PUMJO+4ͷྑ͍ͱ͜ΖɾͭΒ͍ͱ͜Ζ 㾎,PUMJO+4ͷࠓޙͷల 16
࣮ղઆ,PUMJO+4ͱʜʁ ,PUMJO.VMUJQMBUGPSN .11 ,PUMJOͷ91MBUϑϨʔϜϫʔΫ ʮϩδοΫͷڞ௨ԽʯͷϑΥʔΧε͕ಛ +7./BUJWF+4ίʔυͷग़ྗ͕Մೳ
17 +4ίʔυͷग़ྗˠ,PUMJO+4 ϥΠϒϥϦ,PUMJO +4ͷϞϊ͕ར༻Մʂ ˞,PUMJOϥΠϒϥϦཁ.11ରԠ 3FGFSFODFLPUMJOMBOHPSHEPDTSFGFSFODFNVMUJQMBUGPSNIUNM
࣮ղઆ$0-03.!45&3 ར༻ϥΠϒϥϦ,PUMJO ,UPS)UUQΫϥΠΞϯτ LPUMJOYTFSJBMJ[FS+40/γϦΞϥΠβσγϦΞϥΠβ ,PUMJO$PSPVUJOFTඇಉظॲཧ ,PJO%FQFOEFODZ*OKFDUJPOϥΠϒϥϦ
LPUMJOXSBQQFST3FBDUɾTUZMFEDPNQPOFOUͷ,PUMJOϥούʔ ,PUMJO.BUFSJBM6*.BUFSJBM6*ͷ,PUMJOϥούʔ 18 (JU)VCTVCSPILPUMJONBUFSJBMVJ 4UBSΛ͘ΕΔͱتͼ·͢ʜ
࣮ղઆ$0-03.!45&3 ར༻ϥΠϒϥϦ+4 3FBDUϝΠϯϑϨʔϜϫʔΫ .BUFSJBM6*6*ϑϨʔϜϫʔΫ TUZMFEDPNQPOFOUT$44JO+4ϥΠϒϥϦ 3FBDU3PVUFSϧʔςΟϯάϥΠϒϥϦ
SFBDUJOFYUݴޠϦιʔεΓସ͑ XFCQBDLDEOQMVHJOIUNMXFCQBDLQMVHJOόϯυϧαΠζݮ 19
࣮ղઆ$0-03.!45&3 ,PUMJO+48FCΞϓϦΛϦϦʔε͢Δ·Ͱ ֤छϥΠϒϥϦΛ͍ɺΠΠײ͡ʹ6* ϩδοΫΛ࣮͢Δ ,PUMJOίʔυΛ+BWBTDSJQUίʔυʹม͢Δ (SBEMFͷ୲Օॴɺ,PUMJOϥΠϒϥϦͷґଘੑղܾ
+BWBTDSJQUͷίʔυΛͭͷόϯυϧϑΝΠϧʹ·ͱΊΔ 8FCQBDLͷ୲Օॴɺ+4Ϟδϡʔϧͷґଘੑղܾ NJOJGZ 20 ϦϦʔε ˞$0-03.!45&3 ɹ'JSFCBTF)PTUJOHΛར༻
࣮ղઆ$0-03.!45&3 ϩδοΫ෦ TIBSFEϞδϡʔϧʹ.11ରԠͷܗࣜͰ࣮ 8FC"OESPJEJ04Ͱ͍ճͤΔΑ͏ʹ 21 㾎DPNQPOFOUTˠ%*ؔ࿈ͷϝιουɾΫϥε 㾎JOGSBBQJˠ"1*ͷΤϯυϙΠϯτఆٛ 㾎JOGSBRVFSZˠJN!TQBSRMͷΫΤϦఆٛ
㾎JOGSBSFQPTJUPSZˠϏδωεϩδοΫͷهड़ $36%ͱର 㾎NPEFMˠΤϯςΟςΟɾΦϒδΣΫτͷఆٛ 㾎VUJMJUJFTˠศརؔͷஔ͖ॴ JN!TQBSRMͬͯ·͢ʂ ͋Γ͕αϯΩϡʔʂ
࣮ղઆ$0-03.!45&3 ίϯϙʔωϯτ࣮ "UPNJD%FTJHOͬΆ͍σΟϨΫτϦߏ ঢ়ଶཧDPOUBJOFSTʹू 22
࣮ղઆ$0-03.!45&3 ίϯϙʔωϯτ࣮ "UPNJD%FTJHOͬΆ͍σΟϨΫτϦߏ ঢ়ଶཧDPOUBJOFSTʹू 23
࣮ղઆ$0-03.!45&3 ίϯϙʔωϯτ࣮ "UPNJD%FTJHOͬΆ͍σΟϨΫτϦߏ ঢ়ଶཧDPOUBJOFSTʹू 24
࣮ղઆ$0-03.!45&3 ίϯϙʔωϯτ࣮ ͭͭͷίϯϙʔωϯτ'VODUJPOBM$PNQPOFOUͱͯ͠ఆٛ 25 val chipComponent = functionalComponent<ChipProps> {
props -> val classes = useStyles() chip { attrs { classes(classes.root) label { +props.label } color = ChipColor.primary variant = if (props.isChecked) ChipVariant.default else ChipVariant.outlined onClickFunction = { props.onClick?.invoke(it) } } } } const ChipComponent = props => { const classes = useStyles(); return ( <Chip classes={ classes.root } label={ props.label } color='primary' variant={ props.isChecked ? 'default' : 'outlined' } onClick={ e => props.onClick(e) } /> ); } ྫ$IJQίϯϙʔωϯτ +49ͬΆ͞Λͨ͠จ๏Ͱ ίϯϙʔωϯτఆ͕ٛͰ͖Δʂ ˞͜͜ͷ3FBDUͰओྲྀͷίϯϙʔωϯτఆٛ
࣮ղઆ$0-03.!45&3 ঢ়ଶཧ 26 private val IdolSearchContainerImpl = functionalComponent<RProps> { val
controller = useContext(IdolSearchControllerContext) val (uiModel, dispatch) = useReducer(reducer, UiModel.Search.INITIALIZED) fun onChangeIdolName(filters: Filters, name: String?) = dispatch(actions(...)) fun onSuccess(items: List<IdolColor>) = dispatch(actions(...)) fun onFailure(e: Throwable) = dispatch(actions(...)) fun IdolSearchController.search(filters: Filters = Filters.Empty) = launch { runCatching { fetchItems(filters) } .onSuccess(::onSuccess) .onFailure(::onFailure) } useEffectDidMount { controller.search() } useDebounceEffect(uiModel.filters, 500) { controller.search(it) } ... } ྫΞΠυϧݕࡧը໘ͷ$POUBJOFS$PNQPOFOU
࣮ղઆ$0-03.!45&3 ঢ়ଶཧ 27 private val IdolSearchContainerImpl = functionalComponent<RProps> { val
controller = useContext(IdolSearchControllerContext) val (uiModel, dispatch) = useReducer(reducer, UiModel.Search.INITIALIZED) fun onChangeIdolName(filters: Filters, name: String?) = dispatch(actions(...)) fun onSuccess(items: List<IdolColor>) = dispatch(actions(...)) fun onFailure(e: Throwable) = dispatch(actions(...)) fun IdolSearchController.search(filters: Filters = Filters.Empty) = launch { runCatching { fetchItems(filters) } .onSuccess(::onSuccess) .onFailure(::onFailure) } useEffectDidMount { controller.search() } useDebounceEffect(uiModel.filters, 500) { controller.search(it) } ... } ྫΞΠυϧݕࡧը໘ͷ$POUBJOFS$PNQPOFOU 3FBDU)PPLTʹΑΔ 'MVYΞʔΩςΫνϟͰঢ়ଶཧΛ࣮
࣮ղઆ$0-03.!45&3 ঢ়ଶཧ 28 private val IdolSearchContainerImpl = functionalComponent<RProps> { val
controller = useContext(IdolSearchControllerContext) val (uiModel, dispatch) = useReducer(reducer, UiModel.Search.INITIALIZED) fun onChangeIdolName(filters: Filters, name: String?) = dispatch(actions(...)) fun onSuccess(items: List<IdolColor>) = dispatch(actions(...)) fun onFailure(e: Throwable) = dispatch(actions(...)) fun IdolSearchController.search(filters: Filters = Filters.Empty) = launch { runCatching { fetchItems(filters) } .onSuccess(::onSuccess) .onFailure(::onFailure) } useEffectDidMount { controller.search() } useDebounceEffect(uiModel.filters, 500) { controller.search(it) } ... } ྫΞΠυϧݕࡧը໘ͷ$POUBJOFS$PNQPOFOU EJTQBUDIͰ ετΞͷߋ৽ΠϕϯτΛൃՐ
࣮ղઆ$0-03.!45&3 ঢ়ଶཧ 29 private val IdolSearchContainerImpl = functionalComponent<RProps> { val
controller = useContext(IdolSearchControllerContext) val (uiModel, dispatch) = useReducer(reducer, UiModel.Search.INITIALIZED) fun onChangeIdolName(filters: Filters, name: String?) = dispatch(actions(...)) fun onSuccess(items: List<IdolColor>) = dispatch(actions(...)) fun onFailure(e: Throwable) = dispatch(actions(...)) fun IdolSearchController.search(filters: Filters = Filters.Empty) = launch { runCatching { fetchItems(filters) } .onSuccess(::onSuccess) .onFailure(::onFailure) } useEffectDidMount { controller.search() } useDebounceEffect(uiModel.filters, 500) { controller.search(it) } ... } ྫΞΠυϧݕࡧը໘ͷ$POUBJOFS$PNQPOFOU ,PUMJO$PSPVUJOFTΛར༻ͨ͠ඇಉظॲཧ JN!TQBSRMͷϦΫΤετૹ৴
,PUMJO+4ͷྑ͍ͱ͜Ζ 㾎ϩδοΫ෦Λ"OESPJEJ04ͱڞ௨ԽͰ͖Δʂ ʮ8FCͰϓϩμΫταΠΫϧΛճͨ͠ޙͷΞϓϦ࣮ʯΛૉૣ࣮͘ݱ 㾎+4ͷϥΠϒϥϦࢿ࢈Λྲྀ༻Ͱ͖Δʂ +4ͰͰ͖Δ͜ͱେମͰ͖Δ μʔΫςʔϚɺଟݴޠԽɺ'$ɺ3FBDU)PPLTFUD 㾎+49ʹ͍ۙίʔυͷݟͨ
,PUMJOͷ๛ͳදݱྗͷཱ྆ʂ ʮ+7.ͷܕγεςϜʯͷੈք؍ͰϑϩϯτΤϯυ࣮͕Ͱ͖Δ 30 5ZQF4DSJQUͷܕγεςϜɺಠಛ͡Όͳ͍͔ͬ͢ʜʁ +7.ͷຽͳͷͰ+7.ͬΆ͍ܕγεςϜ͕͍͍ͳʜ
,PUMJO+4ͷͭΒ͍ͱ͜Ζ 㾎όϯυϧϑΝΠϧ͕େ͖͘ͳΓ͕ͪ &4ඇ४ڌͷ+4ίʔυ͕ੜ͞ΕΔ ͭ·Γ8FCQBDLͷ5SFF4IBLJOH͕ޮ͔ͳ͍ 㾎7VFɾ"OHVMBSͷެࣜϥούʔ͕ͳ͍ +FU#SBJOT͕༻ҙ͍ͯ͠Δͷ3FBDUͷϥούʔͷΈ 㾎,PUMJO+4ରԠϥΠϒϥϦ͕গͳ͍
+4Ϟδϡʔϧͷར༻ʹͻͱखؒ +4ϞδϡʔϧΛ͏߹ɺϒϦοδͷίʔυ͕ඞਢ 31 ˞ຊ൪Ϗϧυ࣌ʹະ༻ϝιουίʔυͷ࠷దԽΛࣗಈͰߦ͏ػೳ ࠷ऴతʹެ։͢ΔϑΝΠϧ͕େ͖͍ ύϑΥʔϚϯεɾॳճϩʔυʹӨڹ ˞+4ͷඪ४ن֨ɺੜ+4ͱগ͠จ๏͕ҟͳΔ
࣍ 㾎,PUMJO8FCΞϓϦʮ$0-03.!45&3ʯͷհ 㾎࣮ղઆ ,PUMJO+4ͷྑ͍ͱ͜ΖɾͭΒ͍ͱ͜Ζ 㾎,PUMJO+4ͷࠓޙͷల 32
+FU#SBJOTɺׂͱຊؾʜʂ ˒݄ϦϦʔεɺ,PUMJOͷ৽ػೳ /FX*3#BDLFOE,PUMJO+4ίϯύΠϧ࣌ͷதؒදݱ͕৽͘͠ͳͬͨ όϯυϧαΠζ͕ʹʂ ˒&4ରԠ &4ίʔυΛੜ͢ΔػೳΛ࣮༧ఆ
8FCQBDLͷ5SFF4IBLJOH͕ޮ͘Α͏ʹʂ ͳΔ͔ 33 ࠷େͷऑΛ࠷༏ઌͰ௵ͦ͏ͱ͍ͯ͠Δʂະདྷͷر͕Έ͑Δʂ
+FU#SBJOTɺׂͱຊؾʜʂ ˒ਐԽ͢Δ,PUMJO.VMUJQMBUGPSN ,PUMJO/BUJWFͰͷTVTQFOEؔͷαϙʔτ ,PUMJO.VMUJQMBUGPSN.PCJMFͷBMQIB൛ϦϦʔε ͷ*%&ͰϞόΠϧ͚.11։ൃΛαϙʔτ͢ΔϓϥάΠϯ 34 ˞,PUMJO$PSPVUJOFT͕͍͘͢ͳͬͨ
,PUMJO+4.11ͷҰһʂ .11͕Γ্͕Ε,PUMJO+4ͷվળεϐʔυ্͕Δʂ ͣ
,PUMJO+4ɺࢼͯ͠Έͨ͘ͳͬͨΒʜʁ ˒ެࣜͷνϡʔτϦΞϧ͕͋Δͧʂʂʂ #VJMEJOH8FC"QQMJDBUJPOTXJUI3FBDUBOE,PUMJO+4 #VJMEJOHB'VMM4UBDL8FC"QQXJUI,PUMJO.VMUJQMBUGPSN 35 63-QMBZLPUMJOMBOHPSHIBOETPO 'VMM4UBDL8FC"QQXJUI,PUMJO.VMUJQMBUGPSN@*OUSPEVDUJPO 63-QMBZLPUMJOMBOHPSHIBOETPO
#VJMEJOH8FC"QQMJDBUJPOTXJUI3FBDUBOE,PUMJO+4@*OUSPEVDUJPO ڈݸͳ͔ͬͨ ಥવݸՃ͞ΕͯϚδͰ͏Ε͍͠
㾎,PUMJOʹ͍ۙɺύʔιφϧΧϥʔݕࡧ8FCΞϓϦΛϦϦʔεͨ͠ ࠓޙػೳՃ༧ఆ "OESPJEJ04൛ؤுͬͯ࡞Γ·͢ 㾎,PUMJO+4ɺ࣮༻ஈ֊ʹٸʹ͍͍ۙͮͯΔʂ ·ͩ·ͩ͠ΜͲ͍Օॴ͋ΕͲɺਐԽͷૣ͞ʹر͕࣋ͯΔ +7.ͱ8FCϑϩϯτɺ྆ํߦ͖དྷͰ͖ͯͱָ͍ͯ͠
ར༻ऀগͳׂ͍ʹɺใ͕උ͞Εͭͭ͋Δˠ$POUSJCVUFνϟϯεʂ ·ͱΊ 36 "OESPJEɾαʔόʔαΠυ͚ͩ͡Όͳ͍,PUMJOͷ࣮ྗ Έͳ͞Μମݧͯ͠Έͯʜʂ
37 )BWFBOJDF,PUMJO XJUI,PUPSJ