TsuyoshiKusakaの日々思うこと その2

(株)クエステトラに所属、ITエンジニア、テニス好き、地域のお手伝いをいろいろ、@tsuyoshikusaka

Javascript から Google Apps Script にアクセスする方法 補足

以前に

JavascriptからGoogle Apps Scriptにアクセスする方法 - TsuyoshiKusakaの日々思うこと その2

JavascriptからGoogle Apps Scriptにアクセスする方法 その2 - TsuyoshiKusakaの日々思うこと その2

JavascriptGoogle Apps Script(以下、GAS) 間での通信について書いたが、

Chrome の仕様変更で、サンプルで書いていた GAS ソースのままでは動かなくなっていたので補足。

 

以前のソースのままで実行した場合、
Javascript から GAS に http リクエストは送付されるが、データが Javascript 側に返らなかった。
Chrome のデバッガで確認すると

 Refused to execute script from '(ここには GAS の URL が入る)' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.

というエラーが発生していた。
※ちなみに、FireFox であれば、このエラーにはならず、問題なく動く。

Chrome の仕様が厳格化されたことによる制限らしい。
※詳しくは、以下あたりを参照。

TEST CORDING » GithubからJavaScriptを読み込み時は専用のドメインから!

javascript - MIME type error with .js in all browser in a view of SharePoint 2013 - Stack Overflow

 

回避方法としては、GAS で返すデータの MIME タイプを指定すればOK。

  var out = ContentService.createTextOutput(e.parameter['jsoncallback'] + '(' + getData() + ')');
 ↓
  var out = ContentService.createTextOutput(e.parameter['jsoncallback'] + '(' + getData() + ')').setMimeType(ContentService.MimeType.JAVASCRIPT);

 

もともとちゃんと指定しておくべきだったか・・・

超交流会2014memo

f:id:tk_4dd:20140608094753j:plain

今年も超交流会2014に参加してきた。だいぶ雑だが気になったことなどをメモ。

 
いつものことながらいい刺激をもらえた。
本を読むとか話を聞くとか、自分の日常の中にない情報などを取り入れることは、何かしらプラスにつながると感じる。
★をつけたのは特に気に入ったところ。
 
 
●なぜ超交流会を始めたか
同窓会総会の参加者が1人とかになって、無意味かと思ってた
毎年150人卒業生増えるし、切手代もバカにならなかったりもするし
そんなこんなで2009年から始めた
 
 
●1分間スピーチで気になったもの
大阪イノベーションハブ
ロックオフ
ブースでわらしべ長者、タイピング競争(展示ブースへの集客ネタとしていいなあと)
Tera school
解放食堂
※スピーチはなかったが、射的で3つ以上倒したら似顔絵のイラスト作りますってのもよかった
 
 
●小野さん オモロイ未来の創り方
★「ノータイムポチリ」(ノーポチ)
★小さなきっかけで「やることが前提になり、いかにやるか」という思考に変わる
ex.朝寝坊したので走る時間ない→とりあえずウェア着る→その少ない時間でどうやるかに切り替わる
「どうせ失敗する」より「やりたい」を優先
失敗→次の成長のチャンス
自分に負けそうなとき「チーム(仲間)」が重要
チーム→発信から生まれ、善意の解釈(尊重)で育つ
ケンカしそうなときはゴールを再認識する
★批判も「善意の解釈」でエネルギーに
ex.「もういい加減したら?」→応援してくれてる、「やめろ」→心配してくれてる
 
 
●石黒さん、水口さん、濱口さん、高須賀さん 無題
ソフトバンクの「pepper」は価格が驚き
かなりの数売らないと元取れないはず、ソフトビジネスでもうける?
ヒト型ロボットの流れが加速されていいかも
「愛がわかる」と言われると研究者は困る
データをセグメンテーションしてマッピングするのは難しい
 感情は一番簡単な通信手段(ex.スマイルシャッター)、表情・声のトーン
 
