Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kotlin + Spring Bootで作るWebアプリケーション
Search
ponday
July 05, 2017
470
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlin + Spring Bootで作るWebアプリケーション
fukuoka.kt #1の登壇資料です。
ponday
July 05, 2017
More Decks by ponday
See All by ponday
関数型でGoFのデザインパターンやってみる
honda
1
1.7k
TypeScriptの型表現
honda
10
3.1k
Web Componentsの今
honda
1
480
これまでのReact、これからのReact
honda
0
350
Gatsbyお試し
honda
0
150
styled-components or emotion?
honda
0
730
Web ComponentsとAngular
honda
0
160
Atomic Design周りについての私見
honda
1
820
え、まだWeb Componentsを未来の技術だと思ってるの?
honda
2
890
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Docker and Python
trallard
47
4.2k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Un-Boring Meetings
codingconduct
0
420
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
It's Worth the Effort
3n
188
29k
Facilitating Awesome Meetings
lara
57
7.1k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Transcript
Kotlin + Spring Bootで作る Webアプリケーション fukuoka.kt #1 July 5th 2017
/ June 25, 2017 ponday(@ponday_dev)
Profile ponday (@ponday_dev) name - chibi-developer - ng-fukuoka スタッフ community
- Kotlin, Java, C# etc... - JavaScript - Angular, Vue.js skill
Kotlin、Androidの公式言語に採用!!
これからAndroidはKotlinだ!
ちょっと待って、Androidだけ?
Kotlinとは Kotlin(ことりん、コトリン)は、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、静 的型付けのオブジェクト指向プログラミング言語である。 Kotlin言語は、ロシア連邦レニングラード州都のサンクトペテルブルクにある、ジェットブレインズ社の研究所で 生まれた。 ジェットブレインズ社は Java、Ruby、Python などのプログラミング言語による開発環境などを開発して販売して きた。Kotlin言語は、同社の経験を活かしJava言語をもっと簡潔・安全になるように改良した 産業利用向
け汎用言語として開発され、2011年7月20日に発表された。 オペーレーティング・システムによらずJava仮想マシン上で動く。Java言語で書かれたプログラムと同じほど速く コンパイルされ同じほど速く動作するとしている。 Java言語に望まれている機能であっても互換性を保つために実現できていない機能や、将来のJava言語の仕 様で実現が予定されている機能から、有用と思われる機能を採用した。また、Java仮想マシンで動く点で似てい るスクリプト言語 Groovy や関数型プログラミング言語の要素が強い Scala から、機能や簡易記法(糖衣構文) を採用した。 ※Wikipediaから引用
そう、Kotlinは汎用プログラミング言語です!!
ならサーバ側でも使えるはず!
やってみる ・REST形式のAPIサーバを作る ・Spring Framework(Spring Boot)を使用 ・H2 DatabaseへSelect, Insertしてみる ・データベース処理はDomaを使用 ・フロントエンドはAngular(完全に趣味)
Doma ・Java用のDBアクセスフレームワーク https://doma.readthedocs.io/ja/stable/ ・2-way SQL ・ORMではない ・SQLファイルが直接書ける ・DB層のクラスの自動生成 ・アノテーションベース ・Annotation
Processingに課題ありとのことだったので検証も兼ねて ・個人的なお気に入り
できたもの
モデル層
モデル層 ・モデル層にはdata classが有用 ・定数プロパティの定義が楽(ex. val foo: string) ・setter / getterの定義など余計なコードが無くてすむので
スッキリ
サービス層
サービス層 ・Kotlinのclassを利用 ・Javaのソースとほとんど変わらないイメージで書ける ・DIする場合は ’ lateinit var ’ で定義する ・型推論が効くのでコードがスッキリ
Web層
Web層 ・Kotlinのclassを利用 ・Web層と同様、Javaのソースとほとんど変わらない イメージで書ける ・Springのアノテーションも普通に処理できる ※ @PostMapping(foo)とする場合、fooは ‘ const val
‘ ※ @RequestMapping(~, method=arrayOf(RequestMethod.POST))
感想 ・思った以上に普通に動いた ・Kotlinの文法のおかげでコードがスッキリ&短い ・一部の機能はJava + Lombokでも可能(型推論など) → 言語仕様に取り込まれているぶん安心感がある
気になった点 ・情報が少ない ・build.gradleに’compileKotlin.dependsOn = processResources’とか どこにも情報無くて悩んだ ・Annotation Processingはやっぱり不安定 ・たまにgradle clean
buildしないと動かなくなる ・Javaが混ざるとNullPointerExceptionの危機 ・Kotlinのnull非許容変数に対してJavaからnullが返されると落ちる → Javaから値を受けるときは必ずnull許容型で受けるなど工夫が必要 ・val !== finalという罠 ・const val === final ・完全にKotlinだけでは書けない場合がある
サーバサイドKotlinも流行れ!(願望)
おまけ
ということで宣伝します
None
None
chibi-developer ng-fukuoka 会場に結構メンバー居ます 興味のある方はお話しましょう!