【プリフェクト】

Prefect とは?

💡 デコレータひとつでPythonコードがパイプラインに変身
📌 このページのポイント
Prefect - デコレータでワークフロー化 普通のPythonコード def extract(): data = fetch() def transform(data): return clean(data) def load(result): save(result) +デコレータ Prefectワークフロー @task def extract(): ... @task def transform(): ... @flow def pipeline(): ... 自動で付与される機能 自動リトライ 失敗時に再実行 ログ・監視 実行状態を可視化 通知 Slack等に自動通知 スケジュール 定期実行を設定
Prefectのデコレータによるワークフロー化と自動機能
ひよこ ひよこ

PrefectってAirflowより簡単なの?

ペンギン先生 ペンギン先生

うん、Prefectの最大の特徴は「既存のPythonコードをほぼそのまま使える」ことだよ。関数に@flowや@taskデコレータを付けるだけで、リトライやログ機能が自動的に追加されるんだ

ひよこ ひよこ

ネガティブエンジニアリングの排除って何?

ペンギン先生 ペンギン先生

「もし失敗したら」「もしタイムアウトしたら」みたいな、本来やりたいことじゃない防御的なコードを書く必要をなくそうという思想だよ。Prefectがリトライ・タイムアウト・通知を自動で面倒見てくれるんだ

ひよこ ひよこ

DAGを定義しなくていいの?

ペンギン先生 ペンギン先生

Prefectでは明示的にDAGを定義する必要がないんだ。普通のPythonコードのように関数を呼び出せば、依存関係を自動で推論してくれるよ。if文やforループもそのまま使えるから、動的なワークフローが書きやすいね

ひよこ ひよこ

Prefect Cloudは無料で使えるの?

ペンギン先生 ペンギン先生

個人利用なら無料枠があるよ。ダッシュボードでフローの実行状態を可視化したり、Slack通知を飛ばしたりできるんだ。本格運用するならチームプランが必要になるけどね

ひよこ ひよこ

AirflowかDagsterかPrefect、どれを選べばいいの?

ペンギン先生 ペンギン先生

ざっくり言うと、大規模で成熟したエコシステムが欲しいならAirflow、データアセット中心の設計がしたいならDagsterPythonコードをサクッとワークフロー化したいならPrefectだね。チームのスキルセットと要件に合わせて選ぶのがいいよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Prefect」って出てきたら「Pythonデコレータで簡単にワークフローが作れるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Prefect」 = 長官・管理者
💬 ローマ時代の行政長官(Prefect)のように、データの流れを統括管理するという意味だよ
← 用語集にもどる