Suche senden
Hochladen
サーバサイドKotlinへの入門 Ktor編
•
0 gefällt mir
•
138 views
虎の穴 開発室
Folgen
サーバサイドKotlinへの入門 Ktor編
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 38
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
虎の穴 開発室
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
虎の穴 開発室
20210528 aws arm_ugokasitemita
20210528 aws arm_ugokasitemita
虎の穴 開発室
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
虎の穴 開発室
【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ
虎の穴 開発室
AWS Proton を使ってみた
AWS Proton を使ってみた
虎の穴 開発室
Empfohlen
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
虎の穴 開発室
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
虎の穴 開発室
20210528 aws arm_ugokasitemita
20210528 aws arm_ugokasitemita
虎の穴 開発室
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
虎の穴 開発室
【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ
虎の穴 開発室
AWS Proton を使ってみた
AWS Proton を使ってみた
虎の穴 開発室
Deno で始めるフロントエンド
Deno で始めるフロントエンド
虎の穴 開発室
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
虎の穴 開発室
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
虎の穴 開発室
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
虎の穴 開発室
RustでWebブロック崩し作ってみた
RustでWebブロック崩し作ってみた
虎の穴 開発室
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
虎の穴 開発室
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
虎の穴 開発室
Tech day#2 オープニングトーク
Tech day#2 オープニングトーク
虎の穴 開発室
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
虎の穴 開発室
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
虎の穴 開発室
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
虎の穴 開発室
カンバンと朝会とわたくし
カンバンと朝会とわたくし
Drecom Co., Ltd.
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料
Drecom Co., Ltd.
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
虎の穴 開発室
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
虎の穴 開発室
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
虎の穴 開発室
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!
Drecom Co., Ltd.
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴 開発室
仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話
虎の穴 開発室
Dockerで始める開発環境構築
Dockerで始める開発環境構築
虎の穴 開発室
【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL
虎の穴 開発室
Weitere ähnliche Inhalte
Was ist angesagt?
Deno で始めるフロントエンド
Deno で始めるフロントエンド
虎の穴 開発室
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
虎の穴 開発室
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
虎の穴 開発室
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
虎の穴 開発室
RustでWebブロック崩し作ってみた
RustでWebブロック崩し作ってみた
虎の穴 開発室
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
虎の穴 開発室
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
虎の穴 開発室
Tech day#2 オープニングトーク
Tech day#2 オープニングトーク
虎の穴 開発室
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
虎の穴 開発室
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
虎の穴 開発室
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
虎の穴 開発室
カンバンと朝会とわたくし
カンバンと朝会とわたくし
Drecom Co., Ltd.
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料
Drecom Co., Ltd.
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
虎の穴 開発室
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
虎の穴 開発室
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
虎の穴 開発室
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!
Drecom Co., Ltd.
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴 開発室
仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話
虎の穴 開発室
Was ist angesagt?
(20)
Deno で始めるフロントエンド
Deno で始めるフロントエンド
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
Gas+twitter apiでtwitterのお気に入り画像保存を自動化してみた
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
RustでWebブロック崩し作ってみた
RustでWebブロック崩し作ってみた
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
Tech day#2 オープニングトーク
Tech day#2 オープニングトーク
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
カンバンと朝会とわたくし
カンバンと朝会とわたくし
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話
Ähnlich wie サーバサイドKotlinへの入門 Ktor編
Dockerで始める開発環境構築
Dockerで始める開発環境構築
虎の穴 開発室
【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL
虎の穴 開発室
Kotlinのコルーチンについて
Kotlinのコルーチンについて
虎の穴 開発室
YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望
Yahoo!デベロッパーネットワーク
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
虎の穴 開発室
店舗の滞在率を知りたい!
店舗の滞在率を知りたい!
虎の穴 開発室
Amplify Studioを使ってみた
Amplify Studioを使ってみた
虎の穴 開発室
20190307_Ruby&Railsアップデートの戦い
20190307_Ruby&Railsアップデートの戦い
虎の穴 開発室
Keycloak入門
Keycloak入門
Hiroyuki Wada
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
Yahoo!デベロッパーネットワーク
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
Sho Yoshida
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
Insight Technology, Inc.
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
虎の穴 開発室
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
WordPressのセキュリティ対策
WordPressのセキュリティ対策
Kobe Digital Labo, Inc.
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
livedoor
ドリコムのインフラCI
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
オタク×Node.js勉強会
オタク×Node.js勉強会
虎の穴 開発室
Spring tools4
Spring tools4
Takuya Iwatsuka
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
SORACOM,INC
Ähnlich wie サーバサイドKotlinへの入門 Ktor編
(20)
Dockerで始める開発環境構築
Dockerで始める開発環境構築
【LT資料】ラムダ式でDSL
【LT資料】ラムダ式でDSL
Kotlinのコルーチンについて
Kotlinのコルーチンについて
YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント
店舗の滞在率を知りたい!
店舗の滞在率を知りたい!
Amplify Studioを使ってみた
Amplify Studioを使ってみた
20190307_Ruby&Railsアップデートの戦い
20190307_Ruby&Railsアップデートの戦い
Keycloak入門
Keycloak入門
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
現場のインフラエンジニアから見たヤフー #ヤフー名古屋
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
WordPressのセキュリティ対策
WordPressのセキュリティ対策
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
ドリコムのインフラCI
ドリコムのインフラCI
オタク×Node.js勉強会
オタク×Node.js勉強会
Spring tools4
Spring tools4
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
SORACOM Conference "Discovery" 2018 | F1. SORACOMで自動化するデバイスのキッティング、配備、運用
Mehr von 虎の穴 開発室
FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
虎の穴 開発室
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する
虎の穴 開発室
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴 開発室
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
虎の穴 開発室
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明
虎の穴 開発室
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します
虎の穴 開発室
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
虎の穴 開発室
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
虎の穴 開発室
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
虎の穴 開発室
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説
虎の穴 開発室
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
虎の穴 開発室
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴 開発室
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
虎の穴 開発室
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
虎の穴 開発室
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方
虎の穴 開発室
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
虎の穴 開発室
Deno を aws fargate で動かす
Deno を aws fargate で動かす
虎の穴 開発室
【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話
虎の穴 開発室
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
虎の穴 開発室
はじめてのわーけーしょん
はじめてのわーけーしょん
虎の穴 開発室
Mehr von 虎の穴 開発室
(20)
FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
Deno を aws fargate で動かす
Deno を aws fargate で動かす
【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
はじめてのわーけーしょん
はじめてのわーけーしょん
サーバサイドKotlinへの入門 Ktor編
1.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 Ktorを試してみた 株式会社 虎の穴 山田 公博 1 Copyright ©
2019 Toranoana Inc. All Rights Reserved.
2.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 自己紹介 名前 :山田 公博 担当業務 :ECサイト開発 業務使用の言語:Java 今期アニメ:五等分の花嫁 2 Copyright ©
2019 Toranoana Inc. All Rights Reserved.
3.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 アジェンダ 1. はじめに 2. Ktorについて 3.
事前準備 4. Features 5. 非同期接続について 6. 実践 7. まとめ 3 Copyright © 2019 Toranoana Inc. All Rights Reserved.
4.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 1.はじめに 4 ● 本日の内容 IntelliJ IDEAを使用した
Ktor のプロジェク ト作成方法を確認します。 Ktor の公式サイトに書かれている各種サ ンプルアプリで使用されているKtorの Features(機能)を見ていきます。 Ktorの接続耐性を試します。 Copyright © 2019 Toranoana Inc. All Rights Reserved.
5.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 5 Copyright © 2019
Toranoana Inc. All Rights Reserved. ● 「ケイター」と読みます。 ● Kotlinで開発されています。 ● Kotlin同様 JetBrains社により開発されていま す。 ● 単体では非常にシンプルな micro framework です。 2.Ktorについて
6.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 6 Copyright © 2019
Toranoana Inc. All Rights Reserved. ● Featuresと呼ばれるHTML Template、認証機 能などの各種機能をプラグイン形式で追加が 可能 ● 非同期処理を行うサーバの開発を容易にでき る ● 標準のサーブレットエンジンの他に、Jetty、 Nettyなどのサーブレットエンジンと差し替え可 能 2.Ktorについて
7.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 7 Copyright © 2019
Toranoana Inc. All Rights Reserved. ● Featuresと呼ばれるHTML Template、認証機 能などの各種機能をプラグイン形式で追加が 可能 ● 非同期処理を行うサーバの開発を容易にでき る ● 標準のサーブレットエンジンの他に、Jetty、 Nettyなどのサーブレットエンジンと差し替え可 能 2.Ktorについて
8.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 8 Copyright © 2019
Toranoana Inc. All Rights Reserved. 事前準備として、IntelliJ IDEAを使用した Ktorプロジェクトの作成方法を説明します。 3.事前準備
9.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 9 Copyright © 2019
Toranoana Inc. All Rights Reserved. 1.Ktorプラグインの追加 3.事前準備 IntelliJ IDEA を起動 し、Welcome画面右 下の「Configure」から 「Plugins」を選択して Plugin画面を表示させ ます。 Plugins を選択しま す。
10.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 10 Copyright © 2019
Toranoana Inc. All Rights Reserved. 1.Ktorプラグインの追加 3.事前準備 Plugin画面で、画面上 部の検索欄に「Ktor」と 入力すると、Ktorプラ グインが表示されるの で、プラグインの 「Install」ボタンをクリッ クします。 1. Ktorと入力 2. Install をクリック
11.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 11 Copyright © 2019
Toranoana Inc. All Rights Reserved. 1.Ktorプラグインの追加 3.事前準備 プラグインのインストー ル後はIDEの再起動 ボタンが表示されるの で、ボタンをクリックし て再起動を行います。 Restart IDE をクリック
12.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 12 Copyright © 2019
Toranoana Inc. All Rights Reserved. 2.Ktorプロジェクトの作成手順 3.事前準備 Welcome画面の 「Create New Project」をクリックしま す。
13.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 13 Copyright © 2019
Toranoana Inc. All Rights Reserved. 2.Ktorプロジェクトの作成手順 3.事前準備 画面左側の「Ktor」を 選択し、利用するプラ グインを選択して 「Next」ボタンをクリッ クします。1. Ktor を選択 2. 各種プラグイン を選 択 3. Nextボタンをクリック
14.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 14 Copyright © 2019
Toranoana Inc. All Rights Reserved. 2.Ktorプロジェクトの作成手順 3.事前準備 「GroupId」「ArtifactId」 を適宜入力し、「Next」 ボタンをクリックしま す。 1. GroupId、ArtifactIdを 適宜入力 2. Nextボタンをクリック
15.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 15 Copyright © 2019
Toranoana Inc. All Rights Reserved. 2.Ktorプロジェクトの作成手順 3.事前準備 「Project name」を入 力すると「Project location」(プロジェクト のディレクトリの作成 場所)が自動的に変更 されます。内容を確認 後、「Finish」ボタンをク リックします。 1. Project name を入力 2. Finishボタンをクリック
16.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 16 Copyright © 2019
Toranoana Inc. All Rights Reserved. 2.Ktorプロジェクトの作成手順 3.事前準備 Gradleの設定画面が 表示されるので「Use auto-import」をチェッ ク状態に変更後、 「OK」ボタンをクリック します。 1. Use auto-import をチェック 2. OKボタンをクリック
17.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 17 Copyright © 2019
Toranoana Inc. All Rights Reserved. 2.Ktorプロジェクトの作成手順 3.事前準備 プロジェクト画面が表 示されて完了です。
18.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 18 Copyright © 2019
Toranoana Inc. All Rights Reserved. Ktorの公式サイトで紹介されている Guides を参考に、Ktorにプラグインとして提供され ているFeatures(機能)を見ていきます。 https://ktor.io/quickstart/guides.html 4. Features
19.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 31 Copyright © 2019
Toranoana Inc. All Rights Reserved. 小まとめ ・必要と思われる機能の大半は揃っているように思う。 ・Kotlinベースの為、Javaのライブラリも使用可能。 4.Features
32.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 32 Copyright © 2019
Toranoana Inc. All Rights Reserved. KtorはKotlinのコルーチンを利用して開発が されています。 そのコルーチンを利用した非同期処理が可 能なつくりとなっています。 5.非同期処理について
33.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 33 Copyright © 2019
Toranoana Inc. All Rights Reserved. コルーチンとは ざっくり説明をすると、以下のような特性を持ちます。 ・軽量なスレッドのようなもの ・メインスレッドをブロックせずに非同期に動作させることが できる ・軽量な為、大量に作成することができる 5.非同期処理について
34.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 34 Copyright © 2019
Toranoana Inc. All Rights Reserved. つまり、 大量の同時アクセスに対応できる 5.非同期処理について
35.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 35 Copyright © 2019
Toranoana Inc. All Rights Reserved. Ktorで作成されたWebアプリに、Kotlinで作 成したクライアントプログラムで大量のアク セスを試みます。 6.実践
36.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 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.
虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 虎の穴 38 Copyright © 2019
Toranoana Inc. All Rights Reserved. ・現段階でも使用には耐えそう ・Features(機能)はこれからも増えそう? ・GitHubのリリースの頻度を見ると、 まだ鋭意開発中のフレームワークなので、本格的 に使用する場合はリリースノートなどを追う必要が あるかも 7.まとめ
Jetzt herunterladen