見出し画像

inShadeリニューアルのお知らせと技術の説明

4年前にリリースしたアプリをリニューアルしました。東京都のなるべく多くの日陰を通るルートを教えてくれるアプリです。

前職の同期たちとやっているクリエイティブユニットからのプロダクトです、前回の更新時はテレビに出たりAPIが死にまくったりとバタバタと運営していましたが、最後は計算の元データを管理するサーバの費用の払い忘れによってデータがすべて吹き飛び復旧不可能な状態となり涙涙のクローズをしました・・・

元データ自体はクローラをこねくり回したり、手動でいじったりとかなり泥臭いことをした塊だったので、当時新卒で余裕のある時分で作る分ならいざしれず・・・復旧は困難な状態でした。手元に残ったのはデバッグ用の60万行の六本木駅周辺のデータのみ。このまま「六本木の日陰を歩けるアプリ!」にするのも悪くないと思っていましたが、なんだかアウトローなアプリに思われてやめました。

データプロバイダや自治体などとコンタクトを取り、事業者とも話したりしてきましたが目処が立ちませんでした・・・

復旧の兆し

もう「プロダクトのお墓を作り、毎年墓参りにはAppleDeveloperライセンス費用をお供えしよう!」と思っていたところ、東京都が下記のプロジェクトを始めていることを知りました。

Project PLATEAU
航空測量等に基づき取得したデータから建物等の地物を3次元で生成した3D都市モデルです。 商用利用も含め、どなたでも無償で自由にご利用いただけます。

ありがとう東京都、ありがとう宮坂さん・・・
これはめちゃくちゃすごいし(語彙)、面白いプロジェクトでこのデータを利用すると簡単かつ扱いやすい形で東京都を3D空間にモデリングできます。例えば「東京都で鬼ごっこをするオープンワールドゲームを作りたい!」みたいなことも可能だと思います。

ここで公開されているCityGML形式のファイルをGoで書いたスクリプトで整形して影を算出するモデルにしました。CityGMLのドキュメントを読み、構造を理解して、必要なデータを整理してデータを作るのは正直楽しかった。これにより復旧のめどが立ちました。

プロジェクト自体とてもおもしろいし、未来をめちゃくちゃ感じているので、今回自分が助けられたのでどこかでOSSへの貢献とかそういうので恩返ししていきたいです。

プロダクトの作り直し

デザインやLPや体験はみんなで作ったので、実装のところだけ。
利用した技術は以下

・Flutter, Provider
・Go, gin
・Google Map API
・MySQL

実装はそんなに難しいことはやってないです。
もともとはAPIがrailsでフロントはobjcとjavaで書いていたのを全部書き直しました。インフラはお手軽conohaです。本当に今はアプリプロダクトを作る選択肢に恵まれた時代。FirebaseもAmplifyも優秀すぎるしあらゆることがフルマネージド化されているな・・・

今回は正直あまり説明すること無くて、最小限のコストでやれるやり方で扱いやすいものを選定しました。利用している技術スタックは全部副業等で実務経験があったので選びました。

Goは得意なわけじゃないのですが、ロジックも一通り見直したのもあり、railsで書いていた頃よりも4倍くらい早くなりました。嬉しい。Run fast, Win fast!!!!!

課題

まだ影の算出が怪しい部分がある気がしています。速度を出すためにモデルの粒度を大きめにしていたり。精度は終わりがないです。また Google Map のAPIに大きく依存している都合で、ルートは始点・終点に対してGoogleが提案してくれるものを基準としています。影の情報をもとにルートを作ることができればより精度が上げられるイメージがあります。

今後

ほんとはもっと早い夏のうちに出したかった・・・今後はゆるっとアップデートしていきたい。特に精度のところはまだまだ上げれるプランが有りいろいろ試したいと思います。

実装で手を動かすのがほとんど自分だけで、すっごい久々に本当にプロダクトのことだけ考えたものづくりだった、定期的にやっていきたい。

こんなご時世で外出も憚られることも多いと思いますが、少ない出かける機会ほど日陰の中を快適に移動してもらいたいです。フィードバックなどお待ちしています。

この記事が気に入ったらサポートをしてみませんか?