Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Re:REPL-DRIVEN DEVELOPMENT ڭཆͱͯ͠ͷClojure
Slide 2
Slide 2 text
あやぴー > ayato-p@GitHub > Cybozu Startups, inc. > ClojureでWeb開発している > Emacsで色々する人種 > ネオ老害道 3級
Slide 3
Slide 3 text
改めてREPLとは
Slide 4
Slide 4 text
REPLとは > れぷる > Read-Eval-Print Loop > インタラクティブにコードを試せるツール > 対話型評価環境 > インタプリタではない > モダンなプログラミング言語は標準搭載 > Java9でJShellを搭載!
Slide 5
Slide 5 text
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
Slide 6
Slide 6 text
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
Slide 7
Slide 7 text
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
Slide 8
Slide 8 text
Clojureの場合
Slide 9
Slide 9 text
Clojureの特徴 > Dynamic Development > Functional Programming > Lisp > Runtime Polymorphism > Concurrent Programming > JVM Hosted
Slide 10
Slide 10 text
Clojureの特徴 > Dynamic Development > Functional Programming > Lisp > Runtime Polymorphism > Concurrent Programming > JVM Hosted
Slide 11
Slide 11 text
ClojureのREPL > Network REPLやBrowser REPLを含む > Clojureコンパイラの機能を100%使える > doc, sourceなどの補助関数が最初から提供されている > REPL上での評価はファイルを読み込むのと同じ > エディタと統合しやすい作りになっている
Slide 12
Slide 12 text
違い > ワークフローがファイルベースではなくなる > 変更->評価、の繰り返し > 読み込んだ環境の全てをREPLから使える > ライブラリなどもREPLから再定義可能 > REPLを拡張することが容易 > tools.namespaceなど > プロダクション環境もREPLから触れる
Slide 13
Slide 13 text
REPL駆動開発
Slide 14
Slide 14 text
Clojureのアドバンテージ > 素早いフィードバック > フィードバックループが速く回せる > 実行中のプログラムに影響を与えることができる > 知ることもできる
Slide 15
Slide 15 text
エディタとの統合 > REPLに直接タイプしない > ファイルに書いてフォームをREPLに送る > いつでも保存できる
Slide 16
Slide 16 text
ワークフロー Save Auto Compile Reload Evaluation Reload 一般的なプログラミング言語 Clojure
Slide 17
Slide 17 text
REPLの拡張容易性 > デフォルトでもdocなどの便利関数がある > tools.namespaceなどの素晴らしいライブラリも > 自分で拡張することもできる (e.g. Reloaded template)
Slide 18
Slide 18 text
環境を変更/探索する > ファイルとREPLの境目がない
Slide 19
Slide 19 text
Q&A
Slide 20
Slide 20 text
Q. TDDでいいのでは > TDDより高速にフィードバックを得ることができる > より小さい単位で評価できる > そもそもTDDと相対する考え方ではない
Slide 21
Slide 21 text
Q. HotDeployと何が違う > Web開発に限らない > REPLから実行したいパートだけを評価して実行できる > ワークフローがファイルベースではない
Slide 22
Slide 22 text
まとめ
Slide 23
Slide 23 text
まとめ > REPLはClojureの主要プログラミングインターフェース > REPLで開発を高速に!便利に! > Clojureはいいぞ
Slide 24
Slide 24 text
Enjoy Clojure