人間とロボットの境界とは?
★人間は他と区別したがる、それで安心できる?
→それは比較論、相対価値と絶対価値
→そもそも価値は比較から作られるので絶対価値ってある?
→「絶対的価値」ということで安心できる、逃げ場与える
物体と人間 物体:距離が近いとインタラクティブ性が高くなり、遠いと下がる、人間:遠くても下がらない(その人間との関係にもよる)
正面だとそうでもないが、アンドロイドがすぐ横にいると人間かどうかわからなくなる
→するとboundary(女性にいきなり触れるのは失礼とか)が崩壊する
→催眠術は内側に入るので壊せる、テレノイドも近い
実験 コールセンタのロボットに「Are you robot?」と聞くと、1回目と3回目が同じ笑い声でぞぞっとした
★→それは認知トリック
モデル1:よく似た情報を異なるソースから聞くとオーバーシュートされる
モデル2:3回目に思った通りにくるとさらにオーバーシュートする
ロボットだとリアクションのパターン少ない、視覚情報まで考えるとパターン多い、だがボイスのみなら出てきそう
★想像が入るとカンタンにダマせる、モダリティが少ないとカンタン、オレオレ詐欺でダマされるのはそこ
テレノイドで声のトーンを少しあげて性別を変えると知ってる人が操作してても人格がわからなくなった
★productもfunctional+design、それにstylishとかstoryが加わってる
愛もfunction、visual(見た目)、context(ストーリー、情緒的)
ソフトなら機能、デザイン、ユーザビリティ(便利、美しい、心地よさ)
体験がストーリー、narrative
30秒後に愛着感じさせること可能(ex.たまごっちでえさあげて喜ぶとかわいく感じる)
AIBOの製造中止前の苦情で多かったのは「本当は犬を飼いたいが無理なので・・・」#ここは話が少しつながらなかった感じがした
engagement(結束)が深くなると愛着に
好きだから行為をするのか、行為するから好きなのか
同じ日との写真を見せ続けると好きになる、カンタンな回路
AIBOの心理トリック 不完全性→助けてあげたい、比較論にいかないような・・・終わらないストーリー
★自分を犠牲にしてでも助けにいく(線路とかに飛び込む)存在
→自分の体の拡張、一部、身体化しているといえる
愛した後インタラクティブ性がなくなる方が続く?
助けに飛び込もうとしたときに「生きて」と言われたら?
考えるのが一瞬ではなく、十分な時間があったとしたら?
身体化された相手の可能性は未知、だから飛び込む
ただ最初の方で出た「おれは人間だから」と区別によって安心しているタイプはいかない
相手がいなくなった後の時間を考えると・・・
ブータンでみんな幸せなのか見に行った→チベット仏教、まず他人のための祈りから、幸せのプロトコル→「人のために」は重要か
Wants分けると 自分のため/他人・会社など団体・ペットのため/地球や環境など実体のないもののため
自分のためが9割、年齢いくと2つめが増えるといっても少ない、ロボットはその自分のためがない
自分を映し出す鏡、ぴったりあうと取り込む、ダマされやすい
#ここで時間終了
 
 
●Tera school(ブースで)
学習時間と学歴・所得の正の相関
母親の「勉強しなさい」はゼロかマイナス、父親などが横で一緒にやるのがいい
#確かに一緒にやるというのがいいというのはいくつか事例ある、TVでどこかの親子が父親と競ってトレーニングしていたとかも近い感じか
国内の寺の数7万、コンビニ4万、小学校2万
 
 
●近藤さん(途中だけモレ聞こえた)
まだネットにつないでいくと思うが、みんなスマホ見すぎじゃない?
#全く同意。でも見てしまうが
もっとリアルを再評価すべき
#断片的に聞いていたのでちょっとニュアンス違うかも
 
 
●その他
iPhoneでも十分プレゼンできるとは知らなかった(PCいらず)
おそらく他に機会はないだろうと思って初めてネイルを体験
 
 
●感じたことなど
うちの母校の同窓会組織も似た課題がある・・・
小野さんの考え方はぜひマネしたい、「小さなきっかけ」から「やる前提思考」になるのは非常にいい
また「ゴールの再認識」はいろいろなシーンで使えそう
濱口さん・高須賀さんが愛がないと言われてはるのはトリックが見えてしまうからか?
濱口さんの話は2011年のこの会で初めて聞いたが、いつも興味深い
アンドロイド・ゲームデザイン・コンセプトデザイン・ソフトウェア、いずれであっても本質に近いところを突き詰めていくと重なる部分が多い。昨年のこの会でも同じようなことを感じたが
 

