AndroidDagashi、ご存知ですか。
英語圏のものを中心に、Android関連のニュース/記事を日本人向けにまとめている週一更新のまとめサイトです。
2018年の2月に開設して、おかげさまで2年が経ちました。
さて今日はAndroidDagashiをどうやって運用しているかざっくりまとめてみます。
全体像を図示するとだいたいこんな感じです
AndroidDagashiはドメインからわかる通り、GitHub Pagesでホストされた静的サイトです。
Vue.jsを利用したWebアプリケーションフレームワークであるNuxt.jsの、静的サイト生成機能を使っています。
このサイトは、2つのGitHubレポジトリで構成されています。
一つはサイト本体のコードが置いてあるAndroidDagashi/androiddagashi.github.io。
そして、記事データを管理するAndroidDagashi/AndroidDagashi です。
AndroidDagashi/AndroidDagashi
では、1マイルストーンを各週のページ、1 issueを1リンクとして管理しています。シェアしたいリンクをissueとして投稿して、そのissueを対応する週のマイルストーンに紐づける感じです。
デプロイにはAndroidDagashi/androiddagashi.github.io
のGitHub Actionsを利用しています。
デプロイ関係のワークフローは下記の3つです。
AndroidDagashi/AndroidDagashi
から記事データを取得してサイト用のJSONファイルに加工し、pushするAndroidDagashi/androiddagashi.github.io
へのpushをトリガーに起動し、サイトをビルドしGitHub Pagesにデプロイするサイト用JSONファイルの作成ワークフローはclose済みのマイルストーンを取得するようになっています。
1時間毎に動かしているのは、コメントとかあった時に反映するためにですね(現状あまり活用できていませんが…)。
JSONの生成ジョブは、特定のissueへのコメントで実行できるようにもしています。
だいぶ泥臭い設定になっていますが、2020年5月末現在GitHub Actionは手動実行をサポートしていないのでその代替手段です。
そんな感じで、日々の運用作業は
だけです。
ただそれ以外に毎週のリリース作業として、
があります。
半年前くらいまでは新着通知のツイートも手動だったんですが、一念発起して自動化しました(だいぶ楽になった)。
やろうと思えばサマリの作成とマイルストーンのcloseも自動化できそうな気はするので、今後の課題です。
以上、ざっくりとしたAndroidDagashiのサイトについての説明でした。
この仕組み自体はGitHubとFirebase(無料枠で済むしTwitterに投稿とかしなければいらない)だけで成り立っているので、結構いろんな分野で汎用的に使えるのではないかなー、と思っています。AndroidDagashiでは記事データのレポジトリもサイトのレポジトリもpublicで運用していますが、privateにしても特に問題はないはずです。
androiddagashi.github.io
はMITライセンスで公開しているので、気になった方はご自由にフォークして遊んでみてください。
コントリビュートもお待ちしております!