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
EVAフレームワーク
Search
Sigma
October 10, 2022
Programming
0
100
EVAフレームワーク
友人が作っているやつ、「EVAフレームワーク」は紹介用に自分がそう呼んでるやつ。
Sigma
October 10, 2022
Tweet
Share
More Decks by Sigma
See All by Sigma
Proxmox_VE.pdf
seiyasugimoto
0
190
Stable Diffusionで遊んでみた
seiyasugimoto
1
130
SSR+SPA
seiyasugimoto
0
130
Nuxtにおける設計
seiyasugimoto
0
88
Atomic Designを ディレクトリ以外で表現
seiyasugimoto
0
79
throttleすげぇぇぇ
seiyasugimoto
0
77
スマホでPythonしたい
seiyasugimoto
0
66
平文で保存するな!
seiyasugimoto
0
87
ソースコードを読もう
seiyasugimoto
0
81
Other Decks in Programming
See All in Programming
AIともっと楽するE2Eテスト
myohei
3
950
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
4
760
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
730
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
120
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
12
3.6k
GraphRAGの仕組みまるわかり
tosuri13
8
530
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
280
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
150
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
490
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
100
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
170
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
1
4.9k
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Stop Working from a Prison Cell
hatefulcrawdad
270
21k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Bash Introduction
62gerente
613
210k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Optimizing for Happiness
mojombo
379
70k
Documentation Writing (for coders)
carmenintech
72
4.9k
Code Reviewing Like a Champion
maltzj
524
40k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Transcript
Echo Volcago Api_gen メタプログラミングライブラリのある開発
誰 • 杉本聖也 • Sigma • Nuxt.tsとechoとメタプログラミング・ライブラリを使って開発をしている者です。 • 26歳 ◦
会社名は伏せます
何話す • E, V, AによるAPIサーバー開発について ◦ go のフレームワーク Echo シンプルで高速
◦ Firestore のリポジトリ層のメタプログラミングライブラリ Volcago について。 ◦ Controller と API client のメタプログラミングライブラリ Api_gen について。
注意DDDやクリーンアーキテクチャに 従うわけではない • よく似た図が出てきますが、 DDDやクリーンアーキテクチャに従うわけでは無いです。 • api_genやvolcagoを実戦投入してきたフィードバックを考慮した結果、このようなレイヤード アーキテクチャになっている。
echo の開発における役割
volcago の開発における役割
補足リポジトリとFirestore • Repositoryとは生成、読み込み、更新、削除といったデータベースに対する基本的な操作を司 り、データベースの内容をプログラムが扱い安い構造体等の形で提供する機能を持ったもので す。 • FirestoreはいわゆるNoSQLで、SDKなどを経由してアクセスされる高速でスケーラブルなデー タベースです。
api_gen の開発における役割
補足コントローラーとAPI Client • ControllerとはAPIサーバーがHTTPリクエストを受けた時のハンドラーとなる関数群などのこ と を言います。 • API Client はAPIサーバーが受け付けている
HTTPリクエストに対応した呼び出しを行い、結果 を返すプログラムです。フロントエンドで使われます。
volcago って何者 • 日本製OSS ◦ コントリビュート待ってます。 • go generate という
go のツールチェーンに基づいているらしい ◦ ファイルを読んで特定の構造体を探す。 ◦ その構造体に対応したリポジトリを自動生成する。 ◦ モックを作ることもでき、サービスレベルのテストに役立てられる。
api_gen って何者 • 日本製OSS ◦ コントリビュート待ってます。 • go の AST
を取り出す API に基づいているらしい ◦ AST を読んで特定の構造体のペアを探す。 ◦ ペアに対してコントローラの叩き台とクライアントを自動生成する。 ◦ モックを作ることもでき、フロントエンドの開発に役立てられる。
実際の開発の流れの一例 1. Firestore のモデルを考え、書く。 2. Volcagoを使ってリポジトリを生成する、モックを生成する。 3. リポジトリを使ってサービスメソッドを書く。モックを使ってサービスメソッドのテストを書く。 4. コントローラに対するリクエストとレスポンスを考え、書く。
5. api_genを使ってコントローラの叩き台と対応する APIクライアントを生成する。 6. サービスやリポジトリを使ってコントローラの中身を書く。 7. API clientから利用し、フロントエンドへ繋ぎ込む。
最終的にコレが出来上がる