る AIに同じ仕様書を渡したのに、毎回ちがうコードが出る 仕 様 ( 自 然 言 語 ) 100円未満の経費で「免税」なら「税フラグ」を出力、それ以外は「空欄」。 100円を超える場合はそれ以外のとき「ハイフン」を出力。 1 回 目 の c l a u d e c o d e if expense.amount < 100 expense.tax_exempt ? expense.tax_flag : "" else "-" end 2 回 目 の c l a u d e c o d e def tax_flag_output(expense) if expense[:amount] < 100 expense[:tax_exempt] ? expense[:tax_flag] : "" else "-" end end ロジックは同じ。でも実装スタイルが毎回ブレる。レビューで疲れるやつ。
A L I T Y 仕様の書き手は非エンジニア。学習コストで詰む Ruby 前提にした瞬間、結局「学習コスト問題」を先送りしているだけ 1 F A C T 入力が厳密なほど、AI 出力は一貫する 曖昧な仕様は出力をブレさせる / 詳細なプロンプトほど正確なコードに (先行研究より) 2 I D E A じゃあプログラミング言語で書かせれば完璧 Ruby なら学習障壁も低めで、型宣言も不要、日本語との親和性もあるし... 「厳密さ」 と 「ゆるさ」、両方ほしい。
N ( 擬 似コ ー ド混 じ り ) x = 10 もし x が 5 より大きい場合 x を出力せよ end O U T ( 実 行可 能 な R u b y ) x = 10 if x > 5 puts x end 使 い方 require "gijiby" result = Gijiby.compile(code) eval(result) Ruby で書ける人はそのまま、書けない人はふんわり。
for i from 1 to 15 if i is divisible by 15 say "FizzBuzz" elsif i is divisible by 3 say "Fizz" elsif i is divisible by 5 say "Buzz" else say i end end 実 践 以下のコードを変換してみる! 生 成 見 込 コ ー ド (1..15).each do |i| if i % 15 == 0 puts "FizzBuzz" elsif i % 3 == 0 puts "Fizz" elsif i % 5 == 0 puts "Buzz" else puts i end end
毎回バイト単位で同じ Ruby 55 / 55 全ケース一致 11 ケース × 5 回 独立実行 バイト単位で完全一致 平 均 B L E U - 4 ( 5 回 ) 0.9332 標準偏差 0.0000 実 行 一 致 ( e x e c - m a t c h ) 55 / 55 全 run × case L L M 不 要 で 変 換 完 了 4 / 11 前処理だけで <1秒 「再実行したら結果が変わるかも…」をひとまず忘れられるやつになった