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
リファクタリング ハーネス
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kanayannet
July 18, 2026
Programming
96
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リファクタリング ハーネス
ハーネスエンジニアリングで過去のフリーソフトをリファクタリングしてみました。
kanayannet
July 18, 2026
More Decks by kanayannet
See All by kanayannet
厳密な定義
kanayannet
0
120
Mcp Training
kanayannet
0
240
MCP で「こいつ動くぞ」
kanayannet
0
160
無関心の谷
kanayannet
0
1.3k
生成AIの使いどころ
kanayannet
0
260
github copilot と 心理的安全性
kanayannet
0
290
FW と ライブラリ の考え方
kanayannet
0
280
TDDと今まで
kanayannet
0
720
個人開発 稼げなくてもいいアプリ
kanayannet
0
610
Other Decks in Programming
See All in Programming
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
150
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
470
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
420
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
540
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.7k
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
1
250
Google Apps Script で Ruby を動かす
kawahara
0
130
「人を評価する AI」の設計と実装
ryoyanara
0
180
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
Foundation Models frameworkで画像分析
ryodeveloper
1
600
霧の中の代数的エフェクト
funnyycat
1
480
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
480
Featured
See All Featured
Abbi's Birthday
coloredviolet
3
9.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Cult of Friendly URLs
andyhume
79
7k
Writing Fast Ruby
sferik
630
63k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Site-Speed That Sticks
csswizardry
13
1.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
@kanayannet リファクタリング ハーネス Gunma.web #60
前提1 2007年くらいに ruby の勉強がてらに配布したblogがあった ruby 都度コンパイル型CGI フリーソフト 今時にしたい ただし、自分でコードを打ちたくない
どんなもん? https://github.com/kanayannet/Weblog http://localhost:8888/cgi-bin/Weblog/weblog.rb
前提2 「ハーネス エンジニアリング」とやらがある 「仕様駆動開発」との違いがイマイチ解ってない
そうだ こういう時こそ、勉強がてらにフリーソフトを修正してみよう ハーネスエンジニアリングで
まずは調べる
成果物 rule plan まずはここからだな。
何でやろうか? 前回、cursor をみて良さそうだったので、cursor でやるか ハズレはないだろう。
plan, rule を作るか? README.md に要件定義をざっくりと定義して... AI に 作らせた(雛形を期待)
None
ざっくりと要約すると... 横幅広げたい オレオレ記法やめたい markdown で書きたい 軽量FW(sinatra)にしたい RDB まではやりすぎ textファイルのまま trackback
いらない...orz
次の案内も出してくれる すげ〜
作られた plan どんなもん? https://github.com/kanayannet/Weblog/blob/harness_test/plan.md
矛盾があると指摘してくれる うっかり trackback 要らない旨を書き忘れた
なかなかいい感じ..だが
問題発生
何をやっても pro plan 誘導...orz
当日はとある画像 大人は嫌いだね! 無料で使わせる気なんてない癖に!
仕方なく... 課金(月額 4000円弱くらい)
課金したので..色々用心するように 初期は composer 2.5 だった 固定にしたら高そうだし... AI model 色々迷ったけど..
Cursor の auto を発見 これがいんじゃね? Balanced quality and speed とある
使えるようになったので 気を取り直してnext
マイルストーンも作ってくれた
M0 穴埋めのクロスチェックもAIに
無自覚にやっていたけど
比較的うまくいく やり方 ステップを細かくして... 人とコミュニケーションを取るのに苦にならない粒と同じ 確認をまずはAIにする(チェックさせる) AI と認識合わせ 漏れがAIと共通認識であると確認 AI に直させる
-> こっちでレビュー
こんなアルゴリズム while NG NG が消えるまで直させる next step
Red -> Green -> Refactoring... まるで...
頭の使い方が TDD
お互い慣れてくると... 多少アバウトでもやってくれる
リアル会場ではとある画像 よしなに...
注意 実際は、それなりに言語化して「よしなに」と言っても 勘違いしないくらいには定義してますw routing はこっち(人間)で入力 template file名を routing の命名に沿って入力させた
漏れがないか?もクロスチェック
ご丁寧に対応表も用意してくれる
M0 finish M0 は要件定義 や 用語など決める plan, rule を仕上げるステージ plan
や rule を 10回以上書き直している。 正直ここが一番長かった。 「すぐコード」に行きたがる方や「すぐ動くものが見たい」方はキツイかも..
M1 に進む... 無言の修正...orz 終わったとか次の指示がない..謎
エラー 終わったっぽいので起動するが...
None
さっきのは何だったんだ(謎) 今度は直してくれて、案内が出た
M1 は不具合との戦い
どうにか不具合の嵐を抜けて...M2 へ
実は...ここから先は M1 のような不具合ラッシュはないです。 M2 予想: M1 でかなり癖を掴んだんじゃないのか?
これだけ M2 どのくらいで済んだか?
M2 finish
不具合と思いきやこっちの見落とし M3 もあっさり完了
M4-M5 もあっさり完了して...
動くようになったけど?
要らないファイルがたくさんある
Git の調整も 削除もAIにやってもらった
完成 http://localhost:9292/
管理画面内 ボタンの歯抜けはあるものの markdown で動く状態w
やってみて感想 この規模感のフリーソフトでも、plan, rule はまあまあ長かった 不具合も普通に出るし、直すのもまあまあかかる 人よりは短めだったが...
何年も使ってきた「秘伝のタレ」 が多いシステムはどうなるか? クロスチェックが抜けたら..とんでもない方向に行きそう。 偽真な情報を見抜けるか?が鍵 Hallucination
予想: 規模が大きい場合 全部を一気に入れること自体無理ゲーでは? 人が plan を把握 input できなくなる認知限界が来そう サーバリソース管理、特殊処理を考慮してくれなそう あえて、汚く書かざるをえなかった処理
-> 負荷対策 更新系バッチ処理(常時更新は負荷がかかるので) -> 見落としそう
人(AIも)は見落とすし、ミスをする と深く気づいている人は...今回の最初期のように...
「分解」して進めるのでは? サービスの区切れ目 疎結合で済みそうな箇所の特定 マイクロサービス化 適切に切る時の一つの手法 やりすぎてもよくないが... 狭間にある業務知識が増える transaction 費用++
コミュニケーション ハッキリと表面化してくる コーディングで苦戦するステージは少なくなる 苦戦するステージが移動する ドメイン(業務)知識を得る場所に すなわちコミュニケーション
まとめ 言葉による定義を...少しずつ進めることが大事 一気にやると人間が付いていけない 定義自体から少しずつ 感覚は... TDD に近いが、もう少し付け加えると...
TDD の進め方で ペアプロ・レビューしてる気分
人との違いを言うと... 高速で読み込んで 高速で理解して 高速で書く 高速で直す input 外は察してくれない
人と同じ部分 勘違いある 実装ミスもある
少しづつ、インクリメンタルに...
まとめ2 AI を使いこなせる人になるには? AI を使いこなせる人を増やすには?
結局「受け身」の開発は向かない ここは今までと変わらなく見える 言われたことだけ実装... これだと厳しい
今までよりも...
レビュー・テストのつまずきが目立つ コーディングのスピード感より 要件定義(ゴール)がボヤけていると
ドメイン(業務)知識を得るために コミュニケーション重要
話を元に戻して...
折角なので harness_test branch で切ってup https://github.com/kanayannet/Weblog/tree/harness_test
リアル会場ではとある画像 もっと「よしなに」やりたくなってきたw
ご清聴ありがとうございました。