【サービス終了】Google App Makerを使ってコードを書かずに秒速で社内業務アプリを作ろう

(2020年1月、GoogleがAppsheetの買収に伴い、App Makerのサービス終了をアナウンスしました。2020年3月末をもって、App Makerを使った新サービスの作成はできなくなります。）

##こんなメンバー名簿を作ります
[Gsuite](https://gsuite.google.com/intl/ja/landing/partners/referral/trial.html?utm_source=sign-up&utm_medium=referral&utm_campaign=apps-referral-program&utm_content=O7136RI)の同じドメインを利用しているメンバー一覧ページがあって名前やスキルで検索することができます。
<img width="1275" alt="スクリーンショット 2018-12-18 21.25.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/779d7cfe-6e51-e366-e0b7-18ea9fa5941b.png">
クリックすると一人一人のページに行けます。またMy Profileで自分の役割やスキルを書き込み、他の人に推薦してもらうことができます。お、さっき作ったばかりなのに、私の[App Maker](https://developers.google.com/appmaker/)のスキルを誰か一人推薦してくれているようですね:grinning:
<img width="1272" alt="スクリーンショット 2018-12-18 21.41.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/97736f06-f1ab-46c4-baca-0b9849fad11d.png">

##なぜメンバー名簿を作るの？
2018年12月現在、保険スタートアップの[justInCase](https://justincase.jp)では、香港在住でCTOの@hkzm、NZ在住でChief Software Engineerの@takkyun、ベルリン在住のデザイナー@meyco、和歌山在住のアプリエンジニア女子[Akiko](https://twitter.com/ucuzuw)をはじめ、リモートで働くメンバーが多いです。副業やインターンなどでパートタイムのメンバーも多いので、新しい方が入るたびに、「Slackに人がいっぱいいるけど、この人たち誰？どういう人たち？名簿はないの？」という問い合わせがありました。もちろん、時折オフサイトミーティングを行うようにしているのですが、そんなにしょっちゅうは出来ません。ま、リクエストが多いので、名簿、作ることにしました。

##なぜGoogle App Makerで作るの？
1. [Google App Maker](https://developers.google.com/appmaker/)を使うと同じGoogleのサービスである[Gsuite](https://gsuite.google.com/intl/ja/landing/partners/referral/trial.html?utm_source=sign-up&utm_medium=referral&utm_campaign=apps-referral-program&utm_content=O7136RI)のメンバーディレクトリをそのままアプリのデータベースとして使えるので、新しいメンバーも自動で追加出来るという利点があります。[justInCase](https://justincase.jp)に参画してくれたメンバーにはGsuiteを活用して、justincase.jpドメインのメールアドレスを発行して、Google DriveやBitbucketやJIRAなど様々なツールのアクセス管理をしているので、この利点は大きいです。

2. [Google App Maker](https://developers.google.com/appmaker/)には、コードをほとんど書かずに積み木感覚で、マテリアルデザインのUIでリレーショナルDBが裏側にあるアプリを、誰でも組み立てられる、という手軽さがあります。テンプレやサンプルもたくさん準備されています。[justInCaseはエンジニア不足](https://www.wantedly.com/companies/justincase) で、エンジニアたちは超多忙を極めているので、社内だけで使う業務アプリを作ってもらう時間はないのです。

3. [Google App Maker](https://developers.google.com/appmaker/)で作ったアプリは同じGsuiteのドメイン利用者からしか見えない、というのも大きなポイントです。社内業務アプリは外に見せるものではないですよね。

4. [Google App Maker](https://developers.google.com/appmaker/)で作ると、他のGoogleアプリとの連携も簡単なようです。名簿にレポジトリ別コミット数統計を入れたい、というリクエストがあったのですが、まだ対応していません。でも、BitbucketのAPIからGoogle APp Scriptでデータを取ってきてGoogle Spreadsheetで可視化する、というのは出来ることがわかっているので、あと一歩かな、と。

5. で、なんといっても[Google App Maker](https://developers.google.com/appmaker/)はGsuite Business、Gsuite Enterprise利用者は無料で使えるということです。

[^1]: [Gsuite](https://gsuite.google.com/intl/ja/landing/partners/referral/trial.html?utm_source=sign-up&utm_medium=referral&utm_campaign=apps-referral-program&utm_content=O7136RI)のサイトから入って、次のプロモーションコードを入れると、Gsuite Businessプラン初年度の利用料金が20%引きになります：T4UQLVFADL9FLR4

##下準備2つ

それでは早速アプリ制作をはじめたいと思います。ただ、その前に2つやっておくことがあります。

1. Gsuite Business、Gsuite Enterprise、Gsuite Educationの利用者でないと[Google App Maker](https://developers.google.com/appmaker/)は使えません。もし会社やグループでまだGsuite Business以上を使っていなければ、申し込みましょう。Gsuite Businessは有料ですが、お得情報をもらったので、下に貼っておきます。[^1]

2. これから作るアプリのデータを保存するために、Google Cloud SQLのセットアップということをします。Gsuiteの管理者でないと出来ないので、もし自分が管理者でなければ、管理者にお願いしましょう。この[ヘルプ](https://support.google.com/a/answer/7550053?hl=ja)に沿って一度だけ設定すれば、あとは何度でもApp Makerを使って幾つでもアプリが作れます。

##アプリを作ります

前置きが長くなりましたが、いよいよアプリを作ります。このあとは秒速です、本当に。

###適当なテンプレを選ぶ
[Google App Maker](https://developers.google.com/appmaker/)には業務アプリの[サンプル](https://developers.google.com/appmaker/samples/)や[テンプレート](https://developers.google.com/appmaker/templates/)が各種準備されています。メンバー名簿の他にも、社内Q&Aフォーラム、プロジェクト管理ツール、文書承認ワークフロー、など色々あります。今回は、[People Skills](https://developers.google.com/appmaker/templates/people-skills/)というテンプレを使うことにしました。[^2]

[^2]: もし本当に社員名簿を作る場合、[People Viewer](https://developers.google.com/appmaker/templates/people-viewer/)というテンプレも良いので、チェックしてみて下さい。

###選んだテンプレを開く
このボタンをぽちっと押すだけ。
<img width="1197" alt="スクリーンショット 2018-12-19 11.25.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/df118953-d554-524c-ca9c-9de5d42a0d6a.png">

するとテンプレが開きました。右上のPreviewを押して、どんなアプリなのか見てみましょう。
<img width="1277" alt="スクリーンショット 2018-12-19 11.27.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/7968b79c-dd05-e384-00a9-76586c25a671.png">

Preview画面です。なんかもうほとんど出来ていますね。もちろん、ここでやめて完成、とするのもありです。
<img width="1279" alt="スクリーンショット 2018-12-19 11.28.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/3e85f92b-af88-b234-645f-055c31552cdb.png">

###ちょっとカスタマイズする -  データベース編
今回はカスタム項目を入れる枠を１つ作ってみましょう。代表の畑がメンバー一人ずつ紹介文を自分で書きたいとか言ってたので、その枠を作成したいと思います。メンバー一人ずつに紐付くデータベースがあったら、それにフィールドを一つ加える、というのが簡単そうですね。

左横のパネルからデータソース User Settingsを選んで開き、Add Fieldボタンを押します。すると、どんなタイプのレコードを格納するのか聞かれますので、今回は文章ですからStringを選びました。
<img width="1277" alt="スクリーンショット 2018-12-19 11.41.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/78f7b860-e619-c939-1f84-0eaff895fcd9.png">

フィールドの名前を適当につけて、今回はIntroductionとしましょうか、ついでに説明も入れました。おしまい。なんでこれで出来てしまうのかというと、このテンプレのUser SettingのDatasourceには、ユーザーのGsuiteメールアドレスと紐づけるスクリプトがすでに書かれているからです。
<img width="1277" alt="スクリーンショット 2018-12-19 11.54.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/39ffc2d9-34b9-558a-6a63-667b54a01176.png">

###ちょっとカスタマイズする -  UI部品編

データベースに新しい項目が出来たので、次は表示する部品をページに配置します。元のPeopleページに戻り、左上のWidgetアイコンをクリックします。そうすると、さまざなUI部品の選択肢が提示されます。Form とかText AreaとかTableとか色々ありますね。これらをドラッグ＆ドロップしてきて好みのUIを作成します。私は横着なので、すでに画面にあるEndorsementの部品をコピペして中身を入れ替えるだけで次画面のIntroductionを作成しました。
<img width="1277" alt="スクリーンショット 2018-12-19 12.01.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/c8d92f36-9114-d193-9a5d-b52a261b3a40.png">

###ちょっとカスタマイズする -  UI部品とデータの紐付け編
今、作成したUI部品に名前をつけ、先ほど作成したデータを紐付けます。と言っても、名前は適当にタイプするだけ、datasourceが先ほどフイールドを作ったテーブルのUser Settingsになっているのを確認してから、選択肢の中から先ほど作成したフィールド名のIntrodutionが見えるので、選択します。そうすると、勝手に@datasource.item.introductionという短いコードが入りました！　これで作業はおしまいです。
<img width="1273" alt="スクリーンショット 2018-12-19 12.14.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/4e0d64de-46b3-6eb3-aecf-bae5b6c6b1d3.png">
プレビューで意図した通りに出来ているか確認しましょう。大丈夫そうですね。
<img width="953" alt="スクリーンショット 2018-12-19 12.23.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/f4b12062-b82f-1da2-17f6-176dd848387b.png">

###PUBLISHする
「Publish」→「Publish New Deployment」の順にボタンを押していくと、アプリとして組織のみんなで使えるようになり、アプリの場所を示すアドレスがもらえます。途中、色々設定画面がありますが、私は基本、Deployment Nameには日付を入れ、その他はデフォルトのままにしています。お疲れさまでした！
<img width="1279" alt="スクリーンショット 2018-12-19 12.24.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/322998/3d49bfaf-fa83-cfbe-668b-c7573d6b89f2.png">

##おまけ、Google Sitesに埋め込む
[Google App Maker](https://developers.google.com/appmaker/)で作ったアプリは長々しい意味不明なURLでアクセスすることになります。それはあまり美しくないので、冒頭の見本は[Google Sites](https://sites.google.com/a/justincase.jp)を作成して埋め込んでいます。[^3]　[Google Sites](https://sites.google.com/a/justincase.jp)にいくつかの[Google App Maker](https://developers.google.com/appmaker/)で作ったアプリを埋め込んで便利なイントラ的に育てて行くこともできるようです。それはまた別の機会に。

[^3]: 参考https://qiita.com/howdy39/items/3d08808826256955466c