Enviar pesquisa
Carregar
で、次は何がくるの? - 第2回 TIS Matsuri
•
28 gostaram
•
7,372 visualizações
Yoshitaka Kawashima
Seguir
社内イベント向けのスライドです。Clojureモノノフを増やすために若干の他言語比較がありますが、ディスりの意図は決してございません。
Leia menos
Leia mais
Tecnologia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 38
Baixar agora
Baixar para ler offline
Recomendados
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
continuatioN Linking
continuatioN Linking
Kouji Matsui
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Hiroshi Kikuchi
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
TypeScript 独習会
TypeScript 独習会
Masahiro Wakame
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Ryo Nakagawa
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
Recomendados
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
continuatioN Linking
continuatioN Linking
Kouji Matsui
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Hiroshi Kikuchi
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
TypeScript 独習会
TypeScript 独習会
Masahiro Wakame
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Ryo Nakagawa
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門
hoxo_m
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
簡単!Groovy入門
簡単!Groovy入門
Lee Choong Geun
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
Kotlin as an AltJS
Kotlin as an AltJS
Shinya Mochida
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
Kouji Matsui
「プログラミングGroovy」入門(公開用)
「プログラミングGroovy」入門(公開用)
orange clover
RvizPlugin作成入門
RvizPlugin作成入門
Sho Takahashi
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
nomlab
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Uchio Kondo
Thread affinity and CPS
Thread affinity and CPS
Kouji Matsui
Introduction to GraalVM
Introduction to GraalVM
Koichi Sakata
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
Hiroshi Kikuchi
de:code報告
de:code報告
Kouji Matsui
TypeScript + Express
TypeScript + Express
kamiyam .
Riverpodでテストを書こう
Riverpodでテストを書こう
Shinnosuke Tokuda
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslide
nomlab
Rubocopとの付き合い方
Rubocopとの付き合い方
Yasutomo Uemori
エスイーのしごと
エスイーのしごと
Yoshitaka Kawashima
元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer
Yoshitaka Kawashima
Mais conteúdo relacionado
Mais procurados
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門
hoxo_m
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
簡単!Groovy入門
簡単!Groovy入門
Lee Choong Geun
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
Kotlin as an AltJS
Kotlin as an AltJS
Shinya Mochida
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
Kouji Matsui
「プログラミングGroovy」入門(公開用)
「プログラミングGroovy」入門(公開用)
orange clover
RvizPlugin作成入門
RvizPlugin作成入門
Sho Takahashi
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
nomlab
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Uchio Kondo
Thread affinity and CPS
Thread affinity and CPS
Kouji Matsui
Introduction to GraalVM
Introduction to GraalVM
Koichi Sakata
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
Hiroshi Kikuchi
de:code報告
de:code報告
Kouji Matsui
TypeScript + Express
TypeScript + Express
kamiyam .
Riverpodでテストを書こう
Riverpodでテストを書こう
Shinnosuke Tokuda
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslide
nomlab
Rubocopとの付き合い方
Rubocopとの付き合い方
Yasutomo Uemori
Mais procurados
(20)
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
簡単!Groovy入門
簡単!Groovy入門
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kotlin as an AltJS
Kotlin as an AltJS
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
「プログラミングGroovy」入門(公開用)
「プログラミングGroovy」入門(公開用)
RvizPlugin作成入門
RvizPlugin作成入門
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Thread affinity and CPS
Thread affinity and CPS
Introduction to GraalVM
Introduction to GraalVM
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
de:code報告
de:code報告
TypeScript + Express
TypeScript + Express
Riverpodでテストを書こう
Riverpodでテストを書こう
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslide
Rubocopとの付き合い方
Rubocopとの付き合い方
Destaque
エスイーのしごと
エスイーのしごと
Yoshitaka Kawashima
元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer
Yoshitaka Kawashima
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
キメるClojure
キメるClojure
Yoshitaka Kawashima
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Yoshitaka Kawashima
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
Yoshitaka Kawashima
Clojureによるログ収集と解析
Clojureによるログ収集と解析
Yoshitaka Kawashima
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術
Yoshitaka Kawashima
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Antifragile Clojure
Antifragile Clojure
Yoshitaka Kawashima
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
Yoshitaka Kawashima
週刊Webサイトのアーキテクチャ
週刊Webサイトのアーキテクチャ
Yoshitaka Kawashima
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
Boilerplate vs Magic
Boilerplate vs Magic
Yoshitaka Kawashima
Seasar conference 2015 sa-compojure
Seasar conference 2015 sa-compojure
Yoshitaka Kawashima
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
Yoshitaka Kawashima
SIerもはじめる わたしたちのDevOps #jjug_ccc
SIerもはじめる わたしたちのDevOps #jjug_ccc
Mizuki Ugajin
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
Takahiro YAMADA
Destaque
(20)
エスイーのしごと
エスイーのしごと
元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
キメるClojure
キメるClojure
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
Clojureによるログ収集と解析
Clojureによるログ収集と解析
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Antifragile Clojure
Antifragile Clojure
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
週刊Webサイトのアーキテクチャ
週刊Webサイトのアーキテクチャ
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Boilerplate vs Magic
Boilerplate vs Magic
Seasar conference 2015 sa-compojure
Seasar conference 2015 sa-compojure
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
SIerもはじめる わたしたちのDevOps #jjug_ccc
SIerもはじめる わたしたちのDevOps #jjug_ccc
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
Semelhante a で、次は何がくるの? - 第2回 TIS Matsuri
Inside frogc in Dart
Inside frogc in Dart
Goro Fuji
アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜
MicroAd, Inc.(Engineer)
Javascript を使ってみよう!!
Javascript を使ってみよう!!
誠 小林
ScratchとAzure FunctionsのBlocklyな関係
ScratchとAzure FunctionsのBlocklyな関係
Masuda Tomoaki
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
Takuya Mukohira
Svelte LT
Svelte LT
Shuta Tsuzuki
JavaEdge第3回ライブセッション
JavaEdge第3回ライブセッション
Yoichiro Tanaka
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
Kei Nakazawa
Unleash The Future
Unleash The Future
dynamis
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
Yoshiyuki Nakamura
Ietf95 capport
Ietf95 capport
Mariko Kobayashi
八子クラウド座談会 in 広島 事前配布資料 20190727
八子クラウド座談会 in 広島 事前配布資料 20190727
知礼 八子
クリーンアーキテクチャ学んでみた
クリーンアーキテクチャ学んでみた
Isao Ebisujima
Opa - Cloud Language
Opa - Cloud Language
Tozo Tanaka
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
The evolution of c#
The evolution of c#
leverages_event
Rubyと俺達の生存戦略 #kana01
Rubyと俺達の生存戦略 #kana01
Yoshinori Kawasaki
お安く、楽にWEBアプリを支える技術
お安く、楽にWEBアプリを支える技術
KeitoTakeda
みんなの個性を見守る地域コミュニティ的プログラミングクラブ
みんなの個性を見守る地域コミュニティ的プログラミングクラブ
K. Toga.
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
Kazuyuki Mori
Semelhante a で、次は何がくるの? - 第2回 TIS Matsuri
(20)
Inside frogc in Dart
Inside frogc in Dart
アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜
Javascript を使ってみよう!!
Javascript を使ってみよう!!
ScratchとAzure FunctionsのBlocklyな関係
ScratchとAzure FunctionsのBlocklyな関係
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
Svelte LT
Svelte LT
JavaEdge第3回ライブセッション
JavaEdge第3回ライブセッション
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
Unleash The Future
Unleash The Future
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
Ietf95 capport
Ietf95 capport
八子クラウド座談会 in 広島 事前配布資料 20190727
八子クラウド座談会 in 広島 事前配布資料 20190727
クリーンアーキテクチャ学んでみた
クリーンアーキテクチャ学んでみた
Opa - Cloud Language
Opa - Cloud Language
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
The evolution of c#
The evolution of c#
Rubyと俺達の生存戦略 #kana01
Rubyと俺達の生存戦略 #kana01
お安く、楽にWEBアプリを支える技術
お安く、楽にWEBアプリを支える技術
みんなの個性を見守る地域コミュニティ的プログラミングクラブ
みんなの個性を見守る地域コミュニティ的プログラミングクラブ
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
Mais de Yoshitaka Kawashima
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
Are Design Patterns Dead?
Are Design Patterns Dead?
Yoshitaka Kawashima
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
Yoshitaka Kawashima
本番障害に至る病
本番障害に至る病
Yoshitaka Kawashima
システムダウンのひみつ
システムダウンのひみつ
Yoshitaka Kawashima
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
アンチフラジャイルの世界
アンチフラジャイルの世界
Yoshitaka Kawashima
Atomic Architecture
Atomic Architecture
Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
Yoshitaka Kawashima
How to find tech books
How to find tech books
Yoshitaka Kawashima
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
Yoshitaka Kawashima
Mais de Yoshitaka Kawashima
(18)
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Are Design Patterns Dead?
Are Design Patterns Dead?
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Tackling Complexity
Tackling Complexity
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
本番障害に至る病
本番障害に至る病
システムダウンのひみつ
システムダウンのひみつ
Mavenの真実とウソ
Mavenの真実とウソ
アンチフラジャイルの世界
アンチフラジャイルの世界
Atomic Architecture
Atomic Architecture
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
How to find tech books
How to find tech books
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
Último
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Último
(9)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
で、次は何がくるの? - 第2回 TIS Matsuri
1.
で、次は何がくるの? で、次は何がくるの? kawasima
2.
Technology Trends
3.
Post Javaの時代 Java8? Scala? NodeJS? Ruby? Kotlin? Groovy? Ceylon? Go?
4.
Different cars, same
road 注) Rich Hickeyのスライドに大いに煽り成分を加えてあります。要は表面的な違いしかないってことです。 ● ● ● ● 多重継承もMix-inもインタフェースも大した違 いなんてねーよ 動的型付けだろうが、静的型付けだろうが、 ダメプログラマはゴミコードを書く 文末セミコロンもインデントスタイルもブ ロックも、個人の趣味でしかないって クロージャもインナークラスも大差ないっ て。Java8ラムダに何期待してんの? http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf
5.
マルチコア と クラウド たくさんあるコンピュータを いかに使いこなすか? Matz
( https://engineer.type.mag.jp/article/matz )
6.
Concurrencyへの対応 シンプルさにどれだけ配慮できているかが重要 ● ● レースコンディションは複雑さに起因して発 生するものである。 状態とふるまいとアイデンティティと時間軸 が組み合わさる、現在のオブジェクト指向は 暗黙的な複雑さの源泉である。
7.
シンプルとは One role One task One
concept One dimension https://github.com/richhickey/slides/blob/master/simplicitymatters.pdf
8.
シンプルとイージーは違う イージーとは、「少ない手数でやりたいことを 実現する」ということ。 – apt-get / yum – gem
install https://github.com/richhickey/slides/blob/master/simplicitymatters.pdf
9.
時代はイミュータブル Concurrency and Parallelism Versionable
API Git Immutable Infrastructure Immutable database
10.
イミュータブル is シンプル これがマルチコア
/ クラウド 時代には 最も重要な概念になってくる
11.
イミュータブル時代の プログラミング言語
12.
Clojure
13.
Clojure is simple Clojure Scala http://java.dzone.com/articles/my-scala-vs-clojure-impression
14.
Clojure is LISP シンプルさを追求したがゆえのLISPという選択肢 プログラム
= データ (同図像性) 関数型で状態をもたない
15.
LISP or Not
Lisp 世の中の言語は2種類しかない。 LISPか、LISPでないか
16.
Clojure runs on
JVM SIerが気にするJavaとの接続性 (javax.swing.JOptionPane/showMessageDialog nil “Hello World”) http://clojure.org/getting_started
17.
Clojure is イミュータブル コレクションもすべてイミュータブル (def
my-map {:fred “ethel”}) (assoc my-map :ricky “lucy”) => {:ricky “lucy”, :fred “ethel”} my-map => {:fred “ethel”}
18.
他言語のイミュータブルへの取組み どっちもできるよ。 var ミュータブル val イミュータブル 使う側が選べてほら便利! freezeメソッド呼べばイミュータブルにできるか らー irb(main):001:0>
map = {:a => 1, :b => {:c => 3}}.freeze => {:a=>1, :b=>{:c=>3}} irb(main):002:0> map[:b][:c] = "A" => "A" irb(main):003:0> map => {:a=>1, :b=>{:c=>"A"}}
19.
SIerで使いにくい多様なイミュータブル 非同期アクセスされる可能性のあるコレクションは イミュータブルな型を使うこと。 イミュータブルなコレクションとは、List, Stream, Vector, Stack,
Queue, Range, HashMap, TreeSet, TreeMap, …である。 よくわからなければ、Vectorを使うこと。 こんなコーディング規約ができることが想像される。
20.
思想のレベルでイミュータブル そもそもイミュータブルな型しかない ミュータブルな感じで使いたいときは、 参照(ref)を作って、参照先の値を切り替える
21.
イミュータブルなモデル アイデンティティと状態の分離 Epochal Time Model Pure
Function F F 1984 State 2000 State 2014 State Identity Value http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf
22.
性能面での配慮 コレクションに要素追加するたび、新しいコ レクションが作られていたら、メモリ喰うし 遅いんじゃないの?
23.
Bit-Partitioned Hash Tries 変更のあった部分木だけ新たに作り、それ以外は共有する 変更も削除も検索もO(1) 5 0 1 2 7 3 4 4 5 6 http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf
24.
Refsモデル 状態はイミュータブルなデータへの参照として扱う value @foo :b “ethel” :c 42 17 :e foo “fred” :d Identity :a 6 http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf
25.
STM 参照の切り替えはロックなしに実行される Ref v0 v2 v1 Transaction v0 F V1' Ref copy v0 value Commit 成功 v0でないので Commit 失敗 F V1' v1 F V2'
26.
Clojureのはじめかた LightTable いま世界でもっともナウいエディタ
27.
イミュータブル時代の Webフレームワーク
28.
Darzana https://github.com/kawasima/darzana/
29.
Webサイト運用の課題 ● ● ● Viewテンプレートを書き換えるだけなのに、 サーバ再起動が必要になる。(Java) ちょっとした変更でも開発者の手が必要。 サイト運用者で変更可能にしたいけど、リテ ラシー的にバージョン管理ができない問題
30.
特長 ● ViewもControllerも再起動いらずのデプロイ – ● サイト運用者が簡単に安全にViewや Controllerを編集できる – ● それでいて性能はJavaと同等 それでいて、熟練プログラマにもやさしい 変更は自動的にGitでバージョン管理される – それでいて、コマンドラインでのgit操作も可能
31.
API First ● データソースはWeb APIを前提とする。 – イミュータビリティが保ちやすい ● – 複数バージョンを使いわける ナウいから
32.
Architecture Jetty Tomcat HttpKit Ring Compojure Handlebars Template API Executor Darzana
router API Redis
33.
Template ● テンプレートにはHandlebarsテンプレートを 利用する。 – 将来的にクライアントサイドでもレンダリングが 可能に!
34.
Router ● いわゆるコントローラ ● URLに対応してコンポーネントブロックを呼び出す – API実行 (非同期並列実行が可能) – テンプレートレンダリング – セッション格納 – エラーハンドリング – A/B testing
35.
Darzanaにおけるアプリケーションの変更 ● 必ずブランチを作って編集 – ● 当然ブラウザから操作可能 動作確認後、masterにマージする – 当然ブラウザから操作可能
36.
Demo
37.
試してみるには Dockerのイメージあります – JavaもClojureもDarzanaもセットアップ済み – VMWareがあれば、会社のマシンでもすぐに試せ る。 – http://index.docker.io/ で「darzana」で検索!
38.
さあ次世代の開発を体験してみよう!
Baixar agora