Movatterモバイル変換


[0]ホーム

URL:


PDF, PPTX8,855 views

会社でClojure使ってみて分かったこと

Clojure の Recruit Technologies で利用事例.

Embed presentation

Download as PDF, PPTX
会社で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

PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
例外設計における大罪
PPTX
世界一わかりやすいClean Architecture
PDF
Pythonによる黒魔術入門
PDF
怖くないSpring Bootのオートコンフィグレーション
PDF
ソフトウェアにおける 複雑さとは何なのか?
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
PDF
Where狙いのキー、order by狙いのキー
PDF
Javaのログ出力: 道具と考え方
PDF
暗号技術の実装と数学
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
Serverless時代のJavaについて
PDF
オブジェクト指向できていますか?
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
キメるClojure
PDF
ソフトウェア設計における 意思決定とそのレビューの秘訣
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
PDF
MagicOnion入門
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
テスト文字列に「うんこ」と入れるな
PDF
Java仮想マシンの実装技術
PDF
Unity開発で使える設計の話+Zenjectの紹介
PPTX
Metaspace
PPT
Glibc malloc internal
PDF
HadoopをBQにマイグレしようとしてる話
PDF
「リクルートデータセット」 ~公開までの道のりとこれから~

More Related Content

PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
例外設計における大罪
PPTX
世界一わかりやすいClean Architecture
PDF
Pythonによる黒魔術入門
PDF
怖くないSpring Bootのオートコンフィグレーション
DynamoDBの初心者に伝えたい初めて触るときの勘所
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
Dockerfile を書くためのベストプラクティス解説編
例外設計における大罪
世界一わかりやすいClean Architecture
Pythonによる黒魔術入門
怖くないSpring Bootのオートコンフィグレーション

What's hot

PDF
ソフトウェアにおける 複雑さとは何なのか?
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
PDF
Where狙いのキー、order by狙いのキー
PDF
Javaのログ出力: 道具と考え方
PDF
暗号技術の実装と数学
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
Serverless時代のJavaについて
PDF
オブジェクト指向できていますか?
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
キメるClojure
PDF
ソフトウェア設計における 意思決定とそのレビューの秘訣
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
PDF
MagicOnion入門
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
テスト文字列に「うんこ」と入れるな
PDF
Java仮想マシンの実装技術
PDF
Unity開発で使える設計の話+Zenjectの紹介
PPTX
Metaspace
PPT
Glibc malloc internal
ソフトウェアにおける 複雑さとは何なのか?
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
Where狙いのキー、order by狙いのキー
Javaのログ出力: 道具と考え方
暗号技術の実装と数学
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Serverless時代のJavaについて
オブジェクト指向できていますか?
SPAセキュリティ入門~PHP Conference Japan 2021
キメるClojure
ソフトウェア設計における 意思決定とそのレビューの秘訣
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
MagicOnion入門
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
テスト文字列に「うんこ」と入れるな
Java仮想マシンの実装技術
Unity開発で使える設計の話+Zenjectの紹介
Metaspace
Glibc malloc internal

More from Recruit Technologies

PDF
HadoopをBQにマイグレしようとしてる話
PDF
「リクルートデータセット」 ~公開までの道のりとこれから~
PDF
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
PDF
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
PDF
Tableau活用4年の軌跡
PDF
ユーザー企業内製CSIRTにおける対応のポイント
PDF
リクルート式AIの活用法
PDF
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
PDF
新卒2年目が鍛えられたコードレビュー道場
PDF
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
PDF
ユーザー企業内製CSIRTにおける対応のポイント
PDF
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
PDF
ユーザーからみたre:Inventのこれまでと今後
PDF
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
PDF
銀行ロビーアシスタント
PDF
LT(自由)
PDF
EMRでスポットインスタンスの自動入札ツールを作成する
PDF
RANCHERを使ったDev(Ops)
PDF
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
PDF
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
HadoopをBQにマイグレしようとしてる話
「リクルートデータセット」 ~公開までの道のりとこれから~
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
Tableau活用4年の軌跡
ユーザー企業内製CSIRTにおける対応のポイント
リクルート式AIの活用法
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
新卒2年目が鍛えられたコードレビュー道場
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
ユーザー企業内製CSIRTにおける対応のポイント
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
ユーザーからみたre:Inventのこれまでと今後
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
銀行ロビーアシスタント
LT(自由)
EMRでスポットインスタンスの自動入札ツールを作成する
RANCHERを使ったDev(Ops)
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...

会社でClojure使ってみて分かったこと

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

[8]ページ先頭

©2009-2025 Movatter.jp