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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Endo_Hizumi
September 24, 2019
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
1.1k
JSでギャルゲー!~JavaScriptでノベルゲーエンジン作ったった~
endohizumi
1
460
意志の力が9割。アニメから学ぶAI時代のこれから。
endohizumi
1
190
JSでギャルゲーをつくろう!(第3版)
endohizumi
0
290
JSでギャルゲーをつくろう!(第2版)
endohizumi
0
98
JSでギャルゲーをつくろう!
endohizumi
0
520
テレビを飲み込め! Webの嵐!! / Swallow the TV! Web storm! !!
endohizumi
1
130
OK:Googleから始めるスマートホーム生活 / OK: Smart home life starting from Google
endohizumi
0
380
クソアプリで基礎固め / Tutorial in your joke app for Vue.js
endohizumi
0
280
Other Decks in Programming
See All in Programming
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
180
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
770
5分で問診!Composer セキュリティ健康診断
codmoninc
0
910
メールのエイリアス機能を履き違えない
isshinfunada
0
230
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
730
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
150
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
210
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
120
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
190
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
240
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
150
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Automating Front-end Workflow
addyosmani
1370
210k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
500
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
330
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
Site-Speed That Sticks
csswizardry
13
1.4k
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