$30 off During Our Annual Pro Sale. View Details »
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
0
88
SwaggerでSSLCを 置き換える / Replacing SSLC with Swagger
Replacing SSLC with Swagger
Endo_Hizumi
September 24, 2019
Tweet
Share
More Decks by Endo_Hizumi
See All by Endo_Hizumi
JSでギャルゲー!~JavaScriptでノベルゲーエンジン作ったった~
endohizumi
1
62
意志の力が9割。アニメから学ぶAI時代のこれから。
endohizumi
1
130
JSでギャルゲーをつくろう!(第3版)
endohizumi
0
75
JSでギャルゲーをつくろう!(第2版)
endohizumi
0
76
JSでギャルゲーをつくろう!
endohizumi
0
390
テレビを飲み込め! Webの嵐!! / Swallow the TV! Web storm! !!
endohizumi
1
100
OK:Googleから始めるスマートホーム生活 / OK: Smart home life starting from Google
endohizumi
0
320
クソアプリで基礎固め / Tutorial in your joke app for Vue.js
endohizumi
0
230
jQuery使いがVue.jsを使った話 / thank you jQuery,Hello Vue.js
endohizumi
0
190
Other Decks in Programming
See All in Programming
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.5k
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
390
Developing static sites with Ruby
okuramasafumi
0
320
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
140
AIコーディングエージェント(skywork)
kondai24
0
200
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
140
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
430
ゆくKotlin くるRust
exoego
1
140
AIエージェントの設計で注意するべきポイント6選
har1101
5
2k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
270
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
110
Vibe codingでおすすめの言語と開発手法
uyuki234
0
100
Featured
See All Featured
Bash Introduction
62gerente
615
210k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
130
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
250
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Making Projects Easy
brettharned
120
6.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
180
Deep Space Network (abreviated)
tonyrice
0
20
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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