Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
FalconAPI開発にいいよ!
Search
shimakaze-git
February 02, 2019
780
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FalconAPI開発にいいよ!
- Note
https://note.mu/shimakaze_soft
shimakaze-git
February 02, 2019
More Decks by shimakaze-git
See All by shimakaze-git
DjangoとFastAPIによる 実践認証技術
shimakaze_soft
0
1.2k
フロントエンドとバックエンドのコミュニケーションをスムーズにするスキーマ駆動開発
shimakaze_soft
2
590
クリーンアーキテクチャのリポジトリパターン - Pythonでの実装
shimakaze_soft
1
6.4k
lt20221030.pdf
shimakaze_soft
0
190
Dependabotを使って 運用しているおはなし
shimakaze_soft
0
2.3k
DjangoCongressJP 2019/2020 & 今年にPyConJP初登壇できたはなし
shimakaze_soft
0
480
GAEによるPythonWEBアプリケーションの高速開発
shimakaze_soft
0
3.3k
FlaskとDjango以外のAPI開発の選択肢
shimakaze_soft
0
550
Python で Dependency Injection(DI) をやるには?
shimakaze_soft
1
3.9k
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
540
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
Code Reviewing Like a Champion
maltzj
528
40k
HDC tutorial
michielstock
2
920
Facilitating Awesome Meetings
lara
57
7.2k
WCS-LA-2024
lcolladotor
0
830
Docker and Python
trallard
47
4.2k
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
ご清聴ありがとうございました