2022年版キャンドルナイトプロダクト開発のあゆみ(Candle Night @ Shinjuku)

こんにちは！GxPの杉森です。
この記事は[グロースエクスパートナーズ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/gxp)の25日目(最終日)の記事です。

今年もCandle Night＠ShinjukuイベントのオンラインプロダクトチームがAdvent Calendar 2022のトリを務めさせていただきます。今年のプロダクトは、2022年版への画面デザイン刷新と新規機能開発を２つ行いました。本記事では、リアルイベントとデジタルの融合に焦点をあてて、各担当メンバーよりプロダクトのご紹介と苦労した点などをお伝えしたいと思います。

【メンバーと役割】
- 杉森 圭祐：　プロマネ（+内外関係者との各種調整協議）
- 米山 暢子：　デザイン担当（画面デザイン＋デザイン支援）
- 富岡 航　：　開発メンバー（新機能開発）
- 奥川 亜耶：　開発メンバー（新機能開発）
- 中野 和彦：　開発メンバー（開発メンバー全体のサポート）


【目次】
- **イントロ**
これまでのイベントのご紹介（杉森 圭祐）
- **22年度版 プロダクト画面および工学院さんのデザイン支援**
Figma＆Figjamを活用したデザイン制作（米山 暢子）

- **22年度版 新機能１『デジタルキャンドル鑑賞』**
オンラインぬり絵をイベント会場でホログラム投影（富岡 航）

- **22年度版 新機能２『スペシャルキャンドルラリー』**
イベント会場にあるQRコード付きのキャンドルを読み取ってスペシャルワードを完成（奥川 亜耶）

- **最後に**

# :candle:イントロ:candle:

:::note info
※これまでのキャンドルイベンプロダクト開発は下記をご参照ください

