GitHubリポジトリ Covid19Radar に対して起ったことがかなり特殊な状況だったため、開発を追い掛けていた視線からレポートをします。
この記事の著者について
- 代表作のない個人アプリ開発者(かなしい)
- Covid-19 Radar Japan の人ではない
- Code for Japan の人でもない
4/8 Covid-19 Radarを発見する
- Covid-19 Radarとは、この時点ではシンガポールのTraceTogetherの日本版を目指した個人開発者 廣瀬一海さんのアプリのリポジトリ
- 4月にContact Tracing技術について調べていたら偶然見つけた
Xamarin.Forms / “GitHub - kazumihirose/Covid19Radar: This app uses Bluetooth to get the contact logs of each other. We are waiting for your contribution and pull request.” https://htn.to/3HT7MdCY7N
- 4/8時点で人が集っていて活発に開発されていた。Facebookで協力を呼び掛けていたらしい*1
sinsai.info
みたいなムーブメントかな。ぐらいの認識だった
4/10 Apple/Google APIの開発が発表される
AppleとGoogle、 新型コロナウイルス感染症対策として、 濃厚接触の可能性を検出する技術で協力 - Apple (日本)
- この時点では発表だけ。ベータリリースされたら使ってみるかぐらいの感想だった
4/15 コード・フォー・ジャパンもContact Tracingやってるらしい
COVID19Radarみたいなやつかな / “コンタクト・トレーシング・アプリの開発に関して|一般社団法人 コード・フォー・ジャパンのプレスリリース” https://htn.to/3UPqHY5pHN
5/5 APIを使えるアプリは各国1つのみ
“同様のアプリが乱立することを防ぐため、APIを使えるアプリは各国1つのみ。” / “グーグルとアップル、新型コロナ濃厚接触の可能性知らせる「Exposure Notification」のUIとサンプルコードを公開 - ケータイ Watch” https://htn.to/2dovU9G3AD
- ここで個人開発者オワタと思った
6/13 突然Covid-19 Radarが日本代表になっていたことを知る
> 3 前2項にかかわらず、オープンソースの利用に関連して、当該オープンソースの規定に従う必要がある事項については当該規定が優先します。当該オープンソースに関しては、 https://github.com/Covid-19Radar/Covid19Radar …において確認することができます。 https://www.mhlw.go.jp/stf/seisakunitsuite/japanese_rk_00028.html …
あのXamarin製アプリが使われるらしい
- コード・フォー・ジャパンのプロジェクトどうなったの? とかあれは個人プロジェクトでは? という疑問があった
6/15 開発が米マイクロソフトに移った??
- 日経新聞の飛し記事が出る
「想定と違う」「大企業のほうが安心だ」丸投げが起こるテンプレでは / “新型コロナ:接触検知アプリ、週内にも日本投入 マイクロソフト製 :日本経済新聞” https://htn.to/2Rq3hGbHv3
- 「「コード・フォー・ジャパン(CFJ)」にアプリ作成を任せる方針」が覆った理由が全然わからない
- 5/11に投稿されたらしい 接触確認アプリ「まもりあいJapan」開発の経緯と今後について を読むと開発主体がCFJから厚生省に移ったことが要因らしい
- Covid-19 Radarの作者はたしかに日本マイクロソフトの人だったから、会社を巻き込んだプロジェクトにしたのかなー、と思った
- ちがうらしい
Covid19Radarの話ならメンバーにMSコミュニティの人が多いから記者が勝手に判断したのか / “接触確認アプリは米MS製? 日本MSは「事実ではない」と否定 - ITmedia NEWS” https://htn.to/2GabzXiQ1f
- 今思うと厚生省で「大企業のほうが安心だ」と意思決定したおじいちゃんも「米マイクロソフトに発注したぞ!」と本当に認識していたのかもしれない
6/19 アプリがリリースされる
- 開発者インタビューなどが世に出る
- GitHubリポジトリだけを見てるとチームで開発してる感がなかったのでどんな開発体制なんだろうと疑問だったんだけど https://diamond.jp/articles/-/240905 でデザインやリレーションを担当している人が存在することを知る。あれ、開発は本当に1人でやっているの??
GitHubリポジトリを見始める
- 日本初のApple/GoogleのContact Tracing APIを使ったアプリが出たぞということで技術的な関心駆動でコードを読み始める(Xamarinわからん過ぎるのでとりあえずチェックアウトだけして中身見てなかった)
この時点でいくつかのことが分かった
アプリサイドを廣瀬さん、サーバーサイドをdarkcrashさんが中心に開発している
- runceelさんalbilagaさんなどがXamarin系の修正プルリクエストを送って手伝っている
- norijiさんが前述の記事で出てくるデザイン作業で貢献している方
- changeworldさんという人がもの凄い勢いでIssueやプルリクエストを捌いている
過去にAd-Hoc版ビルドのテスト版が配布されていたことを知る。デバイス登録上限に達するぐらい参加者がいたらしい(注: このアプリは5月末にリリースされたiOS 13.5にアップデートした端末か事前のiOSベータ版配布を適応しないと動作確認すらできない)
この時の配布ツールApp Center用のライブラリが本番バイナリに入ってデータ送信していたらしく、mala(呼び捨て)が発見して取り除かれた。
Getting Started
- アプリをビルドしてみて修正しようと思ったけど全然やり方がわからない
- 開発環境構成ドキュメントはまだ存在しなく、なんとなくGitHubの外にチャットなどがあって、そこで開発が進んでいるのかな〜と思いはじめる
- ふて寝する
6/20 なんとかなったぜ
- いろんな方法を探っていたら結果うまくいってコードを編集して動作確認できるようになった
- iOSのビルド設定が廣瀬さん固定になっていたので誰でもビルドできるような変更をプルリクエストしてみる
iOS Bundle SigningOption to 'Automatic' by laiso · Pull Request #471
- ここでなんとApple/Google APIのデバッグは廣瀬さんの環境でのみしかできないことが判明(たぶん)。超SPOFじゃん・・と震える
はー。もしかして Exposure Notification API の実機デバッグは野良デベロッパーには無理……??
厚生労働省に入ります。
(カルチャーフィットしなさそうなので厚生労働省には入らないことにしました)
About messages when sharing the app on line
「LINEでシェアすると表示がおかしい」というIssueを見たので検証して直してみる
change appStoreUrl to valid URL by laiso · Pull Request #474
「俺の修正のおかげで直ったわ〜」と達成感を味わっていたらmala(呼び捨て)が出てきてLINEのサーバーで修正されてしまう(チートでは??)
Line breaks not works in a mail app
- iOSのメールアプリでお問い合わせするとエスケープ済みの改行コードが入るらしい
- メール改行テキストの修正のパッチを提案する(普通にググってうまくいくか試しただけ)
Line breaks not works in a mail app · Issue #479
この問題翻訳ファイルの元の問題を修正する必要あるんだけど、翻訳ツールがWindowsでしか動かないことを知る(Macの人居なかったのか・・!)
翻訳用のツールを使うのにWindowsが必要っぽい
App crashes
- App crashes · Issue #450 が再現しやすいので修正を試みる
- ソースコードをいじって検証してみたけど前述のとうりSPOFで世界がヤバいので僕の環境ではデバッグすらできなく、直ったのかどうかわからんけどとりあえずプルリクエストにしてみる
fix a crash on StopExposureNotification() by laiso · Pull Request #484
- このあたりで前述のApp crashes Issueのやりとりを見た人たちが「公共サービスをこのような認識で開発されているのはいかがなものか?」と騒いでるらしいことを知人に教えてもらう
- 僕は彼等に対して距離を置くことで軽蔑やNOを示したいので、透明なおじさんは見えませんよみたいな感覚で見なかったことにした(不具合の事実の報告は重要なのでチェックだけする)
- とはいえ当事者の人たちはダメージを受けていたらしく「SPOF〜〜」と見守っていた
Xamarinについて
- 知人iOSエンジニアなどが「コントリビュートしたいけどな〜技術スタックがな〜Xamarinがな〜」と嘆いているのを見かける
- たしかにXamarin+Mac+iOSは少数派ゆえ茨の道っぽい……
Xamarin→Macつらい→Windowsで開発しよう→iOSビルドできない→Androidで確認しようみたいなルートある
- もしかしてiOS版のCovid-19 Radarをビルドができるの廣瀬さんと僕だけなのか? と思いはじめる
- amay077さん(Xamarinに詳しい人)などに助言をもらって開発環境の作り方を他のiOSエンジニアにシェアすることにした
- ちょうどいいIssueが作成されていたので以下で調べた内容がやりとりされている
- connection error on submitting to accept the Terms of Use · Issue #543
- [Android/iOS]アプリの通信処理の Mock 化 by amay077 · Pull Request #553
これまでの流れで思ったこと
- 国の意向で日本代表の感染症対策アプリ開発が個人開発アプリに丸投げされたっぽい(そんなことあるの??)
- 関係者の発言(公開された情報)によるとリリース日が事前に決まっていたらしい
- Covid19 RadarはMPL v2.0に基くソフトウェアだけどプロジェクトは一般的に知られる「GitHubで開発が行なわれているOSSプロジェクト」ではなく個人開発者とその周辺のボランティアだった
- GitHubリポジトリがとりあえずある(元が個人開発アプリなので)。というだけの状態
- 今後このプロジェクトは厚生省及び開発委託先によって管理されるらしい
- 「大企業のほうが安心だ」と意思決定する人がこのGitHubリポジトリを維持するものなのか
- userUuid および secret の廃止 · Issue #514 のような提議をできる場はあるのか
- 現在改善が進んでいるMPLのコードベースがどうなるのか
- 人類がはじめて直面する事態に対してアプリケーションのプラットフォームが特例的に出した仕組みを使って、1つの国で1つのアプリを1人が作る*2異常な状況なので何が正解なのか誰も分からない……
- 廣瀬さん関係者の方々お疲れさまでした
*1:https://www.businessinsider.jp/post-214726
*2:特定の会社に委託されればその範囲の人が開発はできる