SlideShare a Scribd company logo
1 of 44
Download to read offline
第41回長岡IT技術者勉強会
1週周遅れのScala入学
2015/4/11
@nemuzuka
自己紹介
• 片桐 一宗(かたぎり かずむね)
• id:nemuzuka
• @nemuzuka
• サーバサイドにJavaを使用したWebアプリケーションの
開発を主にしております
• フリーランス(vss.jp.net)
Scala再入学のきっかけ
システムを新しく構築するチャンス
• AWSのサービス使用
• S3 / CloudSearch / CloudFront…
• 全ての操作で画面切り替えとかちょっと…
• AjaxでDOM書き換え
• HTML5
• IE?最新しかサポートしない!
• スケジュールがタイト
• 要望がコロコロ変わりそう…
そこで選んだのが
• サーバサイドはJava
• Tomcat
• Seasar2
• SAStruts
• S2Dao
+今まで培ってきた
 ・diconファイル
 ・薄いラッパー
ちょっと
開発のパワーが足りないから
外部の人の協力を得よう
『新規なのにJavaなんですか』
『新規なのにSeasar2
なんですか( ´_ゝ`)』
えもいわれぬ老害感
結局Javaの構成で
無事カットオーバー
できましたが...
何か新しいこと
やらないといけないかな
選択肢は2つ
• 別のフレームワークを学ぶ
• JavaEE
• Spring
• Play Framework
• 新しい言語を学ぶ
• 静的型付けが良い
• IDEが使えた方が良い
あっ!
入学してた。
当時は「できない子」
• bot写経で躓き、「ガッ」できなかった
• みんなの「XXXのコード見せてください」の画面切り
替えが早すぎて追いつけなかった
• 単純に手が遅い
再入学の後押し
• Javaの資産が使える
• Apache Commonsとか
• AWSのSDKだって使える
• 関数型プログラミングもオブジェクト指向プログラミングもサポート
• とりあえず「使う」だけなら関数脳にならなくても良い
• 型推論でスクリプト言語のようにも見える
• でも、IDEで追いやすい
「Javaやってます」
よりも
「Scalaやってます」
の方がなんとなく仕事が来そう
というわけで
Scala再入学することに
どうやって再入学したか?
• 今更、NullPoGaBot作ってもなー
• どうせやるなら何か案件が始まった時に使えるものにし
たい
S2でやってたことを
Scalaでやるならどうするか
に置き換えてみよう
フレームワークの置き換え
機能 JAVA SCALA
WEBフレームワーク SAStruts
Scalatra

+

scalata-forms
テンプレートエンジン JSP
Scalate

(SSP)
ORM S2Dao Slick
こんなときどうする(1)
∼トランザクション管理∼
トランザクション
• DBの変更を
• 適用する(commit)
• 取り消す(rollback)
• これをそれぞれのプログラムで行うと
• DBに対する操作とビジネスロジックが混在する
• ソースコードの見通しも良くない
• コネクションの解放漏れ等にも繋がる
S2だと DI
• S2の仕組みに乗れば自動的にトランザクションが効く
• @Bindingを付与して実装クラスをInjection
• 正常終了(何も例外が発生しない)時commit
• 例外が発生すればrollback
• DI使うのに外部XMLは不要
• コネクションプールもdiconに書くだけで使える
Scala(Scalatra)だと filter
• Scalatraのinitでコネクションプール設定
• filterでトランザクション制御
• トランザクション開始
• 処理呼び出し
• 正常終了(何も例外が発生しない)時commit
• 例外が発生すればrollback
ソースはこんな感じ
//Filter class
class TransactionFilter(db: Database) extends Filter {
def doFilter(req: ServletRequest, res: ServletResponse, chain: FilterChain): Unit = {
db withDynTransaction { // 1. トランザクションを開始し、ThreadLocalにSessionを格納
chain.doFilter(req, res) // 2. Servletの処理を行う
} // 3. 正常時commit、例外発生時rollback
}
}
DB
Database.dynamicSession
をimport
ThreadLocal
取得して処理を行うことが可能
class ScalatraBootstrap extends LifeCycle {
val cpds = new ComboPooledDataSource() // 1.設定ファイルを元にコネクションプールを生成
override def init(context: ServletContext) { // 2.Scalatra起動時に一回だけ呼ばれるメソッド
val db = Database.forDataSource(cpds) // 3. Slick用データソースの取得
context.addFilter("transactionFilter", new TransactionFilter(db)) // 4. TransactionFilterをfilterとして登録
context.getFilterRegistration(“transactionFilter").addMappingForUrlPatterns(
util.EnumSet.allOf(classOf[DispatcherType]), true, “/*")
// 5. Servletの定義が続く…
}
}
これでこんなLayer設計ができます
・Servlet
・Service
 →DBアクセスしないので、Sessionをコード上で意識しない
・Dao
 →ThreadLocalからSessionを取得してSQL発行
こんなときどうする(2)
∼認証・認可チェック∼
認証・認可
• 認証
• リクエストを送ってきた人が正規のユーザであることを確認すること
• ID / パスワードでログインしている
• 本人しかしらない筈なので、正規のユーザとみなす
• 認可
• その機能を利用する権限の有無を確認すること
• 管理者権限を所有していないのに、管理者機能を使用できるのはNG
• Webアプリの場合、URLを直接叩かれる可能性があるので、特に注意する必要あり
S2だと S2AOP
• ログイン成功時、HttpSessionにログイン情報を設定
• 受けたリクエストが認証済みでなければならない場合
• Interceptorを使用して、Actionの呼び出し前にログイン情報がHttpSessionに存在するか
チェック
• 存在しなければログイン画面へリダイレクト
• 存在するが、そのActionを使用する権限をユーザが持っていない場合、不正アクセスが
来たとみなし、しかるべき画面にリダイレクト
• AOPの定義はdiconファイルに定義
• パッケージ、クラス名等の正規表現で定義できる
Scala(Scalatra)だと filter
• ログイン成功時、HttpSessionにログイン情報を設定
• リクエストURIを元に受けたリクエストが認証済みで無ければならな
い場合
• filterでログイン情報がHttpSessionに存在するかチェック
• 存在しなければログイン画面へリダイレクト
• 存在するが、そのServletを使用する権限をユーザが持っていな
い場合、不正アクセスが来たとみなし、しかるべき画面にリダ
イレクト(これは、Servlet側機能)
こんなときどうする(3)
∼コード自動生成∼
ER図を常に信じられる状態にしたい
3.ソースコード
(絶対に手動で修正しない)
2.RDBMS
1.ER図
• S2Dao-CodeGen
• Slick code generator
S2だと
Scala(Slick)だと
こんなときどうする(4)
∼動的SQL発行∼
画面に入力された項目だけwhere句に追加
未入力の場合、その項目はwhere句に含めない
S2だと IFコメント
• 条件に応じてSQLを変更することが可能
• /* IF 条件 */…/*END*/
• 条件がtrueの場合、/*IF*/と/*END*/に囲まれた部分が評価
される
/*IF hoge != null*/hoge = /*hoge*/‘abc’/*END*/
引数hogeがnullでない場合にのみ、
hoge = hogeの値
がSQL文に追加される
Scala(Slick)だと 生Preparedstatement
• ゴニョゴニョ頑張れば他のやり方でできる気もするけど、こっちの方が確実だと思
う
• where句のカラムが動的に変わらないのであれば、StaticQueryを使用した方が良い
• 複雑なテーブル結合する場合はStaticQueryやPreparedstatement使ったほうが余計
なことにハマらなくて良いかも
• S2Dao使ってる時でも生SQLを発行してた
• ORMは楽になるところだけ使う
def coffeeByName(name: String) = sql"select * from coffees where name = $name".as[Coffee]
println("Coffee Colombian: " + coffeeByName("Colombian").firstOption)
まだいろいろあるけど、
ドキュメント読めば何とかなります
Java使いがScalaと戯れた感想
型推論
• 変数名定義の時にクラス名の有無でこんなに違うかーっ
てくらいスッキリします
[Scala]
val credentials = new BasicAWSCredentials(accessKey, secretKey)
val s3client = new AmazonS3Client(credentials)
val localFile = new File("ローカルファイルパス")
val bucketName = "バケット名"
val filePath = "S3のアップロード先のパス"
val upReq = new PutObjectRequest(bucketName, filePath, localFile)
s3client.putObject(upReq)
[Java]
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3client = new AmazonS3Client(credentials);
File localFile = new File("ローカルファイルパス");
String bucketName = "バケット名";
String filePath = "S3のアップロード先のパス";
PutObjectRequest upReq = new PutObjectRequest(bucketName, filePath, localFile);
s3client.putObject(upReq);
名前付き引数
• 大好きです。Javaにもあれば良いのに
• 使う側が意識して設定するようになるのがイイと思います
• 引数の順番が変わった時にも追従してくれます
• 特にSlickのデータモデル(case class)のインスタンスを生成するときは嬉しい
• カラムの追加や順番を変更することが多いので
[Scala]
case class User(age:Int, name:String)
・
・
・
val hanako = User(7, “はなこ”) // ①
val jiro = User(age = 38, name = “二郎”) // ②
val taro = User(name = “太郎”, age = 17) // ③
→全てUserクラスのインスタンスが生成可能だが、
case class User(name:String, age:Int)
と変更した場合、①はコンパイルエラーになる
index付きループ
• Javaにもあれば良いのに
• Javaだと拡張forを諦めてfor(int i = 0; i < list.size(); i++)
[Scala]
val list = List("A", "B", "C")
for((e, index) <- list.zipWithIndex) {
// eには該当要素、indexには該当indexが格納される
・
・
・
}
まだまだあるよ
• if とか for は式なので値を返せる
• 「このifで何をしたいんだっけ?」が見えるようになるのがイイ!
• 複数の戻り値を返せる(タプル)
• わざわざ戻り値用のclass作らなくてもいいんです
• traitでmix-inがすごい
• チェック例外がない
• 個人的にはあってもいいと思うけど…(設計思想変える必要あり)
• Either(さっきのヤツ!)
• 比較は「==」でOK
• equalsを使わなくて怒られる新人減ります
• breakが変
• もなど / かりー → よくわかりません
再入門に準備したもの
purchase from
https://gist.github.com/Shinpeim/6740436
まとめ
• 結構面白いです、Scala
• 潤沢なメモリ+SSD必須
• 金食い虫なので仕事に使うなら上の理解が必要かも
• 次はテスト周りをしっかりと

More Related Content

What's hot

実践Akka
実践Akka実践Akka
実践AkkaHuy Do
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Asami Abe
 
Glass fishで作ったアプリをweblogicに移植してみた
Glass fishで作ったアプリをweblogicに移植してみたGlass fishで作ったアプリをweblogicに移植してみた
Glass fishで作ったアプリをweblogicに移植してみたSatoshi Kubo
 
Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについてShinobu Okano
 
play framework 勉強会 in 関西
play framework 勉強会 in 関西play framework 勉強会 in 関西
play framework 勉強会 in 関西Shinichi Kozake
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編takeuchi-tk
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!K Kinzal
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみたAsami Abe
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴Akihiro Kuwano
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術Oda Shinsuke
 
Scala.jsはじめました?
Scala.jsはじめました?Scala.jsはじめました?
Scala.jsはじめました?K Kinzal
 
Java使いにとっての関数
Java使いにとっての関数Java使いにとっての関数
Java使いにとっての関数amkt922
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12Ryuji Yamashita
 
Let's split text by awk command
Let's split text by awk commandLet's split text by awk command
Let's split text by awk commandYukiya Hayashi
 

What's hot (20)

Ppl
PplPpl
Ppl
 
とりあえず使えるSBT
とりあえず使えるSBTとりあえず使えるSBT
とりあえず使えるSBT
 
Yesod勉強会
Yesod勉強会Yesod勉強会
Yesod勉強会
 
実践Akka
実践Akka実践Akka
実践Akka
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
 
Glass fishで作ったアプリをweblogicに移植してみた
Glass fishで作ったアプリをweblogicに移植してみたGlass fishで作ったアプリをweblogicに移植してみた
Glass fishで作ったアプリをweblogicに移植してみた
 
Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについて
 
play framework 勉強会 in 関西
play framework 勉強会 in 関西play framework 勉強会 in 関西
play framework 勉強会 in 関西
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみた
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
 
Akka入門
Akka入門Akka入門
Akka入門
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
Scala.jsはじめました?
Scala.jsはじめました?Scala.jsはじめました?
Scala.jsはじめました?
 
Java使いにとっての関数
Java使いにとっての関数Java使いにとっての関数
Java使いにとっての関数
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
bean-validation-scala
bean-validation-scalabean-validation-scala
bean-validation-scala
 
Let's split text by awk command
Let's split text by awk commandLet's split text by awk command
Let's split text by awk command
 

Viewers also liked

Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Combell NV
 
World Cultures Flower Presentation 171
World Cultures Flower Presentation  171World Cultures Flower Presentation  171
World Cultures Flower Presentation 171Mrs. McCabe
 
Skateboard Decks
Skateboard DecksSkateboard Decks
Skateboard DecksMrs. McCabe
 
Get Out Of Your Cube Evo Terra
Get Out Of Your Cube Evo TerraGet Out Of Your Cube Evo Terra
Get Out Of Your Cube Evo TerraEvo Terra
 
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...Pedro França
 
Senior Designer | Colliers International
Senior Designer | Colliers InternationalSenior Designer | Colliers International
Senior Designer | Colliers Internationalmkosach
 
Jc Vocab The Outsiders
Jc Vocab  The OutsidersJc Vocab  The Outsiders
Jc Vocab The Outsidersjane940325
 
Brochura lessen over spiritisme jg plate
Brochura lessen over spiritisme   jg plateBrochura lessen over spiritisme   jg plate
Brochura lessen over spiritisme jg plateArlete Laenzlinger
 
Varnish in action phpuk11
Varnish in action phpuk11Varnish in action phpuk11
Varnish in action phpuk11Combell NV
 
Van hosting tot cloud computing @ Intac
Van hosting tot cloud computing @ IntacVan hosting tot cloud computing @ Intac
Van hosting tot cloud computing @ IntacCombell NV
 
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
Aviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos EspecializadosAviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos Especializados
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos EspecializadosPedro França
 
Tot Community Development
Tot Community DevelopmentTot Community Development
Tot Community DevelopmentAri Raharjo
 

Viewers also liked (20)

Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11
 
Cars
CarsCars
Cars
 
Exa profile
Exa profile Exa profile
Exa profile
 
World Cultures Flower Presentation 171
World Cultures Flower Presentation  171World Cultures Flower Presentation  171
World Cultures Flower Presentation 171
 
Skimtns by 142
Skimtns by 142Skimtns by 142
Skimtns by 142
 
guitars
guitarsguitars
guitars
 
Skateboard Decks
Skateboard DecksSkateboard Decks
Skateboard Decks
 
Mohenjo Daro
Mohenjo DaroMohenjo Daro
Mohenjo Daro
 
Get Out Of Your Cube Evo Terra
Get Out Of Your Cube Evo TerraGet Out Of Your Cube Evo Terra
Get Out Of Your Cube Evo Terra
 
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
 
Senior Designer | Colliers International
Senior Designer | Colliers InternationalSenior Designer | Colliers International
Senior Designer | Colliers International
 
shoes by 139
shoes by 139shoes by 139
shoes by 139
 
Jc Vocab The Outsiders
Jc Vocab  The OutsidersJc Vocab  The Outsiders
Jc Vocab The Outsiders
 
Brochura lessen over spiritisme jg plate
Brochura lessen over spiritisme   jg plateBrochura lessen over spiritisme   jg plate
Brochura lessen over spiritisme jg plate
 
Varnish in action phpuk11
Varnish in action phpuk11Varnish in action phpuk11
Varnish in action phpuk11
 
Paris
ParisParis
Paris
 
Van hosting tot cloud computing @ Intac
Van hosting tot cloud computing @ IntacVan hosting tot cloud computing @ Intac
Van hosting tot cloud computing @ Intac
 
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
Aviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos EspecializadosAviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos Especializados
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
 
Obama Presentation
Obama PresentationObama Presentation
Obama Presentation
 
Tot Community Development
Tot Community DevelopmentTot Community Development
Tot Community Development
 

Similar to 1周遅れのScala入学 #nds41

Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Taisuke Shiratori
 
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27Tetsuya Mase
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 TokyoYoshiyuki Asaba
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingTomoharu ASAMI
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうHishikawa Takuro
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのかKatsunori Kanda
 
Sql database でも使えるほにゃらら
Sql database でも使えるほにゃららSql database でも使えるほにゃらら
Sql database でも使えるほにゃららOda Shinsuke
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術KinebuchiTomo
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネット株式会社
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤Sotaro Kimura
 
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築Hiroshi Yamato
 
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPAJJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPANaoya Kojima
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについてNobukazu Hanada
 

Similar to 1周遅れのScala入学 #nds41 (20)

Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
 
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
 
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigiScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか
 
Sql database でも使えるほにゃらら
Sql database でも使えるほにゃららSql database でも使えるほにゃらら
Sql database でも使えるほにゃらら
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
 
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPAJJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPA
 
Antのススメ
AntのススメAntのススメ
Antのススメ
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
 

More from Kazumune Katagiri

アプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnetアプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnetKazumune Katagiri
 
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42Kazumune Katagiri
 
おーいみんな、JavaやろうぜJava
おーいみんな、JavaやろうぜJavaおーいみんな、JavaやろうぜJava
おーいみんな、JavaやろうぜJavaKazumune Katagiri
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめKazumune Katagiri
 

More from Kazumune Katagiri (9)

アプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnetアプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnet
 
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
 
LT #nds37
LT #nds37LT #nds37
LT #nds37
 
#nds34 LT
#nds34 LT#nds34 LT
#nds34 LT
 
おーいみんな、JavaやろうぜJava
おーいみんな、JavaやろうぜJavaおーいみんな、JavaやろうぜJava
おーいみんな、JavaやろうぜJava
 
NDS#28 SIerの未来
NDS#28 SIerの未来NDS#28 SIerの未来
NDS#28 SIerの未来
 
Ipv6+JMeter+GAE
Ipv6+JMeter+GAEIpv6+JMeter+GAE
Ipv6+JMeter+GAE
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめ
 
Nds#24 単体テスト
Nds#24 単体テストNds#24 単体テスト
Nds#24 単体テスト
 

1周遅れのScala入学 #nds41