2020年12月 Candle Night @ Shinjuku Central Parkイベントへのプロダクト提供
[『新宿中央公園キャンドルナイトの塗り絵用投稿・鑑賞サイトについて』](https://qiita.com/rando-gxp/items/979a79371d79f08e7472)
2021年12月 Candle Night @ Shinjukuイベントへのプロダクト提供
[『2021年版キャンドルナイトプロダクト開発のあゆみ(Candle Night @ Shinjuku) ～canvasとの闘いを乗り越えて～』](https://qiita.com/guest-gxp/items/18ed57270aff82cfea80)
:::

毎年恒例となったCandle Night＠Shinjukuイベントも今年で５回目を数えます（グロースエクスパートナーズ([プレスリリース](https://www.gxp-group.co.jp/news/20221201.html))としては今回で３回目のオンラインプロダクト提供となります）。今年も鉄道５社（注1）と学生さんチーム（注2）、そして我々グロースエクスパートナーズの７団体が中心となってイベント全体のデザイン・企画運営を行いました。

（注1）
・小田急電鉄株式会社 ([プレスリリース](https://www.odakyu.jp/news/dq40940000000g02-att/dq40940000000g09.pdf))
・京王電鉄株式会社 ([プレスリリース](https://www.keio.co.jp/news/update/news_release/news_release2022/nr20221128_candlenight.pdf))
・西武鉄道株式会社 ([プレスリリース](https://www.seiburailway.jp/file.jsp?id=13457))
・東京地下鉄株式会社 ([プレスリリース](https://www.tokyometro.jp/news/2022/214056.html ))
・東日本旅客鉄道株式会社 ([プレスリリース](https://www.jreast.co.jp/press/2022/20221128_ho01.pdf))
（注2）
・工学院大学 まち開発プロジェクト -Smart Tech-

イベントの基本コンセプトは昨年を引き継いでいます。ぜひ [こちらの昨年記事](https://qiita.com/guest-gxp/items/18ed57270aff82cfea80) もご覧ください！！
今年もイベントチラシは、工学院大学公認学生団体『まち開発プロジェクト -Smart Tech-』のメンバーによって作成されたもので、今年は弊社米山もサポートさせていただき、昨年よりも更に良いものが出来上がったと思います。担当メンバーの学生さんも４年生で今年が最後の活動年であったのですが、とても充実した創作が行えていたように思います。

(表面)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/9d1ec1c8-b74a-c278-911c-78a3e0c1c1db.png)
(裏面)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/8757a1bb-c01f-c098-ec5d-5adf232d7a29.png)

■12月16日(土)～17日(日)で開催された東口会場「JR新宿駅東口駅前広場」の様子
![image (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/07af258d-06e6-3c4d-e33a-9774971b6462.png)
![image (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/6e1d7054-ea7e-7da2-d29a-93cf09583ef2.png)
![image (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/d4101bb8-e12c-8f45-0cff-e3ebe8fd0106.png)
![image (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/3cc785e9-ddaf-52f7-8344-c7a37b42aa85.png)

ここからは、2022年版プロダクトで新たに開発対応を行った要素について、それぞれ担当メンバーにご紹介いただきます。

# :candle:22年度版 プロダクト画面および工学院さんのデザイン支援:candle:
プロダクトの画面デザインを担当している米山です。
今年は画面デザインに加えて、チラシやサイネージのデザインについても情報整理の部分からサポートさせていただきました。

昨年まではAdobeXDを使って1人で画面デザインを進めていましたが、今年はfigjamを使って、企画段階からチームのみんなで相談しながらコンテンツを固めていきました。figjamを使うことでアイデアや複雑な情報を素早く視覚化できるので、具体と抽象の行き来がスムーズになり、チーム内で共通認識を持って進めることができたと思います。

今回は、粗々のワイヤーフレームまではチームで完成させ、それを元に私の方でfigmaを使用して画面デザインを完成させるという流れでやったのですが、認識のずれによる出し戻しや、1人で悩む時間が最小限になったと思います。デザイン完成後も、figmaを開発チームと共有して任意の形式でエクスポートしてもらうので、書き出しに割いていた時間も大幅に減りました。

チラシとサイネージのデザイン支援については、ユーザーが媒体を目にするシチュエーションを想定して、媒体に応じてユーザーの目線や見え方がどうなるかをfigjamでシミュレーションしながら、基本的なデザインのアドバイスから、情報の強弱や出し分け、ユーザー目線の言葉の選び方などについても考えるお手伝いをさせていただきました。figjamを使うと、各媒体の情報を俯瞰でみることができるので、情報のバランスや抜け漏れをチェックする際にとても役に立ちました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/1a62f694-785d-c804-40b3-45e429a61628.png)

今回のデザインコンセプトは、新宿の夜の賑わいと元気な街のイメージを表現するためにネオンとメンフィスを融合させたデザインが採用になりましたが、限られた時間の中で、工学院さんが何度もブラッシュアップをしてくださったので、とても素敵なデザインに仕上がりました！イベント当日は、ルミネ前のサイネージに表示されているのを発見して、嬉しい気持ちでいっぱいになりました。

### 苦労したこと
今年はキックオフの段階から参加させていただきましたが、リアルとオンラインのイベントで、かつ関係者の多いプロジェクトということもあり、プロジェクトの全体像を把握するのにかなり時間がかかりました。Figjamを活用したことで、情報の視覚化は進めることができましたが、さらに踏み込んで様々な視点から施策を考えるまでに至らなかったので、来年につなげたいなと思います。

### 所感
工学院さんのデザインサポートという形で、プロダクト外の部分でも貢献することができたので良かったと思います。
イベント直前で会場に使うPOPを作ったり、デジタル以外にモノづくりができる点も楽しかったです。


# :candle:22年度版 新機能１『デジタルキャンドル鑑賞』:candle:
デジタルキャンドル鑑賞機能の開発を担当したGxP富岡（@wtomioka-gxp）です。
昨年はぬり絵投稿機能のアップグレードを行い、今年はぬり絵鑑賞機能のアップグレードを目指しました。

### 機能概要
[オンライン塗り絵機能](https://qiita.com/guest-gxp/items/18ed57270aff82cfea80)で投稿された塗り絵を、キャンドルの形に加工して投影します。昨年までは投稿されたぬり絵（画像）をただスライド表示しているだけでした。
現地会場では、画面を透明な板に反射させてホログラム投影を行いました。

![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/fbbfd68e-f16b-432d-8079-79d34ebde915.gif)

ぬり絵を円筒状に加工する前（投稿された状態）
![20221221055126516 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/c6c298a3-89f4-1209-94a3-d4b8505882d4.png)

ぬり絵を円筒状に加工した後
![20221221055126516.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/d085bffb-6163-2992-8621-92464823b02c.gif)

### 苦労したこと
キャンドル鑑賞画面で、キャンドルを円軌道にアニメーションさせるのに苦労しました。
円周上の座標計算にはsinやcos,ラジアンを使うのですがすっかり忘れていて理解するのに少し時間がかかりました。

円周上の座標の計算は、半径rを直角三角形の斜辺とし三角比を利用して以下のように求めることができます。
x座標 = r * cosΘ
y座標 = r * sinΘ

ここで計算できた座標と、画面上に表示（移動）させる位置の調整も苦労しました。
表示させたい位置座標を円周座標に加算することで調整を行いました。
ここでは真ん中に表示したかったので、要素の縦幅横幅の半分を円周座標x, yそれぞれに加算して表示させるようにしました。
また、レスポンシブ対応で円のサイズ（半径）も固定ではなく画面幅によって変えるように工夫しています。

このようなコードになります。（説明のために簡略化しています。）
```js:
// 円の角度（これを変えていくと円軌道で動く）
let angle = 0

// 移動させる要素（キャンドル）
const moveElement = document.getElementById('candle')
// 円の半径（幅の20%）
const radius = Math.floor(document.body.clientWidth * 0.20)
// 円の中心座標
// キャンドルの移動先座標は左上の位置を指定する
// 円周上にキャンドルの中心を置くためにキャンドル縦幅横幅の半分をそれぞれx, yから引く
const moveElementWidthHalfSize = Math.floor(moveElement.clientWidth / 2)
const moveElementHeightHalfSize = Math.floor(moveElement.clientHeight / 2)
const centerX = document.body.clientWidth / 2 - moveElementWidthHalfSize
const centerY = document.body.clientHeight / 2 - moveElementHeightHalfSize

// アニメーション実行
setInterval(animation(), 50);
 
// アニメーション処理
function animation() {
    // 角度をラジアンに変換（ π/180 * 角度）
    var radian = Math.PI / 180 * angle
    // 角度毎の円周上の座標を計算
    var moveX = Math.cos(radian) * radius + centerX;
    var moveY = Math.sin(radian) * radius + centerY;
    // 計算した座標に移動
    moveElement.style.left = moveX + 'px';
    moveElement.style.top = moveY + 'px';
 
    if (angle < 360) {
        // 1度増やす
        angle++;
    } else {
        // 0度に戻す
        angle = 0;
    }
}

```
### 所感
普段の業務では、業務システムを扱っているため数学を使う機会がなかったので新鮮でした。
ゲーム等の開発ではこういったコーディングをするのだと感じることができました。


# :candle:22年度版 新機能２『スペシャルキャンドルラリー』:candle:
スペシャルキャンドルラリー機能の実装を担当した奥川です。

### 機能概要
会場にスペシャルキャンドルが隠されているので探し出しスペシャルキャンドルについているQRコードを読み取ります。QRコードを読み取るとキーワードが一つ埋まるので、すべて見つけ出してキーワードを完成させる機能です。
![2022-12-22_12h31_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/0d3817d6-eb36-a939-5a62-c4a3732ddcc3.png)![2022-12-22_14h23_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/912430/54235b5d-41ab-af0a-c47f-a6f2baa88e3c.png)


### 苦労したこと
この機能はQRコードから読み取るという、外部からの入力があったので、設計に苦労しました。
アプリ内のカメラ読み取り機能とは別にスマートフォンのカメラアプリからでもQRコードは読み取れるので、どこから読み取った場合でもふるまいを同じにしたかったので、どういったQRコードがいいかや、意図しないQRコードを読み取った場合などを考えるのが苦戦したところでもあり、楽しかったです。

### 所感
サーバーサイドを担当することが多いので、フロント部分を扱う機会があったのは新鮮でした。プロダクトをより良いものにするために提案をする機会も多くあったので、開発だけでなくプロダクト企画にも関われることができてよかったです。

# :candle:最後に:candle:
最後まで記事に目を通していただきありがとうございます。
Candle Night @ Shinjukuイベントは、これからも鉄道５社を中心に、リアル創作を学生さん、デジタル創作を弊社という役割を分担し今後もイベント企画全体のブラッシュアップを行いたいと思っています。
弊社としてもオンラインプロダクトをより良くするというのはもちろんのことですが、これはあくまで手段の１つであるため、イベント企画全体のデザインをどうしていくべきか？（リアルとオンラインの融合）についても引き続き考えていきたいと思います。
イベント全体がどういう成長・変化をしていくのか？！ぜひ毎年の楽しみにしていただけますと幸いです。