便利にする方法を考える
GoogleAppsでスクリプトを書いて、もうどのぐらいが経ったでしょうか。
最初の頃は、セル情報の取得や挿入でも、
いちいちプログラム上でスプレッドシートのオブジェクトを生成するなど、
じつに効率の悪くエラーの起きかねない方法を取っていたのですが、
今では二次配列として取得されるシート情報を、配列内で操作を行い、
それをまた、全て一括で入れ直すという方法で効率のよい手段を見つけ出せたり、
処理の種類に応じて関数を作成し、処理を分ける事も考えるようになりました。
そして、ときに小さな機能を持った関数を独自に作ることもあります。
たとえば、文字列の中から数字を出したり、
全角数字を半角に変換したりなど・・・
そうして作った関数は、なるべく流用が可能なように設計しています。
作った関数は、別途作成したプロジェクトにコピーをし、集めています。
そうすることによって、そのシステムを作り終えたらそれで終わりで、
次の仕事で新たに関数を作り直すという手間もなくなります。
それに、本筋のスクリプト内に記載しなくてもよくなるので、
本筋クラス内の変数もごっちゃにならず、かつ行数自体も省けます。
GoogleAppsスクリプトにおいては、同じプロジェクト内なら、
別のスクリプトファイルからも普通に呼び出せるため、
ファイル内のスクリプトを
全てコピーして貼り付けるだけで利用できるので、便利です。
このように、スクリプトファイルを新規作成し、その中にブチ込むだけです。
さしづめ自作フレームワークといったところでしょうか。
そして、基本的にスクリプトの動作は、手動ではなく自動です。
そのためには、トリガー設定という、
タイマー等で自動でスクリプトを起動させる設定が必要となります。
トリガーは関数ごとに設定でき、関数がある分だけその項目も多くなってしまい、
どの関数に設定すればいいのかも、迷う元になります。
たいていの場合、一番上にあるものでいいはずでしょうが、
見栄えとしても、あまりよいものでもありません。
なので、今ではそれも1つの関数にまとめてしまっています。
つまり、1つの関数の中に、関数を呼び出すだけの関数を並べるだけです。
いわゆる「スタート関数」です。もちろんこれは自分で付けた言葉ですが。
ファイルに関数が1つしかない場合は、
トリガー設定の際に表示される関数は、1つのみです。
そしてその関数が入っているファイルも、一番上のものにしておけば、
最初にそのファイルが表示されるため、ほかの人が設定する際にも、
わかりやすくなるはずです。
この関数の中に、ほかの関数を呼び出すための書き方である、
「myFunction();」などを、並べていくだけです。
これによるさらなる利点は、スタート関数の中にさらに条件を設けたり、
処理の順番を並べ替える、処理を一時使用不能にするなども簡単になります。
だからと言って、この関数自体も冗長にしすぎると、それはそれでまた問題ですが・・・
ベタで効率の悪いやり方から始まり、こういった事が出来るようになったのも、
この私が天才だから・・・・・・などという事はありません。
単に、簡単にしたかったから、便利にしたかったからという考えからです。
システムを作るにおいても、使う側の人が便利に感じられるように考えます。
便利であるはずのシステムも、覚えるべき操作が膨大になれば、
それこそ不便ですから、見ただけでそれとわかるような作りを、いつも考えています。
ゲーム制作においても、じつはゲームマニアよりも、
一般人にプログラムを教えたほうが早いという話もあります。
その理由は、マニアに作らせると、
自分好みの高難易度でマニアックなゲームになり、
一般の人のほうが、客観的な物づくりが出来るからだそうです。
また、ダラダラとしたチュートリアルを流すよりも、
操作するだけで理解できるゲームが好まれるのも当然の話で、
中でも「スーパーマリオブラザーズ」の最初の面は、
コースを進めるだけで一通りの操作を行える、
自然のチュートリアルステージとしても有名です。
昔はアルファベットを入れるだけでも精一杯の容量で、
長文を作成できないというのも事情のひとつですが、
説明書を読まなくてもいい、事前知識を詰め込む必要のないゲームは、
作り手側の親切心を感じ取る事ができます。
そして、「常識に捕われた物づくりは・・・」などとも言われる事もありますが、
自分はむしろ、常識こそ利用すべきだと思うのです。
常識とは、誰もがそう思うであろう、いわば共通の辞書。
ファミコンにおいてもアクションゲームではAボタンがジャンプ、Bボタンが攻撃等、
RPGやアドベンチャーなどでは、Aボタンが決定、Bボタンがキャンセルと、
これを逆にしただけでも評価が大きく下がる批判対象になり、
実際ミスも増えるほど、もはや常識となっています。
物真似などではなく、よほどの特殊な表現でもない限り、
こういう常識を利用する事によって、
扱いやすいインターフェースというものは出来てくるものだと思います。
実際、自分はプログラマーとしては、まだまだ素人だと思います。
多彩な機能を詰め込んだり、それらを便利にしたいと考えますが、
あくまでもプログラマーとして腕がいいからではなく、
自分がそういう操作をしたくはない、
逆にそうすると便利だろうという考えを忘れないからだと思うのです。
本当に玄人を言い張れる腕前になったとしても、
自分の腕を自慢するような物づくりをせず、
親切心は忘れたくないものです。