Re:REPL-Driven Development

5335315769ef28d5b1b2ddbd776cef2d?s=47 ayato
October 04, 2017

Re:REPL-Driven Development

5335315769ef28d5b1b2ddbd776cef2d?s=128

ayato

October 04, 2017
Tweet

Transcript

  1. Re:REPL-DRIVEN DEVELOPMENT ڭཆͱͯ͠ͷClojure

  2. あやぴー > ayato-p@GitHub > Cybozu Startups, inc. > ClojureでWeb開発している >

    Emacsで色々する人種 > ネオ老害道 3級
  3. 改めてREPLとは

  4. REPLとは > れぷる > Read-Eval-Print Loop > インタラクティブにコードを試せるツール > 対話型評価環境

    > インタプリタではない > モダンなプログラミング言語は標準搭載 > Java9でJShellを搭載!
  5. 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
  6. 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
  7. 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
  8. Clojureの場合

  9. Clojureの特徴 > Dynamic Development > Functional Programming > Lisp >

    Runtime Polymorphism > Concurrent Programming > JVM Hosted
  10. Clojureの特徴 > Dynamic Development > Functional Programming > Lisp >

    Runtime Polymorphism > Concurrent Programming > JVM Hosted
  11. ClojureのREPL > Network REPLやBrowser REPLを含む > Clojureコンパイラの機能を100%使える > doc, sourceなどの補助関数が最初から提供されている

    > REPL上での評価はファイルを読み込むのと同じ > エディタと統合しやすい作りになっている
  12. 違い > ワークフローがファイルベースではなくなる > 変更->評価、の繰り返し > 読み込んだ環境の全てをREPLから使える > ライブラリなどもREPLから再定義可能 >

    REPLを拡張することが容易 > tools.namespaceなど > プロダクション環境もREPLから触れる
  13. REPL駆動開発

  14. Clojureのアドバンテージ > 素早いフィードバック > フィードバックループが速く回せる > 実行中のプログラムに影響を与えることができる > 知ることもできる

  15. エディタとの統合 > REPLに直接タイプしない > ファイルに書いてフォームをREPLに送る > いつでも保存できる

  16. ワークフロー Save Auto Compile Reload Evaluation Reload 一般的なプログラミング言語 Clojure

  17. REPLの拡張容易性 > デフォルトでもdocなどの便利関数がある > tools.namespaceなどの素晴らしいライブラリも > 自分で拡張することもできる
 (e.g. Reloaded template)

  18. 環境を変更/探索する > ファイルとREPLの境目がない

  19. Q&A

  20. Q. TDDでいいのでは > TDDより高速にフィードバックを得ることができる > より小さい単位で評価できる > そもそもTDDと相対する考え方ではない

  21. Q. HotDeployと何が違う > Web開発に限らない > REPLから実行したいパートだけを評価して実行できる > ワークフローがファイルベースではない

  22. まとめ

  23. まとめ > REPLはClojureの主要プログラミングインターフェース > REPLで開発を高速に!便利に! > Clojureはいいぞ

  24. Enjoy Clojure