Soumettre la recherche
Mettre en ligne
入門ClojureScript
•
4 j'aime
•
3,332 vues
S
sohta
Suivre
2015/5/23に開催されたClojureScript勉強会の入門セッション用資料です。
Lire moins
Lire la suite
Logiciels
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 12
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
Tsutomu Yano
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Everyday Life with clojure.spec
Everyday Life with clojure.spec
Kent Ohashi
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
Mitsutoshi Kiuchi
D3.jsで日本地図を描いてみた
D3.jsで日本地図を描いてみた
mapquestIwasaki
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Recommandé
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
Tsutomu Yano
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Everyday Life with clojure.spec
Everyday Life with clojure.spec
Kent Ohashi
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
Mitsutoshi Kiuchi
D3.jsで日本地図を描いてみた
D3.jsで日本地図を描いてみた
mapquestIwasaki
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
NipponAlgorithm
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
FlutterでGraphQLを扱う
FlutterでGraphQLを扱う
IgaHironobu
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
NTT DATA Technology & Innovation
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Akira Inoue
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
虎の穴 開発室
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
Unity Technologies Japan K.K.
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
入門Transducers
入門Transducers
sohta
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
例外設計における大罪
例外設計における大罪
Takuto Wada
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
Kent Ohashi
A little exercise with clojure macro
A little exercise with clojure macro
Zehua Liu
Patterns
Patterns
David Nolen
Contenu connexe
Tendances
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
NipponAlgorithm
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
FlutterでGraphQLを扱う
FlutterでGraphQLを扱う
IgaHironobu
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
NTT DATA Technology & Innovation
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Akira Inoue
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
虎の穴 開発室
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
Unity Technologies Japan K.K.
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
入門Transducers
入門Transducers
sohta
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
例外設計における大罪
例外設計における大罪
Takuto Wada
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
Kent Ohashi
Tendances
(20)
WebSocketのキホン
WebSocketのキホン
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
Redisの特徴と活用方法について
Redisの特徴と活用方法について
FlutterでGraphQLを扱う
FlutterでGraphQLを扱う
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
入門Transducers
入門Transducers
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
例外設計における大罪
例外設計における大罪
DockerコンテナでGitを使う
DockerコンテナでGitを使う
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
En vedette
A little exercise with clojure macro
A little exercise with clojure macro
Zehua Liu
Patterns
Patterns
David Nolen
Writing Macros
Writing Macros
RueiCi Wang
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Leonardo Borges
A Dive Into Clojure
A Dive Into Clojure
Carlo Sciolla
不自然なcar/ナチュラルにconsして
不自然なcar/ナチュラルにconsして
mitsutaka mimura
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
sunng87
Macros in Clojure
Macros in Clojure
sohta
Continuation Passing Style and Macros in Clojure - Jan 2012
Continuation Passing Style and Macros in Clojure - Jan 2012
Leonardo Borges
Clojure的魅力
Clojure的魅力
dennis zhuang
Clojure概览
Clojure概览
dennis zhuang
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
AboutYouGmbH
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
sohta
(map Clojure everyday-tasks)
(map Clojure everyday-tasks)
Jacek Laskowski
Clojure: a LISP for the JVM
Clojure: a LISP for the JVM
Knowledge Engineering and Machine Learning Group
Introduction to clojure
Introduction to clojure
Abbas Raza
DSL in Clojure
DSL in Clojure
Misha Kozik
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta
Clojure from ground up
Clojure from ground up
Di Xu
En vedette
(19)
A little exercise with clojure macro
A little exercise with clojure macro
Patterns
Patterns
Writing Macros
Writing Macros
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
A Dive Into Clojure
A Dive Into Clojure
不自然なcar/ナチュラルにconsして
不自然なcar/ナチュラルにconsして
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
Macros in Clojure
Macros in Clojure
Continuation Passing Style and Macros in Clojure - Jan 2012
Continuation Passing Style and Macros in Clojure - Jan 2012
Clojure的魅力
Clojure的魅力
Clojure概览
Clojure概览
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
(map Clojure everyday-tasks)
(map Clojure everyday-tasks)
Clojure: a LISP for the JVM
Clojure: a LISP for the JVM
Introduction to clojure
Introduction to clojure
DSL in Clojure
DSL in Clojure
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
Clojure from ground up
Clojure from ground up
Similaire à 入門ClojureScript
Re-frame and A-Frame
Re-frame and A-Frame
Kazuhiro Hara
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。
Teppei Sato
Web制作勉強会 #2
Web制作勉強会 #2
Moto Yan
今更ながらCSS3を試してみた
今更ながらCSS3を試してみた
Takao Sumitomo
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
Kazuki Tsutsumi
20130909 movable type_seminar
20130909 movable type_seminar
Six Apart
Clojure で減価償却費計算
Clojure で減価償却費計算
ultrakanji
20130911 Movable Type Seminar
20130911 Movable Type Seminar
Six Apart
GraphQLはどんな時に使うか
GraphQLはどんな時に使うか
Yutaka Tachibana
AngularJSを浅めに紹介します
AngularJSを浅めに紹介します
nkazuki
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
Recruit Technologies
CloudSpiral 2013年度 UML講義 2日目
CloudSpiral 2013年度 UML講義 2日目
Shin Matsumoto
React VR ことはじめ
React VR ことはじめ
Kazuhiro Hara
プログラマ人生論
プログラマ人生論
ymmt
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTE
yoyamasaki
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
Mvc conf session_5_isami
Mvc conf session_5_isami
Hiroshi Okunushi
msal.js v2を触る
msal.js v2を触る
DevTakas
新世代Java scriptコントロール wijmo5 devsumi_150219
新世代Java scriptコントロール wijmo5 devsumi_150219
Akiyoshi Yamazaki
From JS To CLJS
From JS To CLJS
Kent Ohashi
Similaire à 入門ClojureScript
(20)
Re-frame and A-Frame
Re-frame and A-Frame
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。
Web制作勉強会 #2
Web制作勉強会 #2
今更ながらCSS3を試してみた
今更ながらCSS3を試してみた
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
20130909 movable type_seminar
20130909 movable type_seminar
Clojure で減価償却費計算
Clojure で減価償却費計算
20130911 Movable Type Seminar
20130911 Movable Type Seminar
GraphQLはどんな時に使うか
GraphQLはどんな時に使うか
AngularJSを浅めに紹介します
AngularJSを浅めに紹介します
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
CloudSpiral 2013年度 UML講義 2日目
CloudSpiral 2013年度 UML講義 2日目
React VR ことはじめ
React VR ことはじめ
プログラマ人生論
プログラマ人生論
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTE
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Mvc conf session_5_isami
Mvc conf session_5_isami
msal.js v2を触る
msal.js v2を触る
新世代Java scriptコントロール wijmo5 devsumi_150219
新世代Java scriptコントロール wijmo5 devsumi_150219
From JS To CLJS
From JS To CLJS
Plus de sohta
Clojure Language Update (2015)
Clojure Language Update (2015)
sohta
入門core.async
入門core.async
sohta
REPLライフをもっと快適に
REPLライフをもっと快適に
sohta
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
sohta
ClojureではじめるSTM入門
ClojureではじめるSTM入門
sohta
Clojureによるバイトコードプログラミング
Clojureによるバイトコードプログラミング
sohta
Plus de sohta
(6)
Clojure Language Update (2015)
Clojure Language Update (2015)
入門core.async
入門core.async
REPLライフをもっと快適に
REPLライフをもっと快適に
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
ClojureではじめるSTM入門
ClojureではじめるSTM入門
Clojureによるバイトコードプログラミング
Clojureによるバイトコードプログラミング
入門ClojureScript
1.
入門ClojureScript ClojureScript勉強会 2015/05/23 @HaLake @athos0220
2.
ClojureScriptとは ‣ JavaScriptにコンパイルされるClojure ‣ 正確には、Clojureと多くの共通点を持つ別言語 ‣
すでにさまざまな企業で商用に使われている - CircleCI - Prismatic - Cisco - eBay - etc. https://github.com/clojure/clojurescript/wiki/Companies-Using-ClojureScript
3.
ClojureScriptの利点 ‣ immutableなデータ構造が使える 仮想DOMとの親和性 ‣ マクロが使える core.asyncなどの強力な抽象化 ‣
Clojureとのデータとコードの共有 isomorphic Clojure 単なるイロモノでなく具体的な利点をもつAltJS
4.
【言語概論】Clojureとの共通点 ‣ 基本的なデータ型 (数値、文字列、シンボル、キーワード、関数) ‣
コレクション型 (リスト、ベクタ、マップ、セット) ‣ ユーザ定義型 (deftype, defrecord, defprotocol) ‣ マルチメソッド ‣ 名前空間 ‣ Host Interop (コンストラクタ、メソッド呼び出し)
5.
【言語概論】Clojureとの相違点 ‣ Atom以外の参照型がない ‣ evalがない ‣
マクロはClojureでしか定義できない ‣ Host Interop - js-obj - #js[], #js{} - clj->js, js->clj - js名前空間 - js*
6.
コンパイルパイプライン ‣ Clojureで書かれたコンパイラでJSコードを生成 ‣ 生成されたJSコードをClosure
Compilerで最適化 Closure Compiler: JSからJSへの最適化コンパイラ Stuart Sierra, Luke VanderHart (2012) “ClojureScript: Up and Running” O’Reilly Media
7.
Closure Compilerの最適化レベル ‣ WHITESPACE_ONLY 不要な空白、改行、コメントの削除 ‣
SIMPLE_OPTIMIZATIONS WHITESPACE_ONLY + ローカル変数名書き換え等 ‣ ADVANCED_OPTIMIZATIONS SIMPLE_OPTIMIZATIONS + 以下を含む最適化 - よりアグレッシブなリネーム - デッドコード除去 - インライン化 https://developers.google.com/closure/compiler/docs/compilation_levels
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.
:optimizationsオプション :optimizations 対応する最適化レベル :none (ClojureScriptコンパイラが出力した JSコードのみが生成される) :whitespace WHITESPACE_ONLY :simple
SIMPLE_OPTIMIZATIONS :advanced ADVANCED_OPTIMIZATIONS
10.
ClojureScriptのコンパイル ‣ lein cljsbuild
once 指定したパス中のClojureScriptファイルをコンパイル ‣ lein cljsbuild auto ファイルを監視して、変更があれば自動的コンパイルし直す
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.
参考文献 ‣ Clojure: Up
and Running ‣ ClojureScript wiki ‣ lein-cljsbuild wiki
Télécharger maintenant