AWSのOSSにコントリビュートするまでの道のり

これは フェンリル デザインとテクノロジー Advent Calendar 2023 13日目の記事です。

開発風景のイメージ

はじめに

インフラ/バックエンドを担当している森井です。 最近、AWSが公開しているOSSに初コントリビュートすることができたので、そこに至るまでの道のりをご紹介しようと思います。

OSS開発への憧れ

そもそもOSSとは何でしょうか。少し定義が難しいのでWikipediaを引用します。

オープンソースソフトウェア(英: Open Source Software、略称: OSS)とは、利用者の目的を問わずソースコードを使用、調査、再利用、修正、拡張、再配布が可能なソフトウェアの総称である。

オープンソースソフトウェア - Wikipedia

会社でも個人でも、商用でも使える公開されたソフトウェアのことですね。 一般的にはあまり知られていないと思いますが、皆さんが使っているOS、ブラウザ、ウェブサイト、アプリなどは無数のOSSを活用して作られています。

そんな、世界中のサービスを支えるOSSは誰によって作られているのかというと、簡単に言えばボランティア*1です。 OSSの作者やメンテナンスする人、新機能を実装する人、そういった人々を支援する企業などさまざまな貢献者(コントリビューター)に支えられています。 以前から、コントリビューターの方々はカッコいいなと憧れていました。

そんなOSSワナビーな私ですが、いつかは挑戦したいと思いながら何年も経過してしまいました。

そんな時、アドベントカレンダーの企画の話が舞い込んできました。締め切りがあれば頑張れる気がする! そう思い、今回初めてOSSにコントリビュートしました。

コントリビュートするOSSを選ぶ

OSSにコントリビュートするという目標を達成するために、以下の軸に当てはまるOSSがないかを調べました。

  • 大規模ではない
  • コミュニティが活発である
  • 自分自身が使用している
  • 対象とするドメインを熟知している
  • 使い慣れたプログラミング言語で実装されている

いろいろなリポジトリを見た結果、Rain にコントリビュートすることに決めました。 Rain は、AWSの公式コマンドラインツールです。 AWS CloudFormationテンプレートやスタックを操作するのにすごく便利で、愛用しています。

Rainはソースコードの行数も多すぎず、私が好きなGo言語で実装されており、仕事でよく使うAWS CloudFormationを操作するツールなのでうってつけでした。

Rainへの初コントリビュート

早速ソースコードをcloneして、テスト用のテンプレートを動かしてみると、ランタイムエラーが発生することが分かりました。

panic: runtime error: index out of range [1] with length 1 [recovered]

ソースコードを読んでいくと、AssumeRole済みのIdentitiyのみを想定した実装に問題があることが分かったため、Issueを立ててみます。

本記事では詳細には解説しませんが、「こういうエラーがあって、調査したら原因これだと思うんだけど、こんな感じに直したら良いと思うんだけどどう?」といった感じの内容です(興味がある方はIssueの内容を読んでください)。

ドキドキしながらメンテナからの反応を待っていましたが、なかなか反応がありませんでした。実は、Issueを立てた日はちょうど、AWS re:Invent 2023の開催期間中だったのです。うっかりしていていました。re:Inventは年に一度の世界最大のAWSカンファレンスなので、きっとメンテナのAWS社員も忙しかったのだろうと思います。

re:Inventが終わる頃を見計らってPull Requestを提出したところ、無事マージされました。

その後

一度やると慣れるのか、初コントリビュート後もその流れでRainに関われるようになってきました。 リポジトリをウォッチしていると、Unable to install rain - Linux #218 というIssueが立ったので、「Goのバージョン古いからアップデートしてね」とコメントしてみたり、このIssueの調査をしていたらドキュメントの不備を見つけたので、またPull Requestを作成してみたり......といった感じです。

そしてついに、v1.7.1v1.7.2で私の書いたコードがリリースされました。やったぜ!

おわりに

Rainへのコントリビュートを通じてさまざまな気づきがありました。

一番は、OSSと言えど、(Publicなリポジトリであることを除けば)普段の業務で行っているプログラミングと何も変わらない点です。 頭では理解していましたが、実際に挑戦してみると実感するものですね。今後はもっと気軽にOSSに関わっていくことができそうな気がしました。

そして、思っていたよりOSSは人手不足な状況でした。Rainでは Eric Z. Beard さん1人でほとんどの機能開発とメンテナンスをしている状態です(しかもIaC系のOSSを複数メンテナンスしている様子)。 他に、AWS CDKなどより開発が盛んなプロジェクトもありますが、Issueは結構溜まってしまっていてこちらも管理に苦労しているようです。 今後はRainに限らずいろいろなOSSプロジェクトに関わっていこうと思います。

*1:ビジネスを成長させるために自社プロダクトをOSSとして公開することもあります