決済認証システム開発事業部の冨永です。
現在、主にiOSアプリ、iPadアプリ、Flutterアプリ、Androidアプリの開発を担当しております。(とはいえ、メインはiOS!!)
今回は、Flutter案件で遭遇した「夜になるとCookieが消える!?」という謎の不具合を追っていたらOSSにコントリビュートすることになった話を書きたいと思います! OSSにコントリビュートしたことがないけど、挑戦してみたいかも?と思っている方はぜひです!

目次
- 目次
- 夜になるとCookieが消える!?
- 原因はなんだったんだ...?
- 日本時間の夜9時は、UTCでは12時
- 朝までに間に合ええええええ!
- そして、無事リリース!
- OSSコントリビュート、意外とハードル低いかも?
- テコテックの採用活動について
夜になるとCookieが消える!?
Flutter案件でWebViewライブラリを使っていたある日、 夜遅い時間になるとCookieが消えるという不思議な現象に遭遇しました。
最初は、「いや、俺、疲れてるだけだよな?」と思っていたんですが、 何度試しても 夜の遅い時間だけ確実にCookieが消える。
「えっ、なにこれ……!?」
バグか? 仕様か? いや、仕様なわけがない!! ということで、業務としてまずは一時的な対策を行うことにしました。
業務としての最優先は、当然ながらCookieが消えないようにすること。 そこで、案件では別のライブラリを用いることで、一時的に問題を回避しました。

原因はなんだったんだ...?
この時点で、「とりあえず実務としての対応は完了!」 これで業務的には問題なし……なのですが、 個人的には 「いや、原因なんなんだ……」 というモヤモヤが残りました。
調べてみると、ライブラリのコードがDartで書かれていることに気づきました。
「読める....読めるぞぉぉぉぉ」
となり、思い切ってライブラリの中を調査してみることにしました!
日本時間の夜9時は、UTCでは12時
調査を進めると、 Cookieが消えるタイミングが「日本時間の21時=UTCの12時」であることが判明しました。
「12時……?なんか時間の処理ミスってないか?」
と思い、コードを見てみると、時間のフォーマットに小文字の hh が使われていることを発見。
小文字の hh は12時間表記なので、UTCの13時が「1時」として解釈され、 時間のコンバートに失敗し、結果的にCookieが消えてしまっていました。

急いで hh の箇所を HH に変更......
すると、無事にCookieが消えなくなったことを確認!!

朝までに間に合ええええええ!
せっかくなのでPull Requestを作ってOSSに貢献したいのですが、、、、
「このバグ、朝になったら再現しなくなるぞ!」
と気づきます。
そして、なんとか眠気と戦いながら、テスト結果のスクリーンショットと文章を整え、朝までにPRを出し切ることができました!


そして、無事リリース!
いくつかやり取りがあるかな。。?と思ったのですが、即マージされました。
「えっ、こんな感じで良いの?」
と驚きつつも、無事にマージされたときはめちゃくちゃ嬉しかったです!
その後、修正がリリースされました!
その時のPRはこちら

OSSコントリビュート、意外とハードル低いかも?
今回の経験を通じて、いくつかの学びがありました。 これまでライブラリは 「すごい人たちが書いた遠い存在」 だと思っていましたが、 実際に中を覗いてみると、不具合を分析する習慣、テストをする習慣、PRをきちんと書く習慣など普段の業務で培った習慣があれば意外と自分でも手を動かせる身近な存在なのだなと感じました。
また、改めてissueを見渡すと、小さいissueもたくさんあり、ちょっとした修正でも十分貢献できることはまだまだ沢山あるなと感じました。
実は最近、別のOSSでアイコンの軽微なダークモード対応もやったのですが、修正内容は少しですが、喜んでもらえたのが嬉しかったです。

OSSコントリビュート、やってみると楽しいので、 「自分には無理かも…?」と思っていた人もぜひ挑戦してみてください!
以上、「夜になるとCookieが消えるバグを追っていたら、OSSにコントリビュートすることになった話」でした!

テコテックの採用活動について
テコテックでは新卒採用、中途採用共に積極的に募集をしています。 採用サイトにて会社の雰囲気や福利厚生、募集内容をご確認いただけます。 ご興味を持っていただけましたら是非ご覧ください。 tecotec.co.jp