1人で1年かけて、ARでつながる新時代SNS「Treadraw」をつくった
タイトルにある通り、たった1人の個人開発で約1年をかけ、ARでつながるSNS「Treadraw」を制作しました。
その制作の話をしたいと思います。
ダウンロードはこちらから↓
Treadrawとは?
「トレドロ」と読みます。
ARを使って現実世界にお絵描きしたり、メッセージや画像などを置き、それらを空間ごとシェアすることができるSNSアプリです。
お絵描きなどのAR物体は現実空間にずっと残すことができ、他の人も同じ場所で同様のAR体験を共有できます!
現実空間にあなたの思い出の足跡を残すことができる新しいSNSなのです!
動画はこちら↓
Treadrawの名前の由来は?
treadとdrawの二つの英単語を組み合わせた造語を作品名にしました。
treadには踏むや足取りなどの意味があり、drawには描くといった意味があります。
なので、思い出という足跡を描き残すという、このアプリのコンセプトを名前にしました。
アイコンもそのような思いを込めたものを作成しました。
作った理由ときっかけ
SFアニメなどで登場するホログラムなどの技術が研究開発されたりしていますが、この技術は将来的に街に溶け込むと思っています。
しかし、ホログラムの時代が来る前にARによる疑似的な表現がなされる時代が来ると思っています。
例えば、アニメ映画「ソードアートオンライン オーディナルスケール」のような世界です。↓
オーグマーと呼ばれるデバイスを装着することで、バトルシーンでは街の建物がゲームの世界観に合わせた見た目になっています。
このような街全体を対象としたARを現実的に実現する場合、ARCloudのような技術が必要になります(ARCloudの説明は割愛、興味ある方はリンクを見てください)。
しかし、世界中の場所を網羅したARCloudデータはありませんし、僕の知らないところで存在していたとしても、今の時代において個人に貸してもらえるとは到底思えません。
なので、こういった世界を実現してみたいと思っていましたが、まだ無理かな~と思っていました。
そんな中約1年前、AppleのARKitの機能の一つのARWorldMapを知り、ARデータ(カメラが捉えた点群データ)を端末内に保存し復元できることを知りました。
ARCloudのようなデータがなければ、各ユーザに点群データを集めてもらえば良いのではないか?
ARWolrdMapの機能を応用することで、↑のようなことに挑戦しようと思い制作したのがTreadrawです。
コンテンツに落とし込む
私はせっかくやるなら、作品にしたいと思いました。
できたものをTwitterで言うだけ、ブログに書くだけ、デモシステムの作成などではなく、作品として世の中に発信し、新しい価値観に触れてもらいたいと。
いろいろ考えた結果、自分はクラウド技術を使ったシステム制作の経験もあるため、その経験を活かせるSNSの作品とすることで、空間を「投稿」としてシェアする作品にしました。
ちょうど、InstagramのARバージョンといったような感じをイメージしてました。
ARWorldMapはARCloudなどと違い、現実世界の一部分しか捉えることができない欠点があります。
しかし、「投稿」という形態とGPSを併用し、「現実空間の中でARオブジェクトを探す」ことで乗り換えました。
これにより、今までの写真でシェアするSNSの概念を残しつつも、同じ場所にいる or 来た人は空間もシェアし、時間を超えた体験の共有ができる新しい作品に落とし込むことができました。
制作
使ったもの
C#、Swift、Objective-C、Python、HTML/CSS、JavaScript
Unity、Xcode
Google Cloud Platform、Firebase、Apple ARKit、Django
前述したAppleのARKitの機能のARWorldMapを使用するので、UnityでiPhoneアプリとして制作しました。
SNSなので当然、バックエンドが必要ですが個人開発なので、開発コスト(費用も)を考え、firebaseを利用しました。
全体のシステム構成は↓のような感じです
このアプリのコアである、AR空間の共有(SNSシェア)↓のような感じです
端末内に保存されているARWorldMapデータを取り出して、データベースに保存しています。
加えてRealtime Databaseで、GPS・投稿の詳細情報とCloud Storage上のARデータを一緒に管理することで、投稿位置情報に基づいた空間体験共有を実現しています。
約1年の制作で学んだ、長期制作の辛さ・苦労点
ライブラリのバージョン変更やバグ
完成したものでは、約10個近くのライブラリを使用させていただいております。
しかし、それらのライブラリもアップデートが起こります。
これは、ライブラリが開発者様によってメンテナンスされているので非常にありがたいことなのですが、Unityで使用するライブラリは一部手動で差し替えなければいけません。
また、バグが発生し解決されるまで時間がかかることがあります(メンテナンスされていないライブラリだったら自分でデバックするしかない...泣)
最も痛手だったのは、UnityでARKitを使うためのプラグインが制作中に非推奨になってしまったことです。
Unity-ARKit-Pluginが非推奨になり、Unity標準のAR Foundationの使用を推奨されました。
これにより、AR機能のプログラムの大幅な変更を余儀なくされました(´;ω;`)
プラグインがバグってるから公式のを見に言ったらえぐいことが書いてあった。
— IKEP (@CreativeIKEP) October 7, 2019
もうすぐ完成やったのに...
泣きそう... pic.twitter.com/yW7ks8SMbu
Unityアップデートでのバグ発生
Unityのアップデートによってバグが発生することもありました。
そもそも、制作中のものなのにUnityのバージョンを変更するべきではないというのは当然だと思うのですが、使用しているライブラリのアップデートによってUnityのバージョンを変更しなければならなくなりました。
↑で言ったAR FoundationもUnityアップデートの一例です。
大規模ネットワークデータへの対応
これは僕の能力が劣っているだけかもしれませんが、SNSのデータをどのように管理するかに悩まされました。
多くの人が利用しかつお互いのデータを共有するため、システム実装面とセキュリティ面を同時に考慮する必要がありました。
また、将来的に機能を追加する場合でも問題ないかなど非常に神経質に考える必要があり、苦労しました。
TwitterやFacebookなど大規模ネットワークがいかにすごいシステムなのかを感じましたね...
世間の流行の遷移
技術の進歩は日進月歩、というのは本当だと思います。
長期の制作をしていると、新しい技術や流行が作られたり遷移したりします。
私の場合、制作開始約3か月後にMicrosoft Azure Spatial Anchorsが発表され、iOS、アンドロイド、HoloLensとプラットフォームに依存しない点群データ共有のサービスが発表されました。
これにより、自分の制作物が受け入れられるのかという不安になりました。
U-22プログラミングコンテスト2019に応募してみた
制作中にβ版ぐらいのものができたときに、他人がどう思っているのかを聞きたかったので、U-22プログラミングコンテスト2019に応募しました。
757作品の応募があったようですが、ありがたいことにベスト40作品に選出していただけました🎉
審査員の方からのコメントは、お褒めの言葉から自分では気づかない着眼点のアドバイスなど、非常にありがたいお言葉をいただきました。
そのうちの一部はすでにリリース済みのものにも組み込んでいます。
今後
正直、現在リリース中のものは最低限の機能のみだと思っています。
自分の中で拡大させたいユースケース案や追加機能を考えているので、これからもっとTreadrawを進化させていきたいと思います!!
Treadrawのこれからの進化を楽しみにしていただけたら幸いです。
ぜひ、ダウンロードして思い出の足跡を残してみてください ^^) ~~
追記
2020/9/26に開催された学生エンジニアのアウトプットを発表する技術カンファレンス「技育展」で、Treadrawを題材にスマホアプリ枠で登壇し、プレゼンテーションをさせていただきました!SNSなので、多くの人に認知してもらう必要があると考え、参加させていただきました。
発表スライドも載せておきます!↓