Throwback 2022

2021年の8月23日にStarburstに入社して1年以上経ったのでその記録もかねて2022年の振り返りです。

Starburst

以前はTrinoに既にコントリビュートしている人が入社してきている印象がありましたが、 最近は入社してから初めてPRを送る人もよく見かけるので会社としてのフェーズの変化を感じます。

開発する機能によってOSSか社内版かが決まるのですが、僕はほぼフルタイムでTrinoにコミットしています。 数年前はOSSのフルタイムコミッターに対する憧れが自分にはあったのですが、 実際になってみるとチームにはメンテナーは自分の他にもう1人しかいないので、 その人が休暇をとると自分のコードがコミットできず時々困る場面があります。 そういった際はPRのレビューにあてる時間を長くしたりして都度調整しています。

Connectors team

入社当時はStarburst EnterpriseのConnectorsチームというSaaS、JDBC、NoSQL系のコネクターを開発するチームに所属していました。 チームの名前からはコネクターの開発のみを行う印象を受けますが、必要に応じてエンジンにも手を入れます。 例えばALTER TABLE ... SET PROPERTIESTRUNCATE TALEなどの新しいシンタックスは僕が追加しました。 コネクターによって気をつけるポイントは異なるのでそれらについて満遍なく学べたことは良かったです。 例えばSaaS系のコネクターは自分達のコードが変わっていなくてもSaaSサービス側の変更で期待とは異なる動作に繋がることがあるので、 パッと見では冗長とも見えるほど多くのテストコードを書く必要があります。 JDBC系のコネクターではJDBCドライバーの標準になっている部分の開発は比較的楽なのですが、 タイプマッピングなど実装依存の部分や、ドライバーのコードがオープンになっていないコネクターを直すのはなかなかの手間でした。 JDBC系の多くのコネクターがJulianからGregorianのカレンダースイッチ(1582年10月05日〜1582年10月14日) 以前の日付を正常に扱えないバグを途中見つけたのですが個別に直していくのは時間がかかりました。

Lakehouse team

2022年3月23日からはLakehouseチームというHadoopエコシステム系のコネクター(Hive, Iceberg, Delta Lake, Hudi)を開発するチームに移りました。 年の後半に組織の改変がありStarburst GalaxyというTrinoをSaaSとして提供する組織内にチームは所属しています。 このチームも以前のチームと同様に必要があればエンジンも修正します。2022年はCOMMENT ON VIEWALTER TABLE ... ALTER COLUMN ... SET DATA TYPEを僕は追加しました。 追加機能ではIcebergコネクターでAvroフォーマットのサポートや、まだマージできていないですが、 HiveのテーブルをIcebergに変換するプロシージャ、Delta LakeコネクターのCHECK constraintをサポートするためにエンジン部分のコードやANTLRを使ってSpark expressionをTrino expressionに変換するパーサーを書いたりしました。 チームを移って知識の幅が広がったのがとても良かったです。 このチームに移ってから2度ポーランドに出張する機会があり、ずっとオンラインでのみやり取りしてきたメンバーと遂に会うことができました。 2度目の出張ではCOVID-19にかかって帰国後は大変でしたが2回とも良い経験でした。

Maintainers work

Trinoのメンテナーとして、チームのメンバー以外からも来るPRのレビューもする必要があるのでこれをどうバランスを取るのを日々気にかけながら進めています。 2022年はTrinoリポジトリの自分自身のコミット数およびマージしたコミット数が共に2番目でした。 数だけが重要な訳ではもちろんないですが、スピードは落とさず来年はより複雑な機能の開発や様々な領域のレビューに取り組んでいきたいです。