SlideShare a Scribd company logo
buddyのユーザ認証周りのデータ構造
使われているデータの取り回しについてのお話
2017/11/17
clj-ebisu #1
出演
{:company “Greative.GK”
:name “Kazuhiro Hara”
:twitter “@kara_d”
:interest “SPA, WebVR, Clojure,
Design research”}
Clojure / ClojureScript で
Electronアプリケーションを
作るためのスタートキット / プラットホーム
● オープンソースにてGitHubにて公開
● MITライセンス
● 現在のスター数 : 329
http://descjop.org/
今日お話しすること
今日お話しすること
buddy-authのidentity実装をみてたときに、
リクエストマップに対するmiddlewareの使い方で
アハ体験した話
buddyってなにさ、というあたりから
buddyについて
buddy is a complete security library for clojure. With support for:
● authentication, authorization & access rules (ring/compojure extensions)
● secure hash functions (digest)
● password hashing algorithms (bcrypt, pbkdf2, scrypt)
● message/text signing (high level interface)
● signature & authentication (mac & digital signature)
● encryption (block, stream ciphers, nonces, salts)
● key derivation functions (kdf)
buddyのパッケージ
● buddy-core
● buddy-auth
● buddy-hashers
● buddy-sign
buddyのパッケージ
● buddy-core
● buddy-auth ⇦ 今日はこのあたりの話
● buddy-hashers
● buddy-sign
ユーザの認証・認可を実装するとき、お世話に
● 認証スタイルも、Basic、セッション、トークン、JWS、JWEといろいろ
● 特定ルート以下に適用するとかも楽
(def access-rules
{:pattern #"^/admin.*"
:handler authenticated-user?})
(-> app-routes
(wrap-access-rules {:rules [ access-rules]})
(wrap-authentication backend)
(wrap-authorization backend)
(wrap-session {:store (session-cookie/cookie-store {:key key})
:cookie-attrs attr
:cookie-name name})
buddy-authを使った認証の一例
セッションベース
buddy-authを使った認証の一例(リクエスト編)
1. 認証対象のパスへアクセス( /admin とか)
2. セッションから認証済みかどうか確認
3. 認証済みであれば、リクエストマップへ :identity キーを追加
3.1. 必要な処理をして、レスポンスを返す
4. 認証済みでなければ、:unauthorized-handler を実行
4.1. エラー表示など
(defn wrap-authentication
[handler & backends]
(fn [request]
(if-let [authdata (authenticate-request request backends)]
(handler (assoc request :identity authdata))
(handler request))))
buddy-authを使った認証の一例(ログイン編)
1. ログインフォームから、認証に必要な情報を送信
2. 認証に必要な情報を照会
3. 認証OKであれば :identity キーをセッションに書き込む
3.1. 適切な処理を行う、もしくはリダイレクト
3.2. identity のセッションへの書き込みは、自前で行う
4. 認証NGであれば、ログインフォームに戻るなどの処理をする
(-> (redirect next)
(assoc :session updated-session))
認証されたリクエストかの確認
authenticated?関数でチェックができる
やっていることはシンプル
(defn authenticated-user? [request]
(if (auth/authenticated? request)
(accessrules/success)
(accessrules/error)))
(defn authenticated?
[request]
(boolean (:identity request)))
更に、identityについて
identityには何が格納できる?
よくあるサンプルでは「ユーザー名」
中身は、edn形式の {:identity :admin} になる
そこで生まれる疑問、ユーザー名じゃないとだめなのか
結局、edn形式になるので、ednとして表現できるものならなんでもつっこめる
identityにマップを入れたらどうなる?
:identityに {:username :user, :role :admin} を入れてみる
cookieのセッション領域には、
H/XbI0K3JU9TGMoyoGN16Ud2q4n8paIavLMFO+PQcqtXd3PtBIh9jmkg04FvqFuDXSYBlCbYAfMu8GhzE9ZFYQ==--BxvDyxfR0dtzjBiZqVPihT
ld/sLIYvI9hRycPtTQ1nM=などが入り、
中身は、{:identity {:username :user, :role :admin}} となる
identityに関数をつっこむと?
:identity に、例えば (fn [a] (println a)) を入れてみる
シリアライズに失敗してランタイムエラー
java.lang.RuntimeException
No reader function for tag object
identityの不思議さ
今まで使ってきたWebアプリケーションフレームワークのリクエスト情報の利用スタイルで
は、リクエストオブジェクト的なものは、読みこんで利用するだけ
public Result index() {
String username = session("identity");
if(username != null) {
return ok("Hello " + username);
} else {
return unauthorized("Oops, you are not connected");
}
}
よくあるリクエスト情報の処理
リクエストは、専用のコンテキストオブジェクトなどに格納され、それがコントローラを通じ
て、モデルなどで利用される
request controller
service
model
リクエストデータとミドルウェアパターン
最初、Clojureを触ったときは、requestには手を触れなかったが(ミドルウェアは利用して
いたものの)、変えるだけでなく、キーの追加もいいという驚き。
Middleware Patterns · ring-clojure/ring Wiki
https://github.com/ring-clojure/ring/wiki/Middleware-Patterns
request wrap-foo request wrap-bar request wrap-baz request
まとめ
ベルトコンベアのような認証プロセス
requestをもらって、コントローラ受け取って処理をして、responseを返すというスタイルだ
けでないやりかたに感銘を受けた。
個人的には、buddy-authのidentity実装には、Clojureで開発をしていく上でヒントになる
と感じたものが見れた。
フラグを立てるところと、フラグに基づいた処理をするところは別でもいい
受け取ってたらい回しにして処理するしかないようなものも、ミドルウェアとして組み合わ
せることで、独立性が高い実装が行える
こぼれ話
セッションの中身はどうなるのか?
セッションに書き込まれたidentityは信用できるか
ring.middleware.session.cookie に実装がある
● HmacSHA256
○ SHA-256で構築された、ハッシュメッセージ認証コードとして使用可能なキー付きハッシュアルゴリ
ズムの一種
● AES/CBC/PKCS5Padding
○ データ本体はAES暗号化
セッションの中を見る
開発側からは見れます
中身は、edn形式の {:identity :admin} になる
(let [cookieStore (session-cookie/cookie-store {:key "d41d8cd98f00b204"})
cookie-read (session-store/read-session cookieStore
"LcgrPJu3zE0/Pvd0cSFo29jE/IlLlwRAa6Jo99FCZF9WKoJj/5bOLbp8g2mAB585--QB0LJInHfO
CBH8kUwSIcOnrWqq7Ldk6wcHwinX/Kqug=")]
(println (str cookie-read)))
CookieStore本体は見れない
ns-unmapされている
中身はこう
(deftype CookieStore [secret-key]
SessionStore
(read-session [_ data]
(if data (unseal secret-key data)))
(write-session [_ _ data]
(seal secret-key data))
(delete-session [_ _]
(seal secret-key {})))
(ns-unmap *ns* '->CookieStore)
- END -
ありがとうございました
2017/11/17
clj-ebisu #1

More Related Content

What's hot

GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろうGitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろう
Nobuhiro Ueda
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
はじめての CircleCI
はじめての CircleCIはじめての CircleCI
はじめての CircleCI
Yosuke Mizutani
 
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasiaフロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
Masayuki Ishikawa
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
 
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basicJjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
Takuma Watabiki
 
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと
Recruit Technologies
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いているAkihiro Kuwano
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
 
mruby_nginx_module
mruby_nginx_modulemruby_nginx_module
mruby_nginx_module
Tatsuhiko Kubo
 
Customazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツールCustomazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツール
yaegashi
 
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
慎二 山田
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010Hiroh Satoh
 
20180925 docker ecs_fargate
20180925 docker ecs_fargate20180925 docker ecs_fargate
20180925 docker ecs_fargate
Hisayuki Mori
 
一番簡単なWebSocketの試し方
一番簡単なWebSocketの試し方一番簡単なWebSocketの試し方
一番簡単なWebSocketの試し方
Shunji Konishi
 
mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11Tatsuhiko Kubo
 
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
Issei Hiraoka
 
Ohs#7 学習API
Ohs#7 学習APIOhs#7 学習API
Ohs#7 学習API
祐理 大野
 
Circle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみるCircle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみる
ynakahira
 

What's hot (20)

GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろうGitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろう
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
はじめての CircleCI
はじめての CircleCIはじめての CircleCI
はじめての CircleCI
 
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasiaフロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
 
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basicJjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
 
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
mruby_nginx_module
mruby_nginx_modulemruby_nginx_module
mruby_nginx_module
 
Customazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツールCustomazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツール
 
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010
 
20180925 docker ecs_fargate
20180925 docker ecs_fargate20180925 docker ecs_fargate
20180925 docker ecs_fargate
 
一番簡単なWebSocketの試し方
一番簡単なWebSocketの試し方一番簡単なWebSocketの試し方
一番簡単なWebSocketの試し方
 
mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11
 
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
 
Ohs#7 学習API
Ohs#7 学習APIOhs#7 学習API
Ohs#7 学習API
 
Circle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみるCircle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみる
 

Similar to buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話

OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17
Tatsuo Kudo
 
Ingress on GKE/GCE
Ingress on GKE/GCEIngress on GKE/GCE
Ingress on GKE/GCE
shouta yoshikai
 
Gatsby & React Static
Gatsby & React StaticGatsby & React Static
Gatsby & React Static
Kazuhiro Hara
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
Suguru Oho
 
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみたJupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Satoshi Yazawa
 
英辞郎ユーザーミーティング資料
英辞郎ユーザーミーティング資料英辞郎ユーザーミーティング資料
英辞郎ユーザーミーティング資料
Takuya Oikawa
 
PostgreSQL2016合宿成果資料
PostgreSQL2016合宿成果資料PostgreSQL2016合宿成果資料
PostgreSQL2016合宿成果資料
Sunao Kiyosue
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
Satoshi Yazawa
 
ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!
Kazumi IWANAGA
 
クラウドことはじめ
クラウドことはじめクラウドことはじめ
クラウドことはじめ
Keiji Kamebuchi
 
2014年12月13日 アカリクITイベント 川原尚人_スライド
2014年12月13日 アカリクITイベント 川原尚人_スライド2014年12月13日 アカリクITイベント 川原尚人_スライド
2014年12月13日 アカリクITイベント 川原尚人_スライド
nkawahara
 
20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用
tksyokoyama
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
Recruit Technologies
 
OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaido
slankdev
 
インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門
貴寛 益子
 
BioProject, BioSample, DRA へのデータ登録
BioProject, BioSample, DRA へのデータ登録BioProject, BioSample, DRA へのデータ登録
BioProject, BioSample, DRA へのデータ登録
DNA Data Bank of Japan center
 
チケット駆動でテスト駆動なアプリケーション開発
チケット駆動でテスト駆動なアプリケーション開発チケット駆動でテスト駆動なアプリケーション開発
チケット駆動でテスト駆動なアプリケーション開発
Yoshimi Tominaga
 
クラウド小委員会で今何が話されているのか
クラウド小委員会で今何が話されているのかクラウド小委員会で今何が話されているのか
クラウド小委員会で今何が話されているのか
Keisuke Katsuki
 
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Kenji Urushima
 

Similar to buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話 (20)

OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17
 
Ingress on GKE/GCE
Ingress on GKE/GCEIngress on GKE/GCE
Ingress on GKE/GCE
 
Gatsby & React Static
Gatsby & React StaticGatsby & React Static
Gatsby & React Static
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみたJupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
 
英辞郎ユーザーミーティング資料
英辞郎ユーザーミーティング資料英辞郎ユーザーミーティング資料
英辞郎ユーザーミーティング資料
 
PostgreSQL2016合宿成果資料
PostgreSQL2016合宿成果資料PostgreSQL2016合宿成果資料
PostgreSQL2016合宿成果資料
 
#nds34 LT
#nds34 LT#nds34 LT
#nds34 LT
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
 
ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!
 
クラウドことはじめ
クラウドことはじめクラウドことはじめ
クラウドことはじめ
 
2014年12月13日 アカリクITイベント 川原尚人_スライド
2014年12月13日 アカリクITイベント 川原尚人_スライド2014年12月13日 アカリクITイベント 川原尚人_スライド
2014年12月13日 アカリクITイベント 川原尚人_スライド
 
20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
 
OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaido
 
インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門
 
BioProject, BioSample, DRA へのデータ登録
BioProject, BioSample, DRA へのデータ登録BioProject, BioSample, DRA へのデータ登録
BioProject, BioSample, DRA へのデータ登録
 
チケット駆動でテスト駆動なアプリケーション開発
チケット駆動でテスト駆動なアプリケーション開発チケット駆動でテスト駆動なアプリケーション開発
チケット駆動でテスト駆動なアプリケーション開発
 
クラウド小委員会で今何が話されているのか
クラウド小委員会で今何が話されているのかクラウド小委員会で今何が話されているのか
クラウド小委員会で今何が話されているのか
 
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
 

More from Kazuhiro Hara

MDX with Next.js
MDX with Next.jsMDX with Next.js
MDX with Next.js
Kazuhiro Hara
 
MDX and Next.js
MDX and Next.jsMDX and Next.js
MDX and Next.js
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 Day
Kazuhiro Hara
 
Clojure.tokyo.descjop
Clojure.tokyo.descjopClojure.tokyo.descjop
Clojure.tokyo.descjop
Kazuhiro Hara
 
React系(別言語含む)の サーバーサイドレンダリング について考えよう
React系(別言語含む)の サーバーサイドレンダリング について考えようReact系(別言語含む)の サーバーサイドレンダリング について考えよう
React系(別言語含む)の サーバーサイドレンダリング について考えよう
Kazuhiro Hara
 
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状についてClojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Kazuhiro Hara
 
ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介
Kazuhiro Hara
 
(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
Kazuhiro Hara
 
Cryogenでサイトつくろーじぇん
CryogenでサイトつくろーじぇんCryogenでサイトつくろーじぇん
Cryogenでサイトつくろーじぇん
Kazuhiro 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 Java
Kazuhiro 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におけるWebSocket
Kazuhiro 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
 

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
 
Clojure.tokyo.descjop
Clojure.tokyo.descjopClojure.tokyo.descjop
Clojure.tokyo.descjop
 
React系(別言語含む)の サーバーサイドレンダリング について考えよう
React系(別言語含む)の サーバーサイドレンダリング について考えようReact系(別言語含む)の サーバーサイドレンダリング について考えよう
React系(別言語含む)の サーバーサイドレンダリング について考えよう
 
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状についてClojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
 
ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介
 
(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
 
Cryogenでサイトつくろーじぇん
CryogenでサイトつくろーじぇんCryogenでサイトつくろーじぇん
Cryogenでサイトつくろーじぇん
 
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の話
 

Recently uploaded

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 

Recently uploaded (14)

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 

buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話