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
Next.js LearnのアプリでDB連携してる箇所をAPI化して、Swagger化してみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
caad TakaraShinya
April 22, 2024
Technology
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Next.js LearnのアプリでDB連携してる箇所をAPI化して、Swagger化してみた
caad TakaraShinya
April 22, 2024
More Decks by caad TakaraShinya
See All by caad TakaraShinya
S3に関する調査が必要になったときの 効率よく調査できるTips
takarashinya
0
57
生成AIと子どものお手伝い回数管理するWEBアプリ作ってみた
takarashinya
0
87
ホントにあったAmazon_EC2のコワーイ話.pdf
takarashinya
0
120
システム開発におけるドキュメントをできるだけGithub Pagesに集約してみた話
takarashinya
0
4k
WordpressにAWS Copilot CLIを利用したら利用事例に掲載してもらえた話
takarashinya
2
410
Other Decks in Technology
See All in Technology
紙 to デジタル
ichien178
0
320
AIレビュー時代に必要なのは、SLOで引く撤退ライン
nobuoooo
0
150
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
110
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
310
Kiro WebとCloud Sessions
nagisa53
2
220
:syncing_time:
sksat
3
820
VPCでもFloatingIPを使いたいんだ
y_kotani
1
110
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
0
140
エージェント化するAI:現在地とその先に起きる変化 / AI as Agents: The Current State and the Changes Ahead
ks91
PRO
0
140
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
270
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
480
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The SEO Collaboration Effect
kristinabergwall1
1
530
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
350
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
WENDY [Excerpt]
tessaabrams
11
39k
Transcript
Next.js Learn のアプリでDB 連携 してる箇所をAPI 化して、 Swagger 化してみた Shima Tech
Hub #1 # しまてく @takarake
🗣 アジェンダ 1️⃣ 自己紹介 2️⃣ なんでNext.js なの❓ 3️⃣ どうやったの❓ 4️⃣
感想🤔
1️⃣ 自己紹介
1️⃣ 自己紹介( 真面目用)
1️⃣ 自己紹介(X @takarake)
2️⃣ なんでNext.js な の❓
その前に、このQR コードを 読んでください📱
「バッチリですぜ❗👍」と回答された方はどの点でモダンな開発をされてますか❓ 13 votes - 13 participants
皆さん、ご回答ありがとうございました❗
話を戻しまして、なんでNext.js なの❓
開発チームの取り組みの紹介と挑戦した( してる) こと
2021 年 💪 若手向け基礎インフラスキル育成 2022 年 💪 AWS SAA 取得
& チーム関係性強化
2023 年 💪 ノウハウ共有促進 & 組織発信力強化 2024 年 💪 組織体制強化
& メンター育成
現在の課題 💦 若手メンバーも増えたが、まだまだ体制強化が必要 開発相談が増加中 🆙 💦 既存メンバーの言語スキルが異なり、育成が属人化 Ruby 、PHP 、Node.js
、Python など様々
取り組みに至った考え方 🤔 体制強化のため、メンター不足を解消したい 🤔 チーム全体で共通技術を習得し、育成も負荷分散できるようにしよう
2024 年の今、モダンな技術ってなんだ❓🤔
ウチの開発案件にマッチしてる技術ってなんだ❓🤔
調査の結果、下記のような理由から Next.js を選択🙇♀ ゼロコンフィグ機能 最低限の設定を自動でやってくれる ファイルベースルーティング機能 開発にあたり、ルーティング設定が不要でわかりやすい フロントもバックエンドも両方対応でき、API 作成も簡単 利用技術が統一可能
Netflix でも導入されたり、継続して開発が進行 Vercel が メンテナでもあり、今後も進化が期待できる CyberAgent グループでもよく利用され、ノウハウ共有を受けやすい 高度な技術ノウハウ共有も受けられ、育成にも活かせる ※ 弊社では 0 -> 1 で開発する案件が多いことやフロントとバックエンドと複雑化せず、リリース後に引き継ぎが しやすいことも考慮して選定
今年度で上級者を目指す🚀
Next.js Learn をやり、色々いじる👨💻
スマホやデスクトップアプリ化してみたり Next.js Learn のアプリをデスクトップアプリ化とスマホアプリ化してみた #iOS - Qiita
コンテナ化してみたり Next.js のコンテナ化( 開発環境にも、本番環境にも対応する) #Docker - Qiita
ということで、Swagger 化もやってみた👍
3️⃣ どうやったの❓
3️⃣ どうやったの❓ 1. Next.js Learn が完了済みの状態からAPI 化する Next.js 14 のため、App
Router でのAPI 化(Routing: Route Handlers | Next.js を利用) Swagger 化のため、NPM モジュールインストール(差分はこちら👇余計なものも入ってますが、、、、 💦)
3️⃣ どうやったの❓ 2. インストールした next-swagger-doc のGithub のREADME に従い、設定を行う Next.js 13
以降に関しての対応方法が記載されていてハートフル💖 jellydn/next-swagger-doc ` `
3️⃣ どうやったの❓ 3. 下記のように、 app/api/hello/route.ts 内でSwagger Comment を記載する感じ そのため、yaml ファイルは不要で作れる
` ` 1 2 // file: app/api/hello/route.ts 3 /** 4 * @swagger 5 * /api/hello: 6 * get: 7 * description: Returns the hello world 8 * responses: 9 * 200: 10 * description: Hello World! 11 */ 12 export async function GET(_request: Request) { 13 // Do whatever you want 14 return new Response('Hello World!', { 15 status: 200, 16 }); 17 }
3️⃣ どうやったの❓ 4. Next.js Learn のアプリを起動し、Swagger UI を確認 http://localhost:3000/api-doc にアクセスすると、Swagger
UI が表示される ` `
3️⃣ どうやったの❓ 5. ここでちょっとした問題発生💦 Next.js Learn のアプリでAPI 化はされてるが、Swagger Comment 自分で書くの❓💦
API できてるのに、、、、自動化できないのかなー🤔
3️⃣ どうやったの❓ 5. ここでちょっとした問題発生💦 Next.js Learn のアプリでAPI 化はされてるが、Swagger Comment 自分で書くの❓💦
API できてるのに、、、、自動化できないのかなー🤔 ・・・・・・そこに救世主現る❗👀
3️⃣ どうやったの❓ 6. cURL to Swagger 皆さんすでにご存知かもしれませんが、、、、💦 cURL コマンドとその結果からSwagger 形式に変換してくれる👍
3️⃣ どうやったの❓ 7. あとはAPI 化したものをCURL して、cURL to Swagger を使ってSwagger Comment
としてコピペするだけ👍 8. ちゃーんとVercel へもデプロイして、Swagger UI を確認👍 Next Swagger API Example
4️⃣ 感想🤔
4️⃣ 感想🤔 結構簡単にSwagger 化できた👍 利用したGithub リポジトリはこちら 本当はOpenAPI の定義から自動テストを行いたかった💦 k1LoW/runn を利用してのテスト作成自動化を考えてた🤔
次はGithub Pages 化かなー😅😅😅
ご静聴ありがとうございました❗