Successfully reported this slideshow.
Your SlideShare is downloading. ×

接触確認アプリ「COCOA」 OSSモバイルアプリのCI整備の難しさ part 2

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

接触確認アプリ「COCOA」 OSSモバイルアプリのCI整備の難しさ part 2

  1. 1. CI/CD Conference 2021
  2. 2. 何故、一般人がCOCOAに貢 献しようと思ったのか
  3. 3. 一般人がCOCOA に貢献までの流れ 1. COVID-19Radar 時代に少しだけ関わってた 2. NewsでCOCOAの開発がGitHubで続いている事を知る 3. モチベーションに突き動かされて、いつの間にかPullRequest を出していた 1. 本業終了後PR出すのに熱中して大体8時間経過してた😇 2. COVID-19の状況下でフルフレックス、WFHになり、時間を効率的 に使えたからContributionできた!
  4. 4. COCOAにContributionするモチベーション • 日本が早くCOVID-19を克服して海外旅行再開したい! • 国主導で日本中の人が使う、影響力の高いソフトウェアの開発 に関わりたい! • 自分の技術的バックグラウンドでも貢献できそう! • 株式会社メルカリでのインターン時代にAndroidアプリのCI/CDや開 発効率向上する業務をしてた(現在はAndroidアプリの機能開発してる) • 学生時代にXamarinを使い開発したり勉強会を開催してた
  5. 5. 何故、CIの改善に注力しようと思ったのか • 業務で行っているAndroidアプリ開発の経験はそこまで流用で きなさそう • Visual Studioのライセンスを持っていない • Xamarin部分での開発に関わるのは難しそう • CIに注力してる人が既存でおらず、改善の余地がありそう • 今後の開発に永続的に貢献できそう
  6. 6. 当時のCOCOAのCIの状況 • iOS/Android向けのビルド等のワークフローが存在してた • 各プラットフォーム、各バリアント向けのWorkflowがコピペ でそれぞれ存在してた • 並列化されておらず逐次実行していた
  7. 7. 改善できそうなところ • コピペで複数ターゲット向けWorkflowが存在しているため複 雑・可読性の低い設定ファイルになってる • 逐次実行の代わりに並行実行して開発者の待機時間減らしたい • CIの設定ファイルまで手が回っておらずそもそも微力でも貢献 になりそう
  8. 8. Github Actions の Job記述の効率化したい • Github Actionsのmatrix構文を活用 • Jobの一部を書き換えて複数目的に流用できる • この例では Debug, Debug_Mock, Release向けにビルド https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix
  9. 9. OSSでの同一OS Runner数の制限対策 • Github Actionsでは、macOSのRunnerで同時実行できるJob の数の制限があります https://docs.github.com/en/actions/reference/usage-limits-billing-and-administration
  10. 10. OSSでの同一OS Runner数の制限対策 • COCOA Repository での開発を予想してみてる • 複数人がContribution • 日本全国から注目されていることもありスケールするかも… • 同一Runner数の制限がボトルネックになるかも…
  11. 11. OSSでの同一OS Runner数の制限対策 • macOS以外のRunnerでも実行するようにして制限を受けづら いWorkflowにしたい • CIする上でのビルド対象由来のOSの制限 • iOS向けアプリ • macOS上で実行する必要がある • Android向けアプリ • macOS, Windows, Linuxでもビルドできる • Unit Test • macOS, Windows, Linuxでもビルドできる https://docs.github.com/en/actions/reference/usage-limits-billing-and-administration
  12. 12. OSSでの同一OS Runner数の制限対策 • iOS 向け Job • macOS Runner で動作 • Android 向け Job • Windows Runner で動作 • Unit Test • Linux(Ubuntu) Runner で動作 https://docs.github.com/en/actions/reference/usage-limits-billing-and-administration
  13. 13. 複数OS Runnerと Build System周りの理解 • Xamarin 製アプリのビルドにはMicrosoft製のビルドシステム を利用する必要がある • iOS/Androidで使う xcodebuild/Gradleを使うのは厳しそう • .NET Core • クロスプラットフォームで動くC#等のアプリケーション環境 • MS Build • Windowsで動くC#等のアプリケーション環境 • Mono をJob実行時にインストールしmacOS上で使えるようにした https://docs.github.com/en/actions/reference/usage-limits-billing-and-administration
  14. 14. 各 OS Runner と使ったBuild System • iOS 向けアプリ • macOS Runner • MSBuild を利用しビルド • Android 向けアプリ • Windows Runner • MSBuild を利用しビルド • Unit Test • Ubuntu Runner • .NET Core を利用しビルド
  15. 15. Xamarin と Build System 周りでつまづいた点 • .NET Core を使い Xamarin をビルドできない • .NET 6 とリリースを待つのは厳しいため、mono を入れる必要がある • 数年前から存在するビルドエラーのissueが未だ放置されてる • モバイルアプリの開発者がC#周りのBuild Systemをキャッチ アップしようとすると、環境の違いが多すぎて苦痛だった • M1 Mac mini にてVisual Studio for mac でのコーディング断 念したほど重かった… • xabuild(MSBuildのXamarin.Android向けラッパー)が2018年以 降メンテナンスされていなかった

×