GlideでGoogle Spread SheetからPWAアプリを作成する

#サンプル
![スクリーンショット 2020-01-24 21.21.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/20b4c8c4-551e-a759-b26f-01af35bc88c3.png)

これから作成するアプリは、下記のURLにサンプルを作成しております。
https://niocity.glideapp.io
（以前は、PCでも閲覧できたのですが、今みたら、スマホのみ表示可能でした。）

このアプリは、外国人向けに町内のレストランやショップなどを案内する目的で作成されています。
外国人向けですので、表示は英語ですが、Glideでは日本語の使用も可能です。

#準備するもの
**1. Googleアカウント**
Google Spread Sheetを利用します。
また、画像を保存しますのでGoogle Driveも使用します。
**2. Glideアカウント**
[Glide](https://www.glideapps.com/)のホームページにアクセスしてサインアップしましょう。
登録が完了すると自分専用の画面が表示されます。

#アプリの構成を考える
アプリを作る場合は「New App」を押すとを作ることができます。
「New App」を押すと Google Spread Sheetを選択してくださいという画面になりますので、その前に アプリで使うGoogle Spread Sheetを用意しましょう。

アプリに表示する項目数に決まりはありません。
まずは、どんなアプリにしたいかを設計しておきましょう。

#Spread Sheetの作成
Spread Sheetの一行目にタイトルを入れます。ここだけ英語で入力します（データは日本語OKです）。
このタイトルは、GlideとSpread Sheetの項目を関連付ける際に使用されます。

次にSpread Sheet下部にあるタブの名称を変更します。ここがアプリの下部のメニューと連動します。
つまり、タブを増やせばページを増やすことができます。

![スクリーンショット 2020-01-23 13.31.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/8c7c286b-c61b-5a57-7584-362bbb31694e.png)

タイトルとタブを入力したら、Spread Sheetに、データを入力していきます。
電話番号やEメールなどは、後ほどの設定で直接電話したりメーラーを起動したりするように設定できますので、半角英数字で間違いの無いように記述しましょう。

ここで難しいのは、画像と地図情報の扱いだと思います。

![スクリーンショット 2020-01-23 13.30.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/23b9cdb4-1432-a0be-955c-05916a1688ff.png)

###地図のピンのデータについて###
地図の扱いについては、住所から地図にピンをうつことができます。
しかし、稀に間違った場所にピンが表示されることがありますので、ジオコードでの入力がお薦めです。
Google Mapで目的の場所を右クリックするとコンテクストメニューが出ますので、「この場所について」をクリック。「34.188387, 133.649067」のようなデータが出てきますので、それをSpread Sheetに入力してください。

![スクリーンショット 2020-01-24 20.52.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/9f3ce579-4c09-fa23-7012-a09d854819d1.png)


###画像をGlideで扱う手順###
情報として画像を使用したい場合は、Spread Sheetに画像のURLを入力します。そのため、自分の管理するWEBサーバーに画像をアプロードしてそのURLを記述するという方法で掲載します。

自分で契約しているサーバーが無い場合は、Google Driveで画像URLを取得する方法をお伝えします。

1. まず、Spread Sheetに画像のURLを記述する項目を増やしてください。項目タイトルはPhotoやImageなど任意で分かり易いものをつけておきましょう。

2. 次に、画像を準備します。画像サイズは、あまり大きいとダウンロードに時間がかかるため、横幅800ピクセル程度が良いと思います。用意した画像をGoogle Driveの任意の場所にアップロードします。

3. アップロードした画像を右クリックしコンテクストメニューから、「共有可能なリンクを取得」を選択します。この際に自動で画像共有もONになるのですが、あまり早く画面遷移してしまうとONにならない場合もあるので、注意してください。

4. クリップボードにURLがコピーされた状態になりましたので、それをSpread Sheetの列に貼り付けます。これだけで、Glide内で画像を扱うことができます。

![スクリーンショット 2020-01-23 13.38.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/04aecd30-f95c-a69c-ccbe-78c78e955ed4.png)

#Glideアプリの新規作成
アプリを作る場合は、ログイン後、最初の画面で「New app」を押すとを作ることができます。
「New app」を押すと Google Spread Sheetを選択してくださいという画面になりますので、先ほど作成したSpread Sheetを選択します。すると、読み込みの後、下記のような画面が立ち上がります。データは、Spread Sheetで作成したデータが入っています。この画面はまだ読み込みが完全ではありません。しばらくすると、データが全て反映されます。
![スクリーンショット 2020-01-23 13.54.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/f7463359-8b53-a361-2c9d-4bf2638bfc2e.png)

#アプリのカスタマイズ
GlideとSpread Sheetを関連付けただけで、アプリの基本機能はある程度設定されているかと思います。これを理想のアプリに近づけるためにカスタマイズを行います。

とはいえ、機能の全てを網羅するのは難しいため、重要な3つの項目についてお伝えします。
左側のメニューにある「Layout」「Tabs」「Settings」です。

###レイアウトの設定###
![Properties.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/d36bcac7-93e0-b9ee-420c-67c90b577836.jpeg)
レイアウトは、一覧ページや詳細ページ、地図ページなど、それぞれのページ毎に設定を行う必要があります。同じ機能でもタブが異なればもう一度設定する必要がある場合もあるので、漏れの無いように気をつける必要があります。

最初にすることは、ページのSTYLEを選ぶことです。それによって、設定項目が異なります。細かい部分は選んだSTYLEによって異なるのですが、STYLEのすぐ下のDATAという部分で用意されたこSTYLE項目とSpread Sheetの項目を関連付けるのが2番目に行う作業になります。

###タブの設定###
![Tabs.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/ff164d76-5590-f8bc-7157-214b8f9f15b0.jpeg)


画面下のタブの調整を行いましょう。ここではタブの順番や名称、アイコンを決めます。アイコンはあらかじめ用意されているものから選びます。タブを増やしたり、減らしたりもできます。

###設定画面###
![Setting.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/bb2fa621-f4c7-e838-4074-a745e1c980ec.jpeg)

設定画面では、アプリ全体の基本を決めます。アイコンの画像を用意したほうが良いでしょう。画像のサイズについての記述はありませんが、200ピクセルくらいで良いと思います。

アプリの名前を決めて、公開レベルを設定します。

#公開#
さて、最後に左メニューの「Share App」から公開をします。
URLを決めて友達みんなに教えましょう。

![ShareApp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520138/b55f16bc-bbec-101c-90b6-49b836a2a1c2.jpeg)