Flutterを使って個人で以下のスマホ向けのおみくじアプリ(大御心アプリ)を開発・運用しています。





[iOS]
https://apps.apple.com/us/app/%E5%A4%A7%E5%BE%A1%E5%BF%83%E3%82%A2%E3%83%97%E3%83%AA/id1627544916
[Android]
https://play.google.com/store/apps/details?id=jp.sikisimanomiti.oomigokoro
今回上記アプリのリポジトリにGithubのDependbotを導入する記事を書きたいと思います。
Dependbotとは
アプリを開発する際に必要に応じてライブラリを使って開発することがあると思いますが、ライブラリから致命的な脆弱性が入ってしまい個人情報が流出するなど開発するアプリのセキュリティが低下しないよう定期的に使用するライブラリのアップデートも行わなければなりません。
しかし、開発が活発なライブラリはマイナーバージョンアップであれば1、2日で行うこともあるので、使用しているライブラリを1個1個確認してアップデートを行うのはとても面倒で手動で行うのはあまり現実的ではありません。
上記のようなアップデートの確認をGithubのDependbotを使うことで自動化できます。
Dependbotはnpm
のpackage.json
やpython
のPipfile
などそれぞれの言語のパッケージ管理機構のマニフェストファイルを見て依存関係を管理することで、古かったり脆弱性があったりしたライブラリを発見しPull Requestを作成して通知してくれます。
今回は2022年4月にDependabotがpubパッケージのベータサポートを開始したということで、
pub beta support for Dependabot version updates
早速、上記アプリのリポジトリにDependabotを導入しようと思います。
(※Dependabotのpubサポートはベータのためsecurity updatesをサポートしていないらしい)
Support for pub is in beta, and thus, we are aware of some limitations. For example, security updates are not supported in this release but will be in the future.
Dependbotを導入
まずはDependabotを動かすために、プロジェクトディレクトリ配下に.github
ディレクトリと設定ファイルを作成します。
$ mkdir .github
$ touch .github/dependabot.yml
ディレクトリ構成は以下のようになりました。
$ tree -L 1
.
├── .github
│ └── dependabot.yml
├── backend
└── frontend
ファイルが作成できたらファイルの中身を記述します。設定できるオプションはConfiguration options for the dependabot.yml fileを参照
version: 2
enable-beta-ecosystems: true
updates:
- package-ecosystem: "pub"
directory: "/frontend"
schedule:
interval: "weekly"
time: "09:00"
timezone: Asia/Tokyo
記述できたら、Githubへプッシュします。
プッシュできたら、Githubにあるpubspec.yamlに対してチェックを開始します。
チェックが完了しました。チェックが完了すると、pubspec.yaml
とpubspec.lock
が監視対象となりました。
Githubの「Pull Request」タブを開くと、5個のライブラリのアップデートを通知するプルリクがありました。
試しにflutter_svgのアップデートのプルリクの詳細を開きます。
現在(2022年7月31日時点)ではまだsecurity updatesに対応していないようですが、以上でライブラリのアップデートには追随できるようになりました。
参考
GitHubにDependabotを導入して依存ライブラリを自動アップデートする
DependabotとGithub Actionsで自動バージョンアップを実現する話
Flutterプロジェクトのpubパッケージに対してGitHub Dependabotを使ってみた
[Flutter] GitHub Dependabot