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
caad TakaraShinya
April 22, 2024
Technology
320
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
51
生成AIと子どものお手伝い回数管理するWEBアプリ作ってみた
takarashinya
0
87
ホントにあったAmazon_EC2のコワーイ話.pdf
takarashinya
0
120
システム開発におけるドキュメントをできるだけGithub Pagesに集約してみた話
takarashinya
0
3.9k
WordpressにAWS Copilot CLIを利用したら利用事例に掲載してもらえた話
takarashinya
2
410
Other Decks in Technology
See All in Technology
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
850
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
110
AI工学特論: MLOps・継続的評価
asei
11
3.1k
QAと開発の両側から進める AI活用 -QAプロセスAI支援ツールキットと Inner Loop / Outer Loopの取り組み-
legalontechnologies
PRO
2
400
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
180
PLaMo 3.0 Primeの事後学習
pfn
PRO
0
240
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
0
200
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
2.1k
LangfuseによるLLMOps基盤の構築と活用事例
zozotech
PRO
1
230
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
なぜ、あなたのエージェントは言うことを聞かないのか
segavvy
1
610
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
190
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
430
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Odyssey Design
rkendrick25
PRO
2
740
My Coaching Mixtape
mlcsv
0
180
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
440
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
780
Why Our Code Smells
bkeepers
PRO
340
58k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
450
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 化かなー😅😅😅
ご静聴ありがとうございました❗