SlideShare a Scribd company logo
1 of 39
Download to read offline
Clojureで
Electronアプリつくろう
{:company “Greative GK”
:name “Kazuhiro Hara”
:twitter “kara_d”
:github “https://github.com/karad”}
Electron(旧:Atom-Shell)勉強会 #1
#atom_shelldescjop.org
自己紹介
2
原 一浩
ハラ カズヒロ
ClojureScript + Electronの
プロジェクトテンプレdescjopの作者
http://greative.jp/
( @kara_d )
http://descjop.org/
#atom_shelldescjop.org
ちょっと前の著書
➡ Play Framework 2徹底入門
- JavaではじめるアジャイルWeb開発
3
実践編(4章∼7章)を担当
✦ サンプルアプリの企画から設計、構築、テ
スト、管理画面作成までを一通り
マニュアルにはない詰まりポイントとかも
ちりばめられてます。
#atom_shelldescjop.org
アジェンダ
➡ Clojureについて
➡ ビルドツールについて
➡ ClojureでElectronアプリをつくるには
➡ demo
➡ Clojureならでは話
➡ ClojureScript & Node.jsハマりどころ
➡ 今後の課題
4
#atom_shelldescjop.org 5
そもそもClojureってなに話
#atom_shelldescjop.org
Clojureってなに?
➡ Lisp方言
S式
データとしてのコード
成長可能な言語
➡ 関数型プログラミング
第一級関数
イミュータブルなデータ構造
6
(println	
  (+	
  1	
  2	
  3))	
  ;	
  =>	
  6
#atom_shelldescjop.org
Clojureってなに?
➡ 豊かなビルド環境
Leiningen
REPL
Clojars
Javaのライブラリ or Nodeのライブラリ
➡ 複数のビルドターゲット
Java環境
JavaScript環境
.NET環境
7
#atom_shelldescjop.org
Clojureあれこれ
➡ Clojureは新しいけど、すごく古くもある
Clojureが生まれたのは、2007年
LISPは、2番目に古い高級言語
➡ ClojureScriptはJavaScript向けコンパイル環境
JavaとJavaScriptの関係とは、ちがう
同一シンタックスで書ける
拡張子は、Clojureが.clj、ClojureScriptが.cljs
➡ ClojureScriptは、AltJSとしては、そこそこ古い
Jun 3, 2011に最初のコミット
8
#atom_shelldescjop.org
LightTableはClojureScript製
➡ かなりの実用度!!
9
#atom_shelldescjop.org
Clojureは読みやすい(他のLispよりちょっとだけ)
➡ JavaScript
➡ Clojure
10
function	
  hoge	
  (param)	
  {
	
  	
  	
  console.log(“Hello	
  world!”);
}
(defn	
  hoge	
  [param]
	
  	
  	
  (println	
  “Hello	
  world!”))
#atom_shelldescjop.org
Clojureを選んで何がいいのか
➡ フロントエンドのJavaScript、
バックエンドのJVMベースサーバを
強力な言語機能で統一的に作り上げることができる
11
Clojure
Web
JVM
Server Electron
APIAPI
#atom_shelldescjop.org 12
ビルドツールについて
#atom_shelldescjop.org
ビルドツールについて
➡ ClojureとClojureScriptの
ビルドツール、Leiningen
Node、Npm、Grunt/Gulp/Bowerや
テストランナーがくっついたようなもの
13
$	
  lein	
  new	
  アプリ名
$	
  lein	
  cljsbuild
$	
  lein	
  test
#atom_shelldescjop.org
ClojureScriptのコンパイル
➡ project.clj
ビルド情報を書く
package.jsonみたいなもの
➡ lein-cljsbuildを使う
leinコマンドからClojureScriptのコンパイルができる
➡ ClojureScriptのコンパイル
Google Clojure関係がライブラリとして使われていたり、
コンパイラとして使われたりしている
14
$	
  lein	
  cljsbuild	
  once
#atom_shelldescjop.org
JavaScriptにコンパイルされた時のサイズ
➡ :optimizations :simple
400KB∼2MBくらいになっちゃう
これは重い
➡ :optimizations :advanced
数十から百KB程度
これならなんとか
15
#atom_shelldescjop.org 16
ClojureでElectronアプリをつくるには
#atom_shelldescjop.org
Electronアプリ用のLeiningenツール
➡ http://descjop.org
➡ リリース後の顛末
公開したのが4/17
その日にAtom-Shell -> Electron
リポジトリも変更
Gruntタスク周りで本家にissue作成
無事パッチが当てられ、再リリース
17
#atom_shelldescjop.org
ClojureでElectronアプリをつくるには
➡ descjop.orgを使って開始すると楽
➡ 使ってみて良い感じだったら★ください∼
18
$	
  lein	
  new	
  descjop	
  アプリ名
#atom_shelldescjop.org
何が生成されるのか?
19
├──	
  README.md
├──	
  app
│	
  	
  	
  ├──	
  index.html	
  //	
  トップページ
│	
  	
  	
  ├──	
  js
│	
  	
  	
  │	
  	
  	
  └──	
  main.js
│	
  	
  	
  └──	
  package.json	
  //	
  アプリ用package.json
├──	
  package.json	
  //	
  コンパイル用package.json
├──	
  project.clj	
  //	
  Clojureのコンパイル設定
└──	
  src
	
  	
  	
  	
  └──	
  NAMESPACE
	
  	
  	
  	
  	
  	
  	
  	
  └──	
  core.cljs	
  //	
  ClojureScriptを置く
#atom_shelldescjop.org
descjopのしくみ : その1
➡ lein cljsbuildをすると、src/###/core.cljsが
app/js/cljsbuild_main.jsとしてコンパイルされる
/src/###/core.cljs
↓ コンパイル
/app/js/cljsbuild_main.js
20
#atom_shelldescjop.org
descjopのしくみ : その2
➡ cljsbuild_main.jsは、app/js/main.js
から呼ばれる
/app/js/cljsbuild_main.js
↑ 呼ぶ
/app/js/main.js
21
#atom_shelldescjop.org
descjopのしくみ : その3
➡ Electronは、app以下のpackage.jsonを通じて
main.jsを呼び出す
/app/js/cljsbuild_main.js
↑ 呼ぶ
/app/js/main.js
↑ 呼ぶ
/app/package.json
22
#atom_shelldescjop.org
descjopのしくみ : その4
➡ cljsbuild_main.jsからは、BrowserWindowとし
て、index.htmlをloadUrlする
/app/index.html
↑ ロードする
/app/js/cljsbuild_main.js
23
#atom_shelldescjop.org
Electron、ClojureとClojureScriptの関係
24
Clojure
界
Clojure
Script
界
JavaScript
界
Electron
界
COMPILE
マクロなど
.clj.cljs.jsAPI
Leiningenによる
#atom_shelldescjop.org 25
demo
#atom_shelldescjop.org
demo
26
$	
  npm	
  install	
  -­‐g	
  grunt-­‐cli
$	
  npm	
  install
$	
  grunt	
  download-­‐electron
$	
  lein	
  externs	
  >	
  app/js/externs.js
$	
  ./electron/Electron.app/Contents/MacOS/Electron	
  app 5
4
3
2
1
$	
  lein	
  new	
  descjop	
  アプリ名
#atom_shelldescjop.org
ビルド終了後の構成
27
├──	
  README.md
├──	
  app
│	
  	
  	
  ├──	
  index.html	
  //	
  トップページ
│	
  	
  	
  ├──	
  js
│	
  	
  	
  │	
  	
  	
  ├──	
  cljsbuild-­‐main.js	
  //	
  コンパイル済JS
│	
  	
  	
  │	
  	
  	
  ├──	
  externs.js
│	
  	
  	
  │	
  	
  	
  └──	
  main.js
│	
  	
  	
  └──	
  package.json	
  //	
  アプリ用package.json
├──	
  package.json	
  //	
  コンパイル用package.json
├──	
  project.clj	
  //	
  Clojureのコンパイル設定
└──	
  src
	
  	
  	
  	
  └──	
  NAMESPACE
	
  	
  	
  	
  	
  	
  	
  	
  └──	
  core.cljs	
  //	
  ClojureScriptを置く
#atom_shelldescjop.org 28
Clojureならでは話
#atom_shelldescjop.org
こんな構文あったらいいな
➡ appに対して、イベントハンドラ設定めんどい
➡ こんな構文が欲しいとする
29
(var的なもの	
  app名	
  app生成
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :イベントハンドラ	
  (関数)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :ほかのハンドラ	
  (関数)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ...	
  ...)
#atom_shelldescjop.org
ちょいとマクロ
➡ マクロは、ClojureScriptではなく、
Clojureとして書く
➡ ただし、関数でできる場合は関数で書こう
30
(defmacro	
  defatomshellapp
	
  	
  [name	
  app	
  &	
  clauses]
	
  	
  `(loop	
  [cl#	
  [~@clauses]]
	
  	
  	
  	
  	
  (if	
  (and	
  (not	
  (nil?	
  cl#))	
  (first	
  cl#)	
  (next	
  cl#))
	
  	
  	
  	
  	
  	
  	
  (do
	
  	
  	
  	
  	
  	
  	
  	
  	
  (.on	
  ~app	
  (name	
  (first	
  cl#))	
  (second	
  cl#))
	
  	
  	
  	
  	
  	
  	
  	
  	
  (recur	
  (next	
  (next	
  cl#))))
	
  	
  	
  	
  	
  	
  	
  (defonce	
  ~name	
  ~app))))
#atom_shelldescjop.org
こんな風に呼び出せる
➡ 欲しかった構文を拡張できる
31
(defatomshellapp	
  app	
  (nodejs/require	
  "app")
	
  	
  :ready	
  (fn	
  []	
  (	
  処理	
  ))
	
  	
  :window-­‐all-­‐closed	
  (fn	
  []	
  (	
  処理	
  ))))
#atom_shelldescjop.org 32
ClojureScript & Node.jsハマりどころ
#atom_shelldescjop.org
注意ポイント
➡ externs
advancedオプションにてサイズを小さくするときに、
必要な変数名などの書き換えをさせないための指定
js/externs.jsとかに記述する
lein-externsを使うと楽
33
$	
  lein	
  externs	
  >	
  app/js/externs.js
#atom_shelldescjop.org
注意ポイント
➡ externs
js/externs.jsは、こんな風になる
34
var	
  TopLevel	
  =	
  {
"BrowserWindow"	
  :	
  function	
  ()	
  {},
"console"	
  :	
  function	
  ()	
  {},
"loadUrl"	
  :	
  function	
  ()	
  {},
"log"	
  :	
  function	
  ()	
  {},
"on"	
  :	
  function	
  ()	
  {},
...
}
#atom_shelldescjop.org
注意ポイント
➡ nodeモジュール関係
node関係のモジュールもexternsすること
package.jsonに
project.cljに
35
:externs	
  [
"app/js/externs.js"
"node_modules/closurecompiler-­‐externs/path.js"
"node_modules/closurecompiler-­‐externs/process.js"
]
"closurecompiler-­‐externs":	
  "^1.0.4"
#atom_shelldescjop.org
注意ポイント
➡ pathまわり
開発時と、ネイティブアプリケーションとしてパッケージングした時の
取得可能なパスがメソッドによって異なるので注意
36
(str	
  
	
  	
  "file://"
	
  	
  (.resolve	
  path	
  (js*	
  "__dirname")
	
  	
  "../index.html"))
#atom_shelldescjop.org
注意ポイント
➡ その他
よくJavaScriptの関数を渡す場面で、へんなものが渡るときがある。
きちんと無名関数を渡そう
オブジェクトは、clj->jsを使って渡す
37
(clj-­‐>js	
  {:width	
  800	
  :height	
  600})
#atom_shelldescjop.org
今後の課題
➡ NW.js用のスカフォルディングの提供
➡ gruntタスクからgulpへの移行
➡ UI周りで構成をいろいろ考え中
➡ 今は遊びがてら
学習サイクルまわし中
38
学ぶ
作る問う
ありがとうございました!!
Electron(旧:Atom-Shell)勉強会 #1
ClojureでElectronアプリつくろう
{:company “Greative GK”
:name “Kazuhiro Hara”
:twitter “kara_d”
:github “https://github.com/karad”}

More Related Content

What's hot

(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境についてKazuhiro Hara
 
OSS Product feat. Gradle
OSS Product feat. GradleOSS Product feat. Gradle
OSS Product feat. GradleYasuharu Nakano
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成shigeki_ohtsu
 
Gws 20141024 gradle_intro
Gws 20141024 gradle_introGws 20141024 gradle_intro
Gws 20141024 gradle_introNobuhiro Sue
 
Gradle入門
Gradle入門Gradle入門
Gradle入門orekyuu
 
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムYu Nobuoka
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おうHayashi Yuichi
 
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方Yuta Matsumura
 
Spring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersSpring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersTakuma Watabiki
 
ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介Kazuhiro Hara
 
フロント開発をがんばるためにGulpとGruntに入門してみた
フロント開発をがんばるためにGulpとGruntに入門してみたフロント開発をがんばるためにGulpとGruntに入門してみた
フロント開発をがんばるためにGulpとGruntに入門してみたShou Takenaka
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handsonNobuhiro Sue
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradleNobuhiro Sue
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話xiidec
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 

What's hot (20)

(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
 
OSS Product feat. Gradle
OSS Product feat. GradleOSS Product feat. Gradle
OSS Product feat. Gradle
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
Gws 20141024 gradle_intro
Gws 20141024 gradle_introGws 20141024 gradle_intro
Gws 20141024 gradle_intro
 
Gradle入門
Gradle入門Gradle入門
Gradle入門
 
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステム
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう
 
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
 
Vue.js with Go
Vue.js with GoVue.js with Go
Vue.js with Go
 
Groovyの紹介20130323
Groovyの紹介20130323Groovyの紹介20130323
Groovyの紹介20130323
 
Spring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersSpring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswers
 
ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介
 
フロント開発をがんばるためにGulpとGruntに入門してみた
フロント開発をがんばるためにGulpとGruntに入門してみたフロント開発をがんばるためにGulpとGruntに入門してみた
フロント開発をがんばるためにGulpとGruntに入門してみた
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 

Similar to ClojureでElectronアプリを作ろう

Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradlekimukou_26 Kimukou
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみようYou&I
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発papamitra
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...Sadao Tokuyama
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング幸雄 村上
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザインKazuhiro Hara
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Recruit Technologies
 
C#でOpenCL with OpenTK + Cloo
C#でOpenCL with OpenTK + ClooC#でOpenCL with OpenTK + Cloo
C#でOpenCL with OpenTK + Clooaokomoriuta
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)parrotstudio
 
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)kojiokb
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Ato ARAKI
 

Similar to ClojureでElectronアプリを作ろう (20)

Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 
Driverについて
DriverについてDriverについて
Driverについて
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザイン
 
Scalaで実装するGC
Scalaで実装するGCScalaで実装するGC
Scalaで実装するGC
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
 
C#でOpenCL with OpenTK + Cloo
C#でOpenCL with OpenTK + ClooC#でOpenCL with OpenTK + Cloo
C#でOpenCL with OpenTK + Cloo
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
 
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Open modeler
Open modelerOpen modeler
Open modeler
 
From JS To CLJS
From JS To CLJSFrom JS To CLJS
From JS To CLJS
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28
 

More from Kazuhiro Hara

About Plone Conference Tokyo 2018 Frontend Day
About Plone Conference Tokyo 2018 Frontend DayAbout Plone Conference Tokyo 2018 Frontend Day
About Plone Conference Tokyo 2018 Frontend DayKazuhiro Hara
 
Gatsby & React Static
Gatsby & React StaticGatsby & React Static
Gatsby & React StaticKazuhiro Hara
 
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話Kazuhiro Hara
 
Clojure.tokyo.descjop
Clojure.tokyo.descjopClojure.tokyo.descjop
Clojure.tokyo.descjopKazuhiro Hara
 
Re-frame and A-Frame
Re-frame and A-FrameRe-frame and A-Frame
Re-frame and A-FrameKazuhiro Hara
 
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 JavaWebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 JavaKazuhiro Hara
 
第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会Kazuhiro Hara
 
-Play部屋- Play 2.0はじめて&もくもく会
-Play部屋- Play 2.0はじめて&もくもく会-Play部屋- Play 2.0はじめて&もくもく会
-Play部屋- Play 2.0はじめて&もくもく会Kazuhiro Hara
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころKazuhiro Hara
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイKazuhiro Hara
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションKazuhiro Hara
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketKazuhiro Hara
 
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...Kazuhiro Hara
 
WP Jelly vol.01 WordPress管理画面にメニューを追加しよう
WP Jelly vol.01 WordPress管理画面にメニューを追加しようWP Jelly vol.01 WordPress管理画面にメニューを追加しよう
WP Jelly vol.01 WordPress管理画面にメニューを追加しようKazuhiro Hara
 
Play FrameworkとWeb Socketの話
Play FrameworkとWeb Socketの話Play FrameworkとWeb Socketの話
Play FrameworkとWeb Socketの話Kazuhiro Hara
 
MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会Kazuhiro Hara
 
Cakephp And Wordpress
Cakephp And WordpressCakephp And Wordpress
Cakephp And WordpressKazuhiro Hara
 

More from Kazuhiro Hara (20)

MDX with Next.js
MDX with Next.jsMDX with Next.js
MDX with Next.js
 
MDX and Next.js
MDX and Next.jsMDX and Next.js
MDX and Next.js
 
About Plone Conference Tokyo 2018 Frontend Day
About Plone Conference Tokyo 2018 Frontend DayAbout Plone Conference Tokyo 2018 Frontend Day
About Plone Conference Tokyo 2018 Frontend Day
 
Gatsby & React Static
Gatsby & React StaticGatsby & React Static
Gatsby & React Static
 
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
 
Clojure.tokyo.descjop
Clojure.tokyo.descjopClojure.tokyo.descjop
Clojure.tokyo.descjop
 
Re-frame and A-Frame
Re-frame and A-FrameRe-frame and A-Frame
Re-frame and A-Frame
 
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 JavaWebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
 
第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会
 
-Play部屋- Play 2.0はじめて&もくもく会
-Play部屋- Play 2.0はじめて&もくもく会-Play部屋- Play 2.0はじめて&もくもく会
-Play部屋- Play 2.0はじめて&もくもく会
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
 
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
 
WP Jelly vol.01 WordPress管理画面にメニューを追加しよう
WP Jelly vol.01 WordPress管理画面にメニューを追加しようWP Jelly vol.01 WordPress管理画面にメニューを追加しよう
WP Jelly vol.01 WordPress管理画面にメニューを追加しよう
 
Play FrameworkとWeb Socketの話
Play FrameworkとWeb Socketの話Play FrameworkとWeb Socketの話
Play FrameworkとWeb Socketの話
 
MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会
 
Cakephp And Wordpress
Cakephp And WordpressCakephp And Wordpress
Cakephp And Wordpress
 

ClojureでElectronアプリを作ろう