Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20260826_MEET STAGE Tokyo vol.1
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
saku
August 26, 2026
87
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20260826_MEET STAGE Tokyo vol.1
saku
August 26, 2026
More Decks by saku
See All by saku
20260910_推しゲーLT
saku0719
0
30
20260715_新卒N年目のLT交流会!最近沼ったことをシェアしよう!
saku0719
0
83
2026.06 LoGeek LT会
saku0719
0
26
20250930_LoGeek_LT会.pdf
saku0719
0
15
20251216_LoGeek_LT会.pdf
saku0719
0
24
20250617_LoGeek_LT会
saku0719
0
29
20250301_CircLeT
saku0719
0
61
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
ラッコキーワード サービス紹介資料
rakko
1
5.3M
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
エンジニアに許された特別な時間の終わり
watany
109
250k
Tell your own story through comics
letsgokoyo
1
1.1k
Transcript
diffを眺めていたら なんか見たことあるやつがいた 20260826 MEET STAGE in Tokyo vol.1
自己紹介 さくぱん(saku, みっち〜) @39Panda_3939 大学・学年 日本大学大学院 修士1年 技術 TS, React,
Python, Codex 趣味・特技 アカペラ・アプリ開発・Notion・AtCoder 所属 情報研究会LoGeek / NxTEND 関東事業部 1
小言 • もっと初心者の人がたくさんいるイベントだと思ってた... • なんか、知り合い同士多くね?アウェー感... 2
AtCoderとは • 競技プログラミング(競プロ) • 数学やプログラミングの知識を使って 問題を解き、その早さを競うコンテスト こんな問題が出る 3
ある日こんなことが... 4
このdiff なんでこんな分かれ方してるんだ? startTicksという変数の下にtransportという変数を追加しているが... 元の「startTicksの末尾の閉じカッコ」が diffでは「transportの末尾の閉じカッコ」として扱われている...? diffとは、2つのファイルの違い(差分)を表示してくれるコマンドのこと 5
diffの仕組みってどうなってるんだ シラベテミヨ 6
LCSとSESってアルゴリズムが使われてるらしい... 7
diffコマンドのアルゴリズム 主に2つアルゴリズムが使われている • LCS(最長共通部分列, Longest Common Subsequence) • ある2つの文字列において、最も長い共通の部分列のこと •
(typescript, hyperlink)の場合、「yperi」となる hyperlink)の場合 • SES(最短編集スクリプト, Shortest Edit Script) • 2つの文字列(データ)を一致させるために必要となる最小の 「挿入」「削除」「置換」の手順 8
LCSのアルゴリズムの中身 DP(動的計画法)で下記の表を埋めていく 文字列1: typescript 文字列2:hyperlink としたときの、アルゴリズムの遷移図 (x, y):文字列1のx文字目までと文字列2のy文字目までを見たときの最長の共通部分列 初期化 左上の値+(文字が一致)?1
: 0 結果 9
diffコマンドのアルゴリズム LCS(最長共通部分列, Longest Common Subsequence) • ある2つの文字列において、最も長い共通の部分列のこと これって... 10
新たな学び • SES(最短編集スクリプト, Shortest Edit Script) • 2つの文字列(データ)を一致させるために必要となる最小の 「挿入」「削除」「置換」の手順 •
git diffのオプション • myers: • 標準 • minimal: • 多少時間がかかっても、できる限り差分(追加・削除の行数)が最も少なくなる • patience: • 人間が見て読みやすい差分を出力 • Histogram: • patienceアルゴリズムをさらに改良し、処理速度を高速化したもの 11
まとめ • AtCoderとかから学ぶアルゴリズム知識 • 資格試験から得るコンピュータの構造とか仕組み • 開発してて得る現場で使われている技術や知識 単体で学ぶだけでも楽しいけど... 現実世界でどう使われてるのかってのが知れると 知識がつながってまた別の楽しさが...!
12
参考資料 • アルゴ式 Tech Blog「git の差分検出アルゴリズムを調査した話」 • https://algo-method.hatenablog.com/entry/2025/12/17/211645 • gihyo.jp「diffの動作原理を知る
~どのようにして差分を導き出すのか」 • https://gihyo.jp/dev/column/01/prog/2011/diff_sd200906 • Zenn「diffコマンドのしくみ、知っていますか?」 • https://zenn.dev/elith/articles/7a78b239929e8d 13