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.9k
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
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
360
Flight recorder at the application layer (NOT the FlightRecoder newly added at Go 1.25) / Fukuoka.go #22
k1low
0
100
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
9
5.6k
Parsing HCL/CUE / Fukuoka.go #21
k1low
0
9.2k
実践 net/http Middleware パターン / Kizuku.go Vol.1
k1low
2
360
Cleanup handling in Go / Go Conference 2024
k1low
7
3.9k
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
k1low
18
12k
Command-line interface tool design / PHPerKaigi 2024
k1low
8
3.4k
gostyle IS NOT Go Style / Fukuoka.go#19 Reboot
k1low
1
310
Other Decks in Technology
See All in Technology
JSConf JPのwebsiteをGatsbyからNext.jsに移行した話 - Next.jsの多言語静的サイトと課題
leko
2
190
webpack依存からの脱却!快適フロントエンド開発をViteで実現する #vuefes
bengo4com
4
3.6k
Azure Well-Architected Framework入門
tomokusaba
1
140
re:Inventに行くまでにやっておきたいこと
nagisa53
0
590
From Natural Language to K8s Operations: The MCP Architecture and Practice of kubectl-ai
appleboy
0
280
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
460
組織全員で向き合うAI Readyなデータ利活用
gappy50
3
1.2k
20251027_findyさん_音声エージェントLT
almondo_event
2
480
RemoteFunctionを使ったコロケーション
mkazutaka
1
130
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
2
140
ヘンリー会社紹介資料(エンジニア向け) / company deck for engineer
henryofficial
0
400
アウトプットから始めるOSSコントリビューション 〜eslint-plugin-vueの場合〜 #vuefes
bengo4com
3
1.8k
Featured
See All Featured
The Language of Interfaces
destraynor
162
25k
We Have a Design System, Now What?
morganepeng
53
7.8k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
RailsConf 2023
tenderlove
30
1.3k
Visualization
eitanlees
149
16k
Done Done
chrislema
185
16k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Producing Creativity
orderedlist
PRO
347
40k
How STYLIGHT went responsive
nonsquared
100
5.9k
Embracing the Ebb and Flow
colly
88
4.9k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Git: the NoSQL Database
bkeepers
PRO
431
66k
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