Googleの新サービス「AppSheet」でお酒のカタログアプリを作ってみたよ

##はじめに
最近「プログラミングができたらいいのにー」、ていう人が増えている気がしますよね。

でもプログラミングって、いざ勉強しようとするととっつきづらいものだと感じるんですよね。
**環境構築? IDEのインストール? 言語? どれ選んだらいいのかわかんないんだけどーーーー！！**

よくある光景だと思います。

そんな中、昨今ではコードが不要だとか、ほとんどコードを書かなくてもアプリが作れちゃう、みたいなサービスも出てきています。

ということで、今年の1月にGoogle社が買収したという、
**ほとんどコードを書かなくてもアプリが作れちゃうサービス「AppSheet」**を使って、お酒のカタログアプリを作ってみようと思います。
**しかも、基本は無料で使えます！**

（ただ触ってみた感じ、やはりデータベースの設計とか、基本的なアプリの作り方を知っている人の方が圧倒的に理解は進むと思います。）

##AppSheetなるものを触ってみる
「ふふん、ほとんどコードを書かなくてもアプリができるなんていい時代だなー」と思って、早速以下のページにアクセスしてみます。
[AppSheetの公式ページ](https://www.appsheet.com/)

<img width="1564" alt="スクリーンショット 2020-04-14 14.59.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/64d99f0e-0ac6-9a79-d9aa-da76ed9409dc.png">

画面右上の「Login」ボタンを押します。

<img width="1383" alt="スクリーンショット 2020-04-14 15.00.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/17f30b87-e960-481c-0d35-82b6d36eb086.png">
なんでもいいと思いますが、googleアカウントを持っているので、「Google」でのサインインを選択しました。

<img width="928" alt="スクリーンショット 2020-04-14 15.42.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/57398ecf-d12b-9645-cbca-5f63600db47a.png">
こんな感じの画面に遷移します。
僕は色々テストしているので、色々あります）
早速、画面右上の「+New app」をクリックしてみましょう。
めくるめくアプリ制作への第一歩！

<img width="873" alt="スクリーンショット 2020-04-14 15.02.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/cac98ee2-f4f4-3ca8-2752-39028267206a.png">
おう。。。
どれを選べばいいんだ。

ちょっと触ってみたところ、それぞれ以下のような感じになるようです。
**「Start with your own data」**：事前にデータを用意しておき、それをもとにしてアプリを作る
**「Start with an idea」**：アプリ作成時にデータも作ってくれる
**「Start with a sample data」**：サンプルアプリを利用できる

色々触ってみましたが、僕は「Start with your own data」がとっつきやすかったので、これで進めようと思います。
ただ、事前にデータを用意しないといけません。

データってなんだ?　と思われるかもしれません。
アプリ制作をご存知の方だと、「おいおい、もしかしてmysqlとか必要なのかよ」と思われるかもしれません。

いいえ、**スプレッドシート**を作成してください!

スプレッドシートの詳細は割愛しますが、
簡単に言うと、Googleアカウント利用者が使える、**エクセルみたいなもの**です。
Googleドライブにアクセスして、任意の場所で右クリックして「Googleスプレッドシート」を選択します。

エクセルちっくな画面が表示されます。
<img width="802" alt="スクリーンショット 2020-04-14 15.05.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/7fd93711-04e4-b1df-37ef-1b9050834b12.png">
そして、こんな感じで定義します。
ファイル名は「LiquorDataTest」として、
商品ID、商品名、説明文、画像、URLという項目を記述します。
最後に、タブは「商品」とします。


これで事前準備はOK!


<img width="873" alt="スクリーンショット 2020-04-14 15.02.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/9f04a00a-ec18-3191-dc6b-9f095bd23663.png">
改めてこの画面まで進み、「Start with your own data」を選択します。

<img width="756" alt="スクリーンショット 2020-04-14 15.06.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/1d5c35cb-aaf5-6eb4-a82a-82c694668f83.png">
作成するアプリ名とカテゴリーを聞かれるので、
アプリ名に「LiquorListTest」
カテゴリーはよくわからないので、適当に「Sales & CRM」とします。
「Next step: choose your data」をクリックして進みます。

<img width="680" alt="スクリーンショット 2020-04-14 15.06.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/94c2524f-3b6d-4711-597d-cf98745d8e3f.png">
続いて、どのデータを使用するかを聞かれます。
先ほど用意したスプレッドシートの出番です。

ここでは「google」を選択します。
（他にもsalesforceと連携もできました。色々データ元は選べるようです）

<img width="1049" alt="スクリーンショット 2020-04-14 15.06.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/f5eba571-2ecd-1231-c1c8-083b6fbaf86f.png">
googleドライブ内のファイル一覧が表示されるので、先ほど作成した「LiquorListTest」のスプレッドシートを選択します。

<img width="1239" alt="スクリーンショット 2020-04-14 16.03.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/1647f10b-6746-b8f3-48f2-7dadbe48ee8c.png">
これで、ダッシュボード画面が表示されました。
いよいよアプリの作成が開始です！

画面右側には、スマホでのシミュレータが表示されています。
これで、アプリの変更時の挙動がリアルタイムですぐに確認することができます。

<img width="1272" alt="スクリーンショット 2020-04-14 16.07.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/c8b92008-bcb4-92fb-ee61-b9be32417b67.png">
画面左の「UX」タブを押すと、作成したスプレッドシートの「商品」タブのデータに紐づいた「商品」ビューが作成されていることがわかります。

<img width="1072" alt="スクリーンショット 2020-04-14 16.10.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/8d77fece-ca82-11a2-62cb-9790803b02c7.png">
画面左の「info」タブを押すと、今の構成が図示されます。
「商品」というデータと、それを表示する画面（ビュー）で構成されているアプリ、ということがわかります。


##データを追加して動きをみてみるよ
では、続いて「商品」タブにデータを追加してみます。
以下の感じで各項目にデータを入力します。
「URL」列には、Amazonへの商品のリンクを記載しています。
「画像」のみ、現時点では入力を行なっていません。
<img width="948" alt="スクリーンショット 2020-04-14 15.09.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/b6443d23-1e42-93ac-2c9e-81a91ceb93fa.png">


AppSheetの画面に戻り、シミュレータの画面の更新ボタンを押して、アプリにデータを反映させます。
<img width="370" alt="スクリーンショット 2020-04-14 16.20.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/4138a6e5-eb2d-8583-ff8c-7f5e935e6694.png">

データを反映したことを確認できます。
<img width="242" alt="スクリーンショット 2020-04-14 16.22.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/1b45eb10-2a78-728f-fb2b-a135e6eb008a.png">


##設定を微調整していきます（データ定義の変更）
先ほどスプレッドシートにデータを追加しましたが、まだ設定していない列があります。
「画像」列ですね。
では、画面から画像を登録していこうと思います。

適当なデータをクリックしてください。
詳細情報が表示されます。
続いて、情報の編集を行いたいので、青い鉛筆のアイコンをクリックします。
<img width="421" alt="スクリーンショット 2020-04-14 15.10.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/87f57640-18e6-1743-4098-8dd037718d86.png">

「画像」列を編集したいのですが。
<img width="384" alt="スクリーンショット 2020-04-14 15.11.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/90a5cd61-df15-41ad-eae9-4635025aa019.png">
画像ってどうやって登録するんだろ〜。
そもそもできるのかなー。

そんな不安に駆られましたが、ちょっと先生に聞いてみたところ、画像の登録もできるようです。
そりゃそうですよね。Googleさんが買収するようなアプリです。
画像の登録程度のことができないわけがありませんでした。

[画像の登録の仕方](https://help.appsheet.com/en/articles/2155495-how-to-display-videos-and-images-in-your-app)

内容を確認したところ、
「画像を設定するには、データの定義をImageとして設定してね」とのこと。
早速アプリの変更をしていきます。

「Data」から「Columns」をクリックすると、「商品」データのデータ構成が確認できます。
<img width="1320" alt="スクリーンショット 2020-04-14 16.34.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/5eedffed-c8b0-a87d-a28d-29462552e753.png">

最初、「説明文」と「画像」のTYPEが「TEXT」に設定されていたので、以下のように変更してやります。
ついでに、Image以外にも変更していきます。
**「説明」のTYPE**：「LongText」　（これで、改行などが対応して表示してくれます）
**「画像」のTYPE**：「Image」

ついでに、**「商品名」と「説明文」のREQUIRE?にチェックを入れます。**
このREQUIRE?は、アプリからデータを登録/編集する際、必須入力項目かどうかを設定できます。

項目を変更したら、画面右上の「SAVE」ボタンが青くなります。
「SAVE」ボタンをクリックすると、有効化されます。

上記のキャプチャをみてもらうと、「画像」項目がカメラのボタンが付加されていることがわかると思います。
これで、画像の登録が可能となります。


カメラのボタンをクリックして、好みの画像を選択します。
<img width="795" alt="スクリーンショット 2020-04-14 15.21.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/3237e98f-9c5d-4e5f-f2b1-3595126aa56c.png">


画像が選択されたので、このまま「SAVE」ボタンをクリックします。
<img width="1178" alt="スクリーンショット 2020-04-14 16.45.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/24a92852-d784-0084-2fc5-acb2d9c6a97d.png">


商品の一覧画面に戻ると、画像が登録されていることが確認できました。
<img width="1212" alt="スクリーンショット 2020-04-14 16.45.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/f64a9856-f774-df0e-6392-1762cdf19dd0.png">



<img width="380" alt="スクリーンショット 2020-04-14 15.22.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/1a764356-9ebd-fecc-32e4-59549fdccf70.png">
アプリ部分をアップにしてみました。
画像が見切れています。
どうやら、酒瓶のような縦長画像は見切れるようですね。
正方形の画像が用意できるなら、それが理想です。

ちなみに、ゴミ箱ボタンで、データが削除できます。


<img width="356" alt="スクリーンショット 2020-04-14 16.47.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/5ecc6df7-8d05-e53e-f925-c9354e7b4525.png">
頑張って全てのデータに画像を登録しました。

ところで、画像ってスプレッドシートにはどうやって登録されてるんでしょうね?


<img width="922" alt="スクリーンショット 2020-04-14 15.25.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/300d04ae-178a-1eca-b841-dc84034dd026.png">
なるほど、「画像」列には画像のリンクが格納されているようですね。
Googleドライブを確認すると、画像用の「商品_Images」と言うフォルダが作成され、その中に先ほど頑張って登録した画像が格納されていました。


先ほどは画像のみ変更（追加）しましたが、もちろん他の項目も編集可能です。
<img width="381" alt="スクリーンショット 2020-04-14 15.25.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/2fe2e808-3c13-cd2e-b9ca-0b29cd579448.png">
説明文に1行追加して、「SAVE」をクリックします。

<img width="382" alt="スクリーンショット 2020-04-14 15.25.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/0ecf6985-ba1a-099a-0b40-bfbfccf593fc.png">
変更できました。

<img width="786" alt="スクリーンショット 2020-04-14 15.26.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/089e164e-8fa9-e631-f4ce-b89b40810b61.png">
スプレッドシート側も、データが反映されています。


##設定をさらに微調整していきます（ビューの設定変更）
今のままでも、一覧表としてはいいのですが、「商品ID」は表示しなくてもいいかなと思います。
<img width="377" alt="スクリーンショット 2020-04-14 17.21.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/d1130792-9c6e-ab45-6ce7-c75210b2d35f.png">

さあ、表示内容を変更していきましょう。
「UX」ボタンをクリックします。
そのあと、「商品」をクリックします。
<img width="1537" alt="スクリーンショット 2020-04-14 17.22.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/8fb27b2f-b67f-627a-e3e8-136947f5dc38.png">

すると、「商品」ビューのオプションの設定が可能になります。
<img width="1330" alt="スクリーンショット 2020-04-14 17.22.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/aab363d6-4a1e-65d0-e57c-b24b4abfb1e0.png">

ここで、「View Option」の変更をします。
**「Main Image」：**画像を選択
**「Primary header」：**商品名
**「Secondary header」：**none
<img width="1693" alt="スクリーンショット 2020-04-14 17.23.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167745/18e8a0da-a8d1-c48e-7fac-c4a24f946d65.png">
これで、表示はスッキリしたのではないでしょうか。
画面は見切れていますが、「SAVE」ボタンを押して、設定を反映させます。



##まとめ
とりあえずこれで、スプレッドシートの「商品」データの一覧を表示することができました。
画面はアプリが勝手に作ってくれるので、最初は以下のことを意識すればいいのかと思います。
・データの用意
・データ構造の設定
・画面のオプション設定

アプリ制作をされている方だと、「スプレッドシートでできるのは簡単だけど、リレーショナルデータベースみたいに参照とかできたら幅が広がるのになー」と思われた方もいるかもしれません。
**安心してください、できますよ！**

今のアプリでは、商品が一覧で表示されるだけです。
これではデータ量が増えてくると、とてもみづらくなっていきます。
一応、画面の上にある虫眼鏡ボタンから検索はできるのですが、いちいち検索をかけなければならないというのも不便です。

そこで、次回はデータの参照機能を利用して、お酒の種類（ワインやウイスキーなど）ごとにカテゴライズする方法を書いていきたいと思います。
[次回の記事はこちら（Googleの新サービス「AppSheet」でお酒のカタログアプリを作ってみたよ_其の弐）](https://qiita.com/kazu_tekuru/items/f9dd64393e8e155e8a82)