オープンソース「Armeria」のコントリビュータのためのイベントを開催しました

はじめに

こんにちは。LINEでオープンソースを担当しているイ・ソヨンです。今回の記事では、LINEが初めて実施したイベント「Armeria contributor reward」の詳細と感想をお伝えします。Armeriaの技術的な説明は割愛させていただきますので、詳しくは公式ホームページにてご確認ください。

Armeriaは、LINEで開発してオープンソースとして公開したプロジェクトです。LINEの社内プロジェクトだったArmeriaが現在のような形になったのは、社外の多くのコントリビュータが積極的に参加してくださったためです。私たちは、そのコントリビュータの方々に感謝の気持ちをお伝えしたく、今回のイベントを企画しました。

本題に入る前に、まず「OSS(オープンソースソフトウェア)コントリビューション」について説明いたします。

OSSコントリビューションとは? 

社内でプロジェクトを進める際には、開発・企画・事業・デザインなど、様々な分野のメンバーが集まって一緒に仕事をします。オープンソースプロジェクトも同じです。開発のほかにも、テストやPR、デザイン、ドキュメント作成などの作業がすべて行われることで、一つの素敵なオープンソースを作り上げます。たまにOSSコントリビューションを狭義に解釈して、自分が書いたコードがプロジェクトのコードにマージされることだけに限定する場合があります。しかし、オープンソースは「コーディング」だけで作り上げられるものではありません。オープンソースの成長と維持に役立つあらゆる活動が、OSSコントリビューションであるといえます。オープンソースプロジェクトをテーマに発表してより多くの利用者を確保する、丁寧で正確なドキュメントの作成をサポートする、新しいアイデアを提案して問題解決につなげる、バグを報告する、ロゴおよびUIデザインをサポートするといった活動すべてが、OSSコントリビューションに含まれます。

では、オープンソース世界でコントリビュータを大事にしている理由は何でしょうか。作成者の思うとおりにしてはいけないのでしょうか。

OSSコントリビューションが重要な理由ー作成者の観点

オープンソースを作る人々と直接話し合ってみると、「プロジェクトはまだ完璧ではない、利用者の声を吸い上げてもっと発展させなければならない」という認識を常に持っていました。オープンソース活動のスポークスマン的な存在であるエリック・レイモンド氏の著書『伽藍とバザール』では、オープンソースソフトウェアの開発方式について詳しく解説されています。利用者をはじめとする多くの人の参加がソフトウェアを一層発展させる、ということが主な内容となっています。

例えば、自分がレストランのオーナーで、手作りの料理を販売していると想像してみてください。同じ料理であっても、ある人にはちょうどいい味で、他の人には甘い、辛い、味が薄い、などと感じられるかもしれません。また、その中には、料理をもっとおいしく見せる食器の使い方や食卓のアレンジ方法、盛り付けのコツがわかる人がいるはずです。おすすめの料理をもっと目立たせるためのメニュー表レイアウトに詳しい人もいるでしょう。このような有益なフィードバックをすぐに受け取ることができるとしたらどうでしょうか。また、フィードバックをした人がその内容を直接反映できるようにしたらどうなるでしょうか。もっとすてきなレストランになると思いませんか。行列のできるおいしいお店として有名になるのではないでしょうか。

オープンソースは、利用者からのフィードバックに基づいて開発されています。オープンソースとして公開したのに利用者のフィードバックに耳を傾けないのであれば、利用者はそのオープンソースからどんどん離れていくでしょう。利用者が減ると、それに比例してプロダクトの価値も低下してしまいます。一方、利用者のフィードバックを受け入れるとしても、一人ですべてを完結させようとするとそれもやはり問題になります。利用者が増えればフィードバックも増えていきます。利用者の協力なくして、一人ですべてのフィードバックに対応するのはだんだん難しくなるはずで、それは品質低下をもたらします。そうなれば、利用者の減少は避けられません。結果的には、そのオープンソースは「死んだ」オープンソースになってしまいます。

利用者のフィードバックを中心に開発を進めるときは、利用者と作成者間の円滑なコミュニケーションが基盤となります。フィードバックが迅速に反映されれば利用者が増え続けるようになり、その利用者がまた開発者として貢献するようになります。このような好循環の仕組みが強固なコミュニティを構築し、オープンソースを支える役割を果たします。

ここまでオープンソースを作る人の観点から考えてみました。次は、オープンソースの開発に参加するコントリビュータの観点から説明いたします。

OSSコントリビューションが重要な理由ー参加者の観点

