SlideShare a Scribd company logo
1 of 34
Download to read offline
プログラミング言語Clojureの
ニャンパスでの活用事例
JJUG CCC 2015 Spring
2015/04/11 @ ベルサール新宿グランド
ニャンパス株式会社 太田 正悟
自己紹介
‣ 太田 正悟 (@athos0220)
‣ Clojureコントリビュータ
‣ 今年2月よりニャンパス所属
‣ 2013年に某アニメ関連で話題になっていたニャン
パスと交流をはじめる
会社紹介
‣ ニャンパス株式会社
‣ 2010年設立
‣ 業務内容
‣ Webサービス・アプリ開発
‣ プロトタイピング(試作開発)
‣ コワーキングスペースHaLakeを運営
アジェンダ
‣ Clojureの概要
‣ Clojureを使う理由
‣ Clojure活用事例
‣ Clojureコミュニティに向けた取り組み
Clojureの概要
Clojureの概要
‣ Lisp系言語
‣ 関数型言語
‣ JVM言語
Clojureの概要: Lisp系言語
‣ S式というLisp由来の独特のシンタックスをもつ
‣ 言語がシンプルで覚えることが少ない
‣ マクロを使ってプログラマが言語を拡張できる(後述)
(defn hello [name]	
(println (str “Hello ” name)))
Clojureの概要: Lisp系言語
user=> (defn f [x] (+ x 1))	
#’user/f	
user=> (f 10)	
11	
user=> (defn f [x] (* x x))	
#’user/f	
user=> (f 10)	
100
REPL(Read-Eval-Print Loop)を
使ったインタラクティブな開発
Clojureの概要: 関数型言語
‣ 多くの値がイミュータブル(不変)
‣ ファーストクラスな関数
‣ 遅延シーケンスで無限個の値も扱える
(reduce (fn [a x] (+ a x))	
(map (fn [x] (* x x))	
(take-while (fn [x] (<= x 100))	
(range))))
Clojureの概要: 関数型言語
(->> (range)	
(take-while #(<= % 100))	
(map #(* % %))	
(reduce +)) こうも書ける!
‣ 多くの値がイミュータブル
‣ ファーストクラスな関数
‣ 遅延シーケンスで無限個の値も扱える
Clojureの概要: JVM言語
‣ Javaのオブジェクトを簡単に扱える
‣ 無名クラスも簡単に作れる
(String. “foo”)	
(.substring “foo” 1)	
Math/PI	
(Long/parseLong “42”)
new String(“foo”)	
“foo”.substring(1)	
Math.PI	
Long.parseLong(“42”)
Clojure Java
Clojureの概要: JVM言語
‣ Javaのオブジェクトを簡単に扱える
‣ 無名クラスも簡単に作れる
(reify Runnable	
(run [this]	
(println “foo”)))
new Runnable() {	
public void run() {	
System.out.println(“foo”);	
}	
}
Clojure Java
Clojureを使う理由
Clojureを使う理由
‣ アジャイル開発との親和性
‣ 十分な実用性
‣ 言語の自由度
Clojureを使う理由: アジャイル開発との親和性
すばやいフィード
バックループ
すばやい
データ構築
漸進的な設計
REPLによる!
インタラクティブ開発
イミュータブルな!
データ構造
後づけ可能な!
ポリモーフィズム
Clojureを使う理由: アジャイル開発との親和性
‣ イミュータブルなマップ(辞書)でデータの表現を柔軟に
‣ 設計に関する決定を後に遅らせることができる
{:type :rectangle	
:width 30	
:height 40}
public class Rectangle 	
extends Shape {	
int width, height;	
…	
}
Clojure
Java
Clojureを使う理由: アジャイル開発との親和性
‣ イミュータブルなマップ(辞書)でデータの表現を柔軟に
‣ 設計に関する決定を後に遅らせることができる
{:type :rectangle	
:width 30	
:height 40}
(defmulti area :type)
(defmethod area :rectangle	
[shape]	
(* (:width shape)	
(:height shape)))
public class Rectangle 	
extends Shape {	
int width, height;	
…	
}
Clojure
Java
ポリモーフィックな振る舞いは  
マルチメソッド等で後づけできる!
Clojureを使う理由: 十分な実用性
十分な
パフォーマンス
豊富なライブラリ
実用レベルの!
エコシステム
JVM上で動作
Javaとの!
相互運用性
Leiningen!
Clojars, etc.
Clojureを使う理由: 言語の自由度
実行時の
プログラム変更
問題領域にあった
言語の定義
リロード機能!
REPL, etc.
マクロ
Clojureを使う理由: 言語の自由度
マクロ
‣ プログラマが独自の構文を定義できる仕組み
‣ 問題領域に合わせてClojureを拡張可能
(defmacro with-open	
[[name file] & body]	
`(let [~name ~file]	
(try	
~@body	
(finally	
(.close ~name)))))
(with-open [f (reader “foo”)]	
(write-to-file f))
(let [f (reader “foo”)]	
(try	
(write-to-file f)	
(finally	
(.close f))))
マクロの定義
展開
Clojureを使う理由: 言語の自由度
マクロ!
ライブラリ
静的
型チェック
非同期
プログラミング
パターン
マッチ
論理
プログラミング
core.typed
core.async
core.match
core.logic
Clojure活用事例
Clojure活用事例
‣ baasday
‣ Lesson Supporter
baasday
‣ MBaaS (Mobile Backend as a Service)
‣ スマホアプリのバックエンド機能をクラウドサービスとして提供
‣ 運用:2年
‣ 利用者:のべ20万インストール
‣ スループット:150リクエスト/秒
Amazon SES
Amazon SNS
Amazon S3
Amazon ELB
App (EC2)
App (EC2)
App (EC2) DB (EC2)
Lesson Supporter
‣ 個人レッスン支援サービス
‣ 簡易CMS・ブログ・予約管理機能等を提供
‣ ボイストレーナー星野氏と共同で開発中
‣ 近日公開予定
Lesson Supporter
CMSモデル
‣ CMSを構成するペー
ジからなるマップ
‣ 着手から3日でCMS
モデルとページ描画
処理のコアが完成
‣ 後にページテンプレ
毎のカスタム描画方
法をマルチメソッド
で定義できるように
{:description “太田のパソコン教室”,	
:_id “ohta-pc”,	
:name “ohta-pc”,	
:title “ようこそ太田のパソコン教室へ”,	
:pages [{:display-name “ホーム”,	
:name “intro”,	
:template “intro”,	
:context {:page-name “intro”,	
:content “”,	
:subtitle “よろしく”,	
:page-title “自己紹介”}}	
{:name “blog”,	
:template “blog”,	
:context {:blog-description nil},	
:display-name “ブログ”}	
……	
]}
Lesson Supporter
user=> (import 'jp.webpay.webpay.WebPay)	
jp.webpay.webpay.WebPay
user=> (def wp (WebPay. secret-key))
#'user/wp 	
user=> (import
'jp.webpay.webpay.data.CardRequest)
jp.webpay.webpay.data.CardRequest
user=> (def req (.. (CardRequest.)
(number number)
(expMonth 3)
(expYear 16)
(cvc "123")
(name "Shogo Ohta")))
#'user/req 	
user=> (.. wp token createRequest (card req)
execute)	
#<TokenResponse …>
インタラクティブな
APIの確認
‣ WebPay APIによる
クレジット決済
‣ 初利用だったため、
REPLからAPIの使い
勝手を確認
Clojureコミュニティ
に向けた取り組み
Clojureコミュニティに向けた取り組み
‣ OSS
‣ 勉強会
‣ コワーキングスペースHaLake
Clojureコミュニティに向けた取り組み: OSS
clojournal (https://github.com/nyampass/clojournal)
‣ Clojureの日本語情報発信サイト (http://clojournal.com)
clowpay (https://github.com/nyampass/clowpay)
‣ WebPay APIのClojureバインディング
parabola (https://github.com/athos/parabola)
‣ Clojureチャットボットフレームワーク
その他のリポジトリは https://github.com/nyampass/ から確認できます
Clojureコミュニティに向けた取り組み: 勉強会
Tokyo.clj (渋谷)
‣ 不定期開催。Clojure入門セッション、もくもく会。
Laketown.clj (HaLake@越谷レイクタウン)
‣ 月1開催。もくもく会。
テーマ特化勉強会 (gen-class勉強会/core.async勉強会/etc.)
‣ 特定の言語機能等にフォーカスした勉強会。
ハンモック
‣ Rich Hickeyが提唱するハンモック駆動開発に由来。
Clojure割引
‣ 1日利用500円 (通常1000円)。
チェックインアプリ
HaLake API
‣ OSSとして公開。
Clojureコミュニティに向けた取り組み: HaLake
まとめ
‣ Clojureを使う理由
‣ アジャイル開発との親和性
‣ 十分な実用性
‣ 言語の自由度
‣ 日本でもClojureコミュニティが徐々に活発化!
‣ さぁ、皆さんもClojureをはじめてみよう!!

More Related Content

What's hot

Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Tsutomu Yano
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないことNorishige Fukushima
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターンSoudai Sone
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonadKouji Matsui
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 

What's hot (20)

Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonad
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Kotlinアンチパターン
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
 

Viewers also liked

Java web application testing
Java web application testingJava web application testing
Java web application testingTokuhiro Matsuno
 
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてあなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてShinichi Kozake
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程Takao Sumitomo
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行Yoshitaka Kawashima
 
Droid kaigiプレゼン
Droid kaigiプレゼンDroid kaigiプレゼン
Droid kaigiプレゼンSuguru Oho
 
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syobobenkyon mm
 
データモデルは時空を越える
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越えるterahide
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方Fumihiko Shiroyama
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Shinobu Okano
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素Takahiro YAMADA
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Yuki Anzai
 
マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]YUKI YAMAGUCHI
 
SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介Shinichi Kozake
 
ClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろうClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろうKazuhiro Hara
 
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]bitter_fox
 

Viewers also liked (16)

Java web application testing
Java web application testingJava web application testing
Java web application testing
 
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてあなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
 
Droid kaigiプレゼン
Droid kaigiプレゼンDroid kaigiプレゼン
Droid kaigiプレゼン
 
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
 
データモデルは時空を越える
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越える
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
 
マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]
 
SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介
 
ClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろうClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろう
 
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
 

Similar to プログラミング言語Clojureのニャンパスでの活用事例

全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由Yusuke Naka
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)Ikuru Kanuma
 
Clojure で減価償却費計算
Clojure で減価償却費計算Clojure で減価償却費計算
Clojure で減価償却費計算ultrakanji
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザインKazuhiro Hara
 
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境Tatsuya Sakai
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 ClojureYoshitaka Kawashima
 
入門ClojureScript
入門ClojureScript入門ClojureScript
入門ClojureScriptsohta
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionKazuchika Sekiya
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~拓将 平林
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】schoowebcampus
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Yasushi Ishikawa
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2Moto Yan
 
お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方Shunji Konishi
 
【JJUG LT 大会】Zulu Open JDK
【JJUG LT 大会】Zulu Open JDK【JJUG LT 大会】Zulu Open JDK
【JJUG LT 大会】Zulu Open JDKShigeru Tatsuta
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 

Similar to プログラミング言語Clojureのニャンパスでの活用事例 (20)

全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
 
From JS To CLJS
From JS To CLJSFrom JS To CLJS
From JS To CLJS
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
Clojure で減価償却費計算
Clojure で減価償却費計算Clojure で減価償却費計算
Clojure で減価償却費計算
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザイン
 
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境
 
Ll tiger clojure
Ll tiger clojureLl tiger clojure
Ll tiger clojure
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
 
入門ClojureScript
入門ClojureScript入門ClojureScript
入門ClojureScript
 
SPA×Auth0
SPA×Auth0SPA×Auth0
SPA×Auth0
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!【第2回】
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方
 
【JJUG LT 大会】Zulu Open JDK
【JJUG LT 大会】Zulu Open JDK【JJUG LT 大会】Zulu Open JDK
【JJUG LT 大会】Zulu Open JDK
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 

More from sohta

Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なものClojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なものsohta
 
入門Transducers
入門Transducers入門Transducers
入門Transducerssohta
 
Clojure Language Update (2015)
Clojure Language Update (2015)Clojure Language Update (2015)
Clojure Language Update (2015)sohta
 
REPLライフをもっと快適に
REPLライフをもっと快適にREPLライフをもっと快適に
REPLライフをもっと快適にsohta
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターsohta
 
ClojureではじめるSTM入門
ClojureではじめるSTM入門ClojureではじめるSTM入門
ClojureではじめるSTM入門sohta
 
Macros in Clojure
Macros in ClojureMacros in Clojure
Macros in Clojuresohta
 
Clojureによるバイトコードプログラミング
ClojureによるバイトコードプログラミングClojureによるバイトコードプログラミング
Clojureによるバイトコードプログラミングsohta
 

More from sohta (8)

Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なものClojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
 
入門Transducers
入門Transducers入門Transducers
入門Transducers
 
Clojure Language Update (2015)
Clojure Language Update (2015)Clojure Language Update (2015)
Clojure Language Update (2015)
 
REPLライフをもっと快適に
REPLライフをもっと快適にREPLライフをもっと快適に
REPLライフをもっと快適に
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
 
ClojureではじめるSTM入門
ClojureではじめるSTM入門ClojureではじめるSTM入門
ClojureではじめるSTM入門
 
Macros in Clojure
Macros in ClojureMacros in Clojure
Macros in Clojure
 
Clojureによるバイトコードプログラミング
ClojureによるバイトコードプログラミングClojureによるバイトコードプログラミング
Clojureによるバイトコードプログラミング
 

プログラミング言語Clojureのニャンパスでの活用事例