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
大量塩基配列登録申請システムができるまで
Search
Keita Urashima
October 21, 2022
3.1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大量塩基配列登録申請システムができるまで
Keita Urashima
October 21, 2022
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.5k
RailsConf 2023
tenderlove
30
1.5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
310
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
260
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
410
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Test your architecture with Archunit
thirion
2
2.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Transcript
େྔԘجྻొਃγεςϜ͕ Ͱ͖Δ·Ͱ ,FJUB6SBTIJNB !VSTN 0DU ,BJHJPO3BJMT
w ࠃཱҨֶݚڀॴੜ໋ใɾ%%#+ηϯλʔ͕ w ԘجྻʢੜͷҨใʣΛσʔλϕʔεԽͯ͠ެ։͢ΔͨΊʹ w όΠΦݚڀऀ͔ΒԘجྻͷొਃΛड͚͚ΔࡍʹΘΕΔγε ςϜ w (PPHMFϑΥʔϜʹϑΝΠϧΞοϓϩʔυػೳ͕͍ͨΑ͏ͳΠϝʔδ w
ͨͩ͠ѻ͏ϑΝΠϧ͕େ͖͍ ຊͷ͓େྔԘجྻొਃγεςϜ
ݱঢ়ͱΰʔϧ ԘجྻͷొਃΛड͚͚Δͱ͖ɺݱঢ়Ͱ w (PPHMFϑΥʔϜͰҰใΛೖΕͯΒ͏ w ϝʔϧͰΓऔΓΛͯ͠ඞཁͳใΛώΞϦϯά͢Δ w TDQͰϑΝΠϧΛసૹͯ͠Β͏ ͷΑ͏ͳखॱͰߦΘΕ͍ͯͯɺͱͯखֻ͕͔ؒΔͷͰվળ͍ͨ͠
μΠϨΫτΞοϓϩʔυ "DUJWF4UPSBHF w ϒϥβ͔ΒετϨʔδαʔϏεʹϑΝΠϧΛΞοϓϩʔυͤ͞Δ w ΞϓϦέʔγϣϯʹ࣮ϑΝΠϧͷΘΓʹϑΝΠϧΛࣝผ͢ΔΩʔ͕ͬͯ ͘Δ w ඞཁͰ͋Ε͜ͷΩʔΛͬͯݩͷϑΝΠϧΛऔಘͰ͖Δ w
ΞοϓϩʔυͷϋϯυϦϯάΛετϨʔδαʔϏεʹؙ͛Ͱ͖Δ
Ξοϓϩʔυ͚ͩͰͳ͔ͬͨ w Ξοϓϩʔυ͞ΕͨϑΝΠϧͷதΛಡΈग़ͯ͠ϑΥʔϜͷ߲ΛҰ෦ࣗಈͰ ຒΊ͍ͨ w ϑΝΠϧ͕େ͖͍ͱۃΊ͍ͯ͠
None
4USFBNT"1* w ϒϥβ্ͰσʔλΛࡉΕʹಡΈॻ͖͢ΔΠϯλʔϑΣʔεΛఏڙ͢Δ w ରϑΝΠϧωοτϫʔΫϦΫΤετϨεϙϯεͳͲ w ϝϞϦരൃͷ৺ͳ͘େ͖ͳσʔλΛѻ͑Δ const res =
await fetch('https://example.com'); res.body // これが ReadableStream
<input type="file" /> <script> document.querySelector('input') .addEventListener('change', async (e) => {
const file = e.target.files[0]; const reader = file.stream().getReader(); for (;;) { const {done, value} = await reader.read(); if (done) { break; } console.log(value); } }); </script>
None
>NIES3753_TRINITY_DN0_c0_g1_i1_len285 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCTCTTCATCAAACTCCTGCGCTGCCACT GCAGCCAAACACACAGCTGACACAGCACCAAAATAACCCCACGCCCTGCAGCTACAG // >NIES3753_TRINITY_DN1_c3_g1_i1_len267 CCTCAACGGGAGCAGCTGATCAAACTACAGAACTCCACACGCCCCATGGCACCACTT GTGACGGGACGGGCCTGGAGGTGGATTCATATCAGCCCCACCACTCCAAGCATGCTG // >NIES3753_TRINITY_DN1_c4_g1_i1_len257 GTCCATACTGGTCCTAGCAGGTCCCAGAATCTACCTCTTGCTTGCACCATATGCACT
TTCTGCATGCCTGGCCACAGTCTGGCTTGAGCCATTGGATGTGCCAGTTAACAGTAT // >NIES3753_TRINITY_DN1_c2_g1_i1_len229 CCCCCCCCCCCCCCCCCCCTCTCCTGCTGCATCTGTGGGGACATGCCCATCTGAGAG GCAGCCCAGCACTCATTGCAGATCGCAAGACCACTCGCCTCAACTCCCTTCACCCCA //
const LF = '\n'.codePointAt(0); const CR = '\r'.codePointAt(0); const GT
= '>'.codePointAt(0); async function parse(file) { const reader = file.stream().getReader(); let done, value; let entriesCount = 0; let isBOL = true; while (({done, value} = await reader.read()), !done) { for (const byte of value) { if (isBOL && byte === GT) { entriesCount++; isBOL = false; } else { isBOL = byte === LF || byte === CR; } } } return {entriesCount}; }
ύʔεதʹϒϥβ͕ݻ·Δ w େ͖ͳϑΝΠϧΛύʔε͢Δͱλϒͷඳը͕ࢭ·ͬͯૢ࡞ʹԠ͠ͳ͍ঢ়ଶ ʹͳͬͯ͠·͏ w ύʔε͕ऴΘΔͱݩʹΔ w +BWB4DSJQUγϯάϧεϨουͳͷͰ$16ͳίʔυଞͷͯ͢ΛࢭΊ ͯ͠·͏Մೳੑ͕͋Δ w
ҰൠతʹTFU5JNFPVUͳͲͰଞͷॲཧׂ͕ΓࠐΉ༨Λ࡞ͬͯରԠ͢Δ
8FC8PSLFST w ϝΠϯεϨουͱશʹಠཱͨ͠ผεϨουͰॲཧΛ࣮ߦ͢ΔΈ w ϫʔΧϝΠϯεϨουͷඳըૢ࡞Λ͛ͳ͍ w ϫʔΧฒྻʹಈ࡞͢ΔͨΊϚϧνίΞΛ׆༻Ͱ͖Δ
const worker = new Worker('./worker.js'); worker.addEventListener('message', e => { console.log(e.data);
}); worker.postMessage('hello, world'); addEventListener('message', e => { postMessage(e.data.toUpperCase()); }); NBJOKT XPSLFSKT ᶃ ᶄ ᶅ ᶆ
addEventListener('message', async ({data: {file}}) => { try { const payload
= await parse(file); postMessage([null, payload]); } catch (err) { postMessage([err, null]); } }); async function parse(file) { const reader = file.stream().getReader(); // ... return {entriesCount}; }
ϋογϡͷܭࢉ͕͍ w "DUJWF4UPSBHFμΠϨΫτΞοϓϩʔυͷͱ͖ϑΝΠϧͱҰॹʹϋογϡ ΛૹΔ w େ͖ͳϑΝΠϧͩͱϋογϡͷܭࢉʹֻ͕͔࣌ؒΔ w "DUJWF4UPSBHFTQBSLNEͱ͍͏ϥΠϒϥϦΛͬͯϋογϡΛٻΊ ͍ͯΔ w
TQBSLNEಉछͷϥΠϒϥϦͷதͰτοϓϨϕϧʹ͍
8FC"TTFNCMZ w ओʹϒϥβͰ࣮ߦ͢ΔͨΊͷԾతͳػցޠ w +BWB4DSJQUͰ౸ୡͰ͖ͳ͍ωΠςΟϒίʔυʹ͍ۙੑೳ͕ಘΒΕΔ w 8FC"TTFNCMZʹΑΔϋογϡؔͷ࣮IBTIXBTN w TQBSLNEͱൺֱͯ͠ഒҎ্ͷվળ
None
github.com/ddbj/submission-mss