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
Documentation as Codeで継続的なドキュメント運用を実現する / July ...
Search
Ken’ichiro Oyama
January 24, 2021
Technology
6
8.4k
Documentation as Codeで継続的なドキュメント運用を実現する / July Tech Festa 2021 winter
July Tech Festa 2021 winter [D-5]
https://techfesta.connpass.com/event/193966/
Ken’ichiro Oyama
January 24, 2021
Tweet
Share
More Decks by Ken’ichiro Oyama
See All by Ken’ichiro Oyama
実践 net/http Middleware パターン / Kizuku.go Vol.1
k1low
1
200
Cleanup handling in Go / Go Conference 2024
k1low
6
3.3k
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
k1low
17
9.2k
Command-line interface tool design / PHPerKaigi 2024
k1low
8
2.9k
gostyle IS NOT Go Style / Fukuoka.go#19 Reboot
k1low
1
230
Parsing case study in Go / Go Conference mini 2023 Winter IN KYOTO
k1low
2
1.3k
APIシナリオテストツールとしてのrunn / 4 API testing tools
k1low
3
1.4k
The future of tbls and "Documentation as Code" / phpconfuk 2023
k1low
4
6.1k
net/http/httptest.Server のアプローチをテスト戦略に活用する / Go Conference 2023
k1low
9
3k
Other Decks in Technology
See All in Technology
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
470
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
170
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
540
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
ハイテク休憩
sat
PRO
2
150
KubeCon NA 2024 Recap: How to Move from Ingress to Gateway API with Minimal Hassle
ysakotch
0
200
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
480
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
340
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
800
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
540
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
KATA
mclloyd
29
14k
Embracing the Ebb and Flow
colly
84
4.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Being A Developer After 40
akosma
87
590k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Why Our Code Smells
bkeepers
PRO
335
57k
Building Applications with DynamoDB
mza
91
6.1k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Transcript
খࢁ݈Ұ(.01FQBCP *OD +VMZ5FDI'FTUBXJOUFS %PDVNFOUBUJPOBT$PEFͰ ܧଓతͳυΩϡϝϯτӡ༻Λ ࣮ݱ͢Δ
ϓϦϯγύϧΤϯδχΞ খࢁ݈Ұ!L-P8 (.0ϖύϘϗεςΟϯάࣄۀ෦ϗεςΟϯάάϧʔϓ43&νʔϜ IUUQTHJUIVCDPNL-P8
None
ຊൃදʹ͓͚Δ lυΩϡϝϯτzͱ
։ൃ։࢝·ͰͷΦʔόʔϔου w ։ൃऀ͕৽ͨʹγεςϜ։ൃʹࢀՃͨ͠ͱͯ͠ɺͦͷ։ൃऀ͕γεςϜΛཧղͨ͠ ͍ͱ͖ w ͘͠։ൃऀ͕ࣗͷ୲Ҏ֎ͷߏཁૉػೳΛཧղ͍ͨ͠ͱ͖ w ࣝθϩͷঢ়ଶ͔ΒγεςϜΛཧղ͠։ൃΛ։࢝͢Δ·Ͱͷ࣌ؒίετΛɺࢲ ʮ։ൃ։࢝·ͰͷΦʔόʔϔουʯͱݺΜͰ͍ΔʢʮΦϯϘʔσΟϯάͷίετʯ ͱ͍ͬͨํ͕Ұൠత͔ʣ
Կͳ͍ঢ়ଶ w ৽͍͠։ൃऀγεςϜΛݟͯཧղΛ͢Δඞཁ͕͋Δ w ։ൃ։࢝·ͰͷΦʔόʔϔου͕େ͖͍ঢ়ଶ
υΩϡϝϯτ w γεςϜͷཧղΛॿ͚ΔͨΊυΩϡϝϯτΛॻ͘ w ৽͍͠։ൃऀυΩϡϝϯτΛ௨ͯ͡γεςϜͷཧղΛਐΊΔ͜ͱ͕Ͱ͖Δ w ຊൃදͰʮγεςϜͷཧղΛॿ͚Δʹ։ൃ։࢝·ͰͷΦʔόʔϔουΛݮ͢ ΔʯͨΊͷυΩϡϝϯτΛରͱ͢Δ
γεςϜͱυΩϡϝϯτͷဃ
γεςϜͱυΩϡϝϯτͷဃ w γεςϜͱυΩϡϝϯτͱͷؒʹ༰ͷဃ͕ൃੜ͍ͯ͠Δ߹͕͋Δ w ߃ৗతʹ༰ʹ͕ࠩग़͍ͯΔঢ়ଶ w ߋ৽λΠϛϯά͕ͣΕΔ͜ͱͰγεςϜͱυΩϡϝϯτͷ༰ʹ͕ࠩग़͍ͯΔঢ় ଶ
γεςϜͱυΩϡϝϯτͷဃΛখ͘͢͞Δʹ γεςϜͱυΩϡϝϯτͷဃ͕͋Δ࣌ؒΛͰ͖Δ͚ͩখ͘͢͞ΔͨΊʹ wܧଓతʹ wͰ͖Δ͚ͩγεςϜͷߋ৽ʹ͍ۙλΠϛϯάͰ υΩϡϝϯτΛߋ৽͠ଓ͚Δ͜ͱ͕ඞཁ
%PDVNFOUBUJPOBT$PEF
%PDVNFOUBUJPOBT$PEF %PDTBT$PEF SFGFSTUPBQIJMPTPQIZUIBUZPV TIPVMECFXSJUJOHEPDVNFOUBUJPOXJUIUIFTBNFUPPMTBTDPEF *TTVF5SBDLFST 7FSTJPO$POUSPM (JU 1MBJO5FYU.BSLVQ .BSLEPXO
SF4USVDUVSFE5FYU "TDJJEPD $PEF3FWJFXT "VUPNBUFE5FTUT 5IJTNFBOTGPMMPXJOHUIFTBNFXPSLqPXTBTEFWFMPQNFOUUFBNT BOE CFJOHJOUFHSBUFEJOUIFQSPEVDUUFBN*UFOBCMFTBDVMUVSFXIFSFXSJUFST BOEEFWFMPQFSTCPUIGFFMPXOFSTIJQPGEPDVNFOUBUJPO BOEXPSL UPHFUIFSUPNBLFJUBTHPPEBTQPTTJCMF IUUQTXXXXSJUFUIFEPDTPSHHVJEFEPDTBTDPEFɹΑΓൈਮɹ
%PDVNFOUBUJPOBT$PEF w γεςϜͷ։ൃͷΈͷۙ͘ʹυΩϡϝϯτ࡞ͷΈΛஔ͘͜ͱͰγεςϜ ͱυΩϡϝϯτͷဃΛͳͦ͘͏ͱ͍ͯ͠Δ͜ͱ͕Θ͔Δ w ຊൃදͰɺ·ͣɺ͜ͷʮ%PDVNFOUBUJPOBT$PEFʯ͔Β͏গ͠ʮγεςϜͱ υΩϡϝϯτͷဃΛͳ͘͢ʯ͜ͱʹ౿ΈࠐΜͩΞϓϩʔνʹ͍ͭͯߟ͍͖͑ͯ· ͢ɻ
ϞσϧԽ ొ͢Δཁૉͱͯͭ͠ ։ൃऀ γεςϜʜ։ൃऀ͕։ൃઃఆΛ͢ΔରɻΞϓϦɺσʔλϕʔεɺΠϯϑϥͳ ͲɻγεςϜࣗମߏԽ͞Ε͍ͯΔʢͷΛରͱ͢Δʣ υΩϡϝϯτ
ߏԽσʔλʜʮ:".-ʯʮϓϩάϥϜίʔυͷ"45ʯͳͲɻ ٯʹɺʮγεςϜʹର͢Δ։ൃऀͷཧղɾΠϝʔδʯෆఆܗͰ։ൃऀͦΕͧΕ ͕಄ͷதͰ͍࣋ͬͯΔ͚ͩͳͷͰߏԽ͞Ε͍ͯΔͱݴ͑ͳ͍ ιϑτΣΞʜԿ͔͠ΒͷॲཧΛߦ͏ϓϩάϥϜɻߏԽσʔλΛೖग़ྗͱ͠ ͍͢
υΩϡϝϯτΛॻ͘ w ʮͨͩυΩϡϝϯτΛॻ͘ʯʮγεςϜʹର͢Δ։ൃऀͷཧղɾΠϝʔδΛʢγ εςϜͷߏͱؔͳ͘ʣॻ͘ʯͱ͍͏͜ͱ w ಉ͡ߏʢؔ͘͠ੑͷ͋ΔߏʣͰͳ͍߹ɺγεςϜ͕ߋ৽͞Εͨͱ͖ ʹɺൃੜͨ͠υΩϡϝϯτͱͷဃʢυΩϡϝϯτͷͲ͜Λߋ৽͢Εྑ͍͔ʣ͕ Θ͔Γʹ͍͘
ʮγεςϜͱυΩϡϝϯτͷဃΛͳ͘͢ ΈΛ࣋ͭ%PDVNFOUBUJPOBT$PEFʯ
γεςϜ͔ΒߏԽσʔλΛநग़͢Δ
γεςϜ͔ΒߏԽσʔλΛநग़͢Δ w +BWBEPDɺHPEPDɺ1)1%PDFUD w γεςϜ͔ΒυΩϡϝϯτΛੜ͢Δ͜ ͱͰɺγεςϜͱυΩϡϝϯτͷဃΛ ͳͦ͘͏ͱ͍ͯ͠Δ w ʮߏԽσʔλʹܾΊΒΕͨϑΥʔϚο τͰʢυοΫίϝϯτΛʣΞϊςʔγϣ
ϯ͍ͯ͠Δʯ͚ͩͳͷͰߏԽσʔλͷ ·· ˞ ʮΞϊςʔγϣϯʯʮγεςϜʹର͢Δ։ൃऀͷཧղɾΠϝʔδΛ ߏԽσʔλʹϝλใͱͯ͠Ճ͢Δʯͱ͍͏ҙຯ
ߏԽσʔλ͔ΒγεςϜͱυΩϡϝϯτͷ ྆ํΛੜ͢Δ
ߏԽσʔλ͔ΒγεςϜͱυΩϡϝϯτͷ྆ํΛੜ͢Δ w 0QFO"1* w ੜݩσʔλΛͭʹ͢Δ͜ͱͰγες ϜͱυΩϡϝϯτͷဃΛͳͦ͘͏ͱ͠ ͍ͯΔ
ͭͷΞϓϩʔνͷڞ௨ w ͭͷྫͷڞ௨ͱͯ͠ɺγεςϜͱυΩϡϝϯτͷؒʹߏԽσʔλΛհͨؔ͠ ࿈Λ͍࣋ͬͯΔ͜ͱ͕Θ͔Δɻ w ؔ࿈Λ࣋ͨͤΔ͜ͱ͕ɺײ֮తʹဃΛগͳ͘͢Δ༗ޮͳखஈͱͳΓͦ͏
*OGSBTUSVDUVSFBT$PEF w ྫ͑ɺ5FSSBGPSNΛಉ༷ͷϞσϧͰද͢ɻͱɺࣗͣͱυΩϡϝϯςʔγϣϯͷ ΈΛೖΕΔ͖Օॴ͕Θ͔Δ
*OGSBTUSVDUVSFBT$PEF %PDVNFOUBUJPO w ͦͯ͠طʹ͜ͷϞσϧΛ࣮ݱͨ͠υΩϡϝϯςʔγϣϯπʔϧ͋Δ w IUUQTHJUIVCDPNUFSSBGPSNEPDTUFSSBGPSNEPDT
(.0ϖύϘʹ͓͚Δ ʮγεςϜͱυΩϡϝϯτͷဃΛͳ͘͢ ΈΛ࣋ͭ%PDVNFOUBUJPOBT$PEFʯ ͷऔΓΈ
σʔλϕʔεεΩʔϚͷ υΩϡϝϯςʔγϣϯ
UCMT w $*ϑϨϯυϦͳσʔλϕʔευΩϡϝϯτੜπʔϧ w IUUQTHJUIVCDPNL-P8UCMT w 1PTUHSF42- .Z42-ͳͲͷ3%#.4͚ͩͰͳ͘ɺ #JH2VFSZ"NB[PO%ZOBNP%# $MPVE4QBOOFS
ͱ͍ͬͨσʔλιʔεʹରԠ w υΩϡϝϯτΛॆ࣮ͤ͞Δػೳͱͯ͠ϝλσʔλΛ Ξϊςʔγϣϯ͢Δ͜ͱ͕Մೳ w ςʔϒϧɺΧϥϜͳͲͷίϝϯτ༩͚ͩͰͳ͘ λάɺϦϨʔγϣϯͳͲ
UCMT w ैདྷσʔλϕʔεͱυΩϡϝϯτผ Ͱཧ w $*্Ͱςετ༻σʔλϕʔε͔Β ςʔϒϧఆٛΛߏԽσʔλͱͯ͠ந ग़ɻͦΕʹՃͰςʔϒϧίϝϯτΧ ϥϜίϝϯτΛΞϊςʔγϣϯ͠ɺυ ΩϡϝϯτΛੜ
UCMTͷߏԽσʔλͷ׆༻ w UCMTͷߏԽσʔλͷใΛσʔλϕʔεʢ#JH2VFSZʣͷϝλσʔλʹөͤ͞Δ w ৄ͘͠ผࢿྉʹͯ IUUQTTQFBLFSEFDLDPNLMPXQFQBCPIBUFOB
ʢΠϯϑϥʣΞʔΩςΫνϟͷ υΩϡϝϯςʔγϣϯ
ʮ։ൃ։࢝·ͰͷΦʔόʔϔουͷݮ͢Δʯͱ͍͏త w Πϯϑϥͷ։ൃ։࢝·ͰͷΦʔόʔϔουΛݮ͢Δʹ։ൃऀ͕Կ͔͠ΒΠϯϑϥ ͷमਖ਼τϥϒϧγϡʔτΛ։࢝͢ΔͨΊʹඞཁͳཧղΛॿ͚Δඞཁ͕͋Δɻ w ʮ͋ΔϩʔϧͷϛυϧΣΞͷΞοϓσʔτΛ͢Δʯͱ͖ʹɺޮΑ҆͘શʹΞο ϓσʔτΛ։࢝͢ΔͨΊʹ࠷ݶԿͷཧղΛ͢Δ͔ w ରͷϩʔϧͷ֓ཁ w
ͦͷϩʔϧͱؔੑΛ࣋ͭϩʔϧͷ֓ཁ w ͦͷϩʔϧΛ࣮ͬͯݱ͍ͯ͠Δػೳͷ֓ཁ w ܾͯ͠ΠϯϑϥશମͷཧղΛ͢ΔΘ͚Ͱͳ͍ɻ͔͠͠ɺγεςϜʹରͯ͠ҟͳΔ ΓޱͰͷෳͷཧղʢʹυΩϡϝϯτʣ͕ඞཁ
υΩϡϝϯτʹىͦ͜͏ͱ͍ͯ͠ΔͷϓϩδΣΫτ։ൃγεςϜͷશମ ૾ɺ۩ମతʹܗ͕͋ΔͷͰͳ͘ɺͦΕͧΕͷ಄ͷதʹෆఆܗͳΠϝʔδͱ ͯ͠ଊ͑ΒΕ͍ͯΔͱࢥ͍·͢ɻ ෆఆܗͳΠϝʔδͷೝࣝΛ߹ΘͤΔͨΊʹࢲ͕ߟ͍͑ͯΔ͜ͱɺͦΕྠΓʹ ͢Δ͜ͱͰ͢ɻ ྠΓʹ͢Δͱ͖ʹͬͨ໘͕அ໘͕Ͱ͖ΔΘ͚Ͱ͕͢ɺ͜ͷஅ໘ΛੵΈॏͶͯ ͍͘ͱཱମͱͳΓɺશମ૾͕ݱΕ·͢ɻ ෆఆܗͳΠϝʔδΛڞ༗͢Δ͜ͱ͍͠ͱࢥ͍·͕͢ɺࣗͳΓʹஅ໘Λෳ ࡞ΓɺͦΕΛੵΈॏͶ͍͚ͯࣗͳΓͷཱମΛཧղͯ͠Β͏͜ͱ͕Ͱ͖Δ ͣͩͱߟ͑·͢ɻ
ʮϚωδϝϯτۀΛ௨ͯ͡ߟ͑ͨɺϓϩδΣΫτશମ૾ͷೝࣝᴥᴪΛ͙ޡղ͞Εͳ͍υΩϡϝϯτ࡞ज़"/%1"%5FDI#MPHʯ IUUQTUFDIBOEQBEDPKQFOUSZΑΓൈਮɹ
OEJBH
OEJBH --- name: 3-Tier Architecture docPath: ../output diagrams: - name:
overview layers: ["consul", "vip_group"] - name: http-lb layers: ["vip_group"] labels: ["http"] nodes: - name: lb-* components: - nginx?icon=lb-l7 clusters: - 'consul:dc1' - 'vip_group:lb' - name: app-* components: - nginx?icon=proxy - Rails?icon=cube4 clusters: - 'consul:dc1' - name: db-* components: - PostgreSQL?icon=db clusters: - 'consul:dc1' networks: - labels: - http route:
OEJBH w IUUQTHJUIVCDPNL-P8OEJBH w ʮΤψσΟΞάʯʮΤψμΠΞάʯͲͪΒͰ ndiag doc -c ndiag.yml w
ੜ͞ΕΔυΩϡϝϯτ(JU)VCʹίϛοτͯ͠8FC্͔ΒӾཡ͞ΕΔ͜ͱఆ w ओʹΠϯϑϥͷϋΠϨϕϧΞʔΩςΫνϟͷυΩϡϝϯτΛੜ͢ΔతͰ։ൃ w :".-͔ΒʮߏਤΛੜ͢ΔʯͰʮυΩϡϝϯτΛੜ͢ΔʯͰͳ͘ ʮෳͷΓޱͰʯʮߏਤΛؚΉʯʮυΩϡϝϯτͷܗΛ࡞Δʯ ͱ͍͏ಛΛ࣋ͭ
ʮෳͷΓޱͰʯ w ୯७ʹෳͷυΩϡϝϯτΛੜͯ͠͠·͏ͱɺγεςϜͷߏͱυΩϡϝϯτͷ ߏͷ͕ؔͳ͘ͳͬͯ͠·͍ɺγεςϜͱυΩϡϝϯτͷဃ͕ൃੜ͢Δ w ͦͷͨΊɺOEJBHͰҎԼͷΞϓϩʔνͰγεςϜͱυΩϡϝϯτͷߏԽσʔλ Λհͨؔ͠ੑ͕Εͳ͍Α͏ʹ͍ͯ͠Δ w ͭͷߏԽσʔλ͔ΒΓޱͷҟͳΔෳͷߏԽσʔλΛϧʔϧʹԊͬͯੜ ͠ɺͦΕΒ͔ΒͦΕͧΕਤͱυΩϡϝϯτΛੜ͢Δ
w ߏԽσʔλͱγεςϜͱΛൺֱݕূͰ͖ΔΈΛఏڙ͢Δ
OEJBHͷϞσϧ
ʮߏਤΛؚΉʯ w ΠϯϑϥͷΞʔΩςΫνϟΛཧղ͢ΔͨΊͷ υΩϡϝϯτΛੜ͢Δʹͨͬͯਤॏཁ ͳཁૉɻੜ͞ΕΔਤͷݟ͢͞ॏཁ w ͦͷͨΊOEJBHਤʹ༻Ͱ͖ΔΞΠίϯ ͍Ζ͍ΖબͰ͖Δ w
ΈࠐΈΞΠίϯϑϨʔϜϫʔΫ w ҙͷը૾ʢQOHTWHʣ w ,T"84($1)BTIJDPSQ͕ఏڙ͍ͯ͠ ΔΞΠίϯηοτΛऔಘ͢ΔίϚϯυ
ʮυΩϡϝϯτͷܗΛ࡞Δʯ w υΩϡϝϯτͷੜݩߏԽσʔλͰ͋Δ΄͏͕γεςϜͱͷဃΛখ͘͞͠ ͘͢Ͱ͖Δͱ͍͏ͷຊൃදͰड़ͨͱ͓Γɻ w OEJBHΠϯϑϥͷ֤ཁૉͷઆ໌จষՃʮΞϊςʔγϣϯʯͷܗͰ࣮ݱɻ w ͭ·ΓOEJBHߏԽσʔλ͔ΒυΩϡϝϯτΛੜ͢Δ w ͔͠͠ɺઆ໌จষςʔϒϧίϝϯτͱҟͳΓจʹͳΔ͜ͱ͕༧͞ΕͨͷͰ
ҎԼͷํࣜΛ࠾༻ ·ͣOEJBHଆͰઆ໌จষهड़ઐ༻ͷϑΝΠϧΛॴఆͷҐஔʹੜ ։ൃऀͦͷઐ༻ϑΝΠϧʹઆ໌จষΛهड़ OEJBHυΩϡϝϯτੜ࣌ʹઐ༻ϑΝΠϧͷ༰ΛऔΓࠐΉ
(.0ϖύϘʹ͓͚ΔOEJBHಋೖঢ়گ w ϖύϘ͕ӡ༻͍ͯ͠ΔෳͷαʔϏεͷ͏ͪͷҰ෦ͰΞʔΩςΫνϟυΩϡϝϯτ Λ࡞͢Δͷʹར༻ͯ͠Β͍ͬͯΔ w ͔ͦ͜Β༷ʑͳϑΟʔυόοΫΛΒͬͯػೳՃΛ͍ͯ͠Δ w ࣮OEJBHࣗମ·ͩ3&"%.&NEΛؚΉυΩϡϝϯτΛඋͰ͖͍ͯͳ͍ w ࣾͰ࣌ؒఔͷϋϯζΦϯΛ։࠵࣮͠ࡍʹಈ͔ͯ͠Βͬͯཧղͯ͠Βͬ
͍ͯΔ
·ͱΊ
·ͱΊ w ։ൃ։࢝·ͰͷΦʔόʔϔουΛݮ͢ΔυΩϡϝϯτΛܧଓతʹӡ༻͍ͯͨ͘͠ Ίʹɺʮ%PDVNFOUBUJPOBT$PEFʯΛجຊͱ͠ͳ͕ΒɺͲͷΑ͏ͳΈΛ࡞ͬ ͍ͯ͘ͱγεςϜͱυΩϡϝϯτͷဃΛখ͘͞Ͱ͖Δ͔ΛϞσϧΛͬͯઆ໌͠ ͨɻʮγεςϜͱυΩϡϝϯτΛߏԽσʔλΛհͯؔ͠࿈ͤ͞Δʯ͜ͱ͕ॏཁɻ w (.0ϖύϘͰͷऔΓΈͱͯ͠ྫΛհͨ͠ɻ w 5CMTΛ։ൃ͠ɺߏԽσʔλΛத৺ʹਾ͑ͯߟ͑Δ͜ͱͰσʔλϕʔευΩϡϝ
ϯτ͚ͩͰͳ͘σʔλج൫ͷϝλσʔλཧͷΈ·Ͱ࣮ݱͨ͠ɻ w γεςϜͷཧղͷͨΊʹෳͷΓޱͰͷυΩϡϝϯτ͕ඞཁͰ͋ΓɺͦΕΛ αϙʔτ͢ΔͨΊͷυΩϡϝϯςʔγϣϯπʔϧͱͯ͠OEJBHΛ։ൃ͍ͯ͠Δɻ
5IBOLZPV ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU