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
640
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
200
フロントエンドとバックエンドのコミュニケーションをスムーズにするスキーマ駆動開発
shimakaze_soft
2
370
クリーンアーキテクチャのリポジトリパターン - Pythonでの実装
shimakaze_soft
1
3.7k
lt20221030.pdf
shimakaze_soft
0
120
Dependabotを使って 運用しているおはなし
shimakaze_soft
0
2k
DjangoCongressJP 2019/2020 & 今年にPyConJP初登壇できたはなし
shimakaze_soft
0
350
GAEによるPythonWEBアプリケーションの高速開発
shimakaze_soft
0
2.9k
FlaskとDjango以外のAPI開発の選択肢
shimakaze_soft
0
410
Python で Dependency Injection(DI) をやるには?
shimakaze_soft
1
2.6k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Adopting Sorbet at Scale
ufuk
73
9.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
The Pragmatic Product Professional
lauravandoore
32
6.3k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Side Projects
sachag
452
42k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Code Review Best Practice
trishagee
65
17k
Music & Morning Musume
bryan
46
6.2k
A better future with KSS
kneath
238
17k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
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
ご清聴ありがとうございました