Medley Developer Blog

株式会社メドレーのエンジニア・デザイナーによるブログです

Google Cloud Next '19 in Tokyo にて、App Maker の活用事例を紹介しました

はじめに

こんにちは、コーポレートエンジニアの若林です。

普段はいわゆる社内SE的な領域を担当していますが、その名の通りエンジニアの視点も持ったコーポレート機能という立ち位置で、社員の働く基盤や事業の発展を支えています。 過去のコーポレートエンジニアの取り組みや、マインドについては以下が参考になるかと思います。

今回もその取り組みの一環で、先日開催された Google Cloud Next '19 in Tokyo に、カスタマースピーカーという形で弊社執行役員の兼松と共に登壇させて頂きました。

今回は、登壇させて頂いたセッション Google Apps Script / AppMaker 最新アップデートと活用のヒント について、セッションでお伝えした内容を含めたレポートを書きたいと思います。

Google Cloud Next '19 in Tokyo について

Google Cloud Next は、年一度 Google 主催で催されるGoogle テクノロジーに関するカンファレンスです(今年は、サンフランシスコ、東京、ロンドンの世界3会場開催)

メドレー社内でも、G Suite を中心に Google Cloud の活用事例が増えてきていることもあり、社内の新しいアプリケーションプラットフォームとして採用している App Maker の話でスピーカー応募してみようということになりました。

なお、登壇させて頂いたセッションですが、一般申込受付が始まってすぐに満席になってしまい、私がSNSでアナウンスしても既に満席で申し込めないような状態になっておりました・・・

会場の雰囲気

f:id:medley_inc:20190821171227j:plain
東京タワーとの一枚

f:id:medley_inc:20190821171259j:plain
登壇の様子(背景と同色なのは偶然です)

セッション内容について

Google Apps Script / AppMaker 最新アップデートと活用のヒント

今回は、Google の深堀さん、嘉穂無線の太田さんとの合同セッションという形で登壇させて頂きました。

まずGoogleの深掘さんが、「G Suite を拡張開発するテクノロジーの全体概要と活用事例」というテーマで、Google Apps Script / App Maker を含む G Suite 周辺の開発プラットフォームについて、位置付けの整理とグローバルでの活用事例、今後のアップデートについてお話されました。次に、嘉穂無線の太田さんが、「Google Apps Script の活用事例」というテーマで、Google Apps Script を活用して開発した社内システムについて、デモを交えて紹介されました。

それを受けて、メドレーでは「Google App Maker 活用事例と開発Tips」というテーマで、Google App Maker を活用して開発した社内システムを、デモを交えて紹介させて頂きました。

App Maker はGAされてからまだ一年強ということもあって、Apps Script と比較してもオンラインに蓄積されているナレッジが非常に少なく(あってもほぼ英語)、現時点において日本で活用できている企業は本当に限られていると思っています。

しかし実際に触っていく中でも非常に可能性を秘めたプラットフォームだと感じているので、日本でも活用する会社が増えてくれれば嬉しいという思いを込めて、今回プレゼンさせて頂きました。

ここからは、実際にメドレーのパートでお話した内容を、振り返りも兼ねて書かせて頂ければと思います。

Google App Maker とは

一言で言うと...

G Suite Business / Enterprise プランに含まれるローコードアプリケーション開発ツール

です!

f:id:medley_inc:20190821171328p:plain

主に以下のような特徴があります。

  • バックエンドのデータストアとして、RDB(Cloud SQL)が利用される
  • 開発言語は JavaScript をベースとしたスクリプト言語である Google Apps Scriptである
  • G Suite のサービス(ユーザーディレクトリ、メール、ドライブ等)と容易に連携が可能である
  • UIのカスタマイズの容易さと高い自由度がある

メドレーでの社内活用事例

メドレーでは、Google App Maker を活用して複数のアプリケーションを実装しています。

今回は、そのうちの一つである社内稟議システムについての概要を紹介させて頂きました。(当日はデモも実施しているので、デモの内容を見たい方はセッション動画をご覧下さい) f:id:medley_inc:20190822102114p:plain

App Maker を使ったアプリケーション開発の流れと開発Tips

App Maker はアプリケーション開発プラットフォームなので、開発の流れを以下の 3step に分割した上で、Tipsを紹介させて頂きます。

  1. データモデルの定義
  2. UI作成
  3. ビジネスロジック記述

1. データモデルの定義

はじめに、GUIベースでRDBメタデータを定義していきます。

モデル(テーブル)の主な設定項目

  • FIELDS:モデルのフィールド情報を定義
  • DATASOURCES:データベースでいうところのビューに近い概念の設定
  • RELATIONS:モデル間のリレーションを定義
  • EVENTS:クライアントのデータベース操作に対するイベントスクリプトを定義
  • SECURITY:モデルに対する権限を制御

