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
Claude Codeはレガシー移行でどこまで使えるのか?
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ak2ie
February 22, 2026
Technology
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Claude Codeはレガシー移行でどこまで使えるのか?
ak2ie
February 22, 2026
More Decks by ak2ie
See All by ak2ie
DDDのエッセンスを取り入れたAIでの開発
ak2ie
0
130
SVG完全に理解してグラフ書いてみた
ak2ie
0
66
Go言語CLIツールで生産効率UPした話
ak2ie
0
130
Goではじめるバックエンド開発
ak2ie
0
86
Notion APIと学ぶNext.js
ak2ie
0
590
NestJSのはじめ方
ak2ie
0
170
フロントエンドでDDDやってみた
ak2ie
0
88
初心者がシビックテックに参加してみた
ak2ie
0
130
Firebase についてとことん語りたい
ak2ie
0
130
Other Decks in Technology
See All in Technology
Model Studio CLI × Token Plan
maigo999
0
190
小粒でもパワフルなJS Runtime Antjsについて
comamoca
0
110
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
3
25k
Genie Codeハンズオン応用編
taka_aki
0
130
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.7k
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
250
Apache Icebergインフラストラクチャ:ストレージ・カタログ・エンジンの選択肢とClouderaプラットフォームでの実装
tsugiyama
0
120
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
120
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
320
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
650
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
180
Android skills に学ぶ
kokiko
0
110
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
My Coaching Mixtape
mlcsv
0
250
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
370
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
GitHub's CSS Performance
jonrohan
1033
470k
Transcript
Claude Codeは レガシー移行でどこまで使えるのか? MySQL 4 → 8 実戦投入の記録
自己紹介 秋田 大介 株式会社メンバーズ Webエンジニア 2
今回のミッション MySQL 4 → 8 へDBのみ移行 MySQL 4.0 は 2003年リリース(約23年前)
Movable Type 3系 Perl製の古いプラグインあり ボランティア団体のホームページ 業務外の対応 単純移行 → 動かない 3
Claude Codeの使い方 DB移行不具合の深層調査 4
プラグインが動かない Movable TypeのRightFieldsプラグイン (記事に独自項目を追加できる。WordPressでいうカスタムフィールド) データ移行後、拡張項目が表示されなくなった SQLインポートは正常。データ or ロジックの問題? 5
原因がわからない RightFieldsのロジックが不明 Perlも書いたことない Movable Typeも詳しくない Claude Codeで検証 6
Claude Codeと回した検証ループ 1. 仮説を立てる — 「MySQL側の文字変換?」 「Perl側?」 「データ自体?」 2. 検証スクリプトを書かせる
— Perlで診断CGIを作成 3. 実行結果を渡して分析 — 結果をファイル出力して分析 4. 仮説を排除して次へ — 仮説を潰し、原因の層を掘り下げ 7
Step 1: 仮説を立てる MySQL 4 → 8 で日本語を含むカラムだけ壊れている Claude Codeの仮説:
「MySQL 8.0が文字コード変換しているのではないか」 BLOBデータがutf8mb4 として再解釈され、バイナリが壊れた? 状況を伝えるだけで、仮説を立ててくれる 8
Step 2: 検証スクリプトを書かせる 「この仮説を検証して」と指示 LENGTH() (バイト長)と CHAR_LENGTH() (文字長)を比較 文字変換が起きていれば値にズレが 出るはず
# MySQL側のLENGTH vs CHAR_LENGTH比較 my $sth = $dbh->prepare( "SELECT plugindata_id, LENGTH(plugindata_data) as byte_len, CHAR_LENGTH(plugindata_data) as char_len FROM mt_plugindata WHERE plugindata_plugin ='rightfields'" ); $sth->execute; while (my $r = $sth->fetchrow_hashref) { my $match = ($r->{byte_len} == $r->{char_len}) ? "SAME" : "DIFFERENT!"; } 9
Step 3: 実行結果を渡して分析 検証スクリプトの出力を @output.txt で渡す 結果:全レコードで SAME Claude Codeの分析:
「MySQL側では文字変換は起きてい ない」 === MySQL LENGTH() vs CHAR_LENGTH() === ID=1 byte=16623 char=16623 => SAME ID=2 byte=1966 char=1966 => SAME ID=3 byte=8939 char=8939 => SAME ID=4 byte=820 char=820 => SAME : (全17レコード SAME) 10
Step 4: 仮説を排除して次へ MySQL文字変換の仮説を排除 Claude Codeが次の仮説を提案: 「Perl側(DBD::mysql)がUTF-8変換しているのでは?」 → このループを繰り返して8つの仮説を潰し、根本原因に到達 11
根本原因 phpMyAdminがBLOBを文字列リテラルでエクスポート → バイナリの0x82 が UTF-8検証でU+FFFD(置換文字)に化けた 正しいパック長: 00 00 01
82 → 386 ダンプ内: 00 00 01 EF BF BD → 495 と誤読 DBeaverでHEXリテラル形式(0x534552... )でエクスポート → 文字変換の影響を受けず、正常にインポートできた 12
結果と学び 感覚では約 15時間 削減できた 特に助かったのは 仮説 → 検証 → 分析
→ 次のアクション提示のループを回してくれたこと 仮説を検証・排除し、原因を絞り込んでくれた 検証スクリプトもPerlで書いてくれた Claudeは魔法ではない。でも、 「詰まる時間」を劇的に減らしてくれる 13
まとめ レガシー移行は 知識量勝負 になりがち Claude Codeは 「仮説の質」と「検証の速度」 で戦わせてくれる コードを書くだけでなく、検証・分析・次のアクション提案まで任せられる 14