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
Ktorコトハジメ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takehata Naoto
November 29, 2018
Technology
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ktorコトハジメ
2018年11月29日(木) 筋肉.ktの発表資料です。
Takehata Naoto
November 29, 2018
More Decks by Takehata Naoto
See All by Takehata Naoto
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
1.4k
KotlinConf 2025で発表された言語のアップデートと現地参加レポート
n_takehata
2
410
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
2
510
KotlinConf 2025 現地参加の土産話
n_takehata
0
220
組織貢献をするフリーランスエンジニアという生き方
n_takehata
1
6.8k
「2024年版 Kotlin サーバーサイドプログラミング実践開発」の補講 〜O/Rマッパー編〜
n_takehata
2
840
2024年版 Kotlin サーバーサイドプログラミング実践開発
n_takehata
9
9.2k
Server-Side目線で見る、Kotlin Festの楽しみ方
n_takehata
0
670
KotlinとCloud Vision APIで領収書の電子帳簿保存法対応をする
n_takehata
1
2.1k
Other Decks in Technology
See All in Technology
AIで仕事のやり方を変える
matsu7874
3
1.1k
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.9k
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
170
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
650
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
350
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
480
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
160
Screen Lens - 今見てる画面を翻訳する
komagata
0
260
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
270
NW運用でNWトポロジ可視化ツールに期待すること/shumoku-meetup1
corestate55
2
120
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
120
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
200
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Rails Girls Zürich Keynote
gr2m
96
14k
The Curious Case for Waylosing
cassininazir
1
500
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
エンジニアに許された特別な時間の終わり
watany
108
250k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How to build a perfect <img>
jonoalderson
1
6k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
Transcript
Ktorコトハジメ 2018年11月29日 筋肉.kt 竹端 尚人
自己紹介
概要 氏名:竹端 尚人 Twitter:@n_takehata 株式会社アプリボット所属 ・サーバーサイドKotlin ・スマートフォンゲーム開発 ・エンジニアは11年ほど ・元公務員
筋肉について • 週2でランニング(水曜日は帰宅ラン) • 女の子には「いい体」とよく言われる
アジェンダ 1.Ktorとは? 2.REST APIを作ってみる 3.認証を入れてみる 4.その他のできること 5.まとめと感想
1.Ktorとは?
Kotlin製のWeb?フレームワーク 先日バージョン1.0がリリース
今週も話題に Kotlin用フレームワーク「Ktor 1.0」正式リリース。 非同期処理に対応したWebサーバとマルチプ ラットフォームなクライアントの開発に対応 https://www.publickey1.jp/blog/18/ kotlinktor_10web.html
特徴 ・非同期処理を容易に実装できる ・Netty、Jetty、Tomcatなどのサーブレットエンジ ンに対応 ・JSONシリアライゼーション、ユーザ認証をはじ めとした様々な標準機能を搭載 ・「ケイター」と読む
人の名前みたい けいた
サーバーサイドKotlinのフレームワークといえば • 現状はSpringほぼ一択 • Javaでのシェアが圧倒的に高い上、フレームワーク側もKotlin 対応を始めている • 多機能ですごくいいフレームワーク
でもKotlin製使いたい
ということでKtor触ってみました
2.REST APIを作ってみる
手順はブログに書いてるので参考にしてください Ktorはどう使う? https://www.takehata-engineer.com/entry/how-about-using-ktor
最初のAPI
IntelliJ IDEAのKtorプラグインが楽 Ktorプロジェクトを作ればGradleの設定とか諸々やってくれる
Hello World! fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args) fun Application.module()
{ routing { get("/") { call.respondText("Hello World!") } } } ①メイン関数でNettyサーバーの起動 ① ② ③ ③routingブロックでルーティングしていわゆるController的な処理を書く ②Application.module()が実行されるAPIとかが入る単位
JSONを使う
gradleへの設定追加 dependencies { compile "io.ktor:ktor-jackson:$ktor_version" } KtorのJacksonモジュールの依存関係を追加
install install(ContentNegotiation) { jackson { // ここに設定を書ける } } installブロックで追加するKtorモジュールや設定を記述する
routing routing { get("/json") { call.respond(mapOf("status" to "OK")) } }
call.respondでレスポンスを返却すればJsonになる
• 使いたい機能に応じてinstallブロックを書き、設定を記述する • 機能を使いたい時は、gradleへの依存関係の追加、installで設定等を 追加するのが基本
APIの実装
Request、Response // リクエスト data class SampleRequest(val id: Int) // レスポンス
data class SampleResponse(val id: Int, val name: String) ただのデータクラス(Swaggerとかで作れるやつで問題なし)
routing post("/json") { val request = call.receive<SampleRequest>() val response =
SampleResponse(request.id, "ktor") call.respond(response) } call.receive<リクエストの型>()でJSONのリクエストを受け取る
これだけ
3.認証を入れてみる
Basic認証の実装
install install(Authentication) { basic { validate { if (it.name ==
"user" && it.password == "password") UserIdPrincipal("name") else null } } } ① ①Basic認証を有効化 ② ②validateブロックで認証のチェック、セッション情報のセット(UserIdPrincipalのとこ)
routing authenticate { get("/auth") { call.respondText("Authenticated!!") } } authenticateブロックで囲われたAPIにアクセスすると、Basic認証が走る
セッション情報の利用
module authenticate { get("/auth") { val user = call.authentication.principal<UserIdPrincipal>() call.respondText(user!!.name)
} } Call.authentication.principal<Principalの型>でセッションに保持している ユーザー情報を取得できる
Principal data class User(val id: Int, val name: String) :
Principal io.ktor.auth.Principalを実装していればPrincipalとして使える
4.その他のできること
• OAuth • Http Client • WebSockets • 非同期通信 •
Autoreload • 実行可能Jar • Logging etc… 今回触れなかった機能たち
とりあえず色々できる
5.まとめと感想
• 導入は割と簡単 • 動作が軽量 • 標準機能だけでWebサービス作れそうなくらいの機能はある • Kotlin製フレームワーク触るの楽しい(気持ちの問題)
今後選択肢に入れていきたい
ご清聴ありがとうございました