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
noteエディタの話
Search
ct8ker
October 23, 2018
Technology
1
12k
noteエディタの話
note engineer meetup #1
https://pieceofcake.connpass.com/event/101173/
ct8ker
October 23, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
プロポーザルに込める段取り八分
shoheimitani
1
190
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
150
Agile Leadership Summit Keynote 2026
m_seki
1
580
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.3k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
190
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
160
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
340
配列に見る bash と zsh の違い
kazzpapa3
1
130
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
240
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
Are puppies a ranking factor?
jonoalderson
1
2.7k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
49
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
Skip the Path - Find Your Career Trail
mkilby
0
54
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Six Lessons from altMBA
skipperchong
29
4.1k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Transcript
noteΤσΟλͷ note engineer meetup #1
ࣗݾհ • 20154݄ʙɹϐʔεΦϒέΠΫ • SIerग़ɹҰ൪ܦݧ͕͍ݴޠJava • ϑϩϯτΔαʔόʔαΠυΤϯδχΞ • झຯΤΦϧθΞͰώΧηϯ Takeshi
Tanazawa https://note.mu/ct8ker
͢͜ͱ • noteΤσΟλͷྺ࢙ • ΤσΟλͷׂ • Ͳ͏ͬͯ։ൃ͖ͯͨ͠ͷ͔ • ࣮͖ͯͨ͠ͷ •
ΤσΟλ։ൃͰͷۤ࿑ • ࠓޙͷ༧ఆ
χϡʔϝΩγί ҎԼൈਮ l͍͜͜ΘաࠅͳχϡʔϝΩγίͷߥͩz l༉அ͔ͨͭ͠ΒαϘςϯʹ͞͞Εͯࢮ͵z l͜͜ΞϯυΡ͢ΔΑ͏ͳࠊൈ͚ੜ͖Εͳ͍χϡʔϝΩ γίͷߥͳͷͩz lࠨͷ΄͏ʹग़ͨΓͰͳ͔ͬͨΓ͢ΔʮʴʯϚʔΫz l͜ͷΑ͏ͳ.FYJDPͷચྱ͕͓·͑Λ͍ͬͯΔz IUUQTEJFIBSEUBMFTDPNOOGEB
noteΤσΟλͷྺ࢙ • ॳʢ201404ʙ͙Β͍ʣ CTO konpyu࡞ɻܹϨΞ • 2ʢ2014͙Β͍ʙ201704ʣ ޭ࿑ऀɻͨͩ͠ɺχϡʔϝΩγίͷߥ • 3ʢ201704ʙʣ
ݱɻߥͰͳ͘ͳͬͨͱࢥ͍͍ͨ
ΤσΟλͷׂ <div contenteditable=“true”> <h3 name=“a”>ݟग़͠</h3> <p name=“b”>ςΩετஈམ</p> <blockquote name=“c”>Ҿ༻</blockquote> <p
name=“d”><img src=“img.jpg”></p> <pre name=“e”><code>ίʔυ</code></pre> <figure name=“f”></figure> </div> • contenteditableΛʮ͑ΔʯΑ͏ʹ͢Δ • ͜ͷϑΥʔϚοτΛࢮक͢Δʢग़དྷΔ͚ͩշదʹʣ
• CSS͕ਖ਼͘͠ద༻͞Εͣɺݟ͕ͨஶ่͘͠ΕΔ • Ұ෦ςΩετ͕ݟ͑ͳ͍ • ༗ྉઃఆ͕ಈ͔ͳ͍ • XSSͷڪා • χϡʔϝΩγίͷߥʹͳΔ
͠ϑΥʔϚοτ่͕ΕΔͱ…
• نҧͷຊจσʔλΛαʔόʔʹૹΔΘ͚ʹ ͍͔ͳ͍ • ฤूૢ࡞ͷࣗ༝ɾշదੑॏཁ͕ͩɺΓڀ ۃతʹnoteϑΥʔϚοτنΛࢮकग़དྷΔൣғ Ͱͷ࣮ݱʹͳΔ
Ͳ͏ͬͯ։ൃ͖ͯͨ͠ͷ͔ • 2016Նࠒɺ3ͷ։ൃελʔτ • 2CoffeeScriptͰॻ͔Ε͍ͯͯɺRailsͷassetsʹ Έࠐ·Ε͍ͯͨɻ 3ಠཱͤͯ͞ɺstandaloneͰಈ͔͍ͨ͠ɻES6 Ͱॻ͖͍ͨ • 2ʹ฿ͬͯɺMediumEditor※Λϕʔεʹ͢Δ
※MediumͬΆ͍ɺOSSͷWYSIWYGΤσΟλ
• શ෦ES5Ͱॻ͔Ε͍ͯΔ • classΛಋೖͯ͠extends֦ͯ͠ு͍ͨ͠ͷʹɺ͜Ε ࠔΔ • πʔϧͰҰൃมΛૂ͕ͬͨ೦ͳ݁Ռʹɻ ख࡞ۀͰશ෦ॻ͖͑ͨ • ES5Ͱॻ͔Εͨಠࣗͷ֦ுػߏআ
MediumEditorΛES6ʹॻ͖͑Δ
• ΄ΜͱTypeScriptʹ͔ͨͬͨ͠ɻ ແ͍ॴʹશ෦ܕ͚͢Δͷ͕ͭΒ͗ͨ͢ (RubyMimeॏ͗ͨ͢) • babelʹܾఆ • ES5 → TS(్த·Ͱ)
→ ES2015 • ͳΜͱ͔MediumEditor ES6(ES2015)൛͕Ͱ͖Δ TypeScript or babel(ES2015)
• webpackͬͯΈΔɻͦͷ··ఆணɻ ࠓʹͳͬͯ4.xܥʹ্͛Α͏ͱͯۤ͠͠Ή • webpack-dev-serverͰstandaloneͰಈ͔͢ HMR(Hot Module Replacement) • MediumEditorͷspecΛಈ͔ͨ͢Ίʹgruntಉډ
Ϗϧυڥͱ͔
• ֦ுίʔυͱMediumEditorίʔυͷσΟϨΫτϦΛ ͚Δ • MediumEditorͷίʔυมߋ͠ͳ͍ มߋ͢ΔͷຊՈߋ৽ʹै͢Δͱ͖͚ͩ • MediumEditorͷspec͕pass͢Δঢ়ଶΛҡ࣋ ޙͰࠔΒͳ͍ͨΊͷ։ൃϧʔϧ
࣮͖ͯͨ͠ͷ • ০ૢ࡞શൠͷϦϝΠΫ • Undo / Redo • ίϐϖ …ͷத͔Βɺಛʹख͕͔͔ؒͬͨͷͨͪ
০ૢ࡞શൠͷϦϝΠΫ
০ૢ࡞શൠͷϦϝΠΫ • MediumEditorcontenteditableͷAPIΛ͍ͬͯ Δ • execCommand(“formatBlock”, false, “p”); • ΫϩεϒϥβͰಈ࡞͕҆ఆ͠ͳ͍ɻ݁Ռ͕͘͠
ͳΒͳ͍
Q. Ͳ͏͢Δ͔ʁ
A. ࣗલͰ࣮
A. ࣗલͰ࣮ ͻͨ͢Β DOM ૢ࡞
Undo / Redo
• ϒϥβϑΥϧτͰɺcontenteditable APIΛͬ ͨฤू͔ͤ͠ͳ͍ • ࣗલͷDOMૢ࡞વޮ͔ͳ͍ Undo / Redo
Q. Ͳ͏͢Δ͔ʁ
A. ࣗલͰ࣮
A. ࣗલͰ࣮ ݁ՌɺDOMૢ࡞ͷࣗ༝্͕͕ͬͨʂ …ͷ͕ຊʹྑ͔ͬͨͷ͔Ͳ͏͔࣌ʑΉ
ίϐϖ
• contenteditable APIͷதͰಛʹ৴༻Ͱ͖ͳ͍ ” insertHTML” Λ͍ͬͯͨ • ͠͠noteϑΥʔϚοτΛഁյ͍ͯͨ͠ ίϐϖ
Q. Ͳ͏͢Δ͔ʁ
A. ࣗલͰ࣮
A. ࣗલͰ࣮ ͨͩͨͩͻͨ͢Β DOM ૢ࡞
ΤσΟλ։ൃͰͷۤ࿑ • ΫϩεϒϥβରԠ ϒϥβຖʹڍಈ͕ҧ͏ͱͭΒ͍ɻDOMૢ࡞Λ૿ ͯ͠ݮ͖͕ͬͯͨɺͦΕͰEdge… • ΤσΟλͰ͋ΕҰൠతʹʮ͜͏ಈ͍ͯͨΓલʯ ͳػೳΛɺͦͷ௨ΓͨΓલʹ࣮ݱ͠ͳ͚ΕͳΒ ͳ͍͠͞ web͔ͩΒଟগΞϨͰ͍͍͡ΌΜʁ
ࠓޙͷ༧ఆ • εϚϗରԠ ͏͙͢ग़·͢
ࠓޙͷ༧ఆ • ϑϧεΫϥονʹ͢Δ • noteઐ༻ػೳϓϥάΠϯͱͯ͠جຊػೳͱ͠ɺ noteҎ֎Ͱ͑Δ൚༻ੑΛ͍࣋ͨͤͨ • खͬͯ͘ΕΔํΛ͓͍ͪͯ͠·͢ʂ 4ΤσΟλ
͋Γ͕ͱ͏͍͟͝·ͨ͠