f:id:medley_inc:20190821171355p:plain

データモデルの定義における開発Tips

  • EVENTSの挙動

    MODELの設定項目なので一見データベーストリガーと思いがちですが、このイベントは、サーバーサイドスクリプトや外部からのデータベースレコード操作では、トリガーされません。(クライアントサイドからの操作限定) サーバーサイドスクリプトや外部からの操作には、別途関数呼び出しを組み込む等の配慮が必要になります。

  • データベースへの更新反映タイミング

    既定の設定ではクライアントでデータソースの情報が変更された場合に、サーバーに即時反映される動き(Auto Save Mode)になります。この動きを止めたければ Manual Save Mode に切り替えることも可能ですが、コード記述量が大きく増えることになります。Auto Save Mode のままでも UI/UX の工夫で回避できたりするので、まずそこを検討するのが重要かなと思います。

  • 細かな権限制御

    GUI からできる権限制御設定は限られています。アプリケーション内での動的な権限制御や、フィールドの値に基づく細かな権限制御が必要な場合は、Query BuilderQuery Script による読み込み制御が必要になりますが開発コストが結構増加するので、他の回避策がないか事前に検討することをお勧めします。

2. UI作成

次に、ウィジェット(画面を構成する部品)をドラッグ&ドロップで配置して画面を作成していきます。

一般的に必要となるボタンやドロップダウンに加えて、G Suite ならではの User PickerDrive Picker 、更にはリッチなポップアップ、ダイアログ等も利用可能です。

スタイルに関しては、バリアントを利用することで、統一感のあるスタイル適用が容易に可能になっています

f:id:medley_inc:20190821171425p:plain

UI作成における開発Tips

3. ビジネスロジック記述

最後に、2種類のスクリプト(Client Script, Server Script)を利用して、ビジネスロジックを記述していきます。(アイテム生成とか、読み込みとかは基本的に記述不要)

Client Script からServer Script を呼び出したい場合は、 Google Apps Script 同様、以下のような形で実行が可能になっています。

google.script.run.ServerSideFunction();

f:id:medley_inc:20190821171501p:plain

ビジネスロジック記述における開発Tips

  • 外部公開できない

    Google Apps Script で言うところの、doGet/doPost 関数のような Web API は、App Maker のスクリプト内に作ることができないようになっています。外部システムとの連携が必要な場合、Cloud Function 等を介して、Cloud SQL を直接操作する必要があります。(トランザクション処理等は複雑化します)

  • ローカルの開発環境と上手く連携できない

    Google Apps Script で利用可能な clasp は、現時点で App Maker には対応していません。バージョン管理、デプロイ管理機能は開発コンソールに実装されていますが、コードレベルでの差分レビュー等を実施したい場合は、現時点では少しめんどくさいです。

  • 定期実行トリガーをGUIで設定できない

    Google Apps Script ではGUIから設定が可能な、「時間ベース」のトリガーがGUIで簡単に設定できません。設定が必要な場合は、以下のようなスクリプトベースで設定する必要があります。

ScriptApp.newTrigger('functionName').timeBased().at(date);

App Maker をこれから始める人向けの情報

なお、今回紹介させて頂いた内容は App Maker を全く触ったことがない人には少し難しい内容だと思っています。

知識がゼロからの方は、以下のナレッジを元に是非一度チュートリアルなどで簡単に触ってから、改めて読んで頂けると理解が深まるかと思います。

まとめ

今回紹介させて頂いた Google App Maker は、G Suite をディープに利用している企業であれば、Google Apps Script に匹敵する強力な社内アプリケーションプラットフォームになると感じています。

App Maker のようなローコード/ノーコード開発プラットフォームは既に市場にいくつか出ており、Google App Maker はその中でも比較的コーディング・技術力が求められるプラットフォームだと思います。しかし、その分既存社内システムと親和性の高い高度な自動化が実現しやすいプラットフォームでもあると思うので、臆せずにチャレンジする価値は十分にあると思います。

なお、セッション中に紹介させて頂いた稟議アプリケーションは、App Maker に対する知識が0の状態から1~2ヶ月程でSlackとの連携も含めて1人で実装できました。(RDBやGASに対する知識は、ある程度習得済みの状態が前提にはなっています)

GA直後ということもあってインターネット上のナレッジが少ない中、探り探りに得られた活用のヒントを今回の場でお話しさせて頂きましたが、引き続き App Maker というプラットフォームを上手く利用していくには、ユーザーコミュニティの盛り上がりが欠かせないと思っていますので、引き続き情報発信等を通じて盛り上げていければと考えております。

最後になりますが、メドレーではこのような市場に出て間もないテクノロジーでもチャレンジしていける風土があります。こういったチャレンジを求めている方は、ぜひご応募下さい。

www.medley.jp

www.medley.jp