まず、リクエストを迅速に伝えることができます。参加者が積極的に活動しているオープンソースプロジェクトは、質問を投稿すると他の利用者やメンテナー(maintainer)が素早く回答してくれます。このような速い対応によって、オープンソースがもっと使いやすくなります。また、修正したい箇所がある場合は、他の人が対応してくれるまで待つことなく、自分で修正できます。自分で修正した部分については、レビューを受けて人の意見を聞くことができます。オープンソース活動への参加は履歴として残り、誰もが閲覧できるように公開されます。こうした履歴は、就職活動中に受けるコーディングテストよりも自分自身を有効にアピールできる材料になるというメリットがあります。 

もしかして、オープンソースプロジェクトはトップクラスの開発者だけが参加するものと思い込んで、消極的になっていませんか。この記事をきっかけに、興味を持っていたプロジェクトのIssueリストから「good-first-issue」、「first-timers-only」、または「help-wanted」などのラベルがついたものを探して、手をつけてみてはどうでしょうか。

Armeria contributor rewardのご紹介

今回のイベントは、感謝の気持ちを伝えるとともに、コントリビュータのみなさんと交流することが目的でした。オープンソースプロジェクトの特性上、開発に参加している方々が世界各地に点在しており、コミュニケーションは主にテキストベースで行われました。「LGTM(Looks Good To Me)」または「:thumbsup:」といった短いコメントだけでは、気持ちを十分に伝えられないと常に思っていました。そのため、今回は、コントリビュータの一人ひとりに個別にメールを送って感謝の挨拶をし、小さなプレゼントを贈りました。

以下は、各コントリビュータのGitHub profile pictureを利用したイベント用の画像です。Armeriaのロゴのようにピンクを使った画像がさわやかですよね。

コントリビュータの参加

GitHubでは、コントリビュータの活動状況をグラフで確認できます。グラフの内容を数字で表すと以下のとおりです。これまで60人以上のコントリビュータが約1,350回のコミットをして約457,000行を追加し、約257,500行を削除してくれました。数字で確認してみたら、たくさんの方々に積極的に参加していただけたことが実感できます。

では、コントリビュータの皆さんの貢献内容をもっと詳しくみてみましょう。

  • Your contribution led Armeria’s annotated service to a whole new level.
  • Your Retrofit integration module was one of the greatest additions in Armeria’s history.
  • HTTP redirection is now easier than ever with Armeria thanks to your contribution.
  • Your work on implementing the high quality circuit breaker in Armeria is considered as an all-time legend.
  • Your optimization of weighted round-robin load balancing algorithm was very clever idea that it was worth of a prize.
  • We appreciate your initial groundwork, especially on the client-side, which made today’s Armeria.
  • Thank you for promoting Armeria to the developer communities and we appreciate your contribution to the project!
  • Your documentation clean-up made us look way better than ever.
  • Your help with fixing the bug made Armeria more stable than ever.
  • Although your part was small, your dedication saved many of our days.

このほかにも、たくさんのコントリビュータに参加していただきました。各コントリビュータには、感謝のメッセージを個別に送りました。

受賞者コメント

プロジェクトに対する貢献度を示すグラフからも分かるように、プロジェクトのオーナーを除いて最も多く貢献してくれたコントリビュータは@anuraagaさんでした。この貢献度をもとに、今回のイベントでArmeria contributor rewardを受賞した@anuraagaさんに感想を伺いました。

Q. 簡単に自己紹介をお願いします。
A. こんにちは。通称「Rag」のAnuraagです。私は様々な大規模サーバーサイドプロジェクトに携わってきたソフトウェアエンジニアです。Armeriaを初めて知ったのは、スタンプショップ、着せかえショップ、LINE STOREなどを開発するLINE Shopチームで働いていたときのことでした。本当にすごい偶然でした。私がチームに合流した後、既存のThriftライブラリに代わるフル機能(full-featured)のRPCフレームワークが必要になったからです。そこでちょうど、@trustin(Trustin、プロジェクトのオーナー)がそれを狙ったArmeriaプロジェクトを立ち上げたのです。その後からずっと、LINEを離れた後も、私はすべてのプロジェクトでArmeriaを使用しており、貢献できる部分がある場合はコントリビュータとしても活動しています。  

Q. Armeriaをどう使用していますか。
A. 仕事で、そして個人的にも、あらゆるサーバーサイド開発においてArmeriaを使用しています。私が働いているInfostellar社は、衛星通信のためのグローバル・ネットワーク・インフラの構築に取り組んでいますが、一般的なAPI要件を満たすことはもちろん、大量のデータを送信することも求められます。弊社のアーキテクチャは、一般的なサービスベース・アーキテクチャに従っています。数多くのサーバーがKubernetes上で実行されるので、Armeriaを使ってgRPC APIを公開しています。また、Armeriaの静的ファイル配信機能とgRPC-Web対応によって提供されるWebフロントエンドもあります。
仕事で使うだけでなく、週末に個人的に進めているプロジェクトにおいてもArmeriaを使っています。必要なユースケースに合わせて様々な規模のプロジェクトでArmeriaを有効に使用することができて嬉しいです。

