100 Views
May 12, 17
スライド概要
JavaScriptからClojureScriptへ
ClojureをJavaScriptの世界でも利用しよう!
「楽しく楽にcoolにsmartに」を理想とするprogrammer/philosopher/liberalist/realist。 好きな言語はClojure, Haskell, Python, English, français, русский。 読書、プログラミング、語学、法学、数学が大好き! イルカと海も大好き🐬
From JS To CLJS - Adieu JavaScript -
Self-introduction lagénorhynque /laʒenɔʁɛ k ̃ / カマイルカ (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 [github.com/japan-clojurians/clojure-site-ja])
Contents 1. 2. 3. 4. 5. What is ClojureScript? Why does ClojureScript matter? Language Libraries Tools
What is ClojureScript?
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.
ClojureScript (CLJS) JavaScriptをターゲットとしたClojureのコンパイラ cf. Clojure: Java/JVMがターゲット Google Closure Compilerのadvanced compilation mode互換のJSコードを⽣成
compilation process from ClojureScript: Up and Running
Why does ClojureScript matter?
JavaScriptの世界でもClojureのメリットを REPL駆動のインタラクティブな開発 関数型プログラミング 並⾏プログラミング 現代的なLisp → Webフロントエンド, Electron, React Native, etc.
フロントエンド・サーバサイド間のスムーズな連携 コードの共有 .cljc & reader conditionals データの共有 EDN, Transit (cf. JSON, MessagePack) → フロントエンドもサーバサイドもClojure
Language
syntax ClojureScript Synonyms cf. ClojureScript - Differences from Clojure Macros ※ CLJSのWeb REPL(e.g. Replumb REPL)で試そう
reader conditionals Clojure, ClojureScriptなどプラットフォーム間での 差異を吸収するための仕組み 拡張⼦ .cljc のファイル内で利⽤ #? と #?@ (defn str->int [s] #?(:clj (java.lang.Integer/parseInt s) :cljs (js/parseInt s)))
Libraries
library references The Clojure Toolbox CrossClj razum2um/awesome-clojure
example: Reagent A minimalistic ClojureScript interface to React.js ReactチュートリアルのReagent実装 lagenorhynque/react-tutorial cf. Om 採⽤例: circleci/frontend
Tools
build Leiningen /ˈlainɪŋən/ Clojure, ClojureScript共通のビルドツール プラグインやプロジェクトテンプレートが豊富 設定ファイル project.clj (e.g. react-tutorial) cf. Boot
hot loading Leiningenプラグイン lein-figwheel ClojureScriptのオートビルド ブラウザのオートリロード etc.
optimization Google Closure Compiler CLJSのコンパイラオプション :optimizations level effect :none 最適化なし(デフォルト) :whitespace コメント/空⽩など削除 :simple ローカル変数/関数引数リネーム :advanced グローバル変数/関数名/プロパ ティリネーム,デッドコード削 除,etc.
Further Reading サイト ClojureScript: 公式サイト cf. Clojure clojure/clojurescript: GitHub 書籍 ClojureScript: Up and Running 翻訳: 『⼊⾨ ClojureScript』 ClojureScript Unraveled
スライド ⼊⾨ClojureScript ClojureScriptという選択肢 ここ最近のClojureScript JavaからClojureへ 英語版: From Java To Clojure