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