Ha4go運用の実績と課題 2018

Ha4go の開発と運用をやっている @PharaohKJ です。この記事はチームの総意だとかそういうのじゃなく、あくまでも開発と運用を担当している私の考えていることです。いわゆるシビックテック発のプロダクトを開発・運営する現場について少しでも感じる、伝わればと思っています。

# Ha4go とは

[Ha4go by codeforkanazawa-org](http://ha4go.net/)　を参照してください。一応、[Code for Kanazawa](https://github.com/codeforkanazawa-org) にリポジトリがあって開発されています。

CfKのメンバーだけではなく、 Code for Okinawa の [kimihito (kimihito)](https://github.com/kimihito) さん、Code for Japan の [halsk (Hal Seki)](https://github.com/halsk) さんにもコードのコミットをいただいて共同開発しています。

大きな役割は3つだと考えています.

- みんなで見つけた・考えた課題の投稿
- 課題を解決するための何かを提供できる人の登録
- 課題の欲していることからの課題と人のマッチング

# 実績(現状)

サービスインしてから特に目立った宣伝や活用、フィードバックを受けてのアップデートの戦略が特にないせいもあって、アクセスゼロに向かって進んでしまっている感じ。

今年はそれはそれとして、Ha4go自体をもっとつかってもらいたくて、無料でそれなりに運営できるであろうherokuへのデプロイを可能にしました。（もともとテスト版はherokuで動かしたりしてました）

これは Code for Okinawa の [kimihito (kimihito)](https://github.com/kimihito) さんのご尽力です。ありがとうございました。

## UU・PV

総ユーザー数は850から758に落ちました。PVは40%近い下げでどんどんゼロに近づいてしまっています。さすがにリリース時ボーナスがないとこれ以上はツライか。

<img width="917" alt="スクリーンショット 2018-12-15 21.59.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/50220/d7c49c58-90d5-3427-08f2-3f095bbd6476.png">

## 登録されてる課題と増えた量

去年は5件、今年も5件でした。

```
+-----------------------------------------------------------------------------------------------------------+---------------------+
| subject                                                                                                   | created_at          |
+-----------------------------------------------------------------------------------------------------------+---------------------+
| 雪国根性！助け合いの気持ちをつなげるようになったらいいのに                                                | 2018-01-13 00:24:04 |
| 雪かきのやり方をまとめよう                                                                                | 2018-03-05 04:28:48 |
| 段級位が離れている人同士で交流できる将棋大会が少ない                                                      | 2018-05-29 08:21:38 |
| 参考にできるシビックテックなアプリ一覧がほしい                                                            | 2018-06-09 11:45:42 |
| グループで活動している人たちが集まれる場所をまとめたアプリを作りたい！                                    | 2018-09-01 02:16:25 |
```

```
mysql> select year(created_at), month(created_at), count(id) from projects group by year(created_at), month(created_at);
+------------------+-------------------+-----------+
| year(created_at) | month(created_at) | count(id) |
+------------------+-------------------+-----------+
|             2016 |                 3 |         1 |
|             2016 |                 4 |         2 |
|             2016 |                 5 |         1 |
|             2016 |                 7 |         5 |
|             2016 |                 8 |         1 |
|             2016 |                 9 |         1 |
|             2016 |                10 |         3 |
|             2016 |                11 |         1 |
|             2016 |                12 |         1 |
|             2017 |                 5 |         2 |
|             2017 |                 6 |         1 |
|             2017 |                 8 |         1 |
|             2017 |                10 |         1 |
|             2018 |                 1 |         1 |
|             2018 |                 3 |         1 |
|             2018 |                 5 |         1 |
|             2018 |                 6 |         1 |
|             2018 |                 9 |         1 |
+------------------+-------------------+-----------+
```

## 運用

### ソースコード、issue

前述のとおり、CfKのGitHubにリポジトリなど一式用意されています。 → [codeforkanazawa-org/ha4go: ha4go](https://github.com/codeforkanazawa-org/ha4go)

### ウェブ上のインフラ

ドメイン名はCfKにとっていただいてます。

ウェブページ( http://ha4go.net )は上記リポジトリの GitHub Pages を使って運用しています。

ウェブアプリは [さくらインターネット](https://www.sakura.ad.jp/)様のご厚意で、IaaSであるさくらクラウドをご提供いただきました。この上に以下のような構成とミドルウェアを使っています。

- Ruby on Rails のウェブアプリ用インスタンス1
    - nginx
    - Let's Encrypt
    - docker (Ruby on Rails アプリ)
- MySQL 用インスタンス1
    - docker (MySQL)
- メンテ用踏み台1
    - munin
    - cron
        - DBデイリーバックアップ
        - Let's Encrypt 証明書更新(マンスリー)

通知メール配信はさくらのメールボックスを使わせてもらってます（これは有料でもともとCfKが契約していたものです）。

開発のコミュニケーションは [一連の業務の拠点となるデジタルワークスペース | Slack](https://slack.com/intl/ja-jp) の無料プランで行っています。GitHubとの連携や、さくらインターネットさんの障害情報のRSSをここに通知させたりしています。

今年から？GitHubに `Gemfile.lock` の内容をチェックし、セキュリティの問題があるバージョンのライブラリを用いている場合、GitHubから通知がくるようになりました。これはとても素晴らしいです。適切に更新し、配置するようになりました。

CPUやメモリの使用は去年と特にかわらっていません。CPUをほとんど食うことはなく、メモリは大食いですが、だいたい3Gあたりで高止まってます。

# 課題と今後

## 技術的課題

さくらインターネット様には非常に感謝していますが、 IaaS ではメンテナンスコストが高すぎるので、なんとかしたいです。これは今年も改善できていません。

前述の通り、GitHubから通知がくるたびに gem update するのは大変なので、贅沢をいえば毎日 bundle update し、テストをまわし、問題ないことを確認しておく、というのをCIしたいなと考えて言えます。

## 今後

もっとHa4goに書くことが

- 便利で
- 宣伝にもなって
- 人が集まって
- ちゃんと解決する

ということをシナリオとして宣伝していかないと忘れ去られていくプロダクトとなって終わりそうな感じ。ですがアプリの使命としてはドメインが示すとおり「kanazawa」だけのものではなく、これを用いる全団体にこの前述した大きな役割3つを果たすことですのでで、 kanazawa.ha4go.net のPVやUUより

- どれだけフォークされたか
- どれだけ運用されてるか
- どれだけパッチを受け取る・送るか

という指針を気にしようと考えたりしています。5374はこのアプローチですからねえ（アプリの性格上、それしかないといえばそれしかないんですが）。

[ha4go オンライン もくもく会 - connpass](https://ha4go-mokumoku.connpass.com/) を開催して、なんとか投稿されている課題を解決に向かわせたい・Ha4goのバージョンアップをと考えていますが、なかなか追いつかないです。ぜひご参加ください。