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
FARM スタックに触れてみる
Search
takf
February 09, 2022
Technology
0
1.6k
FARM スタックに触れてみる
2022.02.08 Saitama.js #2 LT
takf
February 09, 2022
Tweet
Share
More Decks by takf
See All by takf
Denoに入門していきなりAleph.jsを触ってみた
takfjp
0
520
Atomic Design とテストの○○な話
takfjp
2
1.9k
Node.jsのアップグレードで気をつけたこと
takfjp
1
2.8k
React Testing Library の Query について整理してみた
takfjp
0
520
React.js 消えるライフサイクルメソッドについて
takfjp
0
150
Laravel 初めての業務で遭遇したハマりポイント×2
takfjp
2
3.1k
React で Stateless Functional Component の書き方を盛大に間違えていた話
takfjp
0
430
職歴1年目のフロントエンドエンジニアが インプットとアウトプットに苦しんだ話
takfjp
0
340
meguro.es.pdf
takfjp
0
140
Other Decks in Technology
See All in Technology
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
190
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
840
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
560
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
760
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
430
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
Making Projects Easy
brettharned
120
6.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
The Invisible Side of Design
smashingmag
302
51k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
190
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Designing Experiences People Love
moore
144
24k
Google's AI Overviews - The New Search
badams
0
910
Transcript
FARM スタックに触れてみる 2022.02.08 Saitama.js vol.2 @takfjp
自己紹介 Takeru Furuichi (@takfjp) 川越市出身です ( オススメのお店:寿製麺よしかわ) https://www.kotobukiseimen.com/ コネヒト株式会社 所属
「ママリ」という出産・育児領域のサービスを開発・運営してい ます フロント: React バックエンド: CakePHP
None
FARM スタックとは? 以下の技術スタックを使ったSPA の開発手法 FastAPI React Mongo DB
MERN スタック Mongo DB Express React Node.js サーバサイドもJS で完結しているのが特徴
今回話さないこと FastAPI の詳細な仕様 Python の文法, 各種ライブラリの説明 デプロイ手順 実戦への導入( 触れてみた、という軽い紹介) React
アプリの実装( 時間の都合上)
FastAPI とは Python 製のAPI フレームワーク (v3.6 以上) https://fastapi.tiangolo.com/ja/ 名前の通り高速 Request,
Response 共に型定義が可能 SwaggerUI でAPI のドキュメントを自動生成できる <- !!
Swagger UI locahost:port/docs で表示できる リクエストを作成して投げるのを試せる
Mongo DB のセットアップ Mongo DB Cloud を利用 無料プラン(shared) を使用可能
GCP / AWS / Azure からクラウドプロバイダを選択可能 Tokyo リージョンを選択できる (!!)
FastAPI 側で用意するもの router REST API のエンドポイントを記載 schema エンドポイント向けに Request, Response
の型定義 DB に格納するModel の型定義 controller アクセス時の DB への操作 router に読み込ませる
schema from pydantic import BaseModel from typing import Optional from
decouple import config # BaseModel = FastAPI のスキーマモデル class Todo(BaseModel): id: str title: str description: str class TodoBody(BaseModel): title: str description: str
controller (database) from decouple import config ~~~ 中略 ~~~ #
async / await で手軽に非同期通信処理を記述できる async def db_create_todo(data: dict) -> Union[dict, bool]: todo = await collection_todo.insert_one(data) new_todo = await collection_todo.find_one({"_id": todo.inserted_id}) if new_todo: return todo_serializer(new_todo) return False
router from fastapi import APIRouter, Response, Request, HTTPException from schemas
import Todo, TodoBody from database import db_create_todo from starlette.status import HTTP_201_CREATED router = APIRouter() @router.post("/api/todo", response_model=Todo) async def create_todo(request: Request, response: Response, data: TodoBody): todo = jsonable_encoder(data) res = await db_create_todo(todo) response.status_code = HTTP_201_CREATED if res: return res raise HTTPException( status_code=404, detail="Create task failed")
deploy できたバックエンドAPI は Vercel Heroku などにデプロイして使用 Docker にpython のコンテナを作ってローカルで開発しても良さそ う
フロントエンドアプリ React, React-Query, Axios( 非同期通信用) などを使用して実装 単純なTodo アプリで動かしてみました React-Query はキャッシュが使えたりデータの取得状態を返し
てくれて便利ですね
Todo List
Todo List 2 Todo 作成成功と同時にDB に格納された Todo を fetch
雑感 API も独力で実装したい時にとても協力 フロントエンドエンジニアだって API を作りたい Mongo DB + FastAPI
は GraphQL とも親和性が高そう SwaggerUI を自動生成してくれるのはとても嬉しい API 側で型定義できるので TypeScript との親和性も高い Todo List 以外でも活用したくなる
We're Hiring! カジュアル面談やってます! https://connehito.com/recruit/
Thank you!
None