Blog

Flutterコントリビューターになりました

この記事は、ニフティグループ Advent Calendar 2023 22日目の記事です。

はじめに

こんにちは。最近はGitHub Copilot無しでコーディングしたくないShibataRyuseiです。

業務ではiOS/Androidアプリ「マイ ニフティ」の開発を行っており、iOS, Android, バックエンドなどほとんどの開発に携わっています。

(ちなみに弊チームではエンジニアを募集中です!)

個人では日々Flutterを使った開発を楽しんでいます。

かなり昔の話ですが今年の2月ごろにFlutterにコントリビュートしたのでメモとして残します。

今年のことは今年のうちにアウトプット…

コントリビュートとは?

「コントリビュート」とは、日本語で「貢献する」という意味で、OSSに貢献することを指します。

コントリビュートするメリットとして、下の記事では「コントリビュートすることはやりがいがあり、…学習し、教え、経験を積むことができます」と述べています。

https://opensource.guide/ja/how-to-contribute/

コントリビュートというと、コードを書いてPull requestを出すイメージがありますが、コードの作成だけでなく、ドキュメントの作成やイシューの整理、カンファレンスの企画なども含まれるようです。

Flutterとは?

今回コントリビュートするFlutterを簡単に紹介します。

FlutterはGoogleが中心に開発しているOSSです。

Dartという言語のフレームワークであり、Dartのコード1つでマルチプラットフォーム(iOS, Android, Web, Windows, macOS, Linux)のネイティブアプリケーションを作ることができます。

実はFlutterはコントリビューターの多いOSSランキングでnext.jsを抑えて3位に入るような活発なOSSです。

https://octoverse.github.com/2022/state-of-open-source

Flutterへのコントリビュートのしかた

今回はコードを書いてPull Request(PR)を出す方法をまとめます。

1. Flutterのルールを学ぶ

まずはFlutterのコントリビュートに関するルールを学びます。

ここら辺は見ておくと良いと思います。

2. 環境構築をする

ドキュメントに従って、Flutterのengineとframeworkの開発環境を構築します。

frameworkであればこれです。

https://github.com/flutter/flutter/wiki/Setting-up-the-Framework-development-environment

3. Issueを探す

コントリビュートするためのIssueを見つけましょう。

Flutterには多くのIssueがあるため、自力で探すのは大変です。そのためラベルから絞り込んで探すのがおすすめです。

おすすめのIssueラベルは”good first issue”、”a:first hour”です。

昔は”easy fix”もあったけどいつの間にかなくなってる…

4. 実装をする

Issueを決めたらコードを実装します。

GitHubにあるFlutterのレポジトリからforkして自分のレポジトリで作業をします。

5. Pull Requestを出す

forkしたレポジトリからFlutterのレポジトリに対してPull Requestを出します。

Pull Requestを出す際、PRテンプレートのチェックボックスを確認しましょう。

6. Mergeされたら完了!

Pull Requestがマージされたら、コントリビュートは完了です!

実際にやってみた

まず、Issueを選択します。今回は、”a:first hour”のラベルがついている(2月には”easy fix”も付いてた)このIssueに取り組みました。

https://github.com/flutter/flutter/issues/115357

このIssueは、flutter createで使用するテンプレートのLintテストを追加する内容です。

実装を完了し、Pull Requestを提出しました。

https://github.com/flutter/flutter/pull/120526

FlutterではCIが整備されており、約30分間テストなどが実行されていました。

数日後レビューがきて何回か修正したらLGTMをもらいマージされました。

3.10.0のリリースノートにも載りました!

Add lints test for all templates by @ShibataRyusei in 120526

@ShibataRyusei made their first contribution in 120526

https://docs.flutter.dev/release/release-notes/release-notes-3.10.0

終わりに

コントリビュートは難しいイメージがありましたが、全然自分でもできるものが結構ありました。

そして実際にコントリビュートすることでFlutterコミュニティの活発さを感じました。Pull Requestのレビューも早いですし、放置されているIssueもあまりなかったです。

Issueを探しているとFlutter EngineのIssueはまだまだ難しいと感じます。既存コードのコードリーディングがまだまだ足りなかったり、C++, Skia, Metalなどの深い知識が必要だと感じました。

皆さんもぜひOSSに貢献していきましょう!!

明日のニフティグループ Advent Calendar 2023 は@nishine829です。お楽しみに!!

Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!