Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Re:REPL-Driven Development

ayato
October 04, 2017

Re:REPL-Driven Development

ayato

October 04, 2017
Tweet

More Decks by ayato

Other Decks in Programming

Transcript

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

    View full-size slide

  2. あやぴー
    > ayato-p@GitHub
    > Cybozu Startups, inc.
    > ClojureでWeb開発している
    > Emacsで色々する人種
    > ネオ老害道 3級

    View full-size slide

  3. 改めてREPLとは

    View full-size slide

  4. REPLとは
    > れぷる
    > Read-Eval-Print Loop
    > インタラクティブにコードを試せるツール
    > 対話型評価環境
    > インタプリタではない
    > モダンなプログラミング言語は標準搭載
    > Java9でJShellを搭載!

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  8. Clojureの場合

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  11. ClojureのREPL
    > Network REPLやBrowser REPLを含む
    > Clojureコンパイラの機能を100%使える
    > doc, sourceなどの補助関数が最初から提供されている
    > REPL上での評価はファイルを読み込むのと同じ
    > エディタと統合しやすい作りになっている

    View full-size slide

  12. 違い
    > ワークフローがファイルベースではなくなる
    > 変更->評価、の繰り返し
    > 読み込んだ環境の全てをREPLから使える
    > ライブラリなどもREPLから再定義可能
    > REPLを拡張することが容易
    > tools.namespaceなど
    > プロダクション環境もREPLから触れる

    View full-size slide

  13. REPL駆動開発

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    (e.g. Reloaded template)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. Enjoy Clojure

    View full-size slide