Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SwaggerでSSLCを 置き換える / Replacing SSLC with Swagger
Search
Endo_Hizumi
September 24, 2019
Programming
97
0
Share
SwaggerでSSLCを 置き換える / Replacing SSLC with Swagger
Replacing SSLC with Swagger
Endo_Hizumi
September 24, 2019
More Decks by Endo_Hizumi
See All by Endo_Hizumi
欲しいを叶える個人開発の進め方 / How to Run an Indie Project That Brings Your Ideas to Life
endohizumi
0
860
JSでギャルゲー!~JavaScriptでノベルゲーエンジン作ったった~
endohizumi
1
410
意志の力が9割。アニメから学ぶAI時代のこれから。
endohizumi
1
170
JSでギャルゲーをつくろう!(第3版)
endohizumi
0
250
JSでギャルゲーをつくろう!(第2版)
endohizumi
0
94
JSでギャルゲーをつくろう!
endohizumi
0
480
テレビを飲み込め! Webの嵐!! / Swallow the TV! Web storm! !!
endohizumi
1
130
OK:Googleから始めるスマートホーム生活 / OK: Smart home life starting from Google
endohizumi
0
360
クソアプリで基礎固め / Tutorial in your joke app for Vue.js
endohizumi
0
260
Other Decks in Programming
See All in Programming
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
0
240
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
230
Swiftのレキシカルスコープ管理
kntkymt
0
200
New "Type" system on PicoRuby
pocke
1
390
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1k
Inspired By RubyKaigi (EN)
atzzcokek
0
460
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
490
Lessons from Spec-Driven Development
simas
PRO
0
110
ふつうのFeature Flag実践入門
irof
7
3.4k
今さら聞けないCancellationToken
htkym
0
210
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
270
Automating Front-end Workflow
addyosmani
1370
210k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
540
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Mind Mapping
helmedeiros
PRO
1
220
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
Transcript
SwaggerでSSLCを 置き換える #2 クーコム Tech Meetup 代官山でLT会 遠藤ヒズミ
SSLC? 2
SSLCとは? Server Side Legacy Code SSLC 3
テストも仕様書もない素のPHPでかかれたコードです ただのレガシーコードやん 4
5 今回の範囲 GameClient GameServer Jinro JinroResponcer.php Broadcast.php member activity_logs triggerで 書き込む
発言・投票などの行動 書き込み レコード 取得 JSONで送信 5 今、開発している人狼のWebアプリの仕組みがこうなって います。
6 今回の範囲 GameClient GameServer Jinro JinroResponcer.php Broadcast.php member activity_logs triggerで 書き込む
発言・投票などの行動 書き込み レコード 取得 JSONで送信 6 クライアントからデータを受け取る部分の作業を 内容を話します
今回の範囲 ちなみに、逆にサーバーからリアルタイムに配信する側 https://speakerdeck.com/endohizumi/i-tried-using-server-sent-event 7
置き換えるまで経緯 • クライアント側を実装中にサーバー側に必要な機能が出てきた • サーバー側のコードを昔の記憶(3年くらい前)を元に読んでみた ◦ 考えとしては、クライアントの要求でリソースの操作を行う ◦ POSTメソッドのみ($_POSTで取得) ◦
RequestBodyのcategoryパラメータの値で12分岐 ◦ pdoのprepareメソッドを実行の行がほとんど ◦ 一部の分岐で関数を呼んでいる ◦ 分岐の後に、SQLクエリを実行する ◦ categoryの値によってクエリの結果を取得する ◦ 返す結果がないときは、exit()で終了 8
置き換える対象 • サーバー側のコードを昔の記憶(3年くらい前)を元に読んでみた ◦ クライアントの要求でリソースの操作を行うWebAPIの様なもの ◦ MVCもなくモノシリック ◦ $_POSTで取得しているため、リスキー ◦
仕様書もなくコードを読むしかない あれ、これ、よくないコードでは? 9
自分のモチベーションと要求を満たす一手 • ドキュメントも欲しい • 良くないコードも直したい(書き直したい) 10
自分のモチベーションと要求を満たす一手 • ドキュメントも欲しい • 良くないコードも直したい(書き直したい) どちらも自力でやるには、モチベーションの維持が難しい 11
自分のモチベーションと要求を満たす一手 • ドキュメントも欲しい • 良くないコードも直したい(書き直したい) どちらも自力でやるには、モチベーションの維持が難しい ➡ そのためのSwagger 12
Swaggerがなぜ良いのか • yml形式でかけて、HTML形式のドキュメントを生成できる • ドキュメントがクライアントとして動く • フレームワークを使ったコードが生成できる ➡ ドキュメントもコードも書けて、一挙両得! 13
Swaggerファイルを書くために 1. 役割と入出力を考える 14
Swaggerファイルを書くために 2. エンドポイントの命名 対象とするテーブル名をもとに、エンドポイントを名付ける memberテーブルを操作する処理 → /members/配下に roomテーブルを操作する処理 → /rooms/配下に
15
Swaggerファイルを書くために 3. 短いURLを目指す 役職の取得APIエンドポイント /members/{userName}/job/ /jobs/{userName} プレイヤー以外に役職つけないから /members/は長くないか? 16
いざ、記述 17
コード生成 18
感想 使ってどうだったか • 苦しんでymlを書いたのは、初めてでした(泣 • Swagger Editorが、VBAエディタ並みの不親切なエラーしか出して くれないのが、辛かった。 • しかし、コードを生成してくれたので、助かった。
19