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
0
75
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
テレビを飲み込め! Webの嵐!! / Swallow the TV! Web storm! !!
endohizumi
1
73
OK:Googleから始めるスマートホーム生活 / OK: Smart home life starting from Google
endohizumi
0
220
クソアプリで基礎固め / Tutorial in your joke app for Vue.js
endohizumi
0
150
jQuery使いがVue.jsを使った話 / thank you jQuery,Hello Vue.js
endohizumi
0
140
スマホで始めるウェブアプリ開発 / let's start web application development with a Android Device
endohizumi
1
760
キレない関数の作り方 / How to make bat function no anger
endohizumi
0
86
Server-sent eventsを使ってみた / I tried using Server-sent event
endohizumi
1
960
キレない変数の扱い方 /How to handle variables no anger
endohizumi
0
120
Netlifyで、ポートフォリオをつくってみた
endohizumi
0
81
Other Decks in Programming
See All in Programming
Parallel Socket Communication in Swift
s_shimotori
0
260
ここ1~2年くらいで 使えるようになった(主要ブラウザーの最新版 がすべて対応した ) ウェブの新機能について ランダムに喋る!
myzkyy
9
6.5k
もうすぐ新年度、Babylon.jsがお勧めな3個の理由
hideg
0
170
Learning PHP and Static Analysis with PHP Parser
inouehi
1
250
生成 AI の中身を覗いてみよう〜基礎から医療現場での応用まで〜
soh9834
2
770
document.write再考
brn
5
2.5k
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
110
オブジェクトしこう
okuramasafumi
2
130
SwiftUI, Jetpack Composeの導入で変化した「家族アルバム みてね」のアプリ開発体験
hicka04
6
400
WinUI 3デモ - "CommunityToolkit.Mvvm"NuGetパッケージ編
andrewkeepcoding
0
140
Dockerで始めるAWS Lambda開発
stutkhd0709
14
2.5k
自作ソフト(VMagicMirror)がVRMA対応してる話+実装のTips
bakudreameater
0
110
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.2k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.8k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
It's Worth the Effort
3n
180
27k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
272
12k
How GitHub Uses GitHub to Build GitHub
holman
467
290k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
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