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
Goの文字列置換とその実装
Search
po3rin
July 14, 2020
Programming
1
420
Goの文字列置換とその実装
文字列置換が func Replace と func (*Replacer) Replace の2つの標準機能のアルゴリズムやデータ構造の違いからなぜ2つあるのかを理解しよう。
po3rin
July 14, 2020
Tweet
Share
More Decks by po3rin
See All by po3rin
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
1k
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
4
2.4k
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
380
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
1
350
検索基盤移行時の思考
po3rin
0
4.3k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
6.1k
Elasticsearchを負荷から守るesguard
po3rin
0
310
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
960
eskeeperを使ったファイル定義によるindex管理
po3rin
2
520
Other Decks in Programming
See All in Programming
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
200
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
310
複雑なドメインに挑む.pdf
yukisakai1225
5
1.1k
「待たせ上手」なスケルトンスクリーン、 そのUXの裏側
teamlab
PRO
0
460
意外と簡単!?フロントエンドでパスキー認証を実現する WebAuthn
teamlab
PRO
2
700
ProxyによるWindow間RPC機構の構築
syumai
3
1.1k
AI時代のUIはどこへ行く?
yusukebe
16
8.6k
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
0
380
はじめてのMaterial3 Expressive
ym223
2
210
RDoc meets YARD
okuramasafumi
4
170
Namespace and Its Future
tagomoris
6
700
Putting The Genie in the Bottle - A Crash Course on running LLMs on Android
iurysza
0
140
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
RailsConf 2023
tenderlove
30
1.2k
Agile that works and the tools we love
rasmusluckow
330
21k
Statistics for Hackers
jakevdp
799
220k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Making Projects Easy
brettharned
117
6.4k
What's in a price? How to price your products and services
michaelherold
246
12k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
Why Our Code Smells
bkeepers
PRO
339
57k
Six Lessons from altMBA
skipperchong
28
4k
Transcript
(Pͷจࣈྻஔͱͦͷ࣮ 'VLVPLBHP +VMZ CZQPSJO (PTUSJOHSFQMBDFNFOUBOEJUTJNQMFNFOUBUJPO
pon ( @po3rin )
Introduction \
(PʹΑΔจࣈྻஔਖ਼نදݱΛൈ͍ͯ̎ͭͷํ๏͕ఏڙ͞Ε͍ͯΔ 3FQMBDFJO(P
GVOD3FQMBDF GVOD 3FQMBDFS 3FQMBDF 3FQMBDFJO(P
จࣈྻஔ͕GVOD3FQMBDFͱGVOD 3FQMBDFS 3FQMBDFͷ̎ͭ͋Δͷ͔ʁ ෦ͷΞϧΰϦζϜσʔλߏͷҧ͍͔Βͳͥͭ͋Δͷ͔Λཧղ͠Α͏ɻ 3FQMBDFJO(P
func Replace \
࣮GVOD3FQMBDFTUSJOHT*OEFY͑͋͞ΕΈཱͯΕΔɻ GVOD3FQMBDF
TUSJOHT*OEFYTͷத͔ΒTVCTUS͕࠷ॳʹग़ݱ͢ΔҐஔΛฦ͢ GVOD3FQMBDF
ӈΤοδέʔεΛམͱͨ͠ίʔυɻ <>CZUFͱDPQZͱTUSJOHT*OEFYΛۦ ͍ͯ͠Δͷ͕Θ͔Δ GVOD3FQMBDF
GVOD3FQMBDF͕ಡΜͰ͍Δ TUSJOHT$PVOUTUSJOHT*OEFYʹґଘ ͍ͯ͠Δɻ GVOD3FQMBDF
ͭ·ΓGVOD3FQMBDFTUSJOHT*OEFY͑͋͞ΕΈཱͯΕΔɻ GVOD3FQMBDF
TUSJOHT*OEFY#SVUFGPSDF͘͠3BCJOLBSQͰTVCTUSͷҐஔΛಛఆ͍ͯ͠Δɻ ৄ͍͠ղઆڈͷΞυϕϯτΧϨϯμʔʹߘͨ͠ͷͰੋඇʂ IUUQTQPSJODPNCMPHHPSBCJOLBSQ GVOD3FQMBDF
࣮GVOD3FQMBDFTUSJOHT*OEFY͑͋͞ΕΈཱͯΕΔɻ TUSJOHT*OEFY࠷ճݺͿ ग़ݱճͷऔಘʹݺͼग़͢ ஔॲཧ࣌ʹͦͷճݺͼग़͢ TUSJOHT*OEFY#SVUFGPSDF͘͠3BCJOLBSQΞϧΰϦζϜΛར༻͍ͯ͠Δ GVOD3FQMBDFͷ·ͱΊ
func (*Replacer) Replace \
GVOD 3FQMBDFS 3FQMBDF͕ੜ͍͑ͯΔSͰ෦࣮ΛೖΕସ͑ΔͨΊʹSFQMBDFS JOUFSGBDFͰநԽ͍ͯ͠ΔɻPMEOFXޙͰৄ֬͘͠ೝ͠·͕͢ɺஔ͍ͨ͠จࣈྻͷϖ ΞͷϦετΛอ࣋͠·͢ɻ GVOD 3FQMBDFS 3FQMBDF
3FQMBDFSJOUFSGBDFΛ࣮͢Δίϯϙ δοτܕछྨɻVTFSʹ͞ΕͨҾʹ Αͬͯग़͚͠Δ GVOD 3FQMBDFS 3FQMBDF
ஔϖΞΛ֨ೲ͢ΔPMEOFXʹ࠷దͳSFQMBDFS͕બΕΔ GVOD 3FQMBDFS 3FQMBDF
ࠓճΑΓҰൠతͳSFQMBDFSͰ͋ΔHFOFSJD3FQMBDFSΛݟ͍ͯ͘ɻ෦ͰUSJF/PEFͳΔͷ͕͋Δɻ GVOD 3FQMBDFS 3FQMBDF
BY BZ CDCD Y YZ B C Y Y
Z DCD Z (PͰTUSJOHTύοέʔδͰஔʹ͏5SJF͕࣮͞Ε͍ͯΔ 5SJFߏங $PNQMFUF,FZ /PEF 5SJF
FF B C Y Y Z DCD Z (Pͷ5SJFͰ$PNQMFUF,FZʹஔઌͷจࣈྻΛ֨ೲ͍ͯ͠Δ
$PNQMFUF,FZ /PEF 5SJF BB CC DD EE
ԼهͷྫͰ3FQMBDFͷҾͷจࣈྻʮXSJUFT(PMBOHBOE $MBOHʯΛҰจࣈͣͭ5SJFΛͬͯݕূ͍ͯ͘͠ɻ5SJFͰூͬͯ ͍ͬͯҰக͠ͳ͔ͬͨ࣍ͷ-PPL6QͰඈ͢ɻ $ ( MBOH PMBOH $ (P
5SJF
5SJFΛMPPLVQ͍ͯ͠Δ 8SJUF4USJOHͰΘ͔Δ͕ɺෳͷஔ ϖΞ͕͋ͬͯରจࣈྻશମ ͷࠪճͰऴΘΔɺ 5SJF
Ҿ࣍ୈͰSFQMBDFSΛ͍͚͍ͯΔɻ HFOFSJD3FQMBDFS෦Ͱ5SJFΛར༻͍ͯ͠Δɻ ஔϦετ͕ෳ͋ͬͯରจࣈྻͷࠪճͰࡁΉ GVOD 3FQMBDFS 3FQMBDFͷ·ͱΊ
Conclusion \
෦ߏΛΔͱԾઆཱ͕ͯΕΔ ͜͜·Ͱͷ͕ࣝ͋ΕͲͪΒΛ͑ྑ͍͔ɺͲ͏͑ྑ͍ͷ͔ͷԾઆཱ͕ͯΕ·͢ɻ ஔϖΞ͕̍ͭͳΒ5SJFΛߏங͢Δίετ͕͋ΔͷͰ3FQMBDFͰेͰͳ͍͔ʁ ஔϖΞ͕ଟ͍ͳΒจࣈྻશମͷ͕ࠪճͰ͓ΘΔ3FQMBDFSΛ͏͖Ͱ ஔରͷจࣈྻ͕͍PSଟ͍ͱ5SJFߏஙʹ͕͔͔࣌ؒΔͷͰJOJUͰݺͿ͖Ͱʁ ରจࣈྻͷ͕͞ࢧతͳΒࠪҰճͷ3FQMBDFͷํ͕ྑ͍ʁ
GVOD3FQMBDFͱGVOD 3FQMBDFS 3FQMBDFͷ෦࣮Λগ͠ղઆͨ͠ ࣅͨײ͡ͷ͕ؔ͋ͬͯ෦࣮ΛݟΔͱશવҧ͏ɻ ෦ͷΞϧΰϦζϜσʔλߏ͕Θ͔ΔͱύϑΥʔϚϯεଌఆͷ݁Ռͷೲಘ͕ มΘΔɻ ·ͱΊ
Appendix \
QPOͷߟ͑ΔίʔυϦʔσΟϯάͷ5JQT ·ͣΤοδέʔεແࢹ ෳࡶͳ෦ؔ(P1MBZHSPVOEʹίϐϖͯ֓͠ܗΛัΒ͑Δ