とある飲食店の前を通りかかった時、子供向けにぬいぐるみを店頭に置いてあるのに気がついた。
かわいいもの好きのわしとしては、見逃すわけにはいかない。(店には入らんけど)
どれどれと思ってみてみると、ピチュウ(ポケットモンスター)とチョッパー(ONE PIECE)が隣同士に鎮座している。
なるほど違和感がない。ONE PIECEにピチュウが登場するのはまあ無理としても、チョッパーはポケモンワールドでも何の問題もなく生きていけそうだ。ギャフンっ!

さて、前回のエントリーで新PC(中古だけど)のセットアップを急いだ理由として、Androidアプリの開発をするという事を述べた。
このアプリの開発は2011年の11月から始めたのだが、大雑把なアイデアを元にイキナリプログラムから入るという、素人が良くやる大変マズい手法で開発されたアプリである。
事の発端は、わしのメタボ体型だった。この洋梨のような体型をどうにかしようと、わしは朝早めに起きてトレーニングをしていた。していたというのは、最近はサボりがちになってしまっているからだ。なんと意志薄弱なオタクヲッサンなのだろう(つД‵)
時に、この年になってくると、本当に好きでもない限り同じ運動を反復するだけの筋力トレーニングというのは飽きてくるものだ。
いや、若くても面倒だと思うものだが、年齢が三十を越えると面倒を通り越して無駄だとさえ考えるようになる。典型的なダメな大人である。
そこでわしは、自分のトレーニングに踏み台昇降運動と、ボクシングのミラーシャドウを取り入れる事にした。普段とは違う動きをするこれらのトレーニングは、自分で考えたメニューをすべてこなす時間と気力が無いときでも、基本的には毎日必ずどちらかを行っていた。
このトレーニングにおいて、タイマーは大変重要なパートナーだ。踏み台昇降運動の場合はこれにメトロノームがプラスされる。
どちらも3分間行い、1分間のインターバルを入れて、踏み台昇降運動は5セット、ミラーシャドウは3ラウンド行う。
以前はAndroid携帯にDLしたタイマーアプリを使っていたが、だんだんちょっとした問題が出てくるようになった。
まず、基本的に3分間でセットしたタイマーは1回終わるとそれまでだから、トレーニングを再開する時はもう一度開始ボタンを押す必要がある。さらに、1分間のインターバルを設定するためには3分の設定を解除する必要があるため、インターバル時間はだいたい勘で決めていた。長いんだか短いんだか、トレーニングが終わって時計を見なければわからないのだ。
おまけに、トレーニングをすると汗をかく。その汗に濡れた指で携帯のタッチパネルに触れても、反応しない事が多いのだ。
おかげで、自分は開始ボタンを押したつもりでトレーニングを開始しても、いつまでたってもアラームが鳴らず
「いつまでやらすんならっ!」
と思って見てみるとタイマーは動いていやがらない。腹が立ってそのままトレーニングをやめてしまう事が多々あったのだ。
この時
「トレーニング時間と休憩時間を設定して、繰り返し回数を決めてしまえば、あとは最後まで勝手にカウントしてくれるタイマーアプリがあれば便利だぞ」
と思ったのが、開発のきっかけだったのだ。

