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
全体がいい感じになるために、私たちRailsをホームにするWeb技術者ができること/let-o...
Search
MOROHASHI Kyosuke
March 23, 2019
Programming
2
1.8k
全体がいい感じになるために、私たちRailsをホームにするWeb技術者ができること/let-our-whole-system-grow
RailsDM 2019 での発表資料です
MOROHASHI Kyosuke
March 23, 2019
Tweet
Share
More Decks by MOROHASHI Kyosuke
See All by MOROHASHI Kyosuke
Identifying User Idenity
moro
4
6.1k
Simplicity on Rails -- RDB, REST and Ruby
moro
14
16k
ちょうどよい Rails E2E テスト/enough-good-rails-e2e-test
moro
5
2.3k
フレームワークを作らない方法/How NOT to build frameworks
moro
4
1k
フォームオブジェクトとの向き合い方/Grow Form Objects up
moro
1
1.9k
チームによるいきいきとしたソフトウェア開発/an-alive-team-grows-software
moro
3
3.3k
Web-E2E-Testing-from-Ruby
moro
5
490
Joyful user foundation restructuring with Ruby
moro
9
19k
cookpad-17day-tech-internship-2017-git
moro
0
9.4k
Other Decks in Programming
See All in Programming
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
0
210
カスタムしながら理解するGraphQL Connection
yanagii
0
680
cXML という電子商取引の トランザクションを支える プロトコルと向きあっている話
phigasui
2
2k
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
0
120
Content Security Policy入門 セキュリティ設定と 違反レポートのはじめ方 / Introduction to Content Security Policy Getting Started with Security Configuration and Violation Reporting
uskey512
1
370
Vue.js学習の振り返り
hiro_xre
2
130
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
3
1k
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
14
3.8k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
10
4.3k
現場で役立つモデリング 超入門
masuda220
PRO
12
2.6k
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
3
1.1k
今日で分かる!カスタムコップの作り方
krpk1900
2
360
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
The Invisible Side of Design
smashingmag
297
50k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
280
GitHub's CSS Performance
jonrohan
1030
460k
The Power of CSS Pseudo Elements
geoffreycrofte
72
5.3k
We Have a Design System, Now What?
morganepeng
50
7.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
9
670
A better future with KSS
kneath
238
17k
Making Projects Easy
brettharned
115
5.9k
Designing for Performance
lara
604
68k
Producing Creativity
orderedlist
PRO
341
39k
Transcript
શମ͕͍͍ײ͡ʹͳΔͨΊʹɺ ࢲͨͪ3BJMTΛϗʔϜʹ͢Δ 8FCٕज़ऀ͕Ͱ͖Δ͜ͱ 2019-03-23 Rails Developers Meetup 2019 ॾڮګհ
@moro
‣ ࣸਅ
Kyosuke MOROHASHI @moro
!5 SMS? What's SMSってなにをやってる会社なの?
https://twitter.com/sunaot/status/1002392476492038144
“ 情報インフラを構築することで、⾼齢社会を 取り巻く⼈びと、⾼齢社会で働く⽅や事業者の⽅、 ⾼齢者ご⾃⾝やそのご家族などがイキイキと ⽣活できる社会の実現を⽬指しています。 — https://www.bm-sms.co.jp/philosophy/
!8 &
吳䒭⠓爡ؒأ ٥ ؒي ٥ ؒأ 匌❨鿪庥⼒蓎Ⱅ㕦⡝♶⹛欵蓎Ⱅ㕦ةٙ٦ https://www.bm-sms.co.jp ؒٝآص،䱰欽؟؎ ز https://careers.bm-sms.co.jp/engineer/
join us!
શମ͕͍͍ײ͡ʹͳΔͨΊʹɺ ࢲͨͪ3BJMTΛϗʔϜʹ͢Δ 8FCٕज़ऀ͕Ͱ͖Δ͜ͱ
‣ 3BJMTੲͱࠓ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ શମΛ͍͍ײ͡ʹ͢Δ ‣ ݁
3BJMTΛऔΓר͘ ੲͱࠓ
3BJMT ͳͲαʔόଆ8FCٕज़ ΛऔΓר͘ ੲͱࠓ
ٕज़τϐοΫͱͯ͠ͷ3BJMT ੲͱࠓ
‣ 3BJMT͕ग़࢝Ίͨɺ3BJMT8FCΞϓϦ ٕज़తτϐοΫͷ࠷ઌͷҰͭͩͬͨɻ ‣ 001 -JHIUXFJHIU-BOHVBHF ϑϧελοΫϑϨʔϜϫʔΫ ‣ "KBY 3&45
5%% ΞδϟΠϧ ษڧձ ҬίϛϡχςΟʔ ‣ ͍·ଓ͘ɺ͍ΖΜͳࢼΈ͕Ͱ͖ͯͨɻ ‣ ˞ͪΖΜʮ͕ͯ͢3BJMTͷ͓͔͛ʯͱ͍͏Θ͚Ͱͳ͍Α ࢲͷࢹͰ;Γ͔͑Δ ੲ
‣ ͷ࠷ઌͰͳͦ͞͏ɻ ‣ Ϟμϯ+4 .JDSPTFSWJDFT %FW0QT "* .- ʜ ‣
ʮ͋ͨΓ·͑ʯʹͳͬͨ ‣ ʮ࠷ઌʯʹ·ͨͳΔ͔͠Εͳ͍͠ɺ ͳΒͳ͍͔͠Εͳ͍ɻ ‣ ͨͩɺ·ͨ͠ͳͬͯલͱҧ͏ɻ ࠓ
‣ (PPEFOPVHIͱͯ͠ΘΕ͍ͯΔ ‣ ͢ͰʹͬͯΔͱ͜Ζͨ͘͞Μ͋Δ͠Ͷɻ ‣ ࠓͰ͍͍બࢶͩͱࢥ͏ ‣ ͪΖΜɺઈ໓ͯ͠΄͘͠ͳ͍ 3BJMTઈ໓͢Δ
‣ ୯Ұͷ3BJMTΞϓϦ͚ͩͰ݁͢Δ͜ͱ ͳ͘ͳ͖ͬͯͨɻ ͔ͱݴͬͯੲͱಉ͡Ͱͳ͍
‣ 3BJMTੲͱࠓ ‣ ࠷৽ͷٕज़Ͱͳ͘ͳ͖ͬͯͨ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ શମΛ͍͍ײ͡ʹ͢Δ ‣
݁
3BJMTΞϓϦ ੲͱࠓ
‣ ୯Ұͷ8FCΞϓϦͰ΄΅݁͢Δɻ ‣ ಛఆͷαʔϏεɾۀɾϓϩμΫτ͕ؔ৺ͷର ‣ ֎෦࿈ܞಛผͳͱ͜Ζ͚ͩɻ ੲ3BJMT͕ग़࢝Ίͨࠒ
‣ 8FCͷαʔϏεͭͰ݁͢Δ͜ͱ ΄΅ͳ͍ɻ ‣ ʮαʔϏεͭʯͰɺଟ͘ͷཁૉٕज़͕ඞཁ ‣ ֎෦࿈ܞ͢Δͷ͕ৗɻ ࠓ
֎෦࿈ܞ͢Δͷ͕ৗ
֎෦࿈ܞ͢Δͷ͕ৗ
‣ ཁૉٕज़ͷઐԽ͕ਐΜͰ͍Δɻ ‣ ݸʑͷཁૉٕज़ʹ࠷దʹͳΔΑ͏ γεςϜׂ͕͞ΕΔɻ ‣ ͦΕͧΕͷz֎෦zʹͦΕͧΕͷతɾ ࢥ͕͋Δɻ
֎෦࿈ܞ͢Δͷ͕ৗ
‣ ʮඇಉظͬͯಉظΛߟ͑Δ͜ͱͩΑͶʯ ‣ !N@TFLJ͞Μ͕ݴͬͯͨؾ͕͢Δ ཁग़య ‣ׂ͞ΕͨࣄΛ߹ྲྀͤ͞Δɻ ‣߹ྲྀͤ͞ΔͱॳΊͯϢʔβʔʹಧ͘ɻ ʮׂͬͯ߹ྲྀ͢Δ͜ͱͩΑͶʯ
‣ ߦಈੳͯ͠.-ͰϦίϝϯυ͢Δ༰݁ՌΛ εϚϗΞϓϦʹͨ͠Γɻ ‣ छྨͷ.JDSPTFSWJDFTΤϯυϙΠϯτ͔Βͱ͖ͬͯ ͨσʔλΛ3FBDUΞϓϦʹΘͨͨ͠Γɻ ߹ྲྀͤ͞ΔͱॳΊͯϢʔβʔʹಧ͘
‣ αʔϏεͷӡӦελοϑ͕ɺͦΕͧΕͷઐࣝΛ ͱʹίϯςϯπΛՃߋ৽৹ࠪͨ͠Γɻ ιϑτΣΞ࣮͚ͩͰͳ͍
‣ ͍ΖΜͳઐՈՌ͕8FCٕज़Λ௨͍ͬͯ͘ɻ ‣ +40/PWFS)551ͱ͔ ‣ 41"ͱ͔ɺTJOHMFQBHF͡Όͳͯ͘+4 )5.-ͱ͔ ‣ ཧը໘ͱ͔ ‣
ͦͯ͠Ϣʔβʔʹಧ͘ɻ ߹ྲྀͷͱͯ͠ͷ8FCΞϓϦέʔγϣϯ
‣ 3BJMTੲͱࠓ ‣ ࠷৽ͷٕज़Ͱͳ͘ͳ͖ͬͯͨ ‣ ֎෦ͷ͍ΖΜͳͷͱ࿈ܞ͢Δඞཁ͕ग़͖ͯͨ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣
શମΛ͍͍ײ͡ʹ͢Δ ‣ ݁
3BJMTΞϓϦʹٻΊΒΕΔ͜ͱ ੲͱࠓ
‣ ୯ҰͷγεςϜͱͯ͠ɺσʔλͷ ग़͠ೖΕΛ্खʹߦ͏ɻ ‣ σʔλΛ͖Ε͍ʹೖΕΔɺೖΕ͘͢͢Δɻ ‣ շదͳҰށݐͯΛ࡞Δɻ ੲ
‣ ͞·͟·ͳਓ͕ͨͪ࣋ͪدΔՁΛ ߹ྲྀͤ͞ΔॴͱͳΔɻ ‣ ͍Ζ͍Ζͳਓͷॅ·͏֗ͷ׆ಈΛ͍͍ײ͡ʹ͢Δɻ ‣ ϩϘοτ͕࡞ͬͨΛϨʔϧͰӡΜͰίϯςφʹೖΕͯTIJQJUʙ̇ ࠓ
ྫ TFDSFRͷ͕͔͔࣌ؒΔ ϨίϝϯυΤϯυϙΠϯτΛ ܧଓͯ͠վળ͢Δࢪࡦ
‣ TFD͔͔Δͱ8FCಉظແཧ ‣ ඇಉظBOEPSΩϟογϡ ‣ ඇಉظͰऔΔͱ͖ͷ"1*Ͳ͏͢Δ ‣ Ωϟογϡ͢Δͱͯ͠ɺΩʔͱύʔδλΠϛϯάͷઃܭʜ
‣ Ϩίϝϯυ͢ΔࠜڌσʔλͷΘͨ͠ํ ‣ ‣ ྔ ‣ ϓϥΠόγʔ ‣ ޮՌΛͲ͏ͬͯଌఆ͠Α͏ ‣ ϩάऔಘͷΈɺ͍·͋ΔൣғͰΓΔ ‣ Ͳ͏͍͏ϩάΛͲ͏͍͏ޮՌͱΈͳ͍͍ͤ TFDSFRͷ͕͔͔࣌ؒΔϨίϝϯυΤϯυϙΠϯτΛܧଓͯ͠վળ͢Δࢪࡦ
‣ ୭͕Ͳ͏ੳ͢Δ ‣ ԿΛͬͯޮՌ͕͋ͬͨͱஅͰ͖Δ ‣ վળͷͨΊͷ৽ΞϧΰϦζϜΛͲ͏ͬͯػೳՃ͠Α͏ ‣ ύϥϝʔλมߋ͚ͩͰ͍͚Δ
‣ ͍͚ͳ͍ͱͯ͠ɺ͍ͭมߋͰ͖Δ ‣ ൺֱͷͨΊʹฒߦӡ༻͢ΔΈ ‣ ϨίϝϯυΤϯδϯ͕٧·ͬͨΓམͪͨΓͨ͠ΒͲ͏͠Α͏ ‣ ٕज़తʹΓͨ͠Γ ‣ ࠔͬͨϢʔβʔ͞ΜʹँͬͨΓॿ͚ͨΓ TFDSFRͷ͕͔͔࣌ؒΔϨίϝϯυΤϯυϙΠϯτΛܧଓͯ͠վળ͢Δࢪࡦ
‣ Ϛδ ‣ ҰݸҰݸ͕ɺٕज़తʹͪΐ͏εΰΠͱݶΒͳ͍ɻ ‣ ݸผʹʮ;ͭ͏ʯͷ͜ͱͷ΄͏͕ଟ͍ ‣ ͦΕͧΕͷͷઐՈͱͯ͠ɺͬͱεΰΠಉ྅ νʔϜϝϯόʔ͕͍ͨΓ͠·ͤΜ
ͥΜͿҰਓͰϚελʔ͢Δ
‣ ΞϓϦج൫ ‣ Πϯϑϥ43& ‣ "*ݚڀ։ൃ ‣ اըϚʔέλʔ ‣ Ϣʔβʔαϙʔτ
৭Μͳ৬ೳͷਓ͕͍ͨͪΔ
‣ଟ͘ͷ߹ɺ8FCΞϓϦͷίϛοτΛ͏ɻ ‣ҰݸҰݸͷػೳՃͦ͜·Ͱ͘͠ͳ͍ɻ ‣ͰͦΕΛܧଓతʹ͍͍ײ͡ʹ͢Δͷ͍͠ɻ ‣৭Μͳਓͷࢥ͕͋ΔͷͰɻ ࣋ͪدͬͨՌΛEFMJWFS͢Δ
‣ ͍͍ײ͡ʹ߹ྲྀ͢ΔʹͳΔɻ ‣ ૬ޓʹΑ͍ίϛϡχέʔγϣϯΛઃܭͯ͠ ‣ ՌΛྲྀ௨ͤ͞ΔΠϯλʔϑΣʔεΛఏڙ͢Δ ‣͍͠ɻ ‣͚ͲɺϢʔβʔʹՁΛಧ͚ΔͨΊʹඞཁͳ͜ͱɻ z8FCΞϓϦΛ࡞Δ৬ೳzΛ࣋ͭਓ͕ͨͪͰ͖Δͱ͍͍͜ͱ
‣ ͍͍ײ͡ʹ߹ྲྀ͢ΔʹͳΔɻ ‣ ૬ޓʹΑ͍ίϛϡχέʔγϣϯΛઃܭͯ͠ ‣ ՌΛྲྀ௨ͤ͞ΔΠϯλʔϑΣʔεΛఏڙ͢Δ ‣͍͠ɻ ‣͚ͲɺϢʔβʔʹՁΛಧ͚ΔͨΊʹඞཁͳ͜ͱɻ z8FCΞϓϦΛ࡞Δ৬ೳzΛ࣋ͭਓ͕ͨͪͰ͖Δͱ͍͍͜ͱ
‣ 3BJMTੲͱࠓ ‣ ࠷৽ͷٕज़Ͱͳ͘ͳ͖ͬͯͨ ‣ ֎෦ͷ͍ΖΜͳͷͱ࿈ܞ͢Δඞཁ͕ग़͖ͯͨ ‣ ৭Μͳ৬ೳͷਓ͕ͨͪग़ձ͏ʹͳ͖͍ͬͯͯΔ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ
‣ શମΛ͍͍ײ͡ʹ͢Δ ‣ ݁
Ϣʔβʔʹ ՁΛಧ͚Δ ͍ͬͯ͏͚Ͳ
‣ ओޠ ‣ ࢲ͕ ‣ ࢲͨͪΤϯδχΞ͕ ‣ ࢲͨͪͷ\αʔϏε ࣄۀ
ձࣾ^શମ͕ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ
‣ Ϣʔβʔͱ ‣ Πϯλʔωοτͷ͜͏ʹ͍ΔɺαʔϏεར༻ऀ ‣ ར༻ऀͷ͜ͱΛҰॹʹߟ͑Δɺ৫ͷؒ ‣ ͦ͏͍͏৫ͷ͕ؒ͏ιϑτΣΞϓϩμΫτ Λ࡞Δɺ։ൃνʔϜͷϝϯόʔ
ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ
‣ ʮࢲʯଞͷ৬ೳͷਓʹՁΛఏڙͯ͠ɻ ‣ ʮࢲͨͪʯΈΜͳ͕ͦΕͧΕͷ৬ೳΛੜ͔ͯ͠ ੈͷதΛ͍͖͍͖͍ͤͨ͞ɻ ഉଞͰͳ͘ϑϥΫλϧߏ
‣ ͍·ͷ8FCͷαʔόଆͬͯΑཱ͍ͪҐஔ ͩͱࢥ͏ɻ ‣ ৫֎ͷʰ͍ΖΜͳਓ͕ॅ·͏֗ʱ ͱͯ͠ͷιϑτΣΞશମΛ͍͍ײ͡ʹ͢Δɻ ‣ ʮΤίγεςϜʯͷγεςϜ શମΛ͍͍ײ͡ʹ͢Δ
‣ גࣜձࣾΤεɾΤϜɾΤεੵۃ࠾༻த ‣ 3BJMTੲͱࠓ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ ʮࢲͨͪʯͱʮϢʔβʔʯͷϑϥΫλϧߏɻ11͡Όͳ͍Αɻ ‣ શମΛ͍͍ײ͡ʹ͢Δ
‣ ݁
શମΛ ͍͍ײ͡ʹ͢Δ
ιϑτΣΞʹॅ·͏ਓͨͪʹ͖߹͏
‣ ҰॹʹՁΛఏڙ͢ΔɺʮӡӦ͕ಘҙͳਓͨͪʯ͕ ;ͩΜॅ·͏ͱ͜Ζɻ ‣ ςʔϒ ϧΛ$36%͢Δ͚ͩͩͱΓͳ͍͜ͱ͕ଟ͍Αɻ ͨͱ͑ཧը໘
‣ ॅ·͏ਓͨͪͷϚΠϯυηοτΛଚॏͯ͠ɺ ιϑτΣΞʹ͠Α͏ɻ ‣ ϢϏΩλεݴޠɺυϝΠϯΤΩεύʔτɺ%$*ʜ ‣ Ϟδϡʔϧׂͷ͚ͩ͡Όͳ͍ ձ͠Α͏
‣ ੍ޚͷํͷܾఆݖΛɺॅ·͏ਓࣗʹҕͶΔɻ ‣ ίʔυϕʔεʹॅ·͏զʑɺίʔυϕʔεͷ͋ΓํΛ ৄ͘͠ͳ͍ਓʹܾΊΒΕͨ͘ͳ͍Ͱ͢ΑͶ ‣ ҙͯ͠ҭ͍ͯͯ͘ͱɺ݁Ռͱͯ͠Ͱ͖Δ ͜ͱ͋Δ
‣ 3BJMTϛϥΫϧ lϑϨʔϜϫʔΫzΛ࡞Βͳ͍
‣ ίʔυʹॅ·͏ࢲͨͪϓϩάϥϚʹ ‣ Α͍ΠϯλʔϑΣʔεͱίϛϡχέʔγϣϯͷ Λఏڙͯ͘͠Εɺ ‣ ιϑτΣΞͷ͍खʹՁΛಧ͚ΔͷΛ खॿ͚ͯ͘͠ΕΔɻ 3VCZ3BJMT
‣ ιϑτΣΞͷ͍खʹͱ͍͍ͬͯײ͡ʹɻ ‣ ʮ3BJMT͕ʰಈ͍ͯ΄͍͠Α͏ʹʱಈ͔ͳ͔ͬͨ ΒͦΕόάʯ ‣ Έ͍ͨͳ͜ͱΛ!ZVHVJ͞Μݴͬͯͨؾ͕ ཁग़య 3VCZ3BJMTͷΑ͏ʹৼΔ͏
ͱɺ͍͏ͷΛ Ұൠͱͯ͠ɺ ෆཁͱࢥ͏ਓ͋·Γ͍ͳ͍
‣ αʔϏε։ൃࢤΤϯδχΞ ‣ ʮࢲͷαʔϏεʯͰϢʔβʔʹՁΛఏڙ͍ͨ͠ ‣ ٕज़ࢤΤϯδχΞ ‣ ͜ͷ͍͢͝৽ٕज़Λద༻͍ͨ͠ ‣ ͦΕͧΕͷࢤͷͻͱ͕ʮશମʯʹͱͬͯେࣄ
ͳͷؒҧ͍ͳͯ͘ɻ ‣ ྑ͘͠·͠ΐ͏ ΩϟϦΞύεͱͯ͠ҙࣝ͢Δͷ͕͍͠
‣ ΈΜͳͷࣄΛ߹ྲྀͤ͞Δ͜ͱʹ ؔ৺Λ࣋ͭࢤੑʹɺ໊લ͕͋ΔͱΑ͍ɻ ‣ ͍͍ͷࢥ͍͍ͭͨΒڭ͍͑ͯͩ͘͞ ‣ ఆʮશମΛ͍͍ײ͡ʹ͢Δʯ ʲ؇ืʳ͜ͷࢤΛද͢Α໊͍લ
‣ 3BJMTੲͱࠓ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ શମΛ͍͍ײ͡ʹ͢Δ ‣ ʮΈΜͳͷࣄΛ߹ྲྀͤ͞Δ͜ͱʯʹڵຯΛ࣋ͭɺͱ͍͏ ΩϟϦΞͷํੑΛ͝ఏҊͨ͠ɻ ‣
݁
݁
શମ͕͍͍ײ͡ʹͳΔͨΊʹɺ ࢲͨͪ3BJMTΛϗʔϜʹ͢Δ 8FCٕज़ऀ͕Ͱ͖Δ͜ͱ
"શମ͕͍͍ײ͡ʹ ͳΔ͜ͱʹڵຯΛ࣋ͪɺ ͦ͏͠Α͏ͱ͢Δ
‣ ͞·͟·ͳਓͨͪͷίϛϡχέʔγϣϯͷͱͳΔ͜ͱɺ ݩؾ͚ͮΔ͜ͱɻ ‣ ָͬͯ͘͠ͳΔΠϯλʔϑΣʔεΛ࡞Δ͜ͱɻ ‣ ͲΜͲΜࣄͨ͘͠ͳΔ6* ‣ ͲΜͲΜୟ͖ͨ͘ͳΔ"1* ‣
ࢲͨͪશһͰఏڙ͢ΔՁͷ૯Λେ͖͘͢Δ ͨΊʹٕज़Λ͏͜ͱɻ
‣ ͱ͍͏ࢤʹ֮ࣗతʹͳΓͳ͕Βɺ ͍ΖΜͳઐՈͱͷʑͷࣄΛָ͠Ή͜ͱɻ