SlideShare a Scribd company logo
Spring
Gradle Kotlin
でWebアプリケーションを作ってみてる
W8LT#5
@ふぁっとだるま
もういらない気がしてきた
•  松田 淳平 (だるま,デブ,酒クズ)
•  東工大 佐伯研M2
•  Java, Kotlin,シェル芸
•  twitter:@fat_daruuuuma, github:jmatsu
発端
•  某講義のページがRails1だか2で動いている
•  最低限の機能しかないので不便
•  講義中小課題提出がメール
•  メール用の管理ツールも古い
•  今後のこと(あと数年?)も考えるとちょっと不安
→ 新しいものを作るしかない (๑•`ㅂ•́)‫✧و‬
検討
•  Rails4
•  つまらない
•  現在のサーバーを汚すのは避けたい
•  Play1.x (一回作りました)
•  助教氏「なんで2.xじゃないの」
•  僕「それな」
•  Play2.x
•  sbt「ぶおおおんwwww・・・(フリーズ」
•  本当に消えて欲しい
検討(続)
•  Play1.xでいいやん!
•  バグが見つかる
•  設計が汚い
•  Java7で書かれている(重要)
•  用意した自動設定の書式を忘れた(最重要)
•  作り直すにも,
•  Lambdaがないとやる気になれない
•  Play2.xは重すぎてやる気になれない
そうだ、Kotlinにしよう
•  目的等をガン無視して手段から入る最低な発想
Kotlin
•  静的型付オブジェクト指向のJVM言語
•  intelliJで有名なJetBrains社が作成(現在OSS化)
•  Javaと相互完全運用
•  Lambdaやら諸々が標準装備
7
♡
検討(続続)
•  あ、KotlinでPlay1.xって動くんかな!?
→ 祈りが足りず動く方法を見つけられない
•  KotlinでPlay2.xなら!?
•  Gradle → 祈りが足りず終了
•  Sbt → まあ動きはしたけど重すぎ却下
•  Kotlinでなんかないかな!?
•  勉強会で @yy_yank さんがSSに触れてたぞ!
•  http://www.slideshare.net/yyyank/server-
side-kotlin-49030491
•  Spring Bootが現実的っぽい?
Spring Boot
•  Spring frameworkの各コンポーネントを簡単に
使えるようごにょごにょしたもの
•  Controllerレイヤーに関するコンポーネントだけ,
とか色々選択しながら利用することが可能
•  Not XML-based configuration.
•  Java/Annotation-based Configuration!
9
♡
つまり
10
♡
♡
11
♡
じゃなくて
12
♡
13
♡
14
♡
接着剤
要件(?)を全て満たしている(???)
•  Rails4
•  つまらない
→ 楽しい!
•  現在のサーバーを汚すのは避けたい
→ one jarなので汚れない!
•  Play1.x (一回作りました)
•  助教氏「なんで2.xじゃないの
→ この議論が不要!!!
•  僕「それな」
→ それな
•  Play2.x
•  sbt「ぶおおおんwwww・・・(フリーズ」
→ Gradleなので問題ない(?)
•  本当に消えて欲しい
→ 使わない!
利用物
•  Controller layer
•  Spring Boot Starter(SBS) Web
•  Model layer
•  mongoDB via SBS
•  View layer
•  Thymeleaf via SBS
•  Security component
•  SBS Security
16
構築は超簡単
•  Gradleでひな形を作成
•  Kotlinの設定
•  Kotlin pluginを追加
•  compileにKotlinのstdlibを追加
•  Spring Bootの設定
•  Spring Boot pluginを追加
•  compileに必要なコンポーネントを追加
•  springBoot内でmainClassを記述
•  以上.一瞬で終わる.下は最小構成
•  https://github.com/jmatsu/SpringBootWithKotlinSample
17
つまずいた点
•  KotlinのIntやStringがSerializableじゃない
•  このままじゃmodelのIDに使えない!!
•  ネット情報「Converterってのがあってな?」
•  僕「Configクラスで追加すればええんやな?」
•  Configクラスでinjectionがエラーになる orz
•  @Value( ${spring.data.mongodb.database} )
•  Kotlinだと変数展開と判定 → CE
•  Raw stringにしても無理
•  ラップして回避
•  E.g. data class SInt(body: Int): Serializable
18
Spring Boot w/ Kotlinの利点
•  Null安全 && Let等による構造化が強すぎる
•  API部分で冗長になりがちな記述に対して良い
•  スコープが制限されるのでレイヤー違反を減らし
やすい
•  Accessorが生えるので,PropertyはViewから
そのままアクセス可能
•  import A as B が神すぎてヤバい
19
Spring Boot w/ Kotlinの欠点
•  View側ではKotlinは使えない
•  Javaから呼び出すときの記法に従う必要がある
•  そのままじゃ拡張メソッドは使えない
•  Kotlin部分はHotDeployできない・・・
•  拡張メソッドを使える余地が大きすぎる
•  各自が勝手に拡張するとひどいことになりそう
•  Android開発時よりも,冗長な部分の解決策が広
そうな感触
20
課題
•  有用性は大いにあるけど,HotDeployがないのは
つらい
•  現状の規模ならビルドは十分に早いけども
•  Webフレームワーク用Kotlinライブラリが必要
•  Kotlin人口
•  はよAndroid界の標準になって欲しいな!!!1
21

More Related Content

PDF
Sprocketsを捨てたい
PDF
Yohoushi
PDF
僕はどうしてもLibsassが使いたかったんだ!
PDF
RailsのRailから解放される始めの一歩
PPT
Neo4j Profile Export/Import Tool
PPTX
名古屋アジャイル#33 就活体験談~世間はつらいよ~
PPTX
入門系の本を一冊も読まずにデータサイエンスに入門してみる
PDF
mod_perlで動くアプリをどう置くか #hachiojipm
Sprocketsを捨てたい
Yohoushi
僕はどうしてもLibsassが使いたかったんだ!
RailsのRailから解放される始めの一歩
Neo4j Profile Export/Import Tool
名古屋アジャイル#33 就活体験談~世間はつらいよ~
入門系の本を一冊も読まずにデータサイエンスに入門してみる
mod_perlで動くアプリをどう置くか #hachiojipm

Viewers also liked (18)

PDF
Kotlinのwebフレームワーク探訪
PDF
Application Developer Festival 2015 LT
PPTX
れれれのGitおぢさん - git rerere #w8lt
PPTX
Try to Write A Better Commit Message
PDF
初心者大歓迎! Webアプリを作ってみよう!
PDF
PRML2.3.8~2.5 Slides in charge
PDF
Kotlinで快適Android開発 #W8lt
PPTX
Spring starterによるSpring Boot Starter
PPTX
Spring boot劇的ビフォーアフター
PDF
もう一度Kotlinの話をしよう #ndsmeetup4
PPTX
はじめてのSpring Boot
PDF
Spring Framework勉強会
PDF
Spring Day 2016 springの現在過去未来
PDF
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
PDF
Spring Bootをはじめる時にやるべき10のこと
PPTX
Server Side Kotlin
PDF
Kotlin as an AltJS
PDF
Spring bootでweb 基本編
Kotlinのwebフレームワーク探訪
Application Developer Festival 2015 LT
れれれのGitおぢさん - git rerere #w8lt
Try to Write A Better Commit Message
初心者大歓迎! Webアプリを作ってみよう!
PRML2.3.8~2.5 Slides in charge
Kotlinで快適Android開発 #W8lt
Spring starterによるSpring Boot Starter
Spring boot劇的ビフォーアフター
もう一度Kotlinの話をしよう #ndsmeetup4
はじめてのSpring Boot
Spring Framework勉強会
Spring Day 2016 springの現在過去未来
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootをはじめる時にやるべき10のこと
Server Side Kotlin
Kotlin as an AltJS
Spring bootでweb 基本編
Ad

Spring + Gradle + Kotlin W8LT#5