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
Re:REPL-Driven Development
Search
ayato
October 04, 2017
Programming
3
1.3k
Re:REPL-Driven Development
ayato
October 04, 2017
Tweet
Share
More Decks by ayato
See All by ayato
マイクロサービス内で動くAPIをF#で書いている
ayato0211
1
740
Clojureという言語が私逹にもたらしたもの
ayato0211
6
3k
3年間考え続けてきたWebアプリケーションにおけるテストの話
ayato0211
3
260
Meta Template Engine
ayato0211
2
1.1k
超変換! Hiccup data structure!!
ayato0211
2
600
About Integrant
ayato0211
0
550
Muscle Assert
ayato0211
0
260
Clojureを用いたWebアプリケーション開発
ayato0211
2
3.1k
翻訳にまつわるエトセトラ
ayato0211
6
1.2k
Other Decks in Programming
See All in Programming
NPOでのDevinの活用
codeforeveryone
0
910
PipeCDのプラグイン化で目指すところ
warashi
1
310
ソフトウェア設計とAI技術の活用
masuda220
PRO
22
5.8k
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
910
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
410
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
480
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
530
コーディングエージェント概観(2025/07)
itsuki_t88
0
100
PHPカンファレンス関西2025 基調講演
sugimotokei
5
700
RailsGirls IZUMO スポンサーLT
16bitidol
0
200
オンコール⼊⾨〜ページャーが鳴る前に、あなたが備えられること〜 / Before The Pager Rings
yktakaha4
2
1k
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
22k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
YesSQL, Process and Tooling at Scale
rocio
173
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Site-Speed That Sticks
csswizardry
10
710
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
It's Worth the Effort
3n
185
28k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Transcript
Re:REPL-DRIVEN DEVELOPMENT ڭཆͱͯ͠ͷClojure
あやぴー > ayato-p@GitHub > Cybozu Startups, inc. > ClojureでWeb開発している >
Emacsで色々する人種 > ネオ老害道 3級
改めてREPLとは
REPLとは > れぷる > Read-Eval-Print Loop > インタラクティブにコードを試せるツール > 対話型評価環境
> インタプリタではない > モダンなプログラミング言語は標準搭載 > Java9でJShellを搭載!
e.g.) Ruby REPL irb(main):001:0> def hello irb(main):002:1> "Hello, world" irb(main):003:1>
end => nil irb(main):004:0> hello => "Hello, world" READ&EVAL
e.g.) Ruby REPL irb(main):001:0> def hello irb(main):002:1> "Hello, world" irb(main):003:1>
end => nil irb(main):004:0> hello => "Hello, world" PRINT
e.g.) Ruby REPL irb(main):001:0> def hello irb(main):002:1> "Hello, world" irb(main):003:1>
end => nil irb(main):004:0> hello => "Hello, world" LOOP
Clojureの場合
Clojureの特徴 > Dynamic Development > Functional Programming > Lisp >
Runtime Polymorphism > Concurrent Programming > JVM Hosted
Clojureの特徴 > Dynamic Development > Functional Programming > Lisp >
Runtime Polymorphism > Concurrent Programming > JVM Hosted
ClojureのREPL > Network REPLやBrowser REPLを含む > Clojureコンパイラの機能を100%使える > doc, sourceなどの補助関数が最初から提供されている
> REPL上での評価はファイルを読み込むのと同じ > エディタと統合しやすい作りになっている
違い > ワークフローがファイルベースではなくなる > 変更->評価、の繰り返し > 読み込んだ環境の全てをREPLから使える > ライブラリなどもREPLから再定義可能 >
REPLを拡張することが容易 > tools.namespaceなど > プロダクション環境もREPLから触れる
REPL駆動開発
Clojureのアドバンテージ > 素早いフィードバック > フィードバックループが速く回せる > 実行中のプログラムに影響を与えることができる > 知ることもできる
エディタとの統合 > REPLに直接タイプしない > ファイルに書いてフォームをREPLに送る > いつでも保存できる
ワークフロー Save Auto Compile Reload Evaluation Reload 一般的なプログラミング言語 Clojure
REPLの拡張容易性 > デフォルトでもdocなどの便利関数がある > tools.namespaceなどの素晴らしいライブラリも > 自分で拡張することもできる (e.g. Reloaded template)
環境を変更/探索する > ファイルとREPLの境目がない
Q&A
Q. TDDでいいのでは > TDDより高速にフィードバックを得ることができる > より小さい単位で評価できる > そもそもTDDと相対する考え方ではない
Q. HotDeployと何が違う > Web開発に限らない > REPLから実行したいパートだけを評価して実行できる > ワークフローがファイルベースではない
まとめ
まとめ > REPLはClojureの主要プログラミングインターフェース > REPLで開発を高速に!便利に! > Clojureはいいぞ
Enjoy Clojure