便利すぎて困りもの
はじめてGoogle apps scriptを知ったとき、ものすごい衝撃でした。全部オンラインで完結してる・・。
ステップ実行までできる・・。
自動化のコードを書き始めた最初のころは、ぜんぶGAS環境のなかでやっていました。もうあまりに便利で別世界のようでした(コードを書く現場を離れて10年を越えていたので、文字通り別世界でしたが)。
なのですが、機能が増えるにつれて、だんだんとツラくなってきました。
同じスプレッドシートを複数人分用意して、それぞれにスクリプトが存在する場合、バグを修正したり小さな機能追加をしたときの抜け漏れチェックが大変です。
また、スプレッドシートのAPIはプリミティブなものがほとんどなので、何度も同じコードを書くことになり、それらはまとめられてライブラリのようになってきます。
つまり、たくさんのファイルに、同一もしくは多少の変更が加えられた共通コードが点在するようになってしまうのです。
とはいっても、エディターからデバッガからすべてがそこにある環境なので、どうしても、そこで機能追加してデバッグしてしまいます。その場でテストして、その場でOKにして終わりにしたくなってしまうのです。
そうすると、どのフィアルのどのコードが、いったいどういう状態のものか、すぐにわからなくなってしまいました。
ローカルPCにソースを引き出して、マスターを手元に置かないと危ない、わかっていてもなかなか離れられず・・・。困ったものです。
悲劇は必ずやってきます。一番きてほしくないときに。
実験段階ならぜんぜん構わないと思いますが、実戦に入り、ソースコードが増えて、なにがどの状態なのか記憶が怪しくなってきたら、マスターの管理をGASから引き離した方がよいです。
必ずいつか、失敗します。
しかも、苦しいときに。
私の場合は、急に規模を拡大しなければならなくて、ひとりでヒーヒー言っていたときに、それが起こりました。
注意力が低下していることを自覚しているにも関わらず、納期のために向こう側で小さな機能を足してしまいました。
それは、一人一人に入金依頼のメールを送るスクリプトに、規模拡大にそなえて増員したメンバーがケアレスミスをしないよう「誤送信にガードをかける」ものでした。
エディタに新しいソースファイルを追加し、そこに既存のコードをコピーして、そこで3行ほどのコードを足したんです。
デバッガでステップ実行して、「正しく誤送信を防止する」ことを確認できました。
そこで、最後はデバッガではなく、スプレッドシートのメニューから実行しようと、わざわざ誤送信を試みました。
スクリプトは停止せず、目の前で、まだ送るべきでないひとたちへのメールを、どんどんと送り始めました・・・。
このミスはそもそもテスト環境を設けなかったことがいけないのですが、3行の追加のみのために、納期ギリギリで深夜にかかる作業のなかでは、誘惑に負けてしまいました。
原因は、デバッガの名前解決とスプレッドシートのメニューから実行したときの名前解決の順序が違うことにあります。
デバッガは、エディタで開いているソースから「のみ」関数を探して実行しますが(それしか選択できませんよね)、実際の実行時には、ソースコード全数をリストに並んでいる順に連結して一番最初から探します。
つまりこのケースでは、誤送信防止コードを追加する前の、もとのコードが実行されたわけです。
一旦動かしたスクリプトを止める手立てもなく、あとはメールのinboxに送信控えがたまってゆくのを、ぼーっと眺めていました。
(ブラウザを閉じれば止まったのかもしれませんが、状態不定になるよりマシ、と諦めました)
ケアレスミス防止のために追加したはずのたった3行のコードのために、全員にメールを送るというケアレスミス。
もう、馬鹿としかいいようがありません。。。
その日は寝るのを諦めて、誤送信したみなさんへのお詫びメール、担当者と事後対応の相談、、、泣きました。
開発・デプロイのプロセスは必須です
ひとり情シスなら、だからこそ、やりましょう。
もう、悲劇としかいいようがないですから。
まずはマスターのコード管理を手元へ戻しましょう。
そして、テスト環境と本番環境をつねに同時に用意して、コードは段階を経て実戦配備します。
手元でコードを書くと、エディターもいろいろ機能豊富でよいことも多いです。
また、履歴管理も容易になります。
浦島太郎にはキャッチアップがきつくもありますが、git、いいですねー。便利。
せっかくGASがクラウドなのにソースをローカルPCで保管するなんて、というのもあったので、ついでにGitHubやBitbucket。
初学のソースコードをGitHubで公開するのはさすがに恥ずかしかったので、非公開でも無料で使えるBitbucketに置いています。
これで、自宅でも、モバイルでも。
話がそれたので戻しますが、ひとりや少人数だからこそ、簡単にいろんなことができる(できてしまう)からこそ、プロセスはきっちり守りましょう。
ポイントだけおさえた単純なもので充分だと思いますので。
どうか、ひどい目にあうまえに T-T)。
Comments
Post a Comment