このブログを検索

2013年10月18日金曜日

【速報】TokyoGAS#4 ~2013秋~ 

■満員御礼!!

   本日(10/18)は四半期定例となったGoogle Apps Script勉強会(通称:TokyoGAS)Dayでした♪
   今回は過去最大の参加者数で、満員御礼!!
   内容も盛りだくさん!!


■目次

   1.non-IT女子による初めてのGoogle Apps Scriptプログラミング

   2.まもなく公開予定「123MAPS by株式会社らしく」でのGASの使いどころ

   3.Google Apps Script&Google Siteでの社内ポータルサイト構築

   4.Java Script初心者がGASで業務用のアプリケーションを作ってみた

   5.GAS Update

■2.まもなく公開予定「123MAPS by株式会社らしく」でのGASの使いどころ

     ・Google スプレッドシート+GASがすごい7つのポイント
       →ここでは省略
        以下のサイトを参考されるといいかもです
        http://qiita.com/sucre1008/items/a0b979591fd7374ecd99
        (ちょっと変更あるかもですが・・・ by nonIT女子)

     ・Googleマップに特定の場所を表示できるツール
      (活用例)商店街などの店舗紹介サイトへの表示

     ・GAS利用箇所
       1.申込者にテンプレートスプレッドシートとマニュアル自動配布(コピー作成)
       2.スプレッドシート内で、住所を緯度経度に変換
       3.Googleマップ上に複数の場所を表示するサンプルHTMLの自動作成と保存
       4.Googleマップ上にピンが重なった場合に、マップ上でピンを移動→緯度経度を修正

     ・デモンストレーション

     ・Q&A
       Q:123Mapsを利用するには、Google Apps利用料金も上乗せで支払う必要があるか?
       A:GmailアカウントがあればOK

       Q:jsonやxmlからデータを持ってくることは可能か
       A:可能  

■3.Google Apps Script&Google Siteでの社内ポータルサイト構築

   <自己紹介>
     ・面白おじさん (←nonIT女子主観ですww)
     ・社内SE
     ・プログラミング経験浅い

   <なぜGASなのか?>
     ・Google Appsを全社的に使用しているので、業務に反映させやすい
     ・IDEや動作サーバはGoogleが提供してくれるので、ローカル環境を気にせずカジュアルに制作できる
     ・Googleの各サービスをGASで結び付けられるというコンセプトが好き

   <GUI Builder>
     ・Web画面を構成できる画面。
     ・2013年10月2日に廃止・・・・・・・・・・・・・
     ・GUI Builderに頼らない書き方を知る必要あり

   <GAS+Googleサイトの開発手順・ポイント>
     1.Googleサービスごとに処理を作りきる
        -サービス毎にClass分けているので再利用性、メンテナンス性を考慮してコード書く
     
     2.画面回りの記述はdoGet()にまとめる
        -複雑な画面構成でなければ、doGet()以下に書き込むと可読性が良い
        -まとまって書かれていないと、ソースから画面構成を描きにくくなる 

     3.各UiInstanceオブジェクトにハンドラを設定して処理とリンクさせる
        -オブジェクトにsetId()しておくとハンドラないでオブジェクトにアクセスできる
 
     4.表示確認はテスト環境を用意してデプロイしながら
        -バージョン管理→ウェブアプリとして導入→テスト環境のGoogleサイトで表示

   <事例紹介>
     1.稼働時間集計ツール
        -既存の稼働時間集計ツールにインプットするためのツール
        -スプレッドシートに稼働時間を集計して表示してくれる

     2.備品貸出管理ツール
        -備品の貸出をGoogleカレンダーで一元管理するツール

■4.Java Script初心者がGASで業務用のアプリケーションを作ってみた

   <要旨>
     ・GASもJava Scriptも触ったことない人が4か月でアプリ立ち上げ、悪戦苦闘したお話
       ↓
     ・つまり、HtmlServiceとScriptDBによるウェブアプリケーション開発に関するお話

   <自己紹介>
     ・元情報部門
     
   <作ったアプリ>
     ・企業ひみつ(笑)
     ・開発期間4か月

   <最初の地雷>
     ・リレーショナルデータベースではないので、一意制約・結合などすべて実装する必要あり
     ・一括更新が面倒
   
   <次の地雷>
     ・HTMLを細かい部品に分割→画面により呼び出す部品を変える
       →Googleドライブに保存し、その後ScriptDBに変更
     ・butとにかく遅い!!  
   
   <3つ目の地雷>
     ・あまりにアクセスすると、突然ジョブが打ち切られる
       →間に1秒空けることが求められる
          →それじゃ実務上処理切れない件数が・・・
             →バッチ処理系メソッドでも時間切れ・・・・・・・・・

   <完成したが>
     ・表示に20秒以上かかる画面がある
     ・メンテしにくいデータ構造

   <高速化>
     1.NATIVEモードの利用
 
     2.枠を作って、中身を入れ替える手法の採用
        -スクリプトタグだけ全部渡し、リクエストによってサーバサイドでボディ渡す

   ⇒表示時間を最大80%削減!!!

   <その後>
     ・フリーワード検索を実装
     ・とりあえず安定稼働

   <教訓まとめ>
     ・コードのサニタイズを避ける
     ・ストレージは、速度/使い勝手/保守性のバランスに注意
     ・連想配列にマスタデータを入れてしまう
       →一意制約チェックにも有効
     ・はじめは小さく始める
     ・ライブラリの活用 
     ・データストレージ(ScriptDB)
       →使えば使うほどレスポンスが悪くなってるような・・・・??

■5.GAS Update

    1.GUI Builderの廃止
       →but 救済策有
        GUI Builderで作成した画面をファイル形式でダウンロード可能

        ※注意※
        ファイルからコード作成は自分でやらなきゃだめ。
        jsonなどで変換コードを自分で書く必要あり

        UIAppより、HTMLで作成することを推奨

    2.スクリプトエディタの新機能
       -Ctrl+Rでfunction実行 
  
       -上記以外にも、ショートカット実は存在している
         【ショートカットまとめ】Qiita
         http://qiita.com/soundTricker/items/c9091a63de5401f2d49e


    3.8月のUpdate
       -スプレッドシートやフォームのデータ入力制限ができるようになった
       -DocListAppからDriveAppに移行しつつある
         (今後DocsListAppが廃止される可能性もあるため、DriveAppを推奨)

    4.9月のUpdate
       -ほぼなし^^;

    5.10月のUpdate
       -スクリプトエディタ以外に、ローカルで(オフラインで)開発できるアプリ公開
         ・eclipseのプラグインが提供された
         ・ドライブ上で作成したスクリプトをローカルに作成し、保存する毎に取り込み

         ※注意※
           ・Googleサイトやスプレッドシート上で作成したスクリプトは利用不可
           ・プロジェクト名/ファイル名に日本語が含まれているとエラー
 
       -(公式発表前)フォームでYoutubeを載せられるようになり、GASからも実現可能に
       -(公式発表前)スプレッドシートの右側にサイドバー表示が対応可能
       -(公式発表前)GASの更新履歴を取得できるようになった

■告知

   ・今後、Google Apps Script勉強会(発表形式ではなく、座談形式)を月1回程度で開催予定