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
FalconAPI開発にいいよ!
Search
shimakaze-git
February 02, 2019
0
650
FalconAPI開発にいいよ!
- Note
https://note.mu/shimakaze_soft
shimakaze-git
February 02, 2019
Tweet
Share
More Decks by shimakaze-git
See All by shimakaze-git
DjangoとFastAPIによる 実践認証技術
shimakaze_soft
0
270
フロントエンドとバックエンドのコミュニケーションをスムーズにするスキーマ駆動開発
shimakaze_soft
2
390
クリーンアーキテクチャのリポジトリパターン - Pythonでの実装
shimakaze_soft
1
4k
lt20221030.pdf
shimakaze_soft
0
130
Dependabotを使って 運用しているおはなし
shimakaze_soft
0
2k
DjangoCongressJP 2019/2020 & 今年にPyConJP初登壇できたはなし
shimakaze_soft
0
360
GAEによるPythonWEBアプリケーションの高速開発
shimakaze_soft
0
2.9k
FlaskとDjango以外のAPI開発の選択肢
shimakaze_soft
0
420
Python で Dependency Injection(DI) をやるには?
shimakaze_soft
1
2.7k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
66
11k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
How STYLIGHT went responsive
nonsquared
96
5.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Gamification - CAS2011
davidbonilla
80
5.1k
Practical Orchestrator
shlominoach
186
10k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
Agile that works and the tools we love
rasmusluckow
328
21k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7.1k
Transcript
Falcon API開発にいいよ! 第一回 初心者にやさしいLT会 @shimakaze_soft
Agenda - Who are you? - Python Frameworks - Falcon
Features
Who are you? おまえだれよ Name:Shimakaze_soft Twitter(@shimakaze_soft) GitHub(shimakaze-git) Freelance - ServerSideEngineer
Python, Golang, PHP
Who are you? おまえだれよ Pythonが好きなPythonist - フロントエンドが壊滅的に できない。Python戦闘力 が100とすると、js戦闘力 が10
Who are you? おまえだれよ おまえ、なにしにきた? - 登壇の練習 - 推しのOSSの宣伝活動
Pythonやってきた経緯 - 大学時代はネットワーク系専攻 - 友達は皆ネットワークエンジニアばかりになる => プログラミングしたいという経緯からWEBのサー バーサイドエンジニア
Pythonって何に使われている と思いますか?
Pythonが使われるケース - 機械学習 - データー分析 - IOT
機械学習の印象は強い・・・
WEBアプリケーション開発も活発 DjangoでのWEBアプリケーション開発が活発 - Instagram - Compass
バックエンドAPI - コードの記述量が少なく開発がしやすい - パフォーマンス面でも特に問題はない - 計算量が必要な処理に関してはCythonという物を使う手段 がある => 今回はPythonでのバックエンドAPIの開発について
WEBアプリケーションフレームワーク - WEBアプリケーション開発を効率化してくれるライブラリ郡 - RubyでいうRuby on Rails - PHPでいうならLaravel
フルスタックフレームワークでの開発の問題点 - モノシリックな構造になっていく - 大規模開発化していくと設計ちゃんとしないとコードが汚くな り、肥大化していく => 最近はフロントエンドでSPA化が進んでいるので、フロントと バックエンドで分離したい場合は?
他のPythonフレームワーク - Django - Flask - Pyramid - Bottle -
Responder - Sanic
Pythonの二大巨頭 Flask - 軽量 - ASGI - 学習コスト低 Django -
フルスタック - ASGI - 学習コスト高
Falconとは - Pythonの高速な軽量FW - API開発に特化 - Flaskの10倍以上の速度
Falconとは - Hooks, Middlewareが標 準投搭載 - Cythonでビルドすると更 に高速化
Falconを実際に使った例(機械学習) ML API ML Model Request Response Server
Falconを実際に使った例(機械学習) 学習済みのモデルを元にクラス分類をするAPI - 記事の文章をリクエストで投げたら、分類カテゴリを返す - Scikt-LearnのSVMを使用
Flacon Features Features - Resource - Routing - Hooks -
Middleware ThirdParty - SQL ORM - Validation Falcon Features
Resource
Resource - MVCモデルでいうControllerに相当 - HTTPメソッド毎にメソッドを記述していく - FalconのResourceはRESTful
Resource - GETリクエストを処理する 場合はon_getメソッド - 引数にはリクエストが入っ たreq,レスポンスが入った resp
Resource - POSTリクエストを処理す る場合はon_postメソッド - リクエストボディを取り出 す場合は req.stream.read()
Resource - PUTリクエスト => on_put() - DELETEリクエスト => on_delete()
Routing
Routing - Routing処理を記述 - URL毎に対応するコントローラーを記述していく
Routing - add_routeメソッドにルー ティングを記述していく - 第一引数(URL) - 第二引数(対応するコント ローラー)
Middleware
Middleware - リクエストが来たときに中間処理を挟むことが可能 - Resourceに行くまでに処理を挟みたい場合 - Resourceが処理を終えたときにレスポンスを返すまでに処 理を挟みたい場合
Middleware - process_request() リクエスト受信後に動作 - process_resource() リソース実行前 - process_response() リソース実行後
Middleware - 起動時にMiddleware指 定 - 複数のMiddlewareを指定 可能
Hooks
Hooks - リクエストの前後に任意の処理を追加できる - Pythonのデコレーターで記述
Hooks - デコレーターで記述 - リソース(クラスに記述) @falcon.before =>Resource処理前の処理 @falcon.after =>Resource処理後の処理
Hooks - デコレーターで記述 - リソース(クラスに記述) @falcon.before =>Resource処理前の処理 @falcon.after =>Resource処理後の処理
他のThirdPartyと組み合わせ ORM - SQLAlchemy ValidationCheck - Cerberus - Marshmallow (https://note.mu/shimakaze_soft/n/nb4d8d50730e6)
Falconの問題点 - 同じ軽量フレームワークであるFlaskよりThirdPartyがかなり 少ない - Flask同様にきちんと設計したディレクトリ構成組まないとい けない => DDD(ドメイン駆動設計)などに出てくるオニオンアーキテク チャ、クリーンアーキテクチャなどで設計するのが良いかも
Falconとは? - API開発にオススメ - Cythonでビルドすれば 更に高速化される - Flaskよりも機能豊富
Falconのサンプル類載せてます - Falconのサンプルコード類 https://github.com/shimakaze-git/falcon-todo - Note https://note.mu/shimakaze_soft
ご清聴ありがとうございました