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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
170
Bet AI Day 2026丨AIを「使う」から、AIが「働く」へ ― LayerXが進める「組織AI」の社会実装
layerx
PRO
2
1.3k
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
1
710
Does an AI Watermark Survive Translation?
machinetranslation
0
510
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
130
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
370
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
20k
VPCでもFloatingIPを使いたいんだ
y_kotani
1
140
分割40%キーボードにスムーズに入門するには
hoto17296
1
210
Introduction to Bill One Development Engineer
sansan33
PRO
0
480
顧客の要望は2次情報である 〜アンテナを張るFDEの構造論〜
noriakioji
5
1.1k
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
490
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
560
Technical Leadership for Architectural Decision Making
baasie
3
550
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
430
Docker and Python
trallard
47
4.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Six Lessons from altMBA
skipperchong
29
4.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
Done Done
chrislema
186
16k
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 ご清聴 ありがとうございます