GASでGitHub APIを叩いて、issue起票を自動化した話
まだ大きく育っているアプリがないので、個人開発で2-3個のFlutterアプリを並行開発している田畑です。
アプリの並行開発して気付いたんですが、アプリの開発初期にやることってだいたい一緒なんですよね。
例えば、Flutterアプリだと
・静的解析ツール入れて
・コード生成ライブラリ入れて
・対象となる端末種別入れて
・Firebase入れて
・CI / CDの仕組みを入れて
etc..
この中で自動生成できる内容については、以前書いたような仕組みを使ってプロジェクトのセットアップ時に自動生成することで対応できますし、それが効率的です。
ただ、自動生成したコードをうまく差し込めない等の理由で、プロジェクトセットアップ時に自動生成できないものがいくつかあるんですよね。
なので、このように
・プロジェクトセットアップ時に自動生成できないTODOを抜け漏れなく
実装するために、管理したい
と考えていました。
また、少し別の話になりますが、アプリは作れば作るほど知見が貯まり、アプリを作る際に必ず追加しておくべき機能(例:強制アップデート)のリストができてきます。
新しいアプリを開発する際に、そのリストの内容を抜け漏れなく実装する仕組みを整えることで、アプリを作れば作るほどクオリティが上がっていくようにしたい、とも考えていました。
ということで、
・新しく作るアプリには、今まで開発で得てきた知見が全て注ぎ込まれた
状況を作りたいと考えており、そのために
・アプリ開発時に絶対にやっておくべきタスクをリスト化でき
・GitHub上で新規プロジェクトを作成した際に、上記のタスクリストから
GitHub issueを自動で起票できる
ような仕組みがほしいと考えていました。
しかし、GitHub単体で上記のような仕組みを実現するのが難しそうだったため、以下の図のように
・Googleスプレッドシート上でissueの元データを管理しておき、
・GASでGitHubのAPIを叩くことで、issueをまとめて起票できるように
というところに落ち着きました。
Googleスプレッドシートにはこんな形で、titleとbodyを記述しておきます。
bodyはmarkdownが使えるので、必要に応じてmarkdownで記述します。
(以下の画像はリンクになっているので、クリックするとスプレッドシートにジャンプできます)
で、こちらが👆のGoogleスプレッドシートを参照して実際にIssueを起票するためのGoogle Apps Scriptになります。
以下の中身を書き換えるだけで使えるようにしています。
・function spreadsheetURL()
・function githubAccessToken()
・function organizationName()
・function repositoryName()
実際にIssueを起票したサンプルのrepositoryはこちらになります。
まとめ
今回は個人開発効率化のために行った、GitHub issueの一括管理と起票の効率化について解説してみました。
今回紹介したGoogle Apps Scriptの
・スプレッドシートのURL
・GitHubのAccess Token
・GitHubの組織・ユーザー名
・GitHubのリポジトリ名
を書き換えれば誰でもすぐ使えるようになっていますので、興味がある方は使ってみていただければと思います。
(そして感想とか聞かせてほしいです🙏)
サポートする代わりに個人開発はじめましょ! iOS👇 https://developer.apple.com/jp/support/enrollment/ Android👇 https://play.google.com/apps/publish/signup/