Google Apps Script(GAS)で作った Google Spreadsheet 向け add-on のその後の状況

3/12の投稿で Google Spreadsheet(正式には今は Sheet と呼ぶらしい)向け add-on を作ったと書いたが、その add-on のその後の状況をメモ。

 

Sheet 向けより Docs 向けの add-on 方が人気が高いようで、4/4の12:50ごろ時点で、一番人気のあるものは

 Docs:14万ユーザ近く

 Sheet:2万ユーザほど

で、私が公開したものは159ユーザで、公開されている add-on の中では一番少ない。

#100ユーザを超えたのがいつだったかよく覚えてない(先週ぐらいだったか)が、その時の一番人気は

 Docs:9万ユーザ超

 Sheet:1.4万ユーザ弱

だったので、そこからの伸び率は同じような感じか。

 

ちなみにバックエンドではこんなグラフが見れる(add-on に限らず Chrome Web Store上のアプリでは全部見えるのかもしれない)。

f:id:tk_4dd:20140404131047p:plain

 また、公開の翌日ぐらいに Google Analytics のIDを設定したが、今のところ訪問ユーザは700名強。

 

目的特化型なので、100ユーザを超えただけでも、結構驚いているというのが正直なところ。

ただ、この add-on をちゃんと使いこなしてもらえているケースはかなり少ないのではないと想定される(そもそも Questetra BPM Suite をどう使えばいいか理解してもらうのが難しいと思うので)。誰か1人でもいいので感想を聞けたらなあと思う。

 

あと、当初はリリースを優先して、UIを犠牲にしたところ(設定の入力を Sidebar にはせず、またデータ保持を Property ではなくSheet 上にしたとか)もあったので、現在改良中。

 

まあこの add-on のきっかけに、1人でも Questetra BPM Suite を知ってくれて、その中から使う人が出てきてくれればいいなと。

Google Apps Script(GAS)で作ったWebアプリで使えないリクエストパラメータ名

以前にひっかかったことがあったものだが、最近あらためて身近なところで話題になったので、メモ。

 

GASでdoGet()・doPost()を持つプログラムを準備して、Webアプリとしてデプロイができるが、処理がエラーになってしまうリクエストパラメータ名がある。

 

それは

 pid

です。他にもあるのかもしれませんが、今確認しているのはこれだけ。

※ちなみに大文字にして「PID」なら問題なし。

※以前は「f」「bc」もだめでしたが、今は解決している。詳細は以下

https://groups.google.com/group/google-apps-api-japan/browse_thread/thread/f5e3a1ba82c62a01

Issue 1377 - google-apps-script-issues - There is reserved parameters that publish as a service? - Google Apps Script issues and feature requests - Google Project Hosting

 

おそらくは内部実装で予約語か何かになっているのかと。doGet()・doPost()に処理が渡る前に以下のようなエラーになる。

#以下はブラウザでアクセスした場合の表示で、レスポンスコードとしては500が返る

 

f:id:tk_4dd:20140314130336p:plain

 

 

はまらないように注意が必要。

Google Apps Script(GAS)で Google Spreadsheet の add-on を作ってみた

Google DriveGoogle Spreadsheet と Docs) で add-on が追加できるようになった。

