🗂

Apache AirflowにContributeしてみた

に公開

はじめに

  • この記事は個人の記録・情報発信を目的に書いております。
  • 著者は Software Engineer 2年目です。普段はData Engineerに近い業務を行っています。
  • Airflowをより理解したい、OSS Contributeを経験してみたい、というのが今回のモチベーションになります。
  • Zennでの記事投稿は初めてとなります。また、GitHub連携で書いてみました。ということで初心者向けです。

Apache Airflowとは

一言で言うと、Airflowはバッチ指向のワークフローを開発・スケジューリング・監視するためのツールになり、Pythonで書くことができます。
よりしっかりとした概要は公式のドキュメントが最も分かりやすいので、興味のある方は読んでみてください。ちなみに、他のページだと個人的にはBest Practicesがためになると思うのでオススメです。

https://airflow.apache.org/docs/apache-airflow/stable/index.html#

類似のワークフローツールとしてはluigi, Prefect, Dagster, Digdagなどがあり、GCPだとWorkflows、AWSだとStep Functionsなどもあります。機械学習の分野ではAWSのSageMaker Pipelinesもあり、こちらは前職で利用していました。

初心者のContributeまでの流れ

様々な始め方があると思いますが、私は以下の流れで行いました。

PRを眺め見る

どんなPRがあって、どのようにやりとりされているのか、雰囲気だけでも掴むために2~3個PRを見てみると良いかもしれません。
例えば、以下のPRはAirflow 3.0のリリース内容となる大幅なUI改善の中のマイグレーションタスクの一つになります。タスクとされてはいたものの、3.0のリリースには含まれていなかったのでしょう。3.0.2を触っているときに「Deleteボタンがない!」と思って調べていくなかで見つけました。内容的にもとても分かりやすいと思います。

https://github.com/apache/airflow/pull/49504

ドキュメントを読む

GitHubのREADME.mdに記載してあるContributingから読んでいきます。
基本的には全部読まないといけないかと思いましたが、最初はQuick StartHow to contributeで十分かなと...。あとは他の方のPRをできるだけマネするのが良いですね。
Quick Startは非常に重要で、すべて手を動かして実施する必要があります。ちなみに私はairflow users createが実施できませんでした[1]

Good First Issueを探す

Airflowに限らないですが、初心者が初めてContributeできるような簡単なIssueにはgood first issueのラベルが付いています。まずはこちらの中でもさらに簡単なものから実施すると良いと思います。
私の時はまさにちょうど良いIssueがあったので、こちらに取り組んでみることにしました。
このようなレベルのものだと取り組み方も説明されているのでとても易しくて勉強になります。感謝しかありません。

https://github.com/apache/airflow/issues/52020

実際にPRを作成してみる

PRの作成方法は以下を参照しました。
基本的には公式のドキュメントを見ながら行うのが一番良いです。

https://github.com/apache/airflow/issues/52020

実際に作成したPRは以下のとおり。
初めてForkをしてPRを作成したのでレビュアをアサインできず一瞬不安になりましたが、他のPRを見てみると同じような感じだったのでじっくり待つことにしました。
https://github.com/apache/airflow/pull/52030

最後に

たった1行程度の変更ですが、初めて業務でPRを作成してマージした時と同じ感動を得ることができました。
何よりも自分が普段業務で利用しているツールをより深く知りたいと思うモチベーションにも繋がったので、とても良かったです。
いつか本当に役に立つContributeを行ってみたいです。

脚注
  1. https://github.com/apache/airflow/issues/51304 ↩︎

Discussion