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
蓮ノ三連華は如何にしてBGPにたどり着いたのか
subroh0508
0
110
個人の生産性は青天井、そんな時代のエンジニアはチームに何をなすべきか
subroh0508
0
90
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
3
1.5k
Pull Request、AIレビューだけでマージしてOK?
subroh0508
1
120
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
680
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
2
530
"スキルファースト"で作る、AIの自走環境
subroh0508
2
1k
AIを賢くしたいなら、まずは人間の改善ループから
subroh0508
0
330
"S/N-GUL4R1TY"に向けて人類は何をすべきなのか
subroh0508
0
95
Other Decks in Programming
See All in Programming
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.7k
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.9k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
980
Event is what happens
moro
2
860
golang-bob.pdf
iwatsukayura
0
130
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
170
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
Workers Cache を知る
syumai
0
370
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Navigating Weather and Climate Data
rabernat
0
560
Are puppies a ranking factor?
jonoalderson
2
4.1k
Speed Design
sergeychernyshev
33
2.2k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
We Have a Design System, Now What?
morganepeng
55
8.4k
Building AI with AI
inesmontani
PRO
1
1.3k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
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