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
360
フロントエンドとバックエンドのコミュニケーションをスムーズにするスキーマ駆動開発
shimakaze_soft
2
410
クリーンアーキテクチャのリポジトリパターン - Pythonでの実装
shimakaze_soft
1
4.2k
lt20221030.pdf
shimakaze_soft
0
130
Dependabotを使って 運用しているおはなし
shimakaze_soft
0
2.1k
DjangoCongressJP 2019/2020 & 今年にPyConJP初登壇できたはなし
shimakaze_soft
0
370
GAEによるPythonWEBアプリケーションの高速開発
shimakaze_soft
0
3k
FlaskとDjango以外のAPI開発の選択肢
shimakaze_soft
0
430
Python で Dependency Injection(DI) をやるには?
shimakaze_soft
1
2.7k
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Being A Developer After 40
akosma
89
590k
Building Adaptive Systems
keathley
40
2.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
GraphQLとの向き合い方2022年版
quramy
44
13k
Fireside Chat
paigeccino
34
3.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
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
ご清聴ありがとうございました