SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
Ktorを試してみた
株式会社 虎の穴
山田 公博
1
Copyright © 2019 Toranoana Inc. All Rights Reserved.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
自己紹介
名前     :山田 公博
担当業務   :ECサイト開発
業務使用の言語:Java
今期アニメ:五等分の花嫁
2
Copyright © 2019 Toranoana Inc. All Rights Reserved.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
アジェンダ
1. はじめに
2. Ktorについて
3. 事前準備
4. Features
5. 非同期接続について
6. 実践
7. まとめ
3
Copyright © 2019 Toranoana Inc. All Rights Reserved.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
1.はじめに
4
● 本日の内容
IntelliJ IDEAを使用した Ktor のプロジェク
ト作成方法を確認します。
Ktor の公式サイトに書かれている各種サ
ンプルアプリで使用されているKtorの
Features(機能)を見ていきます。
Ktorの接続耐性を試します。
Copyright © 2019 Toranoana Inc. All Rights Reserved.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
5
Copyright © 2019 Toranoana Inc. All Rights Reserved.
● 「ケイター」と読みます。
● Kotlinで開発されています。
● Kotlin同様 JetBrains社により開発されていま
す。
● 単体では非常にシンプルな micro framework
です。
2.Ktorについて
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
6
Copyright © 2019 Toranoana Inc. All Rights Reserved.
● Featuresと呼ばれるHTML Template、認証機
能などの各種機能をプラグイン形式で追加が
可能
● 非同期処理を行うサーバの開発を容易にでき
る
● 標準のサーブレットエンジンの他に、Jetty、
Nettyなどのサーブレットエンジンと差し替え可
能
2.Ktorについて
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
7
Copyright © 2019 Toranoana Inc. All Rights Reserved.
● Featuresと呼ばれるHTML Template、認証機
能などの各種機能をプラグイン形式で追加が
可能
● 非同期処理を行うサーバの開発を容易にでき
る
● 標準のサーブレットエンジンの他に、Jetty、
Nettyなどのサーブレットエンジンと差し替え可
能
2.Ktorについて
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
8
Copyright © 2019 Toranoana Inc. All Rights Reserved.
事前準備として、IntelliJ IDEAを使用した
Ktorプロジェクトの作成方法を説明します。
3.事前準備
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
9
Copyright © 2019 Toranoana Inc. All Rights Reserved.
1.Ktorプラグインの追加
3.事前準備
IntelliJ IDEA を起動
し、Welcome画面右
下の「Configure」から
「Plugins」を選択して
Plugin画面を表示させ
ます。
Plugins を選択しま
す。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
10
Copyright © 2019 Toranoana Inc. All Rights Reserved.
1.Ktorプラグインの追加
3.事前準備
Plugin画面で、画面上
部の検索欄に「Ktor」と
入力すると、Ktorプラ
グインが表示されるの
で、プラグインの
「Install」ボタンをクリッ
クします。
1. Ktorと入力
2. Install をクリック
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
11
Copyright © 2019 Toranoana Inc. All Rights Reserved.
1.Ktorプラグインの追加
3.事前準備
プラグインのインストー
ル後はIDEの再起動
ボタンが表示されるの
で、ボタンをクリックし
て再起動を行います。
Restart IDE をクリック
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
12
Copyright © 2019 Toranoana Inc. All Rights Reserved.
2.Ktorプロジェクトの作成手順
3.事前準備
Welcome画面の
「Create New
Project」をクリックしま
す。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
13
Copyright © 2019 Toranoana Inc. All Rights Reserved.
2.Ktorプロジェクトの作成手順
3.事前準備
画面左側の「Ktor」を
選択し、利用するプラ
グインを選択して
「Next」ボタンをクリッ
クします。1. Ktor を選択
2. 各種プラグイン を選
択
3. Nextボタンをクリック
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
14
Copyright © 2019 Toranoana Inc. All Rights Reserved.
2.Ktorプロジェクトの作成手順
3.事前準備
「GroupId」「ArtifactId」
を適宜入力し、「Next」
ボタンをクリックしま
す。
1. GroupId、ArtifactIdを
適宜入力
2. Nextボタンをクリック
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
15
Copyright © 2019 Toranoana Inc. All Rights Reserved.
2.Ktorプロジェクトの作成手順
3.事前準備
「Project name」を入
力すると「Project
location」(プロジェクト
のディレクトリの作成
場所)が自動的に変更
されます。内容を確認
後、「Finish」ボタンをク
リックします。
1. Project name を入力
2. Finishボタンをクリック
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
16
Copyright © 2019 Toranoana Inc. All Rights Reserved.
2.Ktorプロジェクトの作成手順
3.事前準備
Gradleの設定画面が
表示されるので「Use
auto-import」をチェッ
ク状態に変更後、
「OK」ボタンをクリック
します。
1. Use auto-import をチェック
2. OKボタンをクリック
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
17
Copyright © 2019 Toranoana Inc. All Rights Reserved.
2.Ktorプロジェクトの作成手順
3.事前準備
プロジェクト画面が表
示されて完了です。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
18
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Ktorの公式サイトで紹介されている Guides
を参考に、Ktorにプラグインとして提供され
ているFeatures(機能)を見ていきます。
https://ktor.io/quickstart/guides.html
4. Features
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
19
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Routing
4.Features
import io.ktor.routing.*
(中略)
routing {
get("/") {
call.respondText("HELLO WORLD!", contentType =
ContentType.Text.Plain)
}
get("/html-dsl") {
call.respondHtml {
(中略)
}
}
(以下略)
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
20
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Routing
4.Features
import io.ktor.routing.*
(中略)
routing {
get("/") {
call.respondText("HELLO WORLD!", contentType =
ContentType.Text.Plain)
}
get("/html-dsl") {
call.respondHtml {
(中略)
}
}
(以下略)
構造化ルートと関連するハンドラを定義す
ることができます。
つまり、リクエストを受け付けるURLと、そ
れに対するアクションを指定できるように
なります。
Locations というFeaturesを利用すること
で、タイプセーフなURLパラメータを扱うこ
とも可能です。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
21
Copyright © 2019 Toranoana Inc. All Rights Reserved.
HTML DSL
4.Features
get("/html-dsl") {
call.respondHtml {
head {
link(rel = "stylesheet", href = "/styles.css", type = "text/css")
}
body {
h1 { +"HTML" }
ul {
for (n in 1..10) {
li { +"$n" }
}
}
p("myclass") {
+"I am using myclass"
}
}
}
}
Kotlinのコードを使用してHTMLを
生成できるようになります。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
22
Copyright © 2019 Toranoana Inc. All Rights Reserved.
CSS DSL
4.Features
get("/styles.css") {
call.respondCss {
body {
backgroundColor = Color.red
}
p {
fontSize = 2.em
}
rule("p.myclass") {
color = Color.blue
}
}
}
Kotlinのコードを使用してCSSを生
成できるようになります。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
23
Copyright © 2019 Toranoana Inc. All Rights Reserved.
StatusPages
4.Features
install(StatusPages) {
exception<AuthenticationException> { cause ->
call.respond(HttpStatusCode.Unauthorized)
}
exception<AuthorizationException> { cause ->
call.respond(HttpStatusCode.Forbidden)
}
}
class AuthenticationException : RuntimeException()
class AuthorizationException : RuntimeException()
例外が発生した際のアクションを
定義できるようになります。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
24
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Sessions
4.Features
install(Sessions) {
cookie<MySession>("MY_SESSION") {
cookie.extensions["SameSite"] = "lax"
}
}
get("/session/increment") {
val session = call.sessions.get<MySession>() ?: MySession()
call.sessions.set(session.copy(count = session.count + 1))
call.respondText("Counter is ${session.count}. Refresh to increment.")
}
data class MySession(val count: Int = 0)
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
25
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Sessions
4.Features
install(Sessions) {
cookie<MySession>("MY_SESSION") {
cookie.extensions["SameSite"] = "lax"
}
}
get("/session/increment") {
val session = call.sessions.get<MySession>() ?: MySession()
call.sessions.set(session.copy(count = session.count + 1))
call.respondText("Counter is ${session.count}. Refresh to increment.")
}
data class MySession(val count: Int = 0)
セッションのサポートを追加しま
す。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
26
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Static Content
4.Features
// Static feature. Try to access `/static/ktor_logo.svg`
static("/static") {
resources("static")
}
定義された場所から静的ファイル
を配信します。
左記のようなコードの場合、
/static/ktor_logo.svg を指定され
ると/resources/static/
ktor_logo.svg を求めます。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
27
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Freemarker
4.Features
install(FreeMarker) {
templateLoader = ClassTemplateLoader(this::class.java.classLoader,
"templates")
}
get("/html-freemarker") {
call.respond(FreeMarkerContent("index.ftl", mapOf("data" to
IndexData(listOf(1, 2, 3))), ""))
} レスポンスとして、
FreeMarkerContent に指定され
たテンプレートindex.ftiと、mapOf
データを渡しています。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
28
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Freemarker
4.Features
<#-- @ftlvariable name=“data” type=“com.example.IndexData” -->
<html>
<body>
<ul>
<#list data.items as item>
<li>${item}</li>
</#list>
</ul>
</body>
</html>
(index.fti)
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
29
Copyright © 2019 Toranoana Inc. All Rights Reserved.
CORS
4.Features
install(CORS) {
method(HttpMethod.Options)
method(HttpMethod.Put)
method(HttpMethod.Delete)
method(HttpMethod.Patch)
header(HttpHeaders.Authorization)
header("MyCustomHeader")
allowCredentials = true
anyHost() // @TODO: Don't do this in production if possible. Try to limit it.
}
オリジン間リソース共有(CORS)
を有効にする為の設定が行えま
す。
(HTTPメソッドの追加、ヘッダーの
追加等)
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
30
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Jackson
4.Features
install(ContentNegotiation) {
jackson {
enable(SerializationFeature.INDENT_OUTPUT)
}
}
get("/json/jackson") {
call.respond(mapOf("hello" to "world"))
}
Jacksonライブラリを使用して
JSONのシリアル化を処理します。
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
31
Copyright © 2019 Toranoana Inc. All Rights Reserved.
小まとめ
・必要と思われる機能の大半は揃っているように思う。
・Kotlinベースの為、Javaのライブラリも使用可能。
4.Features
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
32
Copyright © 2019 Toranoana Inc. All Rights Reserved.
KtorはKotlinのコルーチンを利用して開発が
されています。
そのコルーチンを利用した非同期処理が可
能なつくりとなっています。
5.非同期処理について
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
33
Copyright © 2019 Toranoana Inc. All Rights Reserved.
コルーチンとは
ざっくり説明をすると、以下のような特性を持ちます。
・軽量なスレッドのようなもの
・メインスレッドをブロックせずに非同期に動作させることが
できる
・軽量な為、大量に作成することができる
5.非同期処理について
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
34
Copyright © 2019 Toranoana Inc. All Rights Reserved.
つまり、
大量の同時アクセスに対応できる
5.非同期処理について
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
35
Copyright © 2019 Toranoana Inc. All Rights Reserved.
Ktorで作成されたWebアプリに、Kotlinで作
成したクライアントプログラムで大量のアク
セスを試みます。
6.実践
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
36
Copyright © 2019 Toranoana Inc. All Rights Reserved.
・サーバーは新規のKtorプロジェクトで、Features
にRoutingだけを指定して作成したものを、そのま
ま使用します。
7.実践
fun main(args: Array<String>): Unit =
io.ktor.server.netty.EngineMain.main(args)
@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
routing {
get("/") {
call.respondText("HELLO WORLD!", contentType =
ContentType.Text.Plain)
}
}
}
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
37
Copyright © 2019 Toranoana Inc. All Rights Reserved.
・クライアント側はKotlinのコルーチンを使用して作
成した非常に簡単なものです。
7.実践
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {
repeat(100) {
launch {
val result : = clientCall()
println("$result")
}
}
}
fun clientCall(): String {
val requestUrl = "http://127.0.0.1:8080/"
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴
38
Copyright © 2019 Toranoana Inc. All Rights Reserved.
・現段階でも使用には耐えそう
・Features(機能)はこれからも増えそう?
・GitHubのリリースの頻度を見ると、
まだ鋭意開発中のフレームワークなので、本格的
に使用する場合はリリースノートなどを追う必要が
あるかも
7.まとめ

Weitere ähnliche Inhalte

Was ist angesagt?

Deno で始めるフロントエンド
Deno で始めるフロントエンドDeno で始めるフロントエンド
Deno で始めるフロントエンド虎の穴 開発室
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴 開発室
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜 虎の穴 開発室
 
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみたGas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた虎の穴 開発室
 
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用虎の穴 開発室
 
RustでWebブロック崩し作ってみた
RustでWebブロック崩し作ってみたRustでWebブロック崩し作ってみた
RustでWebブロック崩し作ってみた虎の穴 開発室
 
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみるCloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる虎の穴 開発室
 
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --虎の穴 開発室
 
Tech day#2 オープニングトーク
Tech day#2 オープニングトークTech day#2 オープニングトーク
Tech day#2 オープニングトーク虎の穴 開発室
 
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3虎の穴 開発室
 
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!虎の穴 開発室
 
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディングオタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング虎の穴 開発室
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくしDrecom Co., Ltd.
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料Drecom Co., Ltd.
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴 開発室
 
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)虎の穴 開発室
 
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!Drecom Co., Ltd.
 
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴 開発室
 
仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話虎の穴 開発室
 

Was ist angesagt? (20)

Deno で始めるフロントエンド
Deno で始めるフロントエンドDeno で始めるフロントエンド
Deno で始めるフロントエンド
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみたGas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
 
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
 
RustでWebブロック崩し作ってみた
RustでWebブロック崩し作ってみたRustでWebブロック崩し作ってみた
RustでWebブロック崩し作ってみた
 
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみるCloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
 
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
 
Tech day#2 オープニングトーク
Tech day#2 オープニングトークTech day#2 オープニングトーク
Tech day#2 オープニングトーク
 
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
 
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
 
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディングオタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくし
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
 
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介 GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
 
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
 
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!
 
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
 
仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話
 

Ähnlich wie サーバサイドKotlinへの入門 Ktor編

Dockerで始める開発環境構築
Dockerで始める開発環境構築Dockerで始める開発環境構築
Dockerで始める開発環境構築虎の穴 開発室
 
【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL虎の穴 開発室
 
Kotlinのコルーチンについて
KotlinのコルーチンについてKotlinのコルーチンについて
Kotlinのコルーチンについて虎の穴 開発室
 
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント虎の穴 開発室
 
店舗の滞在率を知りたい!
店舗の滞在率を知りたい!店舗の滞在率を知りたい!
店舗の滞在率を知りたい!虎の穴 開発室
 
Amplify Studioを使ってみた
Amplify Studioを使ってみたAmplify Studioを使ってみた
Amplify Studioを使ってみた虎の穴 開発室
 
20190307_Ruby&Railsアップデートの戦い
20190307_Ruby&Railsアップデートの戦い20190307_Ruby&Railsアップデートの戦い
20190307_Ruby&Railsアップデートの戦い虎の穴 開発室
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkSho Yoshida
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとInsight Technology, Inc.
 
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜虎の穴 開発室
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsGo Sueyoshi (a.k.a sue445)
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野livedoor
 
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用SORACOM,INC
 

Ähnlich wie サーバサイドKotlinへの入門 Ktor編 (20)

Dockerで始める開発環境構築
Dockerで始める開発環境構築Dockerで始める開発環境構築
Dockerで始める開発環境構築
 
【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL
 
Kotlinのコルーチンについて
KotlinのコルーチンについてKotlinのコルーチンについて
Kotlinのコルーチンについて
 
YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望
 
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
 
店舗の滞在率を知りたい!
店舗の滞在率を知りたい!店舗の滞在率を知りたい!
店舗の滞在率を知りたい!
 
Amplify Studioを使ってみた
Amplify Studioを使ってみたAmplify Studioを使ってみた
Amplify Studioを使ってみた
 
20190307_Ruby&Railsアップデートの戦い
20190307_Ruby&Railsアップデートの戦い20190307_Ruby&Railsアップデートの戦い
20190307_Ruby&Railsアップデートの戦い
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
 
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
 
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
 
WordPressのセキュリティ対策
WordPressのセキュリティ対策WordPressのセキュリティ対策
WordPressのセキュリティ対策
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
 
ドリコムのインフラCI
ドリコムのインフラCIドリコムのインフラCI
ドリコムのインフラCI
 
オタク×Node.js勉強会
オタク×Node.js勉強会オタク×Node.js勉強会
オタク×Node.js勉強会
 
Spring tools4
Spring tools4Spring tools4
Spring tools4
 
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
 

Mehr von 虎の穴 開発室

Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する虎の穴 開発室
 
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴 開発室
 
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdfDeno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf虎の穴 開発室
 
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明虎の穴 開発室
 
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します虎の穴 開発室
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –虎の穴 開発室
 
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと虎の穴 開発室
 
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説虎の穴 開発室
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!虎の穴 開発室
 
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴 開発室
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る虎の穴 開発室
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き虎の穴 開発室
 
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴 開発室
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI虎の穴 開発室
 
Deno を aws fargate で動かす
Deno を aws fargate で動かすDeno を aws fargate で動かす
Deno を aws fargate で動かす虎の穴 開発室
 
【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話虎の穴 開発室
 
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しましたワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました虎の穴 開発室
 
はじめてのわーけーしょん
はじめてのわーけーしょんはじめてのわーけーしょん
はじめてのわーけーしょん虎の穴 開発室
 

Mehr von 虎の穴 開発室 (20)

FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
 
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する
 
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf
 
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdfDeno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
 
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明
 
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
 
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
 
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼうGitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
 
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
 
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
 
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
 
Deno を aws fargate で動かす
Deno を aws fargate で動かすDeno を aws fargate で動かす
Deno を aws fargate で動かす
 
【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話
 
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しましたワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
 
はじめてのわーけーしょん
はじめてのわーけーしょんはじめてのわーけーしょん
はじめてのわーけーしょん
 

サーバサイドKotlinへの入門 Ktor編