デザインの素人がNoodlで架空ケーキ屋さんのWebサイトUIを作ってみた

#概要
　Noodl Advent Calender 22日目！

　毎月22日はショートケーキの日というのはご存じでしょうか。
なぜなら、カレンダーで22日の上は15（イチゴ）日が来るからです。
15（イチゴ）が乗っているといえば「ショートケーキ」ですね。
ということで、22日はショートケーキの日だそうです。

　また、NoodlはUI/UXのプロトタイピングツールです。本来はデザイナーとエンジニアの橋渡しをして爆速でプロトタイピングを行う目的で使用されるようです。

　前述の「ショートケーキの日」とNoodl本来の用途を踏まえて、架空のケーキ屋さんのアプリ画面を作ってみました。

#デモ
　今回はアプリを起動した直後の画面と、トップページ画面を作ってみました。

デモ動画はこちら。
https://youtu.be/I5-M_Yf_zww


【起動直後画面】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/20c61abf-fccc-0d6d-ae13-81977d61544a.png)

　この画面のテキストはジワ～っと浮き上がるように表示されます。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">チラッ！（パート３） <a href="https://t.co/PHYPjgfEnN">pic.twitter.com/PHYPjgfEnN</a></p>&mdash; まえぷー@アウトプット復活！！ (@kmaepu) <a href="https://twitter.com/kmaepu/status/1207952014933540864?ref_src=twsrc%5Etfw">December 20, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

【トップページ画面】
ショップのトップページです。タイトル下の部分はスクロール式のバナーになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/182e340d-9ca2-dbd4-2c64-f893a2e6e3ab.png)

#解説
###起動直後画面
　Noodlで文字を表示するには「Textノード」を使用します。文字をジワ～っと表示させる仕組みとしてTextノードの**Opacity**を動的に設定しています。Opacityとは”透明度”です。設定値が0に近づくにつれて透明になります。
　Opacityの初期値を0とし、ページが表示されたらカウントを開始して50msごとにOpacityを0.1インクリメントするようにしています。
　フローは次のようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/2426f15b-fa42-d91a-63e8-a16253e703b1.png)

　フローの中に**Timer Counter**というノードがありますが、これは自作コンポーネントです。中身は次のようなフローになっています。Noodlのテクニック「**無限タイマー**」を利用しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/2e7dbd9c-8a45-8da4-2c1c-2d105b380244.png)

　javascriptノードでは無限タイマーの出力をトリガにしてカウントをしています。
コードは次のようになっています。

```javascript
define({
    inputs: {
        trig: "boolean",
        inc:"number"
    },
    outputs: {
        stop:"boolean",
        count:"number"
    },
    destroy: function(inputs, outputs) {

    },
    setup: function(inputs, outputs) {
        outputs.count = 0;
    },
    run: function(inputs, outputs, changedInputs) {
        if(inputs.trig === true)
        {
            if(outputs.count > 1){
                outputs.stop = true;
            }
            else
            {
                outputs.count += inputs.inc;
            }
        }
    }
});
```

###トップページ画面
　この画面では次の5種類の要素で構成されています。

- お店の名前
- バナー
- SNS
- 別ページ遷移ボタン
- 背景

####お店の名前
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/8a6a658d-27db-76b6-a8d9-5104d8a83196.png)

　この部分は起動直後画面のフローをコピペして利用し、テキストの配置を変えました。フローは次のようになっています。
　「Stack Layoutノード」で縦並びから横並びに変えています。

　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/e3d9a149-3293-0937-02d9-fc7570a42f8e.png)

####バナー
　Webサイトによくある横スクロール式のバナーです。今回は「クリスマスフェアー」と「12月のオススメ」コンテンツを要しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/d8aff90c-e8f0-5443-ca95-860f89ebb42b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/e6023740-5e02-2d0d-2fdb-daa2146e94ba.png)
　フローは次のようになっています。「**Scroll Viewノード**」でスライドして表示するコンテンツを変えることができます。コンテンツは自作コンポーネントbannerの中に構築しました。今回は画像を表示させています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/a8b766f1-7166-b725-1566-1ed0e119ed4d.png)
####SNS
　お店のSNSへのリンクに画像アイコンを用意しました。　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/2cc05960-bc6f-d429-aaf7-464a136e8ec7.png)
　画像はインスタグラムとTwitterの公式サイトで配布しているものを利用しました。フローは次のようになっています。今回はリンクを実装していません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/7a5a3459-0c92-1a6f-5c5a-3e128cae1c21.png)
####別ページ遷移ボタン
　メニューや予約ページに遷移するためのボタンを用意してみました。　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/c78103ed-1bc8-0b50-466a-feaf460a0a7e.png)
　フローは次のようになっています。今回はページ遷移を用意していませんが「Page Navigationノード」を使うとページ遷移ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/4b852061-1bdf-ecfb-dcca-b3653f36aeef.png)
####背景
　背景には動画を利用しています。後ろで料理中の動画が流れています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/10fb67bd-1b3f-0a85-fb9e-143753728cf8.png)
　フローは次のようになっています。動画表示は「**Videoノード**」で行っています。このVideoノードもOpacityを調整してあまり強調しないようにしています。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/813610da-802a-de72-9269-c6250abc0693.png)

#おわりに
　それっぽい画面は作れても、自分以外のユーザに使ってもらうこと考えたら「見やすさ」「操作のしやすさ」「店側が伝えたいことがユーザへ的確に伝わるか」など考えることが沢山あると感じました。

　ショップ名の「Noodl」はオシャレにしたかったので様々な文字フォントを試しました。この文字フォントを探すだけで1時間くらいかかっています(笑)バナーのクリスマスフェアーに使っている文字フォントも特殊なものです。