SlideShare a Scribd company logo
Copyright © 2009-2017 eureka, inc. All rights reserved.
ClojureScript+re-frameで社内アプ
リケーションを開発した話
Takeuchi Keitaro / eureka, inc.
自己紹介
About me
Copyright © 2009-2017 eureka, inc. All rights reserved.
名前 Keitaro Takeuchi(@If_I_were_boxp)
所属
担当 (Go, TypeScript, Clojure...)
自己紹介
Copyright © 2009-2017 eureka, inc. All rights reserved.
エウレカについて
About eureka
CONFIDENTIAL
株式会社エウレカ
事業内容
自社サービスの企画・開発・運営
・ オンライン・デーティング・サービス「Pairs」
・ カップル専用アプリ「Couples」
海外拠点
・ 唯麗家股份有限公司(台湾)
・ EUREKA SG Pte. Ltd.(シンガポール)
ClojureScript+re-frameで社内アプリケーションを開発した話
ClojureScript+re-frameで社内アプリケーションを開発した話
CONFIDENTIAL
Who we are
Today's Talk
ClojureScript+re-frameで社内アプリケーションを開発した
話
今日お話すること
・開発した社内システムについて
・Clojureについてざっくり解説
・ClojureScriptとJavaScriptで開発がどう変わる
のか
・実際に開発してみての所感
• 社内イベント管理システム
– イベントの開催・編集
– プロフィール編集
– Googleカレンダー連携
– Slackログイン
– Slackへの開催通知
• 社内の勉強会や部活動の
開催に使う
開発した社内システムについて
開発した社内システムについて
バックエンド
Golang on Google
Kubernetes Engine
フロントエンド
ClojureScript
開発した社内システムについて
フロントエンド
ClojureScript
バックエンド
Golang on Google
Kubernetes Engine
Clojure
・Lisp方言の一つ
・動的型付け
・関数型言語
・JVM/JavaScript/.NET
・Immutableなデータ構造
・REPL駆動開発
Clojure
Clojureのコード例
REPL駆動開発
開発者の開発環境
(IDE, Emacs, Vim,
console...)
Clojure REPL
評価結果
コードを書いて動作確認するまでの
サイクルを高速に回せる
(defn add [x] (+ x 1))
https://youtu.be/bLZsB_tZc14
Clojure on JavaScript?
ClojureScript!!
Clojure on JavaScript
・ClojureをJSへコンパイル
・Clojureと簡単にコードを共有
・REPLにも対応
・当然マクロも使える
JavaScriptとの技術スタック比較
技術スタック JavaScript ClojureScript
UI周り
React, Vue,
Polymer...
Om, Reagent, Rum…
状態管理周り Redux, Vuex... re-frame, citrus...
ビルドツール Webpack, Rollup... Leiningen, Boot...
モジュール
ES6 Module, node
modules...
goog.module...
非同期処理 Promise, RxJS... core.async...
JavaScriptとの技術スタック比較
技術スタック JavaScript ClojureScript
UI周り
React, Vue,
Polymer...
Om, Reagent, Rum…
状態管理周り Redux, Vuex... re-frame, citrus...
ビルドツール Webpack, Rollup... Leiningen, Boot...
モジュール
ES6 Module, node
modules...
goog.module...
非同期処理 Promise, RxJS... core.async...
・Hiccup記法と呼ばれる記法で記述
・ReactをWrapしたライブラリ
・ReactのStateではなくClojureのatomを使って
状態管理する
UI周り(Reagent)
・JSでのReduxに相当す
るライブラリ
・Reduxと同様にデータの
流れを一方に管理する
・”effect handler”に明確
に副作用が分けられる
状態管理周り(re-frame)
状態管理周り(re-frame)
Browser
(dispatch [:add “surprise”])
Event Dispatcher
(defn add
[{:keys [db]} [_ item]]
{:db (conj db item)})
Event Handler
{:db (conj db “surprise”)}
Effect Handler
Effect
(defn last-member
[db _]
(last db))
query
[:div.last-member “surprise”]
View
・Clojureでもっとも良く使われる
ビルドツール
・ボイラーテンプレートを素で
持っている
・pluginによって機能拡張可能
 ※pluginの一例
 ・figwheel: hot code loading
 ・lein-cljs: Clojure to JS
 ・lein-npm: npm
ビルドツール(Leningen)
https://youtu.be/2YT9zrhldVE
・ClojureScriptではgoog.moduleが使われる
・ES6 Module等で書かれたJSのライブラリは
Leiningenを使って取り込む
モジュール管理
実際に開発してみての所感
・ClojureScript+re-frameの不変性
・React向けライブラリをそのまま流用出来てUI
の開発がらくらくだった
・Leiningenテンプレートでビルドツールの設定を
簡単に行えた
実際に開発してみての所感
おわり。
fin.
「世界で愛されるサービス」を一緒に作りませんか?
セグメントNo1 サービス
グローバルビジネス
Business
pairs Goフルスクラッチ
Engineering
マッチングアルゴリズム
Big Data
✕
ハイブリッドエンジニア 大規模行動データ解析
CONFIDENTIAL
Thank you
:)
Thank you :)

