Ha4go運用の実績と課題 2019

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つだと考えています.

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

# 実績(現状)

今年は、全国対応版としてバージョンアップすることを宣言しましたが、実質とりかかれていません。なんかまぁ下げ止まってるのか、ユーザー数にあまり変化はありません。

## UU・PV

![スクリーンショット 2019-12-24 23.09.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50220/7eef0d58-8c89-0019-abc4-0546909c4fb3.png)

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

去年は5件、今年1件でした。CfK Civic Hack Nightに集まってくる人も減ってきてますし、後述する「権利的な課題」が噴出したこともあってなかなか件数が増えません。要全国版ですね！

| subject   | created_at          |
|--------------------------|---------------------|
| ネット犯罪に巻き込まれるのを防ぎたい | 2019-02-24 21:35:12 |

```
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 |
|             2019 |                 2 |         1 |
+------------------+-------------------+-----------+
```

## 運用

### ソースコード、issue

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

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

今年は全国版に移植する、、、と宣言したのですが、特にかわっていません。これまでは金沢の課題は `kanazawa.ha4go.net` に集め、他の課題は `xxx.ha4go.net` といったように `xxx` を地域名にして運用しようと当初考えていましたが、今後は全国版にしていこうと考えています。

ドメイン名は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から飛んでくるので、把握はしやすくなりましたが、デプロイはオオゴトです。また、Railsも6がリリースされて、そちらに以降したいと考えています。幸いなことに、JavaScriptがたくさんあったりはしないので移行は簡単、、、なはずと考えています。

## 権利的な課題

今年増えた課題「ネット犯罪に巻き込まれるのを防ぎたい」において、プロダクト作成にまで進んでいたのですが、いろいろあって特に権利問題、、、つまり「CfKでやったものについてはCfKに帰属する」というところがご納得いただけず、プロジェクトは解散になってしまいました。

アイデアソンやハッカソンなどやるのはいいのですが、なかなかどうしてこういった権利関係は複雑になりがちで、それ故に「権利はすべて主催者側に帰属する」とざっくりと決めざるを得ないことが多いと思います。しかしながら、この方式だと人が集まってくる・やろうとする限界があるんじゃないかなあとも考え始めています。

「これが飲めないんだったら、発言も手を動かすもやめてください」ってのはさすがにキツすぎませんか？何か新しいライセンスや権利など、提案できたらなと考えています。そうじゃないと「ha4goに課題を書いたら損」「会に参加して思いついたことを話したら損」なんて状況になるのはちょっと加藤が望む状況ではありません。

## 今後

来年こそは

- ha4goを全国版対応
- Rails 6 対応
- 発言や書き込みへの ha4go ライセンスについて提案

したいと考えています。よろしくおねがいします。