View
2.812
Download
3
Category
Preview:
DESCRIPTION
Clojure の Recruit Technologies で利用事例.
Citation preview
会社でClojure使ってみて分かったこと 2014.10.10
Clojure夜会LT
Page 2
自己紹介
(def me {:name “吉田尚弘”
:company “リクルートテクノロジーズ”
:job [“サーバサイドエンジニア”]
:lang {:java “about 10 years”
:clojure “1 month” }})
Page 3
今日話すこと
採用箇所
利用フレームワーク
開発環境
よかったところ
苦労したところ
Page 4
採用箇所
ログインログから攻撃と思われるアクセスを抽出して、メール通知するバッチ。
定期実行
分析SQL
メール送信
ここ
運用者とか マネージャとか
・リアルタイム検知/ブロックではない
・インターバル実行でログを拾ってメール
ログイン
ログ
Page 5
採用箇所
本来はこれを導入したかった。
http://qiita.com/kawasima/items/e79ca6841d0d0067b9c6
「ログインログの収集と不正アクセス検知」
Page 6
利用フレームワーク
http://www.luminusweb.net/
・Webアプリ開発に必要な機能が「最低限」揃っている
・オートコンパイルやStack Traceの表示など開発支援の機能もある
・Clojure初心者がさくっとWEBアプリ開発するには取っ付きやすい。
-> 今回のようなアプリであれば数十分〜数時間で実行可能jarの作成まで可。
Luminus : A Clojure Web Framework
Page 7
利用フレームワーク
テンプレートエンジン
https://github.com/yogthos/Selmer
ルーティング
https://github.com/weavejester/compojure
WEBコンテナ
https://github.com/noir-clojure/lib-noir
https://github.com/weavejester/ring-server
DBアクセス
https://github.com/korma/Korma
lein new luminus myapp
cd myapp
lein ring server
Page 8
開発環境
Intellij + La Clojure
・Javaのコードアシストあり
・pom.xmlを書いてMavenPJ化するとclojureのコードアシストもできる
・Intellijからリモートデバッグで起動中のプロセスに接続可
※Light Tableの方がよさげ
Page 9
よかったところ
Javaと比較して圧倒的に短いコード量
<-java7
Page 10
よかったところ
Clojureで書くとこんな感じ。
Java8のStream APIやFunctionを駆使すればJava7よりはシンプルに記載可能だが限定的。
resultset-seqのような強力な関数はない。
Page 11
よかったところ
Javaの資産をフル活用可能
commons-emailを利用したメール送信例
・dependencyに追加するだけ
・たいていのライブラリはclojureでラップされている(jdbc/log4j)
Page 12
苦労したところ
Immutableな世界
立ち上がりに時間はかかる
Java出身の人は、Java8 -> Scala -> Clojureの順で触っていくと、 習得が早いかも
Function & Stream -> mutable & immutable -> immutable
徐々に抵抗がなくなるはず
性能をJavaと同等に引き上げるのが一番難しい
デバッグ
遅延シーケンスを現実化しながら中を確認
スタックトレースの行番号と実際のエラー位置が異なるケースがある
Page 13
まとめ
Enterpriseにおいてもミッションクリティカルでなければ十分Clojureは利用できると思う
言語機能
シーケンス / プロトコル / マクロ / 豊富な標準関数
関数型
JVM
充実したフレームワーク/ライブラリ
大規模システムにも適用可能
シンプルなルール
technology-radar-2014-01 technology-radar-2014-07
Recommended