More Related Content

PDF
Reagent & re-frameのすすめ
PDF
虎の穴ラボ エンジニア採用説明資料
PDF
虎の穴ラボ エンジニア採用説明資料
PDF
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
PDF
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
PPTX
Mackerel Agentのプロビジョニングフローについて / Mackerel Meetup #7 Tokyo 発表資料
PDF
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
PDF
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
Reagent & re-frameのすすめ
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
Mackerel Agentのプロビジョニングフローについて / Mackerel Meetup #7 Tokyo 発表資料
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!

What's hot (20)

PDF
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
PDF
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
PDF
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
PDF
通販開発部の西田さん「通販開発マネジメントの5ルール」
PDF
Tech day#2 オープニングトーク
PDF
サーバサイドKotlinへの入門 Ktor編
PPTX
AWS Startup Tech Meetup #008 発表資料
PDF
運用QAにおける工数効率化の取り組み
PDF
Cloud runのオートスケールを検証してみる
PDF
AWS Proton を使ってみた
PDF
びっくりするくらいリモートワークが馴染んだ話
PDF
RSGT2019 リーダーシップを一度捨ててチームの輪の中に置いた話
PPTX
ハイブリッドクラウドで変わるインフラストラクチャ設計
PDF
成功と失敗に学ぶアジャイル受託開発の極意
PDF
[ギルドワークス社イベント]〜DXを実現するためにユーザ企業とSI企業が今すぐとるべき3つのステップ〜(ボーナス版)
PDF
動画ナレッジクラウド「VideoStep」サービスご紹介資料.pdf
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
PDF
[Agile Japan 2019]DXを実現するためにユーザ企業とSI企業が 今すぐとるべき3つのステップ
PDF
ユーザー目線での課題早期発見!ユーザーの声はヒットへの第一歩
PDF
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
通販開発部の西田さん「通販開発マネジメントの5ルール」
Tech day#2 オープニングトーク
サーバサイドKotlinへの入門 Ktor編
AWS Startup Tech Meetup #008 発表資料
運用QAにおける工数効率化の取り組み
Cloud runのオートスケールを検証してみる
AWS Proton を使ってみた
びっくりするくらいリモートワークが馴染んだ話
RSGT2019 リーダーシップを一度捨ててチームの輪の中に置いた話
ハイブリッドクラウドで変わるインフラストラクチャ設計
成功と失敗に学ぶアジャイル受託開発の極意
[ギルドワークス社イベント]〜DXを実現するためにユーザ企業とSI企業が今すぐとるべき3つのステップ〜(ボーナス版)
動画ナレッジクラウド「VideoStep」サービスご紹介資料.pdf
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
[Agile Japan 2019]DXを実現するためにユーザ企業とSI企業が 今すぐとるべき3つのステップ
ユーザー目線での課題早期発見!ユーザーの声はヒットへの第一歩
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Ad

Similar to ClojureScript+re-frameで社内アプリケーションを開発した話 (20)

PPTX
Golang oss libraries
PPTX
本番サーバへのログイン
権限を整理したお話
PPTX
eureka go ライブラリの話
PDF
新卒フロントエンドエンジニアが見たPairsフロントエンド
PPTX
Gunosy Beer Bash #05 pairs
PPTX
GREE creators' meetup2 Session A Hosokawa
PPTX
Mackerel x Twilio ~レコチョクの場合~
PPTX
Microservices on pairs
PDF
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
PDF
「eureka x mackerel」Mackerel meetup#6
PPTX
Jisaセミナー講演
PDF
ネットショップ実務士補コース
PDF
Aperport_発注会社向けマッチング・ベンダーマネジメントサービス提案資料_20240410
PDF
13 power nignt2014_yanase
PDF
How to work Tableau x Google Cloud Platform in CyberAgent AdTech Studio
PDF
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!
PPTX
ZENKEI AI セミナー 第1回 概要説明会
PDF
Vgにおけるuxデザインとagile開発@ハッカー道場
PPTX
Nintendo Labo の子育て力
PDF
泥臭い受託開発Dev love関西
Golang oss libraries
本番サーバへのログイン
権限を整理したお話
eureka go ライブラリの話
新卒フロントエンドエンジニアが見たPairsフロントエンド
Gunosy Beer Bash #05 pairs
GREE creators' meetup2 Session A Hosokawa
Mackerel x Twilio ~レコチョクの場合~
Microservices on pairs
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
「eureka x mackerel」Mackerel meetup#6
Jisaセミナー講演
ネットショップ実務士補コース
Aperport_発注会社向けマッチング・ベンダーマネジメントサービス提案資料_20240410
13 power nignt2014_yanase
How to work Tableau x Google Cloud Platform in CyberAgent AdTech Studio
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!
ZENKEI AI セミナー 第1回 概要説明会
Vgにおけるuxデザインとagile開発@ハッカー道場
Nintendo Labo の子育て力
泥臭い受託開発Dev love関西
Ad

ClojureScript+re-frameで社内アプリケーションを開発した話