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
Hatena Engineer Seminar 37 jj1uzh
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
jj1uzh
June 30, 2026
Technology
4.5k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hatena Engineer Seminar 37 jj1uzh
https://hatena.connpass.com/event/397502/
jj1uzh
June 30, 2026
More Decks by jj1uzh
See All by jj1uzh
Kotlinコンテキストパラメータをアプリ開発で使う夢を見る
jj1uzh
0
67
Other Decks in Technology
See All in Technology
1.5時間を無駄にして学んだwsl2におけるaptとsnapの選択と仕組み
yosaka0123
0
480
デザイナーとPdMが自分でデプロイする ― Amplify Hosting の PR プレビューで回す仮説検証
kakehashi
PRO
2
100
Introduction to Bill One Development Engineer
sansan33
PRO
0
480
Does an AI Watermark Survive Translation?
machinetranslation
0
510
VPCでもFloatingIPを使いたいんだ
y_kotani
1
140
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
20k
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
2
1.5k
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
4
1k
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
510
AIとペアプロを始める。人との会話が消えていく。なんだか寂しい。 / The Conversations We Lost to AI
honyanya
0
110
指示待ちから変化に応じるClaude Codeへ!~環境からAgentへの帰り道を作る~
gotalab555
9
1.8k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
520
Done Done
chrislema
186
16k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
64k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
The Language of Interfaces
destraynor
162
27k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Product Roadmaps are Hard
iamctodd
55
12k
What's in a price? How to price your products and services
michaelherold
247
13k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Transcript
はてな匿名ダイアリーの すべて、お話しします…… id:jj1uzh 2026-06-30 Hatena Engineer Seminar #37 1
id:jj1uzh • サービスプラット フォームチーム • アプリケーション エンジニア ◦ WebとAndroid •
新卒3年目 2
話すこと • はてな匿名ダイアリー(anond)の アプリケーションをPerlからGoに移植した ◦ 背景、成果、方法、学び 3 はてな匿名ダイアリーのすべて、お話しします……
背景/anondについて • 2006年サービス開始のラボサービス ◦ anond.hatelabo.jp • Perl(httpd/mod_perl) • 独自Webフレームワーク 4
はてな匿名ダイアリーのすべて、お話しします……
背景/anondについて • 2006年サービス開始のラボサービス ◦ anond.hatelabo.jp • Perl(httpd/mod_perl) • 独自Webフレームワーク 5
はてな匿名ダイアリーのすべて、お話しします…… • アプリケーションに手を入れづらい • Perl・ライブラリのバージョンアップなど メンテナンスに時間を割きづらい
背景/コーディングエージェントの進化 6 はてな匿名ダイアリーのすべて、お話しします…… • アプリケーションの移植は 現実的では **なかった** • コーディングエージェントの進化で 状況が変わった
7 Goに移植しよう!
方針 8 はてな匿名ダイアリーのすべて、お話しします…… • SQLクエリ、ロジックは基本的に変更なし • 外観もできるだけ維持
方針/技術選定 9 はてな匿名ダイアリーのすべて、お話しします…… • Perl ◦ httpd/mod_perl・独自Webフレームワーク ◦ 独自ORM •
Go ◦ Echo ◦ sqlc • アプリケーション以外はそのまま
方針/コーディングエージェント 10 はてな匿名ダイアリーのすべて、お話しします…… • Claude Codeで統一 ◦ それまでは、チーム内でコーディングエージェントの 使い方がバラバラだった ◦
PRのレビューや簡単なタスクにはCopilotも
11 Goに移植した
生まれ変わったanondをご覧ください 12 はてな匿名ダイアリーのすべて、お話しします……
生まれ変わったanondをご覧ください 13 はてな匿名ダイアリーのすべて、お話しします……
移植サマリー 14 はてな匿名ダイアリーのすべて、お話しします…… • Perl 約22,000行 ⇒ Go 約15,000行 ◦
Goはテスト込みで 約25,000行 • およそ 2人・2か月(開始から完全切替まで)
移植サマリー/開発・実行環境の改善 15 はてな匿名ダイアリーのすべて、お話しします…… • ビルド時間 ◦ コンテナイメージ作成のフローがキャッシュなしで 10分 ⇒ 2-3分に短縮
移植サマリー/開発・実行環境の改善 16 はてな匿名ダイアリーのすべて、お話しします…… • 実行環境・パフォーマンス ◦ レスポンス時間: 約150ms ⇒ 約50ms
◦ コンテナメモリ使用量: 約1.8GB ⇒ 約40MB ▪ コンテナ数も減少 ◦ ※Perl vs Goというよりはアーキテクチャの違い
移植サマリー/Perl版からあった不具合の解消 • LaTeX記法・コードブロック • カテゴリ・キーワードページ 17 はてな匿名ダイアリーのすべて、お話しします……
18 どうやった
移植HOWDUNNIT/流れ • Perlコード調査 • Project・Issue作成 • 実装・テスト・動作確認 19 はてな匿名ダイアリーのすべて、お話しします……
移植HOWDUNNIT/Perlコード調査 • 「アプリケーションの機能をまとめて。...」 • 「エンドポイントごとの詳細をまとめて。...」 20 はてな匿名ダイアリーのすべて、お話しします……
移植HOWDUNNIT/Perlコード調査 • 「アプリケーションの機能をまとめて。...」 • 「エンドポイントごとの詳細をまとめて。...」 21 はてな匿名ダイアリーのすべて、お話しします…… • 独自フレームワークでもOK ◦
「設定より規則」寄り & 継承を駆使 ◦ ファイルの行き来が多い ◦ 規則さえ分かればAIには簡単
移植HOWDUNNIT/Issue作成 • Issueを作ってProjectに 22 はてな匿名ダイアリーのすべて、お話しします……
移植HOWDUNNIT/実装 • Claude Codeで実装 • コーディング時のスキル・プラグインは? ◦ ⇒ 特になし ◦
素の状態でじゅうぶん賢い ◦ 決定的な方法でコード品質を担保する 23 はてな匿名ダイアリーのすべて、お話しします……
移植HOWDUNNIT/実装 • Claude Codeで実装 • 決定的な方法でコード品質を担保する 24 はてな匿名ダイアリーのすべて、お話しします…… • Lint
◦ golangci-lint • テスト ◦ E2EもAIに作ってもらう
移植HOWDUNNIT/レビュー • 書いた(書かせた)人間のチェック • GitHub上のCopilotレビュー • 別の人間のレビュー 25 はてな匿名ダイアリーのすべて、お話しします……
移植HOWDUNNIT/テスト・動作確認 26 はてな匿名ダイアリーのすべて、お話しします…… • E2E ◦ testcontainers • Visual Regression
Testing ◦ Perl・Go両方を動かし、 playwright-cliで要素・スクショ比較 • 脆弱性チェック ◦ 匿名性とXSSを重点的に
27 学び
学び • VRTは便利だけど…… • 目視確認・テスト条件の網羅性不足があった ◦ タスク分解→AI実装→レビューの繰り返しのため、 全体像の把握がおろそかになりがち ◦ 「エントリ文章内の記号が二重でエスケープされる」
◦ 「モバイル表示は2ページ目以降で 人気エントリセクションを表示しない、の見逃し」 28 はてな匿名ダイアリーのすべて、お話しします……
学び • コード外の見逃し ◦ ログ形式が変わったことで、 ログクエリによる集計が失敗 29 はてな匿名ダイアリーのすべて、お話しします……
30 まとめ
まとめ • コーディングエージェントの進化で、 レガシーコードの移植が現実的になった • 決定的な品質担保(Lint・テスト)で 非決定的なAIがより活きてくる • 目視確認、テストの作り方は依然重要 31
はてな匿名ダイアリーのすべて、お話しします……
32 ご清聴 ありがとうございます