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.5k
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
2
240
Cleanup handling in Go / Go Conference 2024
k1low
6
3.4k
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
k1low
17
10k
Command-line interface tool design / PHPerKaigi 2024
k1low
8
3k
gostyle IS NOT Go Style / Fukuoka.go#19 Reboot
k1low
1
250
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.5k
The future of tbls and "Documentation as Code" / phpconfuk 2023
k1low
4
6.4k
net/http/httptest.Server のアプローチをテスト戦略に活用する / Go Conference 2023
k1low
10
3.2k
Other Decks in Technology
See All in Technology
ココナラのセキュリティ組織の体制・役割・今後目指す世界
coconala_engineer
0
240
AIをプロダクトに実装するならAPIで分離しよう 〜タクシーアプリ『GO』のアーキテクチャ実例紹介〜
74th
2
130
Fintech SREの挑戦 PCI DSS対応をスマートにこなすインフラ戦略/Fintech SRE’s Challenge: Smart Infrastructure Strategies for PCI DSS Compliance
maaaato
0
300
実践!OpenTelemetry
oracle4engineer
PRO
0
140
アンチパターンのアーキテクチャと組織 / Anti-Pattern Software Architecture and Organization
oztick139
0
140
talk_about_wasmwasi
junkishigaki
0
100
[TechNight #86] Oracle GoldenGate - 23ai 最新情報&プロジェクトからの学び
oracle4engineer
PRO
1
210
CloudWatch Container Insightsを使ったAmazon ECSのリソース監視
umekou
1
140
テストアーキテクチャ設計で実現する高品質で高スピードな開発の実践 / Test Architecture Design in Practice
ropqa
3
370
Creative Pair
kawaguti
PRO
1
150
AIエージェントについてまとめてみた
pharma_x_tech
20
13k
NOSTR, réseau social et espace de liberté décentralisé
rlifchitz
0
150
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
What's in a price? How to price your products and services
michaelherold
244
12k
GraphQLとの向き合い方2022年版
quramy
44
13k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Music & Morning Musume
bryan
46
6.3k
Agile that works and the tools we love
rasmusluckow
328
21k
YesSQL, Process and Tooling at Scale
rocio
171
14k
Docker and Python
trallard
43
3.2k
Practical Orchestrator
shlominoach
186
10k
Building Applications with DynamoDB
mza
93
6.2k
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