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
220
Meta Template Engine
ayato0211
2
970
超変換! Hiccup data structure!!
ayato0211
2
540
About Integrant
ayato0211
0
470
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
Swiftコードバトル必勝法
toshi0383
0
170
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
長期運用プロダクトの開発速度を維持し続けるためのリファクタリング実践例
wataruss
8
2.7k
A New Era of Testing
mannodermaus
2
510
事業フェーズの変化に対応する 開発生産性向上のゼロイチ
masaygggg
0
200
Jakarta EE meets AI
ivargrimstad
0
390
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
1k
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
730
RAGの回答精度評価用のQAデータセットを生成AIに作らせた話
kurahara
0
250
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
150
Why Prism?
kddnewton
4
1.7k
Hono・Prisma・AWSでGeoなAPI開発
nokonoko1203
5
680
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
38
9.2k
We Have a Design System, Now What?
morganepeng
48
7.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
Infographics Made Easy
chrislema
239
18k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Visualization
eitanlees
142
15k
Facilitating Awesome Meetings
lara
49
6k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
Unsuck your backbone
ammeep
667
57k
Typedesign – Prime Four
hannesfritz
39
2.3k
In The Pink: A Labor of Love
frogandcode
139
22k
Side Projects
sachag
451
42k
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