フジーコの日記

自分が試してみたプログラミング関連のブログです

ドイツのスタートアップでコロナワクチン証明アプリの開発に関わった

色々あって今年の1月からドイツのスタートアップで働き始めた。メインのビジネスドメインはIoT、ブロックチェーン周りなのだが縁あってコロナのワクチン証明アプリの開発に関わることになったのでその話と入社からの7ヶ月を簡単に振り返る。

振り返り

1月
  • 入社。完全フルリモート環境
  • 自分以外皆ほぼドイツ語ネイティブ。自分がいるミーティングでは英語で話してもらう
2月
  • 新しい環境、ロックダウン等などでストレスがピークに
3月
  • 割と労働環境に慣れてくる。
  • ここまでは既存システムの開発をしてきたが、ここでコロナプロジェクトが動き始める
4月
  • コロナプロジェクト本格始動
  • 徐々に忙しくなってくる。
5月
  • 忙しさピーク。休日も休みほぼなし
  • 人生で一番コード書いた1ヶ月だった
6月
  • 引き続き忙しい。
  • 遂にリリース完了

コロナプロジェクトについて

ワクチン証明アプリはこのCovPass Appというアプリで2回目のワクチン接種後にもらえるQRコードを読み込めばそのQRコードが有効かどうか証明してくれるというもの。自分達の会社はこのアプリの開発を担当したのではなくQRコードを発行する側のシステム(ワクチンセンター向け)を開発を担当した。ドイツではワクチン2回接種して2週間経ったか、24時間以内のコロナテストの陰性証明がないとレストランの中で食事したりジムに行くことができないので、このアプリはそのワクチン接種の有効性を簡単に証明するために使われることになる。このプロジェクトはIBMなどの大企業が関わった国レベルのプロジェクトなのだが、そのプロジェクトに50人ほどのスタートアップがどうやって参加できたのかは正直あんまり知らない。そこまで話を持っていった経営陣とビジネスサイドが凄いとしか言えない。

f:id:fuzyco:20210731064329j:plain
コロナワクチン証明アプリ

ubirch.de


ここでは実装の詳細は話さないが、実装のポイントは偽のQRコードが作ることができないようなセキュアなシステムを開発することだった。

実装よりもチャレンジングだったのはスケジュール。ドイツが本格的にワクチン接種を開始する(6月中旬くらい)までに、ワクチンセンターでQRコードが発行できる状態にする必要があった。4月頃から本格的に開発が始まったが、その段階でも完全に要件が決まっているわけではなかったので締切りは決まっているがスケジュールを引くのが難しい状態。
普段は2週間スクラム開発をしているが、このプロジェクトに関しては全く機能しなかった。週あるいは日単位でタスクが降ってきて、有識者を捕まえて要求の理解、仕様決め、設計、実装をやるというサイクル。あとGDPRはやはり考慮する必要があり、本社がヨーロッパ外のクラウドサービスは基本使えない。つまり、AWSGCP、Azureのサーバーは使えないという制約があった。上記にも書いたとおり、5月頃に忙しさがピークになった。3月まではほぼ残業なしだったのから一転して休日出勤や深夜残業は当たり前になった。他の同僚もかなりストレスが溜まっていて、自分がミーティングにいても関係なくドイツ語で話すみたいな状況が多々あった。

正直自分のエンジニア人生の中で最も忙しい2、3ヶ月だったが、とても良い経験だった。無事リリースに間に合わせることができたし、リリースしてから何千というQRコードが発行され、毎日使われているのを見るのは達成感があった。実際自分も2回目のワクチンを接種した後に、自分が実装に関わったQRコードが目の前で発行されるのはシンプルに嬉しかった。あと開発したシステムが動く瞬間は何にも代え難いものがある。メインの2つのマイクロサービスを主に開発していたがその二つのコンテキストが重なり合って一つのユーザー体験に繋がった瞬間はかなり感動した。がっつりScalaを書くことができたし、普段のシステム設計、実装は勿論だが、それに加えて楕円曲線暗号、AES、電子署名、mTLS、X509証明書、COSEオブジェクト等などセキュリティ面で色々と勉強になった。また、かなり残業したがその分のお金がしっかり支払われることになった。

労働環境について

最後にドイツの労働環境について軽く触れておく。特に労働時間と休日の考え方が日本とは大きく異なる印象。給料と同じくらい休暇が大事な印象で、長く働いて給料を多くもらうくらいなら休日を多く取る方を選択する人がかなり多いと思う。実際週3, 4日の契約にしている社員もいる。自分は年に有休が30日あるのだが、まだ自分は日本の労働感覚を持っていたので、最初はどうやって使いきればいいのかわからなかった。同僚に「皆どんな感じで休暇とるの?」と聞くと、「え、いや自分のとりたいタイミングでとりなよ。Hirokiは30日有休持ってるから合計6週間分休暇取らないとダメだよ」と言われた。正直日本の会社で働いたときは、有休使えたら使おうとくらいの感覚だったが、こっちだと有休は全部使わないといけないという感覚である。自分も8月に1週間、9月中旬から4週間休みを取る予定だが、同僚にも上司にも特に取りすぎだとは言われなかった。もちろん引き継ぎはしっかりやる必要がある。また、病欠は病欠で有休とは別。なので同僚が2週間の休暇終えるときに、「先週は体調崩してたから来週その分休暇にする」と言ってきたときには、一瞬え?と思ったが、ああ確かにシステム的にはそれで問題ないなと納得した。