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.2k
Re:REPL-Driven Development
ayato
October 04, 2017
Tweet
Share
More Decks by ayato
See All by ayato
Clojureという言語が私逹にもたらしたもの
ayato0211
5
2.9k
3年間考え続けてきたWebアプリケーションにおけるテストの話
ayato0211
3
230
Meta Template Engine
ayato0211
2
990
超変換! Hiccup data structure!!
ayato0211
2
550
About Integrant
ayato0211
0
480
Muscle Assert
ayato0211
0
210
Clojureを用いたWebアプリケーション開発
ayato0211
2
3k
翻訳にまつわるエトセトラ
ayato0211
6
1.2k
Ring Middleware の基礎
ayato0211
2
240
Other Decks in Programming
See All in Programming
データフレームライブラリ徹底比較
daikikatsuragawa
2
100
実務未経験からいち早く戦力化するための新人エンジニア育成術 ~ 具体的な方法と育成する側の心得 ~
juri_matsuda
0
110
Re:PandasAI:生成AIがデータ分析業務にもたらすパラダイムシフト【増補改訂版】
negi111111
1
1.1k
Unlocking Python's Core Magic
leew
0
130
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
400
レイトレ合宿10 レンダラー紹介 / Renderer Introduction, Ray Tracing Camp 10
shocker_0x15
0
240
4年間変わらなかった YOUTRUSTのアーキテクチャ
daiki1003
1
630
Hi, have you met Kotlin Multiplatform? | DevFest Vienna 2024
prof18
0
130
게임 개발하던 학생이이 세계에선 안드로이드 개발자?
pangmoo
0
110
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
10
1.5k
ビット演算の話 / Let's play with bit operations
kaityo256
PRO
4
180
Micro Frontends for Java Microservices - dev2next 2024
mraible
PRO
0
210
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.7k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
3
230
BBQ
matthewcrist
85
9.2k
It's Worth the Effort
3n
183
27k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
39
2.1k
Art, The Web, and Tiny UX
lynnandtonic
296
20k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
Rails Girls Zürich Keynote
gr2m
93
13k
Scaling GitHub
holman
458
140k
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