Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on


Published in: Software
  • Be the first to comment


  1. 1. From JS To CLJS - Adieu JavaScript -
  2. 2. Self-introduction /laʒenɔʁɛ̃k/ カマイルカlagénorhynque (defprofile lagénorhynque :name "Kent OHASHI" :account @lagenorhynque :company "Opt, Inc." :languages [Clojure Haskell Python Scala English français Deutsch русский] :interests [programming language-learning mathematics] :contributing [])
  3. 3. Contents 1. What is ClojureScript? 2. Why does ClojureScript matter? 3. Language 4. Libraries 5. Tools
  4. 4. What is ClojureScript?
  5. 5. によるとClojureScript公式サイト ClojureScript is a compiler for Clojure that targets JavaScript. It emits JavaScript code which is compatible with the advanced compilation mode of the Google Closure optimizing compiler.
  6. 6. ClojureScript (CLJS) JavaScriptをターゲットとしたClojureのコンパイラ cf. : Java/JVMがターゲット の 互換のJSコードを⽣成 Clojure Google Closure Compiler advanced compilation mode
  7. 7. compilation process from ClojureScript: Up and Running
  8. 8. Why does ClojureScript matter?
  9. 9. JavaScriptの世界でもClojureのメリットを REPL駆動のインタラクティブな開発 関数型プログラミング 並⾏プログラミング 現代的なLisp → Webフロントエンド, , , etc. Electron React Native
  10. 10. フロントエンド・サーバサイド間のスムーズな連携 コードの共有 .cljc & データの共有 , (cf. JSON, ) → フロントエンドもサーバサイドもClojure reader conditionals EDN Transit MessagePack
  11. 11. Language
  12. 12. syntax cf. ※ CLJSのWeb REPL(e.g. )で試そう ClojureScript Synonyms ClojureScript - Differences from Clojure Macros Replumb REPL
  13. 13. Clojure, ClojureScriptなどプラットフォーム間での 差異を吸収するための仕組み 拡張⼦ .cljc のファイル内で利⽤ と reader conditionals #? #?@ (defn str->int [s] #?(:clj (java.lang.Integer/parseInt s) :cljs (js/parseInt s)))
  14. 14. Libraries
  15. 15. library references The Clojure Toolbox CrossClj razum2um/awesome-clojure
  16. 16. example: のReagent実装 cf. 採⽤例: Reagent A minimalistic ClojureScript interface to React.js Reactチュートリアル lagenorhynque/react-tutorial Om circleci/frontend
  17. 17. Tools
  18. 18. build /ˈlainɪŋən/ Clojure, ClojureScript共通のビルドツール プラグインやプロジェクトテンプレートが豊富 設定ファイル project.clj (e.g. ) cf. Leiningen react-tutorial Boot
  19. 19. hot loading Leiningenプラグイン ClojureScriptのオートビルド ブラウザのオートリロード etc. lein-figwheel
  20. 20. optimization CLJSのコンパイラオプション :optimizations level effect :none 最適化なし(デフォルト) :whitespace コメント/空⽩など削除 :simple ローカル変数/関数引数リネーム :advanced グローバル変数/関数名/プロパ ティリネーム,デッドコード削 除,etc. Google Closure Compiler
  21. 21. Further Reading サイト : 公式サイト cf. : GitHub 書籍 翻訳: ClojureScript Clojure clojure/clojurescript ClojureScript: Up and Running 『⼊⾨ ClojureScript』 ClojureScript Unraveled
  22. 22. スライド 英語版: ⼊⾨ClojureScript ClojureScriptという選択肢 ここ最近のClojureScript JavaからClojureへ From Java To Clojure