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
490
Clojureという言語が私逹にもたらしたもの
ayato0211
6
3k
3年間考え続けてきたWebアプリケーションにおけるテストの話
ayato0211
3
250
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
PicoRuby on Rails
makicamel
2
120
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
270
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
170
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
370
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
330
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
150
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
710
Goで作る、開発・CI環境
sin392
0
190
GraphRAGの仕組みまるわかり
tosuri13
8
510
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
1
330
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
690
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
GitHub's CSS Performance
jonrohan
1031
460k
Rails Girls Zürich Keynote
gr2m
94
14k
The World Runs on Bad Software
bkeepers
PRO
69
11k
A Tale of Four Properties
chriscoyier
160
23k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Designing for Performance
lara
609
69k
GraphQLとの向き合い方2022年版
quramy
49
14k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Art, The Web, and Tiny UX
lynnandtonic
299
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