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.

入門ClojureScript

1,780 views

Published on

2015/5/23に開催されたClojureScript勉強会の入門セッション用資料です。

Published in: Software
  • Be the first to comment

入門ClojureScript

  1. 1.  入門ClojureScript ClojureScript勉強会 2015/05/23 @HaLake @athos0220
  2. 2. ClojureScriptとは ‣ JavaScriptにコンパイルされるClojure ‣ 正確には、Clojureと多くの共通点を持つ別言語 ‣ すでにさまざまな企業で商用に使われている - CircleCI - Prismatic - Cisco - eBay - etc. https://github.com/clojure/clojurescript/wiki/Companies-Using-ClojureScript
  3. 3. ClojureScriptの利点 ‣ immutableなデータ構造が使える 仮想DOMとの親和性 ‣ マクロが使える core.asyncなどの強力な抽象化 ‣ Clojureとのデータとコードの共有 isomorphic Clojure 単なるイロモノでなく具体的な利点をもつAltJS
  4. 4. 【言語概論】Clojureとの共通点 ‣ 基本的なデータ型 (数値、文字列、シンボル、キーワード、関数) ‣ コレクション型 (リスト、ベクタ、マップ、セット) ‣ ユーザ定義型 (deftype, defrecord, defprotocol) ‣ マルチメソッド ‣ 名前空間 ‣ Host Interop (コンストラクタ、メソッド呼び出し)
  5. 5. 【言語概論】Clojureとの相違点 ‣ Atom以外の参照型がない ‣ evalがない ‣ マクロはClojureでしか定義できない ‣ Host Interop - js-obj - #js[], #js{} - clj->js, js->clj - js名前空間 - js*
  6. 6. コンパイルパイプライン ‣ Clojureで書かれたコンパイラでJSコードを生成 ‣ 生成されたJSコードをClosure Compilerで最適化 Closure Compiler: JSからJSへの最適化コンパイラ Stuart Sierra, Luke VanderHart (2012) “ClojureScript: Up and Running” O’Reilly Media
  7. 7. Closure Compilerの最適化レベル ‣ WHITESPACE_ONLY 不要な空白、改行、コメントの削除 ‣ SIMPLE_OPTIMIZATIONS WHITESPACE_ONLY + ローカル変数名書き換え等 ‣ ADVANCED_OPTIMIZATIONS SIMPLE_OPTIMIZATIONS + 以下を含む最適化 - よりアグレッシブなリネーム - デッドコード除去 - インライン化 https://developers.google.com/closure/compiler/docs/compilation_levels
  8. 8. ClojureScriptのはじめかた ‣ Leiningen + lein-cljsbuild でのやりかた 1. lein-cljsbuildを :plugins に追加 2. project.cljの :cljsbuild にオプションを設定 (defproject lein-cljsbuild-example “0.1.0-SNAPSHOT” :plugins [[lein-cljsbuild "1.0.6"]] :cljsbuild { :builds [{:source-paths ["src-cljs"] :compiler {:output-to "js/main.js" :optimizations :whitespace :pretty-print true}}]})
  9. 9. :optimizationsオプション :optimizations 対応する最適化レベル :none (ClojureScriptコンパイラが出力した    JSコードのみが生成される) :whitespace WHITESPACE_ONLY :simple SIMPLE_OPTIMIZATIONS :advanced ADVANCED_OPTIMIZATIONS
  10. 10. ClojureScriptのコンパイル ‣ lein cljsbuild once 指定したパス中のClojureScriptファイルをコンパイル ‣ lein cljsbuild auto ファイルを監視して、変更があれば自動的コンパイルし直す
  11. 11. ClojureScriptのREPL起動 ‣ lein cljsbuild repl-rhino RhinoベースのREPLを起動 (ブラウザ機能は使えない) ‣ lein cljsbuild repl-listen 指定したポートでClojureScriptからの接続を待ち合わせるREPLを起動 ‣ lein cljsbuild repl-launch :repl-launch-commandsで指定したコマンドからブラウザREPLを起動 * 実際にはREPLを起動するときは lein trampoline 経由で呼び出す必要があります
  12. 12. 参考文献 ‣ Clojure: Up and Running ‣ ClojureScript wiki ‣ lein-cljsbuild wiki

×