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
Rustでon-diskなB+Treeを作ったときの細かな話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
KOBA789
May 19, 2021
Programming
2.1k
11
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustでon-diskなB+Treeを作ったときの細かな話
Rust LT Online #3 で発表したスライドです
https://rust.connpass.com/event/209279/
KOBA789
May 19, 2021
More Decks by KOBA789
See All by KOBA789
メモリが足らない2026
koba789
4
2.5k
直接メモリアクセス
koba789
0
610
人工衛星のファームウェアをRustで書く理由
koba789
16
10k
令和最新版手のひらコンピュータ
koba789
14
9.4k
時の流れが許せない
koba789
0
360
ついに生産が終わったけどZ80でまだまだ遊びたい
koba789
5
4.8k
ISUCONの練習を楽しくたくさんやる方法
koba789
2
1.5k
Z80をRustで動かすまで年が越せない
koba789
0
440
ISUCON練習環境を最も簡単に用意する方法
koba789
2
3.4k
Other Decks in Programming
See All in Programming
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
190
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.6k
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
810
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
120
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
130
A2UI という光を覗いてみる
satohjohn
1
160
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
140
Oxlintのカスタムルールの現況
syumai
6
1.2k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.5k
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
190
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
From π to Pie charts
rasagy
0
220
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Claude Code のすすめ
schroneko
67
230k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
400
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
KATA
mclloyd
PRO
35
15k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
Transcript
KOBA789 RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ
KOBA789 ݱࡏਐߦܗͰແ৬ ‣ 3VTUྺ͘Β͍ ‣ ී௨ʹΣϒαʔόʔΛॻ͍ͨΓ ‣ %#.4Λॻ͍ͨΓ ‣ ϒϥβͰಈ͘ճ࿏$"%Λॻ͍ͨΓ
8"4.λʔήοτ ‣ ࣗ࡞ΩʔϘʔυͷ ϑΝʔϜΣΞΛॻ͍ͨΓ ͍ΘΏΔΈࠐΈ3VTU ͓͢͢Ίͷࣄʹؔ͢Δใ ͍ͭͰܴ͍ͯ͠·͢ https://gihyo.jp/magazine/wdpress/archive/2021/vol122 ʲະঝࠂʳࡶࢽʹهࣄॻ͖·ͨ͠
RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ ࠓճͷλΠτϧ ʢ࠶ܝʣ
RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ ͱʁ
RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ ͱʁ " ༰ΛσΟεΫʹӬଓԽͰ͖ͨΓɺ ϝϞϦΑΓେ͖ͳ༰ΛσΟεΫ্Ͱѻ͑ͨΓ͢Δ
# 5SFF ˞ಠࣗͷఆٛͰ͢
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
͜͏͍͏# 5SFFΛߟ͑Δ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ͱΓ͋͑ͣ࣍ݩʹͭͿ͢
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ σΟεΫ͕͋Δͱ͢Δ
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ σΟεΫʹೖͬͨ
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ CPU # 5SFFΛૢ࡞͍ͨ͠
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ CPU # 5SFFΛૢ࡞͍ͨ͠ σΟεΫΛಡΈॻ͖͢Δͷ͍͠ෆศ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ CPU ϝϞϦʹόοϑΝΛ༻ҙ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ϊʔυͷҰ෦ΛϝϞϦ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ಡΈॻ͖ ೖΕସ͑ όοϑΝϓʔϧϚωʔδϟ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
Ұ෦ͷϊʔυͷΈ͕ϝϞϦʹ͋Δ# 5SFFͱ͍͑Δ ന͍ϊʔυσΟεΫʹ͔͠ͳ͍
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ಡΈॻ͖ ೖΕସ͑ ͱ͜ΖͰɺ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ಡΈॻ͖ ೖΕସ͑ ϚϧνίΞΛ׆༻͍ͨ͠Ͱ͢ΑͶʁ CPU CPU CPU
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ར༻தͷϊʔυΛόοϑΝ͔Β͍ग़ͨ͠Γ͢Δͱ͍ͨΜͳ͜ͱʹ CPU CPU CPU ΛಡΈ͍ͨɻΛ͍ग़ͦ͏ ͯίϥ ϊʔυ ར༻த
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ར༻தͷϊʔυΛόοϑΝ͔Β͍ग़ͨ͠Γ͢Δͱ͍ͨΜͳ͜ͱʹ CPU CPU CPU ΛಡΈ͍ͨɻΛ͍ग़ͦ͏ ͯίϥ ϊʔυ ར༻த ͜ͷΜͷ σʔλߏɾΞϧΰϦζϜΛ 3VTUͰͲ͏͢Δ͔ POEJTLಛ༗ͷ͕͋͠͞Δ
3VTUͰPOEJTLͳ# 5SFFΛ࡞Δͱ͖ͷݒ೦ࣄ߲ w όοϑΝϓʔϧϚωʔδϟͷ σʔλߏͱΞϧΰϦζϜ w # 5SFFͷϊʔυͷσʔλߏ w
# 5SFFͷഉଞ੍ޚ
όοϑΝϓʔϧϚωʔδϟͷ σʔλߏͱΞϧΰϦζϜ
ར༻தͷϊʔυΛอޢ͢Δʹ $.6ͷߨٛͰΘΕ͍ͯΔ#VT5VC $ ͱ͍͏࣮ͷ߹ ϊʔυʢϖʔδʣʹΧϯλΛ ࣋ͬͯཧ͍ͯ͠Δ https://github.com/cmu-db/bustub/blob/master/src/include/storage/page/page.h ϐϯ 1JO
ʮར༻தʯͷҙຯ ˞3VTUͷ1JOͱؔͳ͍
3VTUͰͲ͏͢Δ͔ Ҋ$ ಉ༷ʹΧϯλͰอޢ w ڞ༗ϝϞϦΛॻ͖͑ΔͨΊɺ વͷΑ͏ʹVOTBGF͕ొ w ઈରʹόάΒͤΔࣗ৴͔͠ͳ͍ w
͜ΕͳΒ$ Ͱॻ͚͍͍ w ଈߦͰϘπ
3VTUͰͲ͏͢Δ͔ Ҋ3X-PDLͰอޢ w ར༻த4IBSFEMPDLΛ͓࣋ͬͯ͘ w ͍ग़ͨ͘͠ͳͬͨΒ&YDMVTJWFMPDLΛऔΔ w (VBSEܥͷߏମTUBUJD͡Όͳ͍ͷͰ औΓճ͕͠ѱ͍
3VTUͰͲ͏͢Δ͔ Ҋ"SDͰอޢ w "SDʹHFU@NVU NVU"SD5 ͱ͍͏ ϝιου͕͋Δ w ࢀরΧϯλ͕ͷͱ͖ʹ͚ͩNVU5͕औΕΔ
w όοϑΝϓʔϧͷʮϐϯʯͱ૬ੑ͕Αͦ͞͏ͳػೳ w ͨͩ͠ϨγʔόNVU w όοϑΝϓʔϧશମΛอޢ͢Δ.VUFY͕͋ΔͷͰ Մมࢀর͕औΕΔ
# 5SFFͷϊʔυͷ σʔλߏ
# 5SFFͷϊʔυͷߏ ૉʹΔͱɺ͜͏
⚠ϊʔυσΟεΫʹ ॻ͖ग़ͤͳ͚ΕͳΒͳ͍ ͪΖΜɺಡΈग़͠Ͱ͖ͳ͚ΕͳΒͳ͍
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ TFSEF
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ TFSEF γϦΞϥΠζޙͷσʔλ͕Θ͔Βͳ͍͠ ޮѱ͍ͷͰμϝ
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ "ͦͷ··ॻ͖ग़ͤΔ σʔλߏΛ͕Μ࣮ͬͯ͢Δ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ϊʔυ ͖ͬ͞ొͨ͠ϊʔυ͘Μ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ࣮͜͏͍͏େ͖͞
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ͜Ε,FZ7BMVFͷϖΞ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF ͞όϥόϥ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF ͜ΕΛͦͷ··ෑ͖٧ΊΔͱ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF Φϑηοτִ͕ؒͰͳ͍ͷͰೋ୳ࡧͰ͖ͳ͍
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF Γ͠
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF ,FZ7BMVFޙΖʹ٧Ίͯ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# 1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF
1US 1US ݻఆͷϙΠϯλΛ಄ʹฒΔ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# 1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF
1US 1US ͜ΕΛ3VTUͰॻ͘
ͱ͜ΖͰ͜ΕΛͲ͏ͬͯ Ωϟετ͢Δͷ͔
std::mem::transmute
std::mem::transmute ͦΜͳةݥͳͷ͏Θ͚ͳ͍
ศརDSBUFl[FSPDPQZz ΞϥΠϝϯτͳͲΛߟྀͯ҆͠શʹܕΩϟετͰ͖Δ w (PPHMFͷ'VDITJBͰΘΕ͍ͯΔͬΆ͍ w ͍ํʹ͔ͳΓΫη͕͋Δ w υΩϡϝϯτۃΊͯগͳ͍ w αϯϓϧίʔυ'VDITJBͷωοτϫʔΫελοΫ
LayoutVerifiedͱ͍͏ εϚʔτϙΠϯλܦ༝Ͱૢ࡞͢Δ new_from_prefixϝιου ϔομͱϘσΟʹ͔Ε͍ͯΔ σʔλߏʹ͑Δ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
IFBEFS CPEZ
new_sliceϝιουͰ ϙΠϯλͷεϥΠεΛΓग़͍ͯ͠Δ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ ͜ͷਤΛΑ͘ݟͯ΄͍͠
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ QPJOUFSTCPEZΛआ༻͍ͯ͠Δ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ QPJOUFSTCPEZΛआ༻͍ͯ͠Δ ͭ·Γɺ,FZ7BMVFϖΞΛมߋ͢Δͱ͖ʹ ͍͍ͪͪQPJOUFSTΛख์͞ͳ͚ΕͳΒͳ͍ ͩΔ͍ ʢ͔ͨ͠ͳ͠ʣ
# 5SFFͷഉଞ੍ޚ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU Modify Modify 💥 😩 😩
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU ϩοΫ্͔ΒॱʹऔΔ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϩοΫ্͔ΒॱʹऔΔ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϩοΫ্͔ΒॱʹऔΔ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϩοΫ͕औΕͨΒɺ্ͷϩοΫख์ͯ͠Α͍ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ଞͷεϨου͕ಈ͚ͯฒྻ্͕͕Δ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU ಉ༷ʹଓ͚Δ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
Լͷϊʔυ͕ᷓΕͦ͏ͳ߹ɺ্ͷϩοΫΛख์ͯ͠ͳΒͳ͍ ʢॻ͖ࠐΈͷ߹ʣ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU ͜ΕΛ3VTUͰ࣮͢Δ
# 5SFFͷഉଞ੍ޚ ૉʹ࣮
# 5SFFͷഉଞ੍ޚ ૉʹ࣮
# 5SFFͷഉଞ੍ޚ ૉʹ࣮ page: Arc<RwLock<Page>> ro_page: RwLockReadGuard<_, Page>
next_page: Arc<RwLock<Page>> ro_next_page: RwLockReadGuard<_, Page> next_pageΛಈ͔͍͕ͨ͠ かといってRwLockReadGuardΛ ख์͢Θ͚ʹ͍͔ͳ͍ ro_page͕pageΛɺ ro_next_page͕next_pageΛ ࢀর͍ͯ͠ΔͷͰಈ͔ͤͳ͍
# 5SFFͷഉଞ੍ޚ ૉʹ࣮ page: Arc<RwLock<Page>> ro_page: RwLockReadGuard<_, Page>
next_page: Arc<RwLock<Page>> ro_next_page: RwLockReadGuard<_, Page> next_pageΛಈ͔͍͕ͨ͠ かといってRwLockReadGuardΛ ख์͢Θ͚ʹ͍͔ͳ͍ ro_page͕pageΛɺ ro_next_page͕next_pageΛ ࢀর͍ͯ͠ΔͷͰಈ͔ͤͳ͍ ٧Έ
͜ΕΑ͋͘Δ4UBCMF"EESFTT "SDͷࢦ͢ϙΠϯλෆมͳΜ͔ͩΒNPWFͤͯ͘͞Ε w PXOJOH@SFGΫϨʔτͳͲͰ ղܾ͕ࢼΈΒΕ͍ͯΔ w ࠓճ3X-PDL3FBE(VBSEʹ ಛघͳϝιουΛੜͯ͠ճආ
0XOFE3X-PDL3FBE(VBSE ΊͬͪΌVOTBGF͚ͩͲ͔ͨ͠ͳ͍
ࠓհͨ͠ίʔυ͍͍ͩͨ(JU)VCʹ͋Δ RQ w IUUQTHJUIVCDPN,0#"RQ w ϚϧνεϨου w ίʔυ͕ͱͯԚ͍ SFMMZ w
IUUQTHJUIVCDPN,0#"SFMMZ w γϯάϧεϨου w 8&# %#13&447PMͷͨΊʹ ॻ͖ԼΖͨ͠ w ͪΐͬͱίʔυ͕៉ྷ
·ͱΊ ಈతͳσʔλߏΛ࣮͢Δͱ3VTUಛ༗ͷ͕ͯ͠͞Μ͜Γʂ w "SDHFU@NVUͷΑ͏ͳϚΠφʔͳ ϝιουΛ͓ͬͯ͘ͱʹཱͭ w TUEΫϨʔτΛ׆͔ͤΔΑ͏ʹ σʔλߏΛมܗ͢ΔεΩϧ͕ॏཁ
w ίϯύΠϧΤϥʔΛோΊΔ͚ͩͰͳ͘ɺ ϝϞϦͷ༷ࢠΛ૾͢Δ w ͋Δ͖ϝϞϦͷߏ͔Β σʔλߏΛٯࢉ͢Δͷ͕ίπ