DroidKaigi 2021アプリをGitHubで公開しました
DroidKaigi 2021アプリのリーダーをしているtakahiromです。
DroidKaigiではカンファレンスアプリをGitHubで公開しており、毎年カンファレンスの開催に向けてアプリを開発・リリースしています。そして2021年もDroidKaigiではアプリをオープンソースで開発しており、アプリの開発に貢献するコントリビューターを大きく歓迎します。
https://github.com/DroidKaigi/conference-app-2021
今年は例年のようなカンファレンスに合わせたアプリとは趣向を変え、DroidKaigiに関連する情報をまとめて知ることができるアプリを開発しています。技術要素としても、Kotlin Multiplatform Mobile (KMM)を採用したマルチプラットフォーム開発に加え、Androidアプリ開発では新しいUIツールキットのJetpack Composeを採用するなど、今年も数多くのチャレンジを盛り込んでいます。そのため、現在はアプリの実装におけるベストプラクティスを探しながら開発をしており、よりよい方法や改善のアイディアを募集しています。
この記事では、オープンソースソフトウェアの開発やコントリビュートに興味はあるけどやり方が分からないという方向けに、簡単なコントリビューションのためのガイドを掲載します。Androidエンジニアや興味があるみなさんがオープンソースによる開発に参加してみる最初のいい機会になるのではと考えています。
現在開発中のアプリはDeployGateを使って配布しています。インストールしてどんなアプリか確かめてみましょう。
コントリビューションガイド
DroidKaigiアプリはGitHubを中心に開発をしており、新機能の追加やバグ修正、開発環境の改善など様々なアイディアがIssueとしてチケット化してあります。このコントリビューションガイドでは、Issueに取り組む手順について説明しています。
1. Issueを選ぶ
はじめに、GitHubで管理しているIssueの中から自分ができそうであったり、興味があるものを探します。
welcome contributeタグが付いたIssue一覧
この中でもeasyタグが付いたIssueは簡単にできるものが多いのでおすすめです。
※ 今できるIssueがない場合もあるかもしれませんが、Issueは棚卸ししていくので、ちょくちょく確認すると簡単に取り組めるものが増えていると思います。
2. Issueに手をあげる。
取り組みたいIssueを決めたら、そのIssueのコメントにI will try thisなどと書き込むか、 以下のように手を上げている絵文字を書き込んでください。このコメントを見てDroidKaigiのメンバーがIssueにアサインをしていきます。
🙋 `:raising_hand:`
Issueに取り組む上で質問があったり、議論したいことがあれば気軽にコメントをしてください。
もしできなくても1日チャレンジしてダメだったら、 Give up!と書き込んでいただいて大丈夫です!
3. ソースコードをダウンロードする
開発作業はFork(複製)したリポジトリをcloneして行います。
はじめに、DroidKaigiアプリのリポジトリにアクセスし、画面右上に表示されているForkボタンを押して自分のアカウントにアプリのリポジトリをForkしてください。
次にForkしたリポジトリをGitクライアントかコマンドでcloneします。
git clone https://github.com/[あなたのアカウント]/conference-app-2021
4. 開発する
Jetpack Composeを使った開発をするため、Android Studio Arctic foxでcloneしたプロジェクトを開いて開発します。現在stableなバージョンのAndroid Studioではビルドすることができないことに注意してください。
今年採用している新しいUIツールキットのJetpack Composeについて学びたい方は以下が参考になるので、確認してみてください。
https://developer.android.com/courses/pathways/compose
5. プルリクエストを作る
つくった差分をコミット・プッシュして、GitHubのUI ( https://github.com/[あなたのアカウント]/conference-app-2021 )からプルリクエストを作成します。プルリクエストを作成しようとするとテンプレートが読み込まれるため、以下のように入力していきます。
・タイトル: 基本的にはIssueと同じものを入力してください。
・ Issue: ISSUE_NUMBERにIssue番号(Issueを開いた時にURLの最後に表示される番号)を入力します。こうするとプルリクエストのマージと同時にIssueもクローズされます。
・ Overview: かんたんな英語で意味が通るプルリクエストの内容を入力します。英訳はGoogle翻訳を使って作ったものでもかまいません(自分もよく使っています😭)。
・ Link: 参考になるリンクがあれば入力します。
・ Screenshot: UIの変更がある場合、変更前後の比較ができるスクリーンショットを貼ってください。アニメーションなど動きを伴うものは、画面録画を貼り付けると分かりやすくなります。
プルリクエストの本文は英語での記述を基本としていますが、込み入っていて複雑な状況を説明する必要があったり、英語で伝えられる自信がない内容だったりする場合は日本語でもOKです 🙆
6. コードレビュー、マージ
プルリクエストの作成が終わるとコードレビューが始まります。修正をお願いすることがあれば、差分にインラインコメントがつきますので適宜確認をしましょう。修正が完了したらマージされます。 👍
Issueにないけど、改善案がある方
Issueなしでプルリクエストを出していただいてもOKです。アプリの改善につながるので大変ありがたいです。
実装できなくても改善案やバグ報告などがあれば、Issueを作成していただけると大変助かります。Issueが枯渇しているため、今あるIssueは気にせず気軽にIssueを立てていただけると助かります。
この修正をプルリクエストしていいか不安であればIssueを立てて意見を聞いても良いと思います!
DroidKaigiはエンジニアが主役の Android カンファレンスです。2021年のDroidKaigiアプリ開発が始まっており、DroiKaigiカンファレンスの開催についてもどのような形態で実施するか検討を続けています。ぜひ今後のアップデートにも注目してください。
今年もコントリビュートを楽しみ、多くのことを学び、知識を共有し、DroidKaigiを楽みましょう!