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
個人開発アプリにスキーマ 駆動開発を取り入れた話
Search
虎の穴ラボ株式会社
November 30, 2023
Programming
0
260
個人開発アプリにスキーマ 駆動開発を取り入れた話
2023年11月30日に行われた「秋の終わりまでにチャレンジしたことLT会」にて発表した内容となります。
虎の穴ラボ株式会社
November 30, 2023
Tweet
Share
More Decks by 虎の穴ラボ株式会社
See All by 虎の穴ラボ株式会社
Tailwind CSSとAtomic Designで実現する効率的な Web 開発の事例
toranoana
1
560
Denoについて、同人誌記事を出しました+update
toranoana
0
190
【虎の穴ラボ Tech Talk #2】プロンプトエンジニアリング
toranoana
0
120
20241121_[TechTalk#2]虎の穴ラボでのLLMについて取り組み紹介
toranoana
0
120
社内チャットへRAG導入した話(Tech Talk #2)
toranoana
0
190
Deno Deploy で Web Cache API を 使えるようになったので試した知見
toranoana
1
600
【虎の穴ラボ Tech Talk】虎の穴ラボTech Talk説明資料
toranoana
0
420
虎の穴ラボ Tech Talk_CDKでFargate環境構築
toranoana
1
470
虎の穴ラボスキルアップ支援制度の利用例
toranoana
0
8.9k
Other Decks in Programming
See All in Programming
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
290
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.1k
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
240
ゲームの物理 剛体編
fadis
0
390
AIエージェントの設計で注意するべきポイント6選
har1101
6
2.8k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
認証・認可の基本を学ぼう後編
kouyuume
0
260
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
150
CSC307 Lecture 01
javiergs
PRO
0
630
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.6k
tparseでgo testの出力を見やすくする
utgwkk
2
330
Cell-Based Architecture
larchanjo
0
150
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
210
Darren the Foodie - Storyboard
khoart
PRO
0
2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
30
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
140
Optimizing for Happiness
mojombo
379
70k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
180
Transcript
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 個人開発アプリにスキーマ 駆動開発を取り入れた話
虎の穴ラボ株式会社 浜田拓実 (sheltie) 2022 秋の終わりまでにチャレンジしたことLT会 11/30
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 自己紹介 浜田
拓実(ハマダ タクミ) • 2022/06 入社 • 虎の穴ラボ 通販コスト削減チーム エンジニア Goを使い始めた理由 • シンプルな構文でコードがガリガリ書ける(気がする) • エイリアスや省略した書き方が少ない(気がする) 今季の推しアニメ • SHY • 16bitセンセーション
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. ・スキーマ駆動開発とは ・スキーマ駆動開発を取り入れた理由
・実際にやってみる ・OpenAPIでAPI仕様書を作成 ・ツールを利用してGo言語のファイルを出力 ・プログラムの修正 ・まとめ アジェンダ
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. スキーマ駆動開発とは 2022
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. スキーマ駆動開発とは スキーマ駆動開発(Schema-Driven
Development)は、ソフトウェア開発のアプ ローチの一つです。通常、データの構造や形式が事前に定義されたスキーマ に基づいています。これにより、開発者はデータの構造や型を明示的に定義 し、それに基づいてコードを構築します。 By ChatGPT 先にAPIのパラメータやDBのテーブル構造を決めておき、その設 計に沿ってプログラムを作成する開発手法のこと
Copyright (C) 2021 Toranoana Inc. All Rights Reserved. スキーマ駆動開発を 取り入れた理由
6 2022
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. スキーマ駆動開発を取り入れた理由 ・設計と実装を一元管理したい
個人開発のため、思いついたらそのまま実装(設計書は書かない) ➡自分でどんなAPIを作ったのか思い出せない ➡APIのパラメータを忘れた ➡APIのメソッドも忘れた(POSTだっけ? PUTだっけ?) 設計書は必要だ!
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. スキーマ駆動開発を取り入れた理由 ・設計書の管理はどうするか?
スプレッドシート ➡設計と実装がずれる自信がある! GoDocに書く ➡出力されるフォーマットがAPI向きではない
Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 実際にやってみる 9
2022
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. OpenAPIでAPI仕様書を作成 ・エディタを整備
VSCodeに以下2つの拡張機能を導入
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. OpenAPIでAPI仕様書を作成 ・エディタを整備
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. ツールを利用してGo言語のファイルを出力 ・作成したOpenAPI仕様書からGoのプログラムを出力
今回は「oapi-codegen」を利用します ➡変換後のファイルが1つなので、管理が楽そう ➡main関数はすでに作成済みなので、 ジェネレーターから出力されなくて良い
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. ツールを利用してGo言語のファイルを出力 ・oapi-codegenの利用方法
導入 go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@latest 変換 oapi-codegen -package petstore petstore-expanded.yaml > petstore.gen.go
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. ツールを利用してGo言語のファイルを出力 ・oapi-codegenの利用方法(自分の場合)
oapi-codegen -package generated -generate types,server,spec ./openapi.yaml > ./openapi.go 以下のコードのみ出力 ・APIパラメータの構造体 ・サーバーサイドのAPI定義の利用(Echoのルーター定義など)
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. ツールを利用してGo言語のファイルを出力
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. プログラムの修正 ・生成されたコードに合わせて既存のプログラムを修正
➡独自に定義していた構造体を削除 この修正に合わせて、構造体利用箇所も修正 ➡生成されたハンドラーの実装(次で紹介) ➡Echoのルーティングを削除 生成されたコードのルーティングを利用するように修正(次で紹介)
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. プログラムの修正 ハンドラーの実装
ハンドラーの登録
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 動作確認
Copyright (C) 2021 Toranoana Inc. All Rights Reserved. まとめ 19
2022
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. まとめ ・スキーマ駆動開発を取り入れて
➡APIの設計と実装が一元管理できるようになった! ➡APIの設計書が出来た! ・注意事項 APIを修正するときはyamlファイル修正、 その後ジェネレータでソース出力する 出力されたファイルを修正しないように注意!!!
Copyright (C) 2020 Toranoana Inc. All Rights Reserved. ご静聴ありがとうございました 2022