Q. Armeriaの一番の長所は何ですか。
A. Armeriaの一番の長所は、開発者の生産性に焦点を当てていることだと思います。Trustinは、すべての開発者のニーズを満たせるプロジェクトを作り上げたといえます。Armeriaは、非常に高い柔軟性を誇っており、ベストプラクティスを示してくれるだけでなく、「非同期(asynchronous)プログラミング」などの最新トレンドを開発者に紹介してくれます。メンテナーが非常に理論的に対応するフレームワークやライブラリもありますが、そのような運営スタイルだと、プロジェクトが開発者ではなくメンテナーが求める方向に進んでいき、開発者としては使いにくいライブラリになってしまいます。Armeriaは、Slackチャネルを利用して全面的にサポートするなど、開発者のニーズにフォーカスしているので、様々な分野の開発者に役立つと思います。
また、Armeriaはこれまで見たフレームワークの中で一番柔軟性の高いサーバーフレームワークです。同じTCPポートでgRPCや静的ファイル(static files)、metricsDocService、その他のコンテンツをすべて提供できるということは、とても大きな成果だと思います。

Q. Armeriaの開発に参加して大変だったことはありますか。
A. Armeriaを開発しながら大変だったことは特にありません。Armeriaはドキュメントがしっかりされていて、IDE(統合開発環境、Integrated Development Environment)の設定もわかりやすく解説されています。また、親切なレビュアーさんのおかげでPR(Pull Request)もスムーズに処理されます。一時的でしたが、リリース作業が少し遅れると感じたことはありました。バグ修正はマージされたのにリリースがされず、バグ修正が含まれたスナップショットを配布したことがありましたね。でも、最近は頻繁にリリースされているので、遅いと感じたりすることはありません。
また、些細なことではありますが、空白を正しく適用することはたぶん修正が難しいのではないかと思います。私はインポートしたコード設定を使っていますが、それにもかかわらず、空白を正しく適用するのが難しいです。特に、私が見逃したいくつかの空白をTrustinが発見し、後で別のPRを作成して修正しているのを見ると、恥ずかしい気持ちになりますね。 自動フォーマッター(formatter)を使用すれば、開発時の懸念材料が一つ減ると思います。

Q. プロジェクトについて、今後計画していることや期待していることはありますか。
A. 個人的には、使えそうな機能が見つかればコードに貢献するなど、これからも引き続きArmeriaを使用する予定です。実は、これはいい質問なんですね。私にはプロジェクトに寄せられている期待については詳しくないのですが、Armeriaには機能リクエストがたくさん寄せられます。その中には、限られた範囲の技術を使ったリクエストもよくあります。今思い出せるとしては、より多くのサービス・ディスカバリのメカニズムのサポートを追加する件がありますね。また、Spring Securityを標準でサポートするかどうかという件もあります。Armeriaが世界中のあらゆる技術をすべてサポートするには無理があると思いますが、そのスコープをどう定めればいいか悩ましいところです。

Q. オープンソース(またはOSSコントリビューション)について一言お願いします。
A. オープンソース大好き!オープンソースは、開発者に有用な技術を作り上げるとともに、強力なコミュニティを形成する役割もしていると思います。オープンソースを通じてたくさんの仲間に出会うことができて驚きましたし、そして本当に嬉しいです。これからも、オープンソース活動に取り組みながら、より多くの人と交流できることを楽しみにしています。周りの人にも、暇があるときに好きなリポジトリにPRを送ってみるように勧める予定です。

Q. 最後に何か言いたいことはありますか。
A. このようなイベントがあって本当に楽しいです。LINEのようなリーディングカンパニーがオープンソースの拡大に重点を置いていることは素晴らしいことです。企業がソースコードをいくつか公開するのは簡単ですが、このようにエコシステム自体を支援するのは簡単なことではありません。オープンソースコミュニティの構築に協力してくれたことに本当に感謝しています。

終わりに

今回の「Armeria contributor reward」は、私が初めて運営を担当したイベントでしたが、色々新しい経験ができて楽しかったです。このような楽しい経験ができるのが、オープンソースの魅力なのではないでしょうか。 

Armeriaで新しい経験をしてみたい方は、まず「good-first-issue」から確認してみてください。Armeriaをすでに使い慣れている方は、現在1.0.0バージョンをリリースするために必要なことをまとめていますので、こちらに皆さんのアイデアをぜひお寄せください。

Armeriaでは、より多くの利用者とコントリビュータを確保するために、様々なプログラムを企画しています。今後のイベントについても、今回と同様にLINE Engineering blog公式Slackで情報をお届けいたします。