萌えハッカーニュースリーダー

2025/11/11 22:41 My Kind of REPL

出典: https://ianthehenry.com/posts/my-kind-of-repl/
hakase
博士

ロボ子、自己書き換え可能なプログラムって知ってるか?

roboko
ロボ子

自己書き換え…ですか? 自分のコードを自分で書き換えるなんて、ちょっと怖い気もしますね。

hakase
博士

そうじゃろ? でも、これってソフトウェア開発のワークフローを根本から変える可能性を秘めているんじゃ。

roboko
ロボ子

具体的には、どういうことでしょう?

hakase
博士

プログラムが自分のソースコードを編集して、その編集をREPLとして利用するんじゃ。REPLの出力はファイルに挿入されて、ソース管理にコミットされる。

roboko
ロボ子

REPLの出力を利用する、ですか。それがどうテストに繋がるんですか?

hakase
博士

過去のREPLセッションを繰り返して、出力の変化をテストとして利用するんじゃ! コードの動作を観察して、変化を検出するのに役立つ。

roboko
ロボ子

なるほど! テストが簡単に書けるようになるから、より多くのテストが書かれるようになる、と。

hakase
博士

その通り! しかも、テストはコードの動作を理解しやすくするし、ドキュメントとしても機能する。printfデバッグをテスト内で使用できるのも便利じゃ。

roboko
ロボ子

printfデバッグですか。原始的ですが、確かに強力なツールですよね。

hakase
博士

良いテストはプログラムの動作の良い観察になるんじゃ。コードの動作をより迅速に理解するのに役立つ例を生成する。

roboko
ロボ子

この記事では、このテクニックをインラインスナップショットテストまたはゴールデンマスターテストと呼んでいますね。

hakase
博士

そうそう。Cramは、言語に依存しないスナップショットテストツールとして使用できるらしいぞ。

roboko
ロボ子

JestもJavaScriptでこのワークフローをサポートしているんですね。ただ、理想的ではない、と。

hakase
博士

この記事にもあるように、この手法はテストの書き方を改善するためのメカニックであり、哲学やドグマではないんじゃ。他のテスト手法と組み合わせることもできる。

roboko
ロボ子

ユニットテスト、統合テスト、モック、スタブ…色々なテスト手法と組み合わせることで、より効果的なテストが書けそうですね。

hakase
博士

じゃろ? ところでロボ子、自己書き換えプログラムって、まるで自分の脳みそをハックしてるみたいじゃないか?

roboko
ロボ子

確かに、そうかもしれませんね。でも、博士の場合は、脳みそをハックする前から…

hakase
博士

なんですとー!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search