STYLY×外部APIで作るARの拡張：「アドベントロマンスカー」の裏側


この記事は[STYLY Advent Calendar 2024](https://qiita.com/advent-calendar/2024/styly)の14日目の記事です

# はじめに
こんにちは、uechanです。


今回は、withARハッカソンで制作した「アドベントロマンスカー」について、その裏側のシステムを紹介します。

ハッカソンのテーマは「お土産をARで拡張せよ！」。このテーマのもと、私たちは旅行のワクワク感をアドベントカレンダー形式でARで楽しめる作品を目指しました。

この記事では、「アドベントロマンスカー」のシステムについて、特にSTYLYを活用した外部APIとの連携や技術的な工夫に焦点を当てて解説します。STYLYが外部APIを利用することで、AR作品の幅がどれだけ広がるかをお伝えできればと思います。

# 作品コンセプト
「アドベントロマンスカー」は、旅行前のワクワク感をアドベントカレンダー形式でAR体験として提供することを目指して開発しました。

![240409_AdventRomancecar_1920_1440__.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/9479560f-d99b-07ed-e05d-456e39ae2713.png)


主なコンセプト：

旅行前の期待感を高める：ロマンスカーのペーパークラフトにスマートフォンをかざすと、ARで旅行先の風景やアクティビティが表示され、旅行への期待感を高めます。

思い出の共有：旅行後、専用のWebサイトで撮影した思い出の写真を登録し、その写真たちをARで振り返ることができます。

追体験のループ：友人にARをシェアすると自分の顔が主人公のARを思い出の写真とともに体験してもらうことができ、友人もARで旅行のワクワク感を追体験できる仕組みを設計しました。

このように、旅行前から旅行後までの一連の体験をARで拡張し、ユーザー同士が思い出を共有・追体験できる新しい形のお土産体験を提供することを目指しました。


![slide.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/2f05ee7d-5b5f-545f-9057-713a60589f12.jpeg)

ARの体験動画はこのような感じです

https://x.com/41h01/status/1782544826216677690

https://x.com/uechang16/status/1766691544986501215


# システム構成と連携の概要
「アドベントロマンスカー」のシステムは、大きく以下の2つの要素で構成されています。

1. AR体験の基盤
STYLY
AR体験の構築には、STYLYを使用しました。特に、位置合わせにはSTYLYのimmersalを採用しています。immersalは、わずか0.2秒で位置合わせが完了するほど高精度かつ高速で、AR体験のスムーズさを実現しました。
ペーパークラフトとの連携
付属のロマンスカーのペーパークラフトが、AR表示のトリガーとして機能します。このアプローチにより、物理的なお土産とデジタル体験を融合させました。
2. ユーザー情報と写真データ管理
自作Webサービス
ユーザー登録、ログイン、写真登録などのUIはすべて自作のWebサービスで構築しています。
AWS S3との連携
登録された写真は、AWS S3と連携した自作データベースに保存されます。
ユーザーデータ自体はDynamoDBに保存されています。

### Webサービスの流れ
まずはメインページ
![iPhone-13-PRO-blue-squid-sock.cyclic.app_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/79d27422-207e-4de8-9cc9-7f874adef42c.png)

初めての方はアカウントを作成するかログインをします
![iPhone-13-PRO-blue-squid-sock.cyclic.app_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/5d080009-c249-4755-a0e4-dc28e86d641b.png)

ログインし、自分の顔写真を登録すると、友人にARをシェアしたとき、ARの主人公が
自分の顔になります
![iPhone-13-PRO-blue-squid-sock.cyclic.app_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/6c043d5a-ebcb-f0dd-0330-fcb6cba5e0d3.png)
※テストデータに使われる弊社社長

思い出写真はカウントダウンする日数分(ARのある数)出てくるので
好きな写真を登録しましょう
友人にシェアしたときに思い出の写真が出てきます

![iPhone-13-PRO-blue-squid-sock.cyclic.app_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/bcf4b553-b661-b0cd-7ca5-cf6b4cdba90b.png)
![iPhone-13-PRO-blue-squid-sock.cyclic.app_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/e90604d5-8086-6496-8b7e-4c9182c8626b.png)

ARの主人公が自分になってともに旅の思い出の写真を振り返る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/8e3e7aa4-8fc9-72d5-6a06-28c602b9dede.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/4c50a1fb-e408-6de3-2a66-9c23cc02ce0f.png)

**ちなみに開発言語はReact.jsでホスティングにはcylic.shを使っていました**
cyclic.shはサ終してしまったので、いま見れるWebサイトは存在しません。。。；；

https://x.com/cyclic_sh/status/1783941443804959080

つらいご時世だ、、、


# STYLYと外部API連携の実装
「アドベントロマンスカー」の実現には、STYLYと外部APIの連携が大きな役割を果たしました。

* STYLYで外部APIを利用する仕組み
Playmakerのカスタムアクション、Get Http Request、Put Http Request、POST Http Requestなどを使うとcurlとしてHTTPリクエストを叩くことができます
参考までにGet Http Requestのマガジン記事を載せておきます

https://styly.cc/ja/manual/customaction-noria901-get-http-request/

* AR体験への応用
   * 写真データの表示
登録された写真データをダウンロードするのはWWW Objectアクションに画像のURLを指定するとTextureに保存してくれるのでそれを使って画像を顔にはめたり、思い出写真として出しています。
   * 位置合わせ
immersalを活用しています
ロマンスカーのペーパークラフトをマップにしており、約0.2秒で位置合わせを完了させています。

https://styly.cc/ja/manual/ar-immersal-starter-guide/

# まとめ
「アドベントロマンスカー」で、旅行のワクワク感をARとWebサイト、apiサーバーの連携で最大化することができました。

本作品を通じて、STYLYが単なるAR制作ツールにとどまらず、外部APIと連携することで可能性を大きく広げられることを実感しました。AR作品を作る上で、STYLYと外部APIの組み合わせは非常に強力な武器になります。

この記事が、これからSTYLYやAR制作に取り組む皆さんの参考になれば幸いです！「アドベントロマンスカー」を通して、新しいアイデアや可能性に触れていただけたら嬉しいです。