作るものは決まったものの、案外タイマーアプリというのは作るのが面倒なものだ。
PCは時間を1/1000秒で認識するため、例えば1分なら60,000ミリ秒となる。
Android携帯もぶっちゃけ小型のPCみたいなもんだから、その認識は共通する。然るに、人は1分は1分と認識する。
つまり、使用者が1分と設定したものを、PCに60,000ミリ秒と認識させるためには、そうするための計算式をあらかじめプログラムに組み込む必要がある。
これだけの問題なら対したことでも無いように思えるが、当初の設計では時:分:秒で設定できるように考えていたので、計算は少々複雑になる。
それでもこの程度の事であれば「所詮は算数ぢゃん」と皆さんはお思いになるだろう。しかし、ここでわしは重大な問題に直面するのだ。
なんせわし、算数ニガテ(^_^;
もちろんこの程度の問題で開発が立ち行かなくなったとかそういう事はないのだが、個人的には今回の開発で一番「マンドクセ(´Д`)」と思うポイントだった。
次に考えなければならないのは、その計算に使うためのユーザー入力値の入力方法だった。
こういったツールは使い勝手が良いにこした事はないので、できるだけ少ない説明(あるいは説明不要)で操作できる方が望ましい。
そこで、ユーザーが値を直接入力する方法ではなく、時間や繰り返し回数の数字だけを簡単に入力する方法を考える事にした。
かっこいい言い方をすれば「ユーザービリティの向上」というやつだ。
タイマーというツールの性格上、使用するのは数字のみだが、もしユーザーが自由に入力できるエリアを作ってしまったら、誤って文字を入力してしまう可能性がある。そうするとエラーを表示するダイアログを作る必要もあるし、何度もそんなもんが出てきたらイライラするのは間違いない。
そこで、あらかじめ数値しか入力できないようにしておけば、操作も簡単でエラーが発生しにくいものになる。
幸いな事に、Android開発環境(iphoneにしてもそうだが)には、良く使いそうなオブジェクトがあらかじめ用意されている。
最終的に仕上がったものには、結局それらは少ししか使わなかったが、とにかく当初は「意図通りに動くシロモノ」を作るべく作業を開始したのだ。

最初の試作アプリは今は残っていないのだが、機能はともかく、いくつかの問題をかかえていた。大きな問題は2つあり、まずデザインが武骨だった。
Android開発環境に準備されているデフォルトの時間入力オブジェクトやボタンオブジェクトは、iphoneのそれとくらべるとエラく機械的で親しみの持てるようなものではなかった。
また、この時点でレイアウトをどうこうする知識はあまりなく、とりあえずボタンや時間を表示する位置なんかを中央に配置するようにした結果、画面の真ん中あたりにごちゃごちゃとそれらが並ぶような見た目になってしまった。このままでは使いにくい。
さらに、カウントした値を時:分:秒に変換して表示する方法も悩む事になった。
全てを秒で表示するならカウント値/1000でいいのだが、時単位になると一体何秒になるのだろう。そして、そんな値を見ても「ああ。残り時間は●時間●分か」などと計算できる人間はきっと少ない。
そうなると当然「時:分:秒」の形に直して表示する必要があるが、毎回(1秒ごとに)値を時間・分・秒に計算しなおしていたのでは処理が追いつかない。
実際表示が遅れる事が何度もあったので、別な方法を考える必要があった。
こうして、見た目的にも内部的にも、「ちょっとこうした方がいい」と思うような変更をするためには、かなりの部分に手を入れなければならないという事を身をもって知るはめになったのだった。
結局のところ、アイデアを出した時に、見た目や機能的な部分をつめる事にもっと時間を費やしておけば、後から色々と手を入れる必要はなかったはずだし、各プログラムが受け持つ処理の範囲(見た目も含めて)を明確に分けておきさえすれば、仮に後から手を入れる事になっても今回ほど煩雑にはならなかったはずだ。
アイデアが生まれた時、それをどうやって実現するかをぼんやりと考え、実際に実現する方法をきちんと考えないと物作りというのは進まない。ようやくそこに思い至った。今回の場合「ぼんやりと考え」でイキナリプログラムに入ったのがマズかったのである。
こうして、プログラムに1ヶ月、インターフェースのレイアウトの変更などなども含めて1ヶ月。間で作業をできない期間(例のう●こ蹴った件ね)があった事を鑑みても、アプリの機能を考えれば少々時間がかかり過ぎたように思う。

わしのミラーシャドーを例にとって使い方を説明すると、アプリを起動したときに右上に「タイマー」と書かれていて、その下に数字が表示されていると思う。
この数字は左が「分」右が「秒」を設定するエリアで、そのエリアを指で上下に動かす(フリックする)事によってタイマー時間を設定する。わしの場合は3分なので、「分」を3に設定する。
同じような要領で、左にある「インターバル」を設定する。わしの場合は「分」を1にする。
これで、ミラーシャドウを3分間行い、3分経過後に1分間の休憩を取るという設定になった。
「タイマー」を設定するエリアの下あたりに「繰り返し回数」を設定するエリアがある。
「繰り返し回数」という文字の下にあるボックスをタッチ(クリック)すると、1~5までの数字が表示される。繰り返したい回数をタッチすれば設定は完了する。(わしの場合は3)
これで、後は開始ボタンをタッチすれば、ちょっと音質の悪い「カーン」というゴングの音が鳴ってタイマーが作動するのだ。
タイマー作動時は時間を気にすることなくトレーニングと休憩を繰り返し、設定した繰り返し回数が終了するとタイマーも終了するのだ。
「タイマー」終了30秒前と「インターバル」終了10秒前にアラームが鳴るのでラスト30秒がんばったり、休憩終了10秒まえにトレーニング再開の準備ができる。自分で作っておいて言うのも何だが、意外と便利な代物だ。
どうやらそう思ってくれる人がそこそこいるようで、1月8日にリリースしてから今日までに50ダウンロードを突破した。うれしいことだ。
筋トレの他にも、例えば受験勉強をする学生が「タイマー」を50分、「インターバル」を10分に設定すれば、効率良く5時間の勉強時間を確保できるのではないだろうか。これは、何も受験生でなくても教育ママや定期テストに挑む中高生にも有益だと思う。
また、スポーツクラブの監督官や学校のクラブの顧問の先生にも有益なのではないだろうか。
わしの乏しい発想ではそんな程度だが、この手のシンプルなツールは使う人によっていくらでも使用するシーンは広がる。
ぜひわしなんぞが考えも及ばないような、突飛で画期的な活用術を見出していただきたいものだ。

さて、出来上がったこのアプリ、わしは一番のウリはやはり「作業時間と休憩時間を設定できる」と「それらを繰り返す」だと考えていた。
が、最近思ったのだが「開始ボタンを押したら音が鳴る」というのが、地味ながら案外良いのではないかと使っていて思った。
というのも、わしのような使い方をする人だと、ボタンを押した際に音でもでなければ、押したんだかどうだかわからない事がままあると思う。
だが、このアプリは押したら必ず音が出るので、ちゃんと動作しているかどうかを気にする必要が全くない。ゴングの音さえ聞こえれば、かならず動作しているのだ。
無料配布ということで広告を載せているが、この広告は楽天やAmazonなんかのアフェリエイトとは違い、クリックするだけでも開発者の懐に潤いを与えてくれる。価格はまちまちだが、1クリック平均6セントくらいだ。
ということは、わしのアプリのユーザー全員が一日一回クリックしてくれると、一日3ドル程度入ってくる事になる。
たかだか240円程度だが、これもやはり開発者にとっては魅力的な話だ。
ところが、タイマーアプリは基本的には一人遊びのツールなので、開始ボタンを押してしまうと、あとはほったらかしなのであまりクリックしてくれる人がいないのが悩みの種だったりする(つД‵)
とはいえ、これがわしが生まれて始めて世に出したアプリケーションなのである。

MultiTimer
https://market.android.com/details?id=jp.ne.abbackyne001

-----

$安田亜村の過ぎた日の喜びも悲しみも
エレキギター紹介サイト。初心者の始めての一本からプロユースの逸品まで。