GoogleAppsScript でどこまでできるのか/やるべきか

Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
 1
 
  GoogleAppsScript (gas) によるシステム構築事例とパターン、メリットデメリット等についてのまとめです。2017年4月の資料を2019年2月時点の情報を入れて改訂しました。
Share
Transcript
  • 1. © Copyright 2019, ESM, Inc. GoogleAppsScriptでどこまでで きるのか/やるべきか 2017年4月28日 2019年2月7日改訂 永和システムマネジメント ITサービス事業部 GoogleApps導入スペシャリスト 岡島 幸男 1
  • 2. © Copyright 2019, ESM, Inc. 本日お伝えしたい事 1. GoogleAppsScript(GAS)で何ができるのか? 2. GASの向き不向き(限界) 3. 既存の仕組みから移行するにはどうすると良いか? 2
  • 3. © Copyright 2016, Eiwa System Management, Inc. GoogleAppsScriptおさらい ~GoogleAppsScriptでできること~ 3
  • 4. © Copyright 2019, ESM, Inc. G Suite でシステムを組むということ 4 Google Apps Script クレーム管理 システム 稼働管理システム 棚卸システム
  • 5. © Copyright 2019, ESM, Inc. システムとして利用しやすい仕組み 1. スプレッドーシート a. Excel(あるいは手書き)からの移行先として 2. Web(スタンドアローンスクリプト) a. 既存Webシステム(JSP/ASP/ColdFusion等)の移行先として b. Accessで開発した業務システムからの移行先として c. ポータル(GoogleSiteとの組み合わせ) d. スマフォやタブレットから利用できる軽量なシステムとして 5
  • 6. © Copyright 2016, Eiwa System Management, Inc. スプレッドーシート ~事務支援システムの事例~ 6
  • 7. © Copyright 2019, ESM, Inc. お客様ご紹介 7
  • 8. © Copyright 2019, ESM, Inc. お客様の課題 8 技術スタッフ 職員(割り当て担当) 医師 技術パート バス 医師・スタッフ・パート さん、それぞれの割り 当てが大変。お休みや 回数も考慮しないと・・ ほとんどの書類は Excelか手書き。転記 やコピーが多くて手間 が膨大・・ パートさんは数が多い ので、月末までに処理 が間に合わない! バスは3台あ るので、その スケジュール ・割り当てが ・・ 先生を会場までお送り する、送迎担当者の依 頼も必要・・
  • 9. © Copyright 2019, ESM, Inc. システム導入の効果 9
  • 10. © Copyright 2019, ESM, Inc. スプレッドシートをベースとしたシステム 10 入力はスプレッドシートをその まま利用できる (=関数なども利用可能) サイドバーに、独自の画面を作 りこみできる
  • 11. © Copyright 2019, ESM, Inc. スプレッドシートをベースとしたシステム 11 ダイアログとして、独自の画面 を表示することも可能
  • 12. © Copyright 2019, ESM, Inc. スプレッドシートベースのメリット • お客様にとって、なじみのある操作感覚が実現できる • 入力用画面も、帳票も実現できる • 既存のExcelを変換することで、開発コストが抑えられる • お客様にもカスタマイズが可能 • 見た目の変更が簡単にできる(ロジックの変更はお任せください!) 12 柔軟に追加カスタマイ ズできる 「やわらかい」システム
  • 13. © Copyright 2019, ESM, Inc. スプレッドーシートの限界 • データ量 • スプレッドーシートベースの場合、データはスプレッドーシートにその まま格納することになる(DBは使わないことが多い) • 例えばシート中を検索する場合、経験則では、1シート5000~6000 行程度が限度(それ以上は重くて利便性が相当下がる) • 関数を同時利用している場合、データ量によってはとてつもなく計算 量が増えることになり、重くなる • 同時利用 • スプレッドーシートは複数人での同時利用を前提としているため、 「うっかりシート消しちゃった」問題などが発生しがち。 • システムとしてユーザーに「利用の型」をはめるのが難しい • Excelマクロ • 既存のExcelシートを活用する場合、見た目は移行できても、その 中に埋まっているマクロは移行できない 13
  • 14. © Copyright 2016, Eiwa System Management, Inc. レガシーWeb ~既存Webシステムからの移行~ 14
  • 15. © Copyright 2019, ESM, Inc. 既存Webシステムからの移行 • クラウドが一般化する前(オンプレミス)からのWebシステム を長く使い続けているケースは多い • 基本的にはDBとの組み合わせ(Web/DBシステム) • 例えば • ASP(Microsoft Windows) • JSP/Servlet(Java) • ColdFusion(Adobe) • PHP 15
  • 16. © Copyright 2019, ESM, Inc. 例えばColdFusion <cfquery datasource="db" name="getdata"> SELECT code, name FROM table1 ORDER BY code </cfquery> <table> <cfloop query="getdata"> <cfoutput> <tr> <td>#code#</td> <td>#name#</td> </tr> </cfoutput> </cfloop> </table> 16
  • 17. © Copyright 2019, ESM, Inc. 素直にGASに置き換えると <? var data = db.query(“ SELECT code, name FROM table1 ORDER BY code”); ?> <table> <? data.forEach(function(d) { ?> <tr> <td><?=d.code?></td> <td><?=d.name?></td> </tr> <? }) ?> </table> 17 ※注意 DBアクセス処理は疑似コードです。実際に は、JDBCを使ったアクセスが必要となりま す。
  • 18. © Copyright 2019, ESM, Inc. 移行に関する注意点 • パフォーマンス • <?=?>埋め込みはGoogleも推奨していない。サーバー側での処理 が多くなり、レスポンスが悪くなるため。Googleの推奨するように、 描画はクライアント側に処理を移すべき。 • 経験則では、ローカル環境でのColdFusionサーバーでの同祭にに 比べ数倍レスポンスが悪くなる • デバッグ、メンテナンスの辛さ • あまり細かなエラー情報がでないため、どこで文法エラーが起こっ ているかを見つけるのが辛い(コツが必要) • 向いているケース • 既存資産をなるべくそのまま、スピーディーに移行する必要がある 場合 • それ以外は、極力この仕組みは避けたい 18
  • 19. © Copyright 2016, Eiwa System Management, Inc. WebのUI+スプレッドシート による軽量システム ~モバイル受注システム~ 19
  • 20. © Copyright 2019, ESM, Inc. お客様のご紹介 • オプトデュオ様 • 福井県鯖江市の眼鏡メーカー • http://www.optduo.co.jp 紙ではなく、タブレットを使った受注の仕組みが 欲しいとのオーダー 20
  • 21. © Copyright 2019, ESM, Inc. WebのUI+スプレッドシートのデータ 21 Web(GAS+HTML)にて 自由に画面をデザイン スプレッドシートに必要な情報 を格納し、データベース兼帳票 として活用 スプレッドシートにデータだけでなく、ビジネスロジックをスプレッドシート関数 (VLOOKUP等)で埋め込めるのがポイント
  • 22. © Copyright 2019, ESM, Inc. メリット • WebUIの使いやすさ • ビジネスロジックをスプレッドシートで実現することによる手 軽さ • 例:VLOOKUP関数で、注文に応じて在庫減らす処理を実現 • スプレッドシートならではの柔軟性 • データベースと言いながらも普段使っている資料っぽい作りも可能 22
  • 23. © Copyright 2019, ESM, Inc. 限界とその先 • データ量 • スプレッドシートを使い以上、あまりに大量のレコードは扱いにくい • シートを分ける等、設計で工夫する • トランザクション • スプレッドシート(関数)でのビジネスロジックを、どこまで信用してよ いか?(トランザクション的な意味で) • たまに発生する「サーバーエラー」が本番で起きたら・・? • 現実解としては、運用での対処(手動で再オペレーション)を想定し ておく • 今後は、AppMakerに置き換わっていくのかな? 23
  • 24. © Copyright 2016, Eiwa System Management, Inc. より複雑なWebシステム ~Accessからの移行事例~ 24
  • 25. 事例 ● お客様:南越ケミカル様(福井) ● 移行対象:在庫管理システム(Access2003) ○ 利用ユーザーは、5名程度 ○ 移行(開発)期間は2か月 移行対象オブジェクト 対象数 フォーム 58 レポート 17 クエリー 38 テーブル 15
  • 26. 南越ケミカル様の困りごと ● 古いAccessが新しいWindowsで動かない問題 ○ OSをWindows10にしたら(勝手にアップグレードされてしまった)、 Access2003で開発したシステム が動かなくなった ● メンテする人辛い問題 ○ エンドユーザーコンピューティングを推進した意味で画期的だった Accessだが、反面、特定の人に メンテナンスの負荷が集中しがち。 ○ バージョンアップ毎に、微妙に挙動が変わるここともあり、専門家でないと対処が難しいことも。 ○ 外部のベンダーに委託すると改修費用が思ったより高くつくこともある
  • 27. 「引っ越し」でやったこと 1. ロジックとデータの全引っ越し a. データだけでなく、画面や帳票などのシステムの機能全てを引っ越し 移行対象オブジェクト 移行後 フォーム Webアプリ(HTML+CSS+JavaScript) ※サーバーサイドロジックはGoogle Apps Script(自動変 換+手動変換) レポート PDF(ロジックはGoogle Apps Script) クエリー SQL+Google Apps Script(自動変換+手動変換) テーブル Google Cloud SQLのテーブル(自動変換) Googleの推奨しているSPA(シングルページアプリ ケーション)として実現し、パフォーマンスの問題を クリア
  • 28. 移行前
  • 29. 移行後
  • 30. 移行前
  • 31. 移行後
  • 32. 注意点 ● 原則、RDB(Google Cloud SQL)の利用が前提となること(G Suiteとは別に月額 費用が必要となること) ● 見た目の違い ○ 見た目(部品の配置等)を完全移行することは難しい ○ Accessっぽさではなく、Webっぽい見た目、操作感に重きを置くこと ● 印刷(レポートとPDF)の違い ○ Accessでは直接印刷できるが、 Webでは一旦PDFとして出力する方式となる。 ● AccessとWebの操作性の違い。 ○ 本当はWebに慣れていただくのが一番だが、 Accessでできていたことを期待されることも多い ○ 例えば、Enterキーによるフォーカス移動 ● レスポンスの違い ○ ローカルで動作する Accessに比べるとレスポンスはどうしても低下することを理解いただく ● G Suite(GAS)の仕様・制限によるもの ○ バッチ処理は実現が難しい( 6分以上のスクリプトは処理が途中で打ち切られる)
  • 33. 開発環境(イメージ) 33 スクリプトエディタ(標準) ローカルPC 好きなエディタ(開発環境) ソースコード ②ソースコードの Export/Import (google clasp) https://github.com/ google/clasp ①開発(プログラミ ング)
  • 34. GASでのSPAの限界はどの程度か? ● 本案件では、開発の効率化のため、スクリプトエディタでの開発はあきらめている (チーム開発ができない。開発環境が貧弱なため) ● ちなみに、プログラムのファイルサイズは全部で2.5M程度(minify:圧縮シした場 合) ● あまりに大きくなると、Exportに失敗するようになった(5M程度か?)。ただし、同時 はclaspを使っていなかったため、今なら大丈夫かもしれない ● 大きなシステムは機能分割(=別々のWebアプリ)を行う必要あり。それぞれの Webアプリは、Google Siteに埋め込む。 ● スプレッドシートや軽量Webに比べ、開発が複雑になりがちで工数が必要。 34
  • 35. そもそも、なぜ「G Suite」か? ● シンプルなライセンス体系 ● メールからカレンダーにオフィスソフトまで、オールインワン ● 本格的な開発環境(Google Apps Script) ● 何より、すでに使われているお客様が多いこと
  • 36. © Copyright 2019, ESM, Inc. 弊社事例 36 業種 (顧客名) システム概要 受注背景 実現手段 利用ユーザー (アカウント) 講師派遣サー ビス 発注管理・予定管 理・実績入力・支 払管理 Excelといくつもの外部システムを人手で回 していた業務を効率化したい シート 200程度 建設 営業・クレーム管 理 古いAccessとExcelの業務を効率化しつ つ、クラウド対応で拠点またがって使いた い。 Web 10程度 JA福井県厚 生連 パート管理(人員 配置・給与計算) Excelと手書き業務を効率化したい。 シート 10程度 製造(ゴルフ クラブ) 棚卸(スマホ・タブ レット+バーコー ドリーダー) モバイル端末とAppsでで手軽に棚卸を行 いたい。 Web 5程度 教育サービス バイト稼働管理 アルバイトの稼働管理をスマートフォンを 使って行いたい シート 100程度 小売 カレンダー・チャッ ト・掲示板・TODO 等 Googleサイトに情報を集約したい。(サテラ イト製ガジェットはカスタマイズができない) Web+ CloudSQL 300程度 医療系 請求管理 Access+Excel+独自システム業務を効率 化したい Web+ CloudSQL 100程度
  • 37. © Copyright 2016, Eiwa System Management, Inc. GAS開発のノウハウ ~ 少しだけ技術の話 ~ 37
  • 38. © Copyright 2019, ESM, Inc. GoogleApps活用システムの得手・不得手 得意 不得意 外部システム(=インターネット上の サービス・特にGoogle)との連携 社内システム(=インターネットとつな がっていない)との連携 Excel帳票をほぼそのまま入力画面に できる(=Googleスプレッドシートへの 変換が容易) ExcelをExcelとしてそのまま扱う 十分な性能のアプリを手軽に実現 超高速なアプリケーションの実現 今までExcelやAccessに保管されてい た不定形データの移行 今まで本格的なRDBで扱っていた大量 の定型データを扱う いわゆるオンライン処理(Webアプリも 開発可能) バッチ的な処理(=GoogleAppsScript では6分以上の処理は実行できない) Googleアカウントとの統合によるセ キュリティ その他認証サービスとの連携(例 :Windowsログイン) 38 不得手な部分にも解決策はあるが、ノウハウ・経験が必要となる
  • 39. © Copyright 2019, ESM, Inc. 外部システム(Googleサービス)との連携 • GmailやGoogleカレンダー等、GoogleAppsが提供するサー ビスとの連携がとても簡単(=複雑に作りこむ必要がなく、結 果的に費用軽減) • 例えば・・・ • 特定の処理が終了したら、メールを送信する • 他には・・・ • スプレッドシートに入力した情報を、Googleカレンダーに自動登録する • Googleカレンダーの豊富な機能をそのままご利用いただけて便利 • Gmailのメールボックスをチェックし、特定の内容のメールが届いたら処 理を実行する 39 MailApp.sendEmail(obj.email, subject, "",advancedArgs );
  • 40. © Copyright 2019, ESM, Inc. 外部サービス連携における設計上のポイント • 外部サービスは、常に正常に動いているとは限らない • 例えば、メールは100%配信されることを保証していません • なので、「システムの運用視点でのリカバリー策の検討」が大 切 • メールが届かなかった場合にお客様にどう運用してもらえば良いのか? • 極端な話、受信側が間違ってメール消しちゃう場合もある • 例外処理をしっかりプログラミングするのとは別の次元(どちらも大切だ が、運用視点なしで設計すると、結果余計なコストがかかる) 40
  • 41. © Copyright 2019, ESM, Inc. 性能(パフォーマンス)向上のヒント • GoogleAppsで開発したアプリは全てクラウド上で動いているので、 それを考慮せず開発すると極端に性能が劣化することがある • プログラミングテクニックで回避できること • GoogleAppsScriptからのAPI呼び出しを減らす工夫と努力 • 性能に数百倍以上の開きがでることも。GoogleもAPI呼び出しを減らせるようなAPI (まとめ処理を行う)を用意していることが多い • Googleスプレッドシートの関数呼び出しも同様。あまりにも大量のデータを含む場合 は遅くなる • 特に、GoogleDriveからファイルやフォルダにアクセスする処理や、スプレッドシート を生成する処理は重い(ので連続で呼び出さないよう工夫が必要) • 回避できないこと • 大量のデータを扱う処理(例:10万件のスプレッドシートに格納されたデータの 中からデータを検索する) • ⇒ Cloudで利用できるデータベースサービス(例:Google Cloud SQL)の利 用を検討する(有償) 41
  • 42. © Copyright 2019, ESM, Inc. 様々なオンライン処理(UI)の実現方式 42 Webアプリ • 利用者に特定のオペレー ションさせたい場合に有効 • Googleサイトにガジェット として埋め込んで利用して もらうのが一般的 • 通常のWebアプリとまった く同じ感覚で利用いただけ る • 開発の仕方は通常のWeb アプリ(javaやPHP)とは少 し異なるが、慣れれば効率 よい • 一部制限事項あり
  • 43. © Copyright 2019, ESM, Inc. 高速なアプリを開発するヒント • 処理速度が重要な要件の場合、Webアプリ化したほうが良い 43 クライアント (Webブラウザ) サーバー GoogleAppsScript Google API Webブラウザからサー バー上ののアプリ処理 を呼び出す データをクライアントにもっ てきて、その中に閉じた処 理に工夫することで性能 が確保できる Spread Sheet Drive API呼び出しに相応の 時間がかかる (頻度が高いと顕著)
  • 44. © Copyright 2019, ESM, Inc. 様々なオンライン処理(UI)の実現方式 44 スプレッドシート • 従来利用していたExcelを そのまま置き換えるイメー ジ • 使い慣れたExcelと似た使 い勝手の実現 • シート間のデータを使いま わす(自動転記する)こと で、大幅に作業効率アップ できるケースが多い • 利用者にとっての自由度 が高い反面、シートのレイ アウトを変えられるとプロ グラムが動かなくなること 多い • PDFに変換することで印 刷・帳票にできる
  • 45. © Copyright 2019, ESM, Inc. バッチ(長時間かかる)処理の実現 • GoogleAppsScriptは、6分以上の処理が実行できないという制限 がある(※ただし、for Business では30分動作する) • 大量のスプレッドシートを順次処理する場合に発生しがち • 例:10000行あるシートを上から順に処理し、順次別のシートに転記する、な ど。 • なので、長時間かかる処理を実現するには・・・ • 処理を6分以内に分割し、自動または半自動で連続実行する • 連続実行する場合は、「トリガー」と呼ばれる機能を使う。トリガーを使うこと で、「何時何分にこの処理を実行する」が実現できる。 • それよりも、ユーザーのオペレーション設計を工夫することが本質 的に効果的 • 処理を自然に分割し、ユーザーに順次メニューから実行していただく • 例えば、カテゴリや日付でメニューを分割し、最小単位で実行していただくよう メニューを組み立てる 45
  • Similar documents
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks
    SAVE OUR EARTH

    We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

    More details...

    Sign Now!

    We are very appreciated for your Prompt Action!

    x