Google Drive Blog: Bring a little something extra to Docs and Sheets with add-ons

これにより Google Apps Script(GAS)で作った add-on を Chrome Web Store に公開できる。

 

早速この仕組みを使って Questetra BPM Suite 活用を補助するツールを作ってみた。

Questetra BPM Suite add-on - Google Sheets add-on

Google Spreadsheet のデータのリストを使って、1行ずつhttpリクエストを送付して、メッセージ開始イベント(http)を持つプロセスモデルをたたく、というもの。

 

GAS で add-on を作ってみて思ったことは

・これまで人にGASを提供する場合は、ソースを共有して Script Editor で設定してもらっていたが、そういう手間が不要になった

・add-on の形にするためには意外といろいろ必要(設定画面等の追加実装、マニュアル作成、Chrome Web Store向けの画像作成や作文etc)

・これまでにちゃんとしてなかったソースの構成管理をそろそろちゃんとしないといけない・・・

・GAS を Web アプリケーションとしてデプロイする処理自体を、GASからできるとさらにいろいろできそう

 

あと、以下のような処理も add-on 化できそう。

・定期的にGoogleカレンダを参照して、イベント内容にあわせた処理を呼び出す

・(Questetra BPM Suite の実績データ等)外部データを取得してグラフ表示させる

 

いろいろ試してみようかと。

下町ロケット

http://ecx.images-amazon.com/images/I/51m0%2B3skvXL._SX348_BO1,204,203,200_.jpg

先日「下町ロケット」を読んだ。
その小説の中で、実験失敗の原因調査のシーンがあるのだが、以前の職場での現地作業(夜間バージョンアップ)の原因調査に少し似ている気がした。
あのときの怒鳴るだけで問題解決に思考が向いてなかったっぽいPMは、根っこはエンジニアではなかったんだろうなと、今さらながらに思う。
事実を整理して問題解決できるようエンジニアを支援するのが本来のPMの役割だと思うし、根っこがエンジニアならそれができるはず。怒鳴りながら自分の責任ではないと訴えているように見えたが、PMとしては一番やってはいけないことかと。メンバーのミスも含めてマネジメントするのがマネージャーの役割であるはず。
その時は私の作ったプログラムではなく、別の通信機器の設定ミスが原因だったのを、なんとかその場で証明できて、回避による作業実施もできたが、あまりに頭にきたせいで作業後にホテルに戻ってから一睡もできなかったことを今でも覚えている。
#いい思い出ではないが、今となっては話のネタの1つ。
だいぶ話が逸れたが、「下町ロケット」は読みやすく、エンジニアなら強く共感できるんじゃないかと。

TEDxKyotoに参加して

TEDxKyotoに参加して、様々なすばらしいプレゼンテーションやパフォーマンスを見させていただいた。

特に印象に残った部分をいくつか。

 

・起業は楽観的に

・(原発ゼロを選択するためには)今行動を起こさないといけない

・(ニュースインタビューで)あなたは何をしますか?と聞く

・「Before I die...」のボードに何を書くか

・(子供に)コトバでは振り向いてもらえなかったから、形や色や感触で

・日本語では違う(different)には悪い(wrong)という意味が含まれている

・情熱を注ぎこめるものを最初から持っている人はいない

・今ある企業や職業は過去のヒトが作ったもの

・「正す」「曲がった考え」と言うが自然では直線的なものの方が例外的

・考えるより試すことのスピードをあげてしまえばいい

・(医療用3Gで)正しさだけでなく楽しさとのバランス

 

パフォーマンスとしては、ジヘ・パクさんのバイオリンが一番印章的。寒気のような不思議な感覚があった(楽器が体の一部以上のものになっている感じ)

#同時通訳機を借りたが、同時通訳がしんどかったところもあったようで、英語のヒアリングができるようにならないとと痛感・・・

自分がやらないといけないということを強く意識させられ、モチベーションが増幅されたよい機会だった。機会があれば、またぜひ参加したい。