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
Hotwire的な設計を追求して「Web紙芝居」に行き着いた話
Search
Yasuko Ohba
October 28, 2023
Technology
9
4.4k
Hotwire的な設計を追求して「Web紙芝居」に行き着いた話
Kaigi on Rails 2023での「Hotwire的な設計を追求して「Web紙芝居」に行き着いた話」のトーク資料です。
Yasuko Ohba
October 28, 2023
Tweet
Share
More Decks by Yasuko Ohba
See All by Yasuko Ohba
Hotwire光の道とStimulus
nay3
6
3.1k
えにしテックさん15周年に寄せて〜万葉と私のこれまでの学び〜
nay3
63
39k
「Rubyメソッドかるた」 王者への道 ~ 万葉チームのガチな取り組みを大公開 ~
nay3
3
330
The Better RuboCop World to enjoy Ruby
nay3
1
13k
強いエンジニアという灯
nay3
51
22k
万葉のRails新人研修のコードレビューコメントを分析してみました
nay3
7
9.4k
"Railsで開発できる" への道
nay3
7
1.1k
自立したRuby技術者を育てる - 万葉の新人教育の仕組み
nay3
13
2.4k
A Training System of Ruby Programmers / Rubyプログラマが育つ仕組み - Rubyでの受託開発を10年回してみて -
nay3
17
7.6k
Other Decks in Technology
See All in Technology
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
680
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
110
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
650
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
620
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
380
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
強いチームと開発生産性
onk
PRO
35
11k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
1.1k
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Side Projects
sachag
452
42k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Building Your Own Lightsaber
phodgson
103
6.1k
How to Ace a Technical Interview
jacobian
276
23k
Adopting Sorbet at Scale
ufuk
73
9.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Transcript
)PUXJSFతͳઃܭΛٻͯ͠ ʮ8FCࢴࣳډʯʹߦ͖ண͍ͨ !OBZେೡࢠ
ࣗݾհ !OBZʢେೡࢠʣ גࣜձࣾສ༿ͷۀऀɾࣾ 3BJMTΤϯδχΞ ઃܭɾ࣮େ͖ਓؒ ݩɾڝٕ͔ΔͨޒஈֆΛඳ͘ͷ͕͖
גࣜձࣾສ༿ 3BJMTΛͬͨ։ൃࢧԉͷฮ ͍͍ͷΛɺͨͷ͘͠ ϦϞʔτϫʔΫଟ͍ ৽ೖࣾһڭҭ༻ΧϦΩϡϥϜ ສ༿OPUF ΤϯδχΞ࠾༻Λߦ͍ͬͯ·͢ʂʂ
ສ༿)PUXJSFΛਪ͍ͯ͠·͢ʂ ։ൃҊ݅ʹ)PUXJSFΛ׆༻ ݚڀɾใൃ৴׆ಈ ສ༿OPUF 5VSCP)BOECPPLͷ༁
5VSCP)BOECPPL ຊޠ༁αΠτΛެ։͠·ͨ͠ IUUQTFWFSZMFBGHJUIVCJPIPUXJSF@KB
༁ϓϩδΣΫτ օ͞ΜͱҰॹʹ༁Λ͍͚ͯ͠ΔΑ͏ɺίϯτϦϏϡʔ γϣϯΨΠυͷࡦఆΛߦ͍ͬͯ͘༧ఆ ༁ͱ͍͏Ξϓϩʔν͔Β)PUXJSFͷཧղΛਂΊΒΕΔ ͝ڵຯͷ͋ΔํͥͻҰॹʹΓ·͠ΐ͏
Ͱຊ
·ͣڭ͍͑ͯͩ͘͞
ʲ࣭ʳ )PUXJSFΛͬͯ ։ൃͨ͜͠ͱ͕͋Δํʁ
ʲ࣭ʳ )PUXJSF ؾʹೖͬͯΔํʁ
ʲ࣭ʳ )PUXJSF ਖ਼ͬ͘͠Γདྷ͍ͯͳ͍ํʁ
)PUXJSFͱࢲ )PUXJSFΛͬͨେ͖ΊͷΞϓϦ։ൃΛܦݧ ݁ɺ)PUXJSFศརɹجຊతʹ)PUXJSFͰ࡞Γ͍ͨ Ͱɺબࢶ͕ଟͯ͘໎͏ ͍͠ͳ͕ΒɺϞϠϞϠͯ͠ɺ͍Ζ͍Ζߟ͑ͨ ͳΜ͔͔͖ͬͯͨؾ͕͢ΔͷͰͦΕΛڞ༗͍ͨ͠
ࠓͷςʔϚ )PUXJSFΛ͍͍ͯ͘͠தͰࣗͳΓʹൃݟͨ͠ઃ ܭࢦͱɺͦͷഎܠʹ͋Δੑ࣭ʹ͍ͭͯͯ͠Έ͍ͨ ࢦ͕׆༻͞ΕΔ͜ͱͰʮ)PUXJSFͰ͏·͍͘͘ʯ έʔεΛ૿͍ͨ͠
͍ 8FCΞϓϦͲ͏ͳΕ ʮ41"෩ͷ͍উखʯ ʹͳΔʁ
ͨ͑͜ ը໘͕ͳΊΒ͔ʹߋ৽Ͱ͖Δ ը໘͕෦తʹߋ৽Ͱ͖Δʢෆศͳը໘มԽ͕ ͳ͍ʣ
ੲ෩ͷ8FCΞϓϦͷར༻্ͷܽ ຖճɺը໘શମ͕ॻ͖ΘΔ ͍ɻͨ͞ΕΔɻ ͪΒͭ͘ɻμαΠɻ ࡞Γ͕ѱ͍ͱɺը໘্ͷมΘͬͯ΄͘͠ͳ͍ʢೖྗͳιʔ τɾߜΓࠐΈঢ়ଶʣ͕มΘͬͯ͠·ͬͨΓ͕ͪ͠ɻෆศɻ ϏδϡΞϧతʹ͔͍͍ͬ͜ಈ͖͕͚ͭʹ͍͘
41")PUXJSF͜ͷ՝ΛղܾͰ͖Δ 41" )PUXJSF ͍ ˕ ˕ ͪΒͭ͘ ˕ ˕ ෆศͳը໘มԽ
˕ ˕ ϏδϡΞϧޮՌ ˕ ̋ ˞ݸਓతײ৮Ͱ͢
)PUXJSF 5VSCP ը໘ભҠ4VCNJUΛεϜʔζɾߴʹͯ͠ɺ෦ߋ৽ɺ8FC4PDLFU ʹΑΔߋ৽ͳͲΛΧόʔɻ+4Λॻ͔ͣʹ͜ΕΒΛ࣮ݱͤͯ͘͞ΕΔɻ 4UJNVMVT 5VSCP͚ͩͰर͑ͳ͍ը໘ଆͰ+4ॻ͖͍ͨχʔζʹରԠɻ%0.ͱ+4 Λ͖Ε͍ʹͯ͠ॻ͘͜ͱ͕Ͱ͖Δɻ 4USBEB ωΠςΟϒɾ8FCͷϋΠϒϦουܕͷϞόΠϧΞϓϦ͚ ࠓओʹ͜ͷΛ͠·͢
ͪͳΈʹ5VSCPɺ 5VSCPMJOLTͷࠒͱ ײ৮͕͕ͪͬͯͯ ͔ͳΓ͍͍͢Ͱ͢
5VSCPʹΑΔը໘ߋ৽ͷ ڞ௨ "DUJPO ϦΫΤετ Ϩεϙϯεʢ)5.-ʣ +4 ը໘ߋ৽Λൃੜͤ͞ΔͨΊʹ ৽͘͠ΞΫγϣϯΛݺͿɻͦͷϨεϙϯεΛ +4 5VSCP
͕͏·͍͜ͱը໘ʹөͯ͘͠ΕΔ
5VSCPʹΑΔ ը໘ߋ৽ͷख๏ͱಛ ෦ߋ৽ ߋ৽ൣғͷ ࣗ༝ ୯ಠͰ ΞΫηε ભҠ͢Δ 5VSCP%SJWF ☓
˕ ˕ ˕ 5VSCP'SBNFT ˕ ˚ ˕ ✕ 5VSCP4USFBNT ˕ ˕ ☓ ✕
ख๏͕ෳ͋ΔͷͰ ໎͍͕ੜ͡Δ
࣮ͷํʹ ෯͕Ͱ͖Δ
ྑ͍ํͱ ΠϚΠνͳํ͕ ͋Δ͜ͱʹؾ͍ͮͨ
ʮը໘ͷҰ෦͚ͩΛ ߋ৽͍ͨ͠ʯͱ ߟ͑Δ߹
5VSCPͰΓ͕ͪͳൃᶃ Ұ෦Λߋ৽͢ΔΜ͔ͩΒɺ5VSCP'SBNFT͔ 5VSCP4USFBNTͩͳ ࠓճҰՕॴʹ·ͱ·͍ͬͯΔ͔Βɺ5VSCP 'SBNFT͕͍͍Μ͡Όͳ͍ʁ ෦ߋ৽͕ඞཁͩʂ 5VSCP'SBNFTͩʂ
Γ͕ͪͳஅϑϩʔ ෦ߋ৽͕ඞཁͩʂ มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ 5VSCP4USFBNT 5VSCP'SBNFT ελʔτ ·ͱ·Δ ·ͱ·Βͳ͍
5VSCPͰΓ͕ͪͳൃᶄ ͜ͷʮ෦ߋ৽ʯͬͯɺ ίϯϙʔωϯτΈ͍ͨͳҐஔ͚ͮʹͯ͠ɺ ൚༻ԽͰ͖ΔΜ͡Όͳ͍͔ͳʁ
ࢦ͕ͪ͠ͳํੑ ʮ࠷ॳͷϖʔδʯͱʮ෦ߋ৽ʯͰɺͳΔ͘ॲཧͷ ॏͳΓ͕ͳ͍΄͏͕Α͍ɻΛ͚Α͏ɻ ίϯϙʔωϯτͬΆ͘ɺγϯϓϧͳͷΞΫγϣϯΛ ࡞ͬͯɺͦΕΛ5VSCP'SBNFT͔5VSCP 4USFBNTͰݺͼग़ͯ͠ߦ͜͏ɻ
Γ͕ͪͳ͜ͱ·ͱΊ ʮ෦ߋ৽ʯ͋Γ͖Ͱߟ͑Δ ʮ෦ߋ৽ʯΛಠཱͨ͠ʹରԠ͢Δίϯϙʔ ωϯτతͳΠϝʔδͰ࡞Δ
ͷͬͯѱ͍ͷʁʁ ͜͜ͳΜͰ͢Α ࢲͨͪɺͷ͕େ͖ Ͱɺ)PUXJSFͰҙ͕ඞཁͳ͜ͱʹؾ ͍ͮͨʢ݁ߏɺিܸΛड͚ͨʣ ޙͰৄ͘͠આ໌͠·͢
ᶃʮ෦ߋ৽ʯ͋Γ͖Ͱ ߟ͑ͳ͍Α͏ʹ͢Δʹʁ
ελʔτΛม͑Δ ෦ߋ৽͕ඞཁͩʂ ը໘ঢ়ଶΛ"ˠ#ʹม͑Δ
ը໘ঢ়ଶΛ"ˠ#ʹม͑Δํ๏Λ બͿͨΊͷϑϩʔνϟʔτ Ͱ͖Δ ओʹ(&5 ͏ ·ͱ·Δ ·ͱ·Βͳ͍ #୯ಠͰ ΞΫηεͰ͖Δʁ มߋՕॴ͕
ཁૉʹ·ͱ·Δʁ 5VSCP'SBNFT 5VSCP%SJWF 8FC 4PDLFU 5VSCP4USFBNT Θͳ͍ Ͱ͖ͳ͍ 1045 (&5PS1045 มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ ·ͱ·Βͳ͍ ·ͱ·Δ ෦త ը໘త
ը໘తΞϓϩʔν ͦͦݕ౼͔Β࿙Ε͕ͪ
෦తΞϓϩʔνʁ ը໘తΞϓϩʔνʁ ·ͣ͜͜Λ͖ͬΓͤ͞Α͏ʂ
ͭͷΞϓϩʔνͷҧ͍ ෦తͳΞϓϩʔν ʮ෦Λߋ৽͢ΔʯॲཧΛॻ͘ ը໘తͳΞϓϩʔν ʮ෦͕ߋ৽͞Εͨ݁Ռը໘ʯભҠ͢Δ ʮ8FCࢴࣳډʯͱ໊͚ͨ
มԽ̍ ᶃ ᶄ มԽ มԽ มԽ ᶃ ᶄ ෦తΞϓϩʔν ը໘తΞϓϩʔνʢ8FCࢴࣳډʣ
ʮࢴࣳډʯʮΞχϝʯΈ͍ͨ
෦తΞϓϩʔν ͞Βʹ̎ͭʹྨͰ͖Δ ෦తΞϓϩʔν ʮ͋Δը໘ͷ͋Δ෦ߋ৽ʯʹಛԽͨ͠ॲཧΛॻ͜͏ ಠཱͨ͠Λ࣋ͭ൚༻తͳ෦ʢίϯϙʔωϯτʣ Λ࡞Ζ͏ˡΓ͕ͪͳൃᶄ
ͭ·Γ͜͏͍͏ײ͡ ը໘తΞϓϩʔν ෦ߋ৽ͳ͠5VSCP%SJWFͷΈ ෦ߋ৽͋Γ5VSCP'SBNFTར༻ ෦తΞϓϩʔν ಛఆը໘ઐ༻ ൚༻ίϯϙʔωϯτ
ࢲͷॴײ ը໘తΞϓϩʔν ෦ߋ৽ͳ͠5VSCP%SJWFͷΈ ෦ߋ৽͋Γ5VSCP'SBNFTར༻ ෦తΞϓϩʔν ಛఆը໘ઐ༻ ൚༻ίϯϙʔωϯτ ݟಀ͞Ε͕͚ͪͩͲ ༗ޮʂʂ (00%
ةݥੑ͕͋Δ
۩ମྫͰઆ໌͠·͢ ˞͜ΕτʔΫ༻ͷྫͰ͋Γ Ͳͷઃܭ͕߹͏͔ ͦͷ࣌ͷঢ়گʹΑΔͱࢥ͍·͢
ྫ Ұཡը໘্ʹ ΞΠςϜͷৄࡉΤϦΞΛ ද͍ࣔͨ͠
ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ
ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ ɾɾɾɾɾɾ $MJDL ΫϦοΫͨ͠Β ৄࡉΤϦΞ͕දࣔ͞ΕΔ ˞༧Ίશ෦ࠐΉબࢶߟ͑ΒΕ·͕͢ɺຊτʔΫͷओࢫʹؔͳ͍ͨΊ৮Ε·ͤ Μɻৄࡉදࣔͷίετ͕૬ߴ͍ͱ͔ɺҰཡͷදࣔྔ͕ଟ͍ͳͲͷཧ༝ͰͦΕΛબ͠ͳ ͍ɺৄࡉใΛ݅ͱΔͨΊͷΞΫγϣϯผʹ༻ҙ͢Δͱ͍͏લఏͰฉ͍͍ͯͩ͘͞ɻ
ྫ෦తͳΞϓϩʔν ʢ൚༻ίϯϙʔωϯτʣ ͷઃܭྫ มԽ̍ ᶃ ᶄ มԽ
෦తͳΞϓϩʔνͷൃ ը໘ͷʮৄࡉΤϦΞʯʹ ৄࡉͷ༰Λදࣔͤ͞ΔΑ͏ͳ ॲཧΛ༻ҙ͠Α͏ʂ
൚༻ίϯϙʔωϯτͷൃΛϓϥε ৄࡉͷ༰Λදࣔ͞ΕΔॲཧͬͯ Λ͚ͯ ൚༻తͳίϯϙʔωϯτΈ͍ͨʹ ߟ͑ΒΕΔΑͶ
͍·ίί Ͱ͖Δ ओʹ(&5 ͏ ·ͱ·Δ ·ͱ·Βͳ͍ #୯ಠͰ ΞΫηεͰ͖Δʁ มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ
5VSCP'SBNFT 5VSCP%SJWF 8FC 4PDLFU 5VSCP4USFBNT Θͳ͍ Ͱ͖ͳ͍ 1045 (&5PS1045 มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ ·ͱ·Βͳ͍ ·ͱ·Δ
มߋՕॴ͕ՕॴͳͷͰ 5VSCP'SBNFTΛ બ
ख๏ܾఆʂ Ͱ͖Δ ओʹ(&5 ͏ ·ͱ·Δ ·ͱ·Βͳ͍ #୯ಠͰ ΞΫηεͰ͖Δʁ มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ
5VSCP'SBNFT 5VSCP%SJWF 8FC 4PDLFU 5VSCP4USFBNT Θͳ͍ Ͱ͖ͳ͍ 1045 (&5PS1045 มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ ·ͱ·Βͳ͍ ·ͱ·Δ
෦తΞϓϩʔνͷઃܭྫ JOEFY ΞΫγϣϯ ৄࡉදࣔͷ͜ͱ͚ͩΛΔʂ ͕Γ͚ΒΕ͍ͯͯඒ͍͠ʂ Ұཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐
ɹɾɾɾɾ ΞΠςϜͷ ৄࡉΤϦΞ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ ɾɾɾɾɾɾ $MJDL TIPX ΞΫγϣϯ JUFNT JUFNT QBHF
ίʔυྫ def index @items = Item.all end def show @item
= Item.find(params[:id]) end .row .col-6 …Ұཡදࣔ… .col-6 turbo-frame#itemDetailFrame turbo-frame#itemDetailFrame …ৄࡉදࣔ… JUFNT@DPOUSPMMFSSC JOEFYIUNMTMJN TIPXIUNMTMJN ී௨ͷ$36%ͷܗͰը໘ʹຒΊࠐΊͯΩϨΠ
ྫ8FCࢴࣳډͷઃܭྫ มԽ มԽ ᶃ ᶄ
8FCࢴࣳډͷൃ ΞΠςϜͷৄࡉ͕։͍ͨϖʔδͬͯ ΞΫηεͰ͖ͨΒ ศརͳΜ͡Όͳ͍͔ͳʁ ͦ͏͍͏ը໘Λ Ұཡͱผʹ༻ҙ͠Α͏
͍·ίί Ͱ͖Δ ओʹ(&5 ͏ ·ͱ·Δ ·ͱ·Βͳ͍ #୯ಠͰ ΞΫηεͰ͖Δʁ มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ
5VSCP'SBNFT 5VSCP%SJWF 8FC 4PDLFU 5VSCP4USFBNT Θͳ͍ Ͱ͖ͳ͍ 1045 (&5PS1045 มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ ·ͱ·Βͳ͍ ·ͱ·Δ
มߋՕॴ͕ՕॴͳͷͰ 5VSCP'SBNFTΛબ
ख๏ܾఆʂ Ͱ͖Δ ओʹ(&5 ͏ ·ͱ·Δ ·ͱ·Βͳ͍ #୯ಠͰ ΞΫηεͰ͖Δʁ มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ
5VSCP'SBNFT 5VSCP%SJWF 8FC 4PDLFU 5VSCP4USFBNT Θͳ͍ Ͱ͖ͳ͍ 1045 (&5PS1045 มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ ·ͱ·Βͳ͍ ·ͱ·Δ
༨ஊ ͜ͷΑ͏ʹ 5VSCP'SBNFT ྆ํͷΞϓϩʔνͰ બͼಘΔ
8FCࢴࣳډͷઃܭྫ JOEFY ΞΫγϣϯ ࢴࣳډͷʮ࣍ͷຕʯΛఏڙʂ ͕͔Ε͓ͯΒͣɺటष͍ Ұཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐
ɹɾɾɾɾ ΞΠςϜͷ ৄࡉΤϦΞ͕ ։͍͍ͯΔҰཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ ɾɾɾɾɾɾ TIPX ΞΫγϣϯ JUFNT QBHF $MJDL JUFNT QBHF
.row .col-6 …Ұཡදࣔ… .col-6 turbo-frame#itemDetailFrame - if @item …ৄࡉදࣔ… .row
.col-6 …Ұཡදࣔ… .col-6 turbo-frame#itemDetailFrame def index prepare_items end def show @item = Item.find(params[:id]) prepare_items render action: :index end private def prepare_items @items = Item.all end ίʔυྫ JUFNT@DPOUSPMMFSSC JOEFYIUNMTMJN TIPXIUNMTMJN ͕͋͞Δ
෦తͳΞϓϩʔν ʢ൚༻ίϯϙʔωϯτʣ ʹΑΔઃܭͷ΄͏͕ ϞμϯͰඒ͍͠
Ͱɺ࣮ 8FCࢴࣳډͷઃܭʹ ར͕͋Δ
ࠓ͓͍͑ͨ͜͠ͱ ΦϒδΣΫτࢦʹ׳ΕͨΤϯδχΞɺ෦తͳ ΞϓϩʔνͰઃܭ͕ͪ͠ ͔͠͠ɺ࣮෦తͳΞϓϩʔνͷઃܭͱ )PUXJSFͷ૬ੑͦ͜·Ͱྑ͘ͳ͍😱 ʮ8FCࢴࣳډͷઃܭʯબࢶʹೖΕͯऔΓೖΕ ͍ͯ͘ͷ͕͓͢͢Ί
෦తͳΞϓϩʔνͷઃܭͱ )PUXJSFͷ૬ੑ ͦ͜·Ͱྑ͘ͳ͍😱 ͦΕͳͥʁ ͦͷͨΊͷ)PUXJSF͡Όͳ͍ͷʁ
3BJMTͰ ෦తΞϓϩʔνͷ ઃܭΛ͢Δͱ ੍ޚ͕ʮը໘ʯʹد͍ͬͯ͘
۩ମྫ
෦తͳΞϓϩʔνͷઃܭ JOEFY ΞΫγϣϯ Ұཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷ
ৄࡉΤϦΞ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ ɾɾɾɾɾɾ $MJDL TIPX ΞΫγϣϯ JUFNT JUFNT QBHF ༻ҙͯ͋͠ΔৄࡉΤϦΞΛ UVSCPGSBNFཁૉʹͯ͠ ༰Λྲྀ͠ࠐ͏ʂ
࠶ܝɿίʔυྫ def index @items = Item.all end def show @item
= Item.find(params[:id]) end .row .col-6 …Ұཡදࣔ… .col-6 turbo-frame#itemDetailFrame turbo-frame#itemDetailFrame …ৄࡉදࣔ… JUFNT@DPOUSPMMFSSC JOEFYIUNMTMJN TIPXIUNMTMJN ී௨ͷ$36%ͷܗͰը໘ʹຒΊࠐΊͯΩϨΠ
࡞ͬͨޙ ᘳʹ͓͞·͍ͬͯͯ ػೳվળ͕ Γʹ͍͘߹͕͋Δ
ཁᶃৄࡉΛ։͍͍ͯΔΞΠςϜΛҰཡ Ͱ͔Γ͍ͨ͘͢͠ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ
ɾɾɾɾɾɾ ϦϯΫ͕ΫϦοΫ͞ΕͨΒ +4ͰσβΠϯม͑Α͏ ৄࡉดͨ͡ͱ͖ +4ͰσβΠϯม͑Α͏ ·͋ɺ4UJNVMVTॻ͔͘
+4͕૿͑࢝ΊΔ show(event) { this.rowTargets.forEach((element) => { element.classList.remove("bg-warning") }) event.currentTarget.parentElement.parentElement.classList.add("bg-warning") }
close(event) { this.rowTargets.forEach((element) => { element.classList.remove("bg-warning") }) } JUFNT@DPOUSPMMFSKT
ཁᶄҰཡը໘͚ͩͷχʔζͱͯ͠ɺ ಛఆͷΞΠςϜΛৄࡉදࣔͨ͠ͱ͖ʹɺ ܯࠂΛը໘্෦ʹද͍ࣔͨ͠ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ
ɾɾɾɾɾɾ ɾɾɾɾɾɾ 8BSOJOH ՝ w ཁૉʹ·ͱ·Βͳ͍ w ܯࠂΞΠςϜৄࡉຊདྷͷ ͡Όͳ͍
ෆࣗ༝͞Λײ͍ͯ͘͡ 5VSCP'SBNFTͷ߹ ܾΊͨΤϦΞͷ֎ߋ৽͠Α͏ͱ͢Δͱ ్ʹ໘ʹͳΔ τϨʔυΦϑͷ͋ΔબΛ͠ͳ͚ΕͳΒͳ͍ ಘΔͷ ࣦ͏ͷ ༷Λଥڠ ʢৄࡉΤϦΞʹܯࠂදࣔʣ
ͷ ʢগ͠ଥڠʣ ༷ͷ࣮ݱ 5VSCP4USFBNTʹ มߋ ༷ͷ࣮ݱ ͷ +4Ͱผ్ܯࠂΛग़͢ ͷ ։ൃɾอकੑ
ඒ͠͞ΛकΔ ˣ ΞΫγϣϯͷΛখ͘͞อͭ ˣ +4͕૿͑Δ 4UJNVMVTͰҎલΑΓշదͰɺ૿͑Εେม
Կ͕ى͖͍ͯΔ͔
ຊ࣭తʹɺΞϓϦͷը໘ͷҰ෦͕ ಠཱ͍ͯ͠Δ͜ͱอূ͞Εͳ͍ɻ ը໘ͷύʔπɺ૬ޓʹؔ࿈ͯ͠ มԽ͢ΔՄೳੑ͕͋Δɻ
૬ޓʹؔ࿈ͯ͠ มԽͤ͞Δ͜ͱ ͪΖΜٕज़ʹΑͬͯ ղܾՄೳ
͔͠͠
)PUXJSFͰ ͦͷղܾͷओઓ͕ ը໘ +4 ʹͳͬͯ͠·͏ɾɾɾ ৄ͍͠ཧ༝ޙड़͠·͢
41"ͷ߹ͱൺͯ ͦ͏͍͏ղܾ͕ ͖Ε͍ʹॻ͚ͳ͍
αʔόαΠυʢ3VCZʣͱ ΫϥΠΞϯταΠυʢ+4ʣ Ͱೋॏॲཧੜ׆
͕ΜΔ ˣ ർΕΔ ˣ ͦΕΛղܾ͢ΔͨΊͷ41" ͡Όͳ͔͚ͬͨͬʜ ˣ 41"ճؼ
ͦ͏͍͏ ࠳ં͕ى͖ͳ͍͔৺Ͱ͢ ͳͷͰɺ͜ͷτʔΫΛ ͍ͨ͠ͱࢥ͍·ͨ͠
͔ͩΒ 8FCࢴࣳډతͳઃܭΛ બࢶʹೖΕΔ͜ͱΛ ͓͢͢Ί͍ͨ͠
ผͷݴ͍ํΛ͢Δͱ 41"తϚΠϯυηοτ͔Β )PUXJSFతϚΠϯυηοτ ͷΓସ͑
41"తίϯϙʔωϯτࢦ )PUXJSFతੲ͔Βͷ3BJMT
ը໘ʹ੍ޚ͕ د͖ͬͯͨͱײͨ͡Β ઃܭํͷΓସ͑Λ ߟ͑ͯΈΔͱྑ͍
͖ͬ͞ͷྫ 8FCࢴࣳډతͳઃܭ ͰɺͲ͏ͳΔ͔ʁ
8FCࢴࣳډͷઃܭ JOEFY ΞΫγϣϯ Ұཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷ
ৄࡉΤϦΞ͕ ։͍͍ͯΔҰཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ ɾɾɾɾɾɾ TIPX ΞΫγϣϯ JUFNT QBHF $MJDL JUFNT QBHF ৄࡉΤϦΞΛUVSCPGSBNFʹ͢Δ 4IPXΞΫγϣϯҰཡ ৄࡉ
.row .col-6 …Ұཡදࣔ… .col-6 turbo-frame#itemDetailFrame - if @item …ৄࡉදࣔ… .row
.col-6 …Ұཡදࣔ… .col-6 turbo-frame#itemDetailFrame def index prepare_items end def show @item = Item.find(params[:id]) prepare_items render action: :index end private def prepare_items @items = Item.all end ࠶ܝɿίʔυྫ JUFNT@DPOUSPMMFSSC JOEFYIUNMTMJN TIPXIUNMTMJN ͕͋͞Δ
ͨͿΜ͜ͷ࣌ͩͱ ͜ͷઃܭΛબͿར ཧղ͞ΕͮΒ͍ ˞ҰԠɺ୯ಠͰΞΫηεͰ͖ΔʢύʔϚωϯτϦ ϯΫ͕͋Δʣͱ͍͏ϝϦοτ͢Ͱʹ͋Γ·͢
ཁᶃৄࡉΛ։͍͍ͯΔΞΠςϜΛҰཡ Ͱ͔Γ͍ͨ͘͢͠ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ
ɾɾɾɾɾɾ 4UJNVMVTͰ͍͍͚Ͳ 5VSCP%SJWFͰ͍͔ͬ !JUFN͚ͩσβΠϯม͑ͯ ग़ྗͯ͋͛͠Ε ͍͍ΑͶ
ख๏Λ5VSCP%SJWFʹมߋ Ͱ͖Δ ओʹ(&5 ͏ ·ͱ·Δ ·ͱ·Βͳ͍ #୯ಠͰ ΞΫηεͰ͖Δʁ มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ
5VSCP'SBNFT 5VSCP%SJWF 8FC 4PDLFU 5VSCP4USFBNT Θͳ͍ Ͱ͖ͳ͍ 1045 (&5PS1045 มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ ·ͱ·Βͳ͍ ·ͱ·Δ
+4͕૿͑ͳ͍ .row .col-6 …ϔομ… - @items.each do |item| .row.m-1 class="#{item
== @item ? "bg-warning" : ‘'}" ..1ߦͷදࣔ.. .col-6 - if @item …ৄࡉදࣔ… TIPXIUNMTMJN ͲͷৄࡉΛද͍͔ࣔͨ͠ ΞΫγϣϯݺͼग़࣌͠ͰΘ͔ΔͷͰ ͋Β͔͡ΊσβΠϯΛࢦఆ UVSCPGSBNFফͨ͠
ཁᶄҰཡը໘͚ͩͷχʔζͱͯ͠ɺಛఆͷΞΠςϜ Λৄࡉදࣔͨ͠ͱ͖ʹɺܯࠂΛը໘্෦ʹද͍ࣔͨ͠ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ
ɾɾɾɾɾɾ 8BSOJOH 5VSCP%SJWFͩ͠ ಛʹͳ͍ͬ͢
+4͕૿͑ͳ͍ - if @item&.old? .alert.alert-danger role="alert" | ͜ͷΞΠςϜར༻ظݶΛա͍͗ͯ·͢!! …Ұཡɾৄࡉදࣔ… TIPXIUNMTMJN
͍͢͝ʂʂ
ͳΜͰ αʔόαΠυͰͰ͖Δʂʂ
ɾɾɾ࣮ࡍ ݹయతͳ 8FCΞϓϦͳ͚ͩ
5VSCP%SJWFͷ͓͔͛Ͱ ΩϨΠʹΈ͑Δ ٯʹ͍͏ͱ5VSCP%SJWF͕ͳ͚Ε બࢶʹͰ͖ͳ͔ͬͨ৽͍͠બࢶ
ίϩϯϒεͷཛ ౮Լ҉͠ ݪճؼ
8FCࢴࣳډతͳઃܭͱ ࢴࣳډͷΑ͏ͳ8FCΞϓϦΛ5VSCPͰΩϨΠʹݟͤΔ ը໘ͷঢ়ଶ͝ͱʹ63-Λ༻ҙ͢Δ ෦ߋ৽ΛΦϓγϣφϧͳཁ݅ͱߟ͑Δ มԽ มԽ ᶃ ᶄ
8FCࢴࣳډͷ ઃܭͷϝϦοτ
αʔόαΠυͰ ੍ޚͰ͖Δʂʂʂ
αʔόαΠυͰ ੍ޚͰ͖Δ͜ͱ͕ 3BJMTͷྑ͞Λ ࠷େݶʹڗड͢Δ͜ͱʹ ͭͳ͕Δ
αʔόαΠυ੍ޚͳΒ 3VCZͰॻ͚ΔˠߏԽɺϝλϓϩͳͲ͕͍͢͠ ҰՕॴʹॻ͚ΔʢαʔόΫϥΠΞϯτͰೋॏཧ͠ͳ ͯ͘ࡁΉʣ Ͳ͜ʹͦͷॲཧ͕͋Δ͔୳͍͢͠ʢॲཧ͕·ͱ·Γ ͍͢ʣ
ͱ͜ΖͰ
͜͜Ͱͪΐͬͱ ͬ͘͡Γݟ͍͖͍ͯͨͷ͕
෦తͳΞϓϩʔνͷઃܭ͕ ը໘ʹ੍ޚΛدͤΔ͜ͱʹ ͭͳ͕Γ͍͢ͷͳ͔ͥʁ ͱ͍͏͜ͱ
͍ ͍·දࣔ͞Ε͍ͯΔ ʮը໘ʯͷঢ়ଶΛ αʔόαΠυ͕Ѳ͍ͯ͠Δ͔ʁ
Ұཡͷ͋ͱʹ ʮಠཱͨ͠ৄࡉΞΫγϣϯʯΛݺͿ JOEFY ΞΫγϣϯ Ұཡը໘ TIPX ΞΫγϣϯ ৄࡉ Ϟʔμϧͷ த
$MJDL ͲͪΒͷΞΫγϣϯ ࠓͷը໘ͷঢ়ଶΛΒͳ͍
ࠓͷը໘Λ͍ͬͯΔͷը໘͚ͩ JOEFY ΞΫγϣϯ Ұཡը໘ TIPX ΞΫγϣϯ ৄࡉ Ϟʔμϧͷ த $MJDL
͕ࣗΔ͔͠ͳ͍Ͱ͢Ͷ
͔ͩΒը໘ʹ੍ޚ͕ دͬͯ͠·͏
)PUXJSFͷෆ߹ͳਅ࣮ ͔͠Εͳ͍ ෦ߋ৽͕ڧԽ͞Εͯศརͳ)PXJSF ෦ߋ৽ɺજࡏతʹɺը໘ʹ੍ޚΛҾ͖دͤΔ
ͰɺαʔόαΠυʹ ॲཧΛدͤΔʹʁ
ը໘ͷঢ়ଶΛαʔό͕͍ͬͯΔঢ়ଶʹ͢Δ Ϣʔβʔ͕ૢ࡞ͨ͠Βɺαʔόߦͬͯɺ࠷ऴը໘ঢ়ଶ ΛαʔόʹΒͤͳ͕Βɺը໘Λߋ৽͢Δ ΞΫγϣϯ ը໘ঢ়ଶ ը໘ঢ়ଶ Λද͢63- ΞΫγϣϯ ࣍ͷը໘ঢ়ଶ ࣍ͷը໘ঢ়ଶ
Λද͢63- Ϣʔβʔૢ࡞
ը໘ঢ়ଶΛද͢63-ͷྫ ͋ΔΧςΰϦͰߜΓࠐΜͩҰཡ JUFNT DBUFHPSZ DBUFHPSJFTJUFNT ͋ΔΧςΰϦͰߜΓࠐΜͩҰཡͰɺಛఆͷΞΠςϜͷৄࡉΛ։͍͍ͯ Δը໘ JUFNT DBUFHPSZ DBUFHPSJFTJUFNT
Ұݟɺී௨Ͱͳ͍ ײ͡ʹݟ͑Δ͔͠Εͳ͍͚ΕͲ αʔόαΠυʹॲཧΛूΊΔͱ ͜͏͍͏͜ͱͩͱࢥ͏ ΞΫγϣϯ ը໘ঢ়ଶ ը໘ঢ়ଶ Λද͢63- ΞΫγϣϯ ࣍ͷը໘ঢ়ଶ
࣍ͷը໘ঢ়ଶ Λද͢63- Ϣʔβʔૢ࡞
8FCࢴࣳډతͳઃܭͱ αʔόαΠυʹ ը໘ͷঢ়ଶΛͯ͑ͯ͢ ੍ͯ͢ޚͤ͞Δ ઃܭࢦ
ΠϝʔδͰ͖ͯ ͖·ͨ͠Ͱ͠ΐ͏͔ʁ
8FCࢴࣳډͷઃܭʹ͍ͭͯ ͏গ͠͠·͢
Ͱɺ%3:͡Όͳ͍Ͱ͢ΑͶ
Ҋ֎ͦ͏Ͱͳ͍
3VCZͳΒ ڞ௨Խ͓खͷͷ
ίϯτϩʔϥͷॲཧ ը໘ग़ྗڞ௨ԽͰ͖Δ JOEFY ΞΫγϣϯ Ұཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ
ΞΠςϜͷ ৄࡉϞʔμϧ͕ ։͍͍ͯΔҰཡը໘ ɹΞΠςϜ̍ ɹΞΠςϜ̎ ɹΞΠςϜ̏ ɹΞΠςϜ̐ ɹɾɾɾɾ ΞΠςϜͷৄࡉ ɾɾɾɾɾɾ ɾɾɾɾɾɾ ɾɾɾɾɾɾ TIPX ΞΫγϣϯ JUFNT QBHF JUFNT QBHF ҰཡΛग़͢४ උ NFUIPE Ұཡ෦ QBSUJBM
Ͱɺॲཧ͕Ͱ ॏ͍Ͱ͢ΑͶ
ͦΕͦ͏ ॲཧͷແବ͋Δ͕༨͋Δ 5VSCP'SBNFTͷ߹ɺ5VSCP'SBNFTϦΫΤετ͔Ͳ ͏͔ͰҰ෦ͷॲཧɾඳըΛলུ͢ΔίʔυΛॻ͘͜ͱՄೳ Ωϟογϡ ΫϥΠΞϯτ੍ޚͷࡶ͞Λආ͚ΔϝϦοτͷ΄͏͕େ͖͍ ߹͕͋Δ
ͳΜ͔ඒ͘͠ͳ͍ɾɾɾ
ύϥμΠϜ͕ҧ͏͚ͩ ҟͳΔඒ͕͋͠͞Δ
ঢ়ଶ͝ͱʹ 63-͕͋Δ͜ͱͷඒ͠͞
෦తΞϓϩʔν ʢಛʹ൚༻ίϯϙʔωϯτࢦʣ 8FCࢴࣳډ ΞΫγϣϯΛ ԿͰ͚Δͷ͔ ओͳ ը໘ͷঢ়ଶ ඒ͠͞ ͷ͔Εํ ը໘ঢ়ଶʢ63-ʣͷ
͔Εํ ՝ ը໘ʢ+4ʣͰͷ ੍ޚ͕େม ॲཧͷॏෳ ՝ͷରࡦ 41"ʹ͢Δ ɾТɾA ίϯτϩʔϥͱ QBSUJBMςϯϓϨʔτΛ ߏԽɾڞ௨Խ ॲཧͷ ΧϦΧϦʹ%3:ʹͰ͖Δʂ3VCZͳΒʂ ύʔϚωϯτϦϯΫͱ૬ੑ
༨ஊɿٻ͢Δͱ৽ͨͳઓ͕ੜ·ΕΔ ʢΠϝʔδͷΈ͓͑͠·͢ʣ ύϥϝʔλͷѻ͍ Ϟʔμϧ։͍ͯΔΈ͍ͨͳͱ͖ʹલը໘ͷαʔόʹΒͤͨ͘ͳͬ ͯ63-͑ͨΓ͢Δ ͍ύϥϝʔλΛѻ͑ΔΑ͏ʹ1045Λར༻ͨ͠Γɺηογϣϯ ʢ fl BTIʣΛܰ͘ར༻ٖͯ͠ࣅతʹαʔόʹใΛ͑ΒΕΔΑ͏ʹ͢Δ SPVUFTੜϢʔςϦςΟ
ಉ͡ύλʔϯͰෳ63-Λ༻ҙ͍ͨ͜͠ͱ͕૿͑ͯɺ؆୯ʹએݴͨ͘͠ ͳΔ
·ͱΊ
)PUXJSFศར ͚ͩͲબࢶ͕ଟͯ͘໎͏
ը໘ͷ෦ߋ৽ͷ ख๏ཱ͕ͭͷͰɺ ෦ߋ৽͋Γ͖ͷൃͰɺ ෦తͳΞϓϩʔνͷ ઃܭΛߦ͍͕ͪ
෦తͳΞϓϩʔνͷ ઃܭΛ͢Δͱɺ ੍ޚ͕ʮը໘ʯʹ د͍͖͍ͬͯ͢
੍ޚ͕ʮը໘ʯʹدΔͱ ΫϥΠΞϯτଆͷ+4͕૿͑ͯ ͭΒ͘ͳΔ
ͦ͏ͳΒͳ͍ͨΊʹ
ୈҰʹɺ ը໘తͳΞϓϩʔν ʢ8FCࢴࣳډͷઃܭʣ ͷՄೳੑΛ ेʹݕ౼͢Δͱྑ͍
ը໘ঢ়ଶΛ"ˠ#ʹม͑Δํ๏Λ બͿͨΊͷϑϩʔνϟʔτ Ͱ͖Δ ओʹ(&5 ͏ ·ͱ·Δ ·ͱ·Βͳ͍ #୯ಠͰ ΞΫηεͰ͖Δʁ มߋՕॴ͕
ཁૉʹ·ͱ·Δʁ 5VSCP'SBNFT 5VSCP%SJWF 8FC 4PDLFU 5VSCP4USFBNT Θͳ͍ Ͱ͖ͳ͍ 1045 (&5PS1045 มߋՕॴ͕ ཁૉʹ·ͱ·Δʁ ·ͱ·Βͳ͍ ·ͱ·Δ ը໘త
ίπɿ"ˠ#Λ̎ͭͷͷݟํͰͱΒ͑Δ ʮը໘Λม͑Δૢ࡞ʯͰ#ʹ͢Δ ˠ෦తΞϓϩʔν #ͱ͍͏ը໘ʹͳΊΒ͔ʹભҠ͢Δ ˠը໘తΞϓϩʔνʢ8FCࢴࣳډ
ୈೋʹɺ ෦తͳΞϓϩʔν ༻๏ɾ༰ྔΛकΔ
൚༻తͳɺ ͷ͔Εͨ෦Λ࡞Ζ͏ ͜ͷը໘ʹดͨ͡ ઐ༻ͷߋ৽ॲཧΛ࡞Ζ͏ જࡏతʹةݥɻ ΦʔΨφΠζ͢Δ͕ը໘ʹू·Γ͍͢ ܯռ͕ඞཁ ͨͿΜ҆શɻ ը໘ઐ༻ͳΒ࠷ޙ 5VSCP4USFBNTͰͳΜͱͰͳΔ
%3:ʹ͢ΔͷϦΫΤετΑΓখ͍͞୯ҐͰ
෦తͳΞϓϩʔν ൚༻ੑɾಠཱੑΛ ͍ٻΊͳ͍Ͱ ΄Ͳ΄Ͳͷྔʹ ͱͲΊͨ΄͏͕Α͍
ಛʹ5VSCP'SBNFTΛ ෦తʹ͓͏ͱ͢Δͱ ͕͔Εͯඒ͘͠ײͯ͡ ᠘ʹ·Γ͕ͪͩͱࢥ͍·͢ ը໘తʹ5VSCP%SJWFʹಀ͛Δͷɺ ෦తʹ5VSCP4USFBNTʹಀ͛Δͷɺ ඒ͠͞Λଛͳ͏ײ͕ͯ͡͠͠·ͬͯɺ +4ͰͳΜͱ͔ͨ͘͠ͳΔ᠘ʜ
ͳΔ͘ αʔόαΠυʹ ॲཧΛدͤΔΑ͏ʹҙࣝ͢Δ
41"తͳϚΠϯυηοτ͔Β )PUXJSFʢ3BJMTʣతͳ ϚΠϯυηοτ ίϯϙʔωϯτࢦ͔Β 8FCࢴࣳډ
αʔόαΠυʹدͤͨ ͪΐͬͱͨ͠ΓΛ 4UJNVMVTͰ खܰʹղܾ ˞நԽཻ͕·ͪ·ͪʹͳͬͯ ࢄΒ͔Γ͕ͪͳ͜ͱΛΈʹࢥ͍ͬͯ·͕͢ ࠓͷͰͳ͍ͷͰ͜͜ͰϘϠ͚ͩ͘ʹ͠·͢
͜Ε͕ )PUXJSFͷޫͷಓ
)PUXJSFͰ ͍͍͢ΞϓϦΛ രɾշదʹ։ൃ͠Α͏ʂʂ