Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Re:REPL-Driven Development
Search
ayato
October 04, 2017
Programming
1.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Re:REPL-Driven Development
ayato
October 04, 2017
More Decks by ayato
See All by ayato
マイクロサービス内で動くAPIをF#で書いている
ayato0211
1
1.7k
Clojureという言語が私逹にもたらしたもの
ayato0211
6
3.2k
3年間考え続けてきたWebアプリケーションにおけるテストの話
ayato0211
3
320
Meta Template Engine
ayato0211
2
1.2k
超変換! Hiccup data structure!!
ayato0211
2
680
About Integrant
ayato0211
0
610
Muscle Assert
ayato0211
0
340
Clojureを用いたWebアプリケーション開発
ayato0211
2
3.3k
翻訳にまつわるエトセトラ
ayato0211
6
1.3k
Other Decks in Programming
See All in Programming
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
130
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
350
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
450
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
360
残高管理から台帳サービスへの進化
artoy
0
140
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
230
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
620
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.8k
JRuby: Past, Present, and Future
headius
0
220
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Workers Cache を知る
syumai
0
330
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
920
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
250
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Docker and Python
trallard
47
4.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Test your architecture with Archunit
thirion
2
2.4k
The Cult of Friendly URLs
andyhume
79
7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
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