一人十郷 - takuminasuno.com一人十郷
takuminasuno.com
ウェブデザイン
2016/08/19

Google Apps ScriptによるWebアプリ実装メモ

いつもとは趣向を変えた内容を書いてみます。

このブログは今まで、地域おこしやフォトグラフィーに関してインプットしたものを能動的にアウトプットする場所にしていたのですが、関連するスキルセットがあまりにも偏りすぎていて、とある方面から心配をされていたようです。苦笑

ブログの方向性でいくらか悩むところがあった中でそんなきっかけもあったので、意図的に避けていたデータサイエンス、プログラミング系のトピックも書き始めようと思います。トピックが多少雑多になりますが、那須野拓実の人となりが伝わればこのブログの目的は達成するので、まぁいいのかなと思います。

 

ということで、最近いじり始めたGoogle Apps ScriptによるWebアプリ実装について、雑多にメモを書いて思考整理してみます。それではスタート。

 

Development Image of Web Apps by Google Apps Script_ja

 

Google Apps Scriptとは

  • Googleの提供しているアプリケーション群であるGoogle Appsの機能の1つ。
  • Javascriptをベースにした言語で、Googleのサーバー上で動く。
  • Google Appsのアプリを自由に操作できる。
  • Spreadsheetのマクロ機能として紹介されることが多いが、実は単体でWebアプリが作れる。

 

Google Apps Scriptのメリット

  • Javascriptベースなので、イチから未知の言語を学ばなくて済む。学習コストが低い。
  • Gmailを始めとしたGoogle Appsを導入している職場環境では、そのGoogleアカウントに乗っかれるので導入が楽。サーバーを用意したり環境構築したりする必要は、もちろん無い。
  • 利用料がイニシャル、ランニングともにかからないため、外部支出を気にせず開発着手できる。面倒な社内稟議から解放される。
  • 費用対効果がなかなか予測できないアプリを小さくサクッと作ってとりあえず効果検証したり、PDCAサイクルを回してみたりするのに相性が良い。
  • Spreadsheetをデータベース的に使ったり、スクリプトの定期実行を設定したり、メール送信をしたりなど、一見、普通のWebシステムに見劣りしなさそうなものを作れてしまう。
  • ユーザーの閲覧権限のコントロールが楽・・・なはず。(※下記デメリットも参照)

 

Google Apps Scriptのデメリット

  • 日本語の文献が少ないので覚悟は必要。
  • Webアプリ(サービス)のURLは乱数のような長文なので、格好悪い。
  • 閲覧権限まわりの挙動が不安定なことがある。なぜか見られないユーザーが出てくるとか。バイネームで権限を与えると解決することもある模様。
  • サーバーサイドのソースコードをユーザーに閲覧される可能性がある?(でもそのリスクがあるのは自前のサーバーでも同じですね。)
  • Spreadsheetをデータベース的に使えるとはいっても、行数や処理速度、DBとしての諸機能について贅沢は言えない。(贅沢したい方は有料のGoogle Cloud SQLを使いましょう。Fusion Tablesというテスト運用中の機能もあるようですが、詳細は不明です。)
  • 仕様が頻繁にアップデートされる、というか変更される(らしい)。

 

(画像再掲)

Development Image of Web Apps by Google Apps Script_ja

 

Webアプリ実装の方法はいくつか存在するようですが、分かりやすいのはHTML serviceを活用した方法です。URLアクセス時の起点となるdoGet関数でhtmlファイルを読み込んで表示できます。ロード時にApps Scriptを使うことで動的なコンテンツの表示ができるうえ、もちろん他アプリのデータを引用したり、逆に更新したりもできます。

Javascriptが使えるので、いったんロードした後はJavascriptを通じてのコントロールが可能です。jQuery万歳です。ただし、Javascriptはクライアントサイドで動くので、Spreadsheetを始めとしたサーバーサイドにある他アプリを操作するにはGS上の関数を経由する必要があります。その時に使うのが「google.script.run」というコードです。「withSuccessHandler」と組み合わせて、サーバーサイドで実行する関数、クライアントサイドで実行する関数を指定する形式です。(サーバーサイドでの関数処理はAjax、つまり非同期通信なので、多少のタイムラグがある点は注意が必要です。)

こんな感じでうまく連携させれば、とりあえず動くWebアプリが作れます。

 

・・・メリットは、とにかく楽。これに尽きます。デメリットのことも考えると、比較的小さな部署単位での業務改善向けでしょう。そのあたりの傾向はExcel VBAと似ていますね。システム投資に制約のある会社では重宝がられそうな技術ですが、中長期目線でのしっかりしたシステム開発を見据えたうえでの”つなぎ”という位置づけが適当な気がします。

一番身近なのに全く使われてなくて、迷えるオフィスワーカー達を救ってくれそうなのに色々未完成なツール、そんなイメージでした。

同じカテゴリーの投稿もどうぞ!
読みやすいブログを目指してデザインを刷新しました(Version6.0)
ウェブデザイン
2021/09/27
読みやすいブログを目指してデザインを刷新しました(Version6.0)
少しだけブログのデザインを変更しました(Version5.4)
ウェブデザイン
2018/08/10
少しだけブログのデザインを変更しました(Version5.4)
少しだけブログのデザインを変更しました(Version5.3)
ウェブデザイン
2017/05/22
少しだけブログのデザインを変更しました(Version5.3)
3年半のブログデザインの歴史を振り返ってみた(Version 0.x - 5.x)
ウェブデザイン
2017/05/21
3年半のブログデザインの歴史を振り返ってみた(Version 0.x - 5.x)
少しだけブログのデザインを更新しました(Version5.2)
ウェブデザイン
2017/04/27
少しだけブログのデザインを更新しました(Version5.2)
ブログ著者について
那須野 拓実(なすの たくみ)。たなぐら応援大使(福島県棚倉町)。トリプレッソを勝手に応援する人。ネイチャーフォト中心の多言語ブログを書いてます。本業はIT&マーケティング界隈でナレッジマネジメントとかデータ分析とかの何でも屋。半年間の育休明けで、家事育児と外働きのバランスを模索中。