EBATimeができるまで

〜 EBATime1、そして2へ 〜

ここではEBATimeの開発に関するあれこれを、赤裸々に思い出しながら振り返ってみます(時々更新&修正)

  • 2004年 それは一冊から始まった
  • 2005-6年 作者は地獄を見た
  • 2006-10年 EBATime1の完成
  • 2011-18年 スマホの衝撃
  • 2019年- 令和の時代果てしなく
  • 2004年 それは一冊から始まった

    きっかけは一冊の本

    EBATimeの開発を始めたきっかけは、2004年にまで遡ります。

    当時の私はゲーム会社でプログラマーをしていましたが
    「仕事ではなく、自分の好きなものを作りたい」
    と日々思ってました。

    じゃあ何を作ろうか?ゲーム?アプリ?
    そう考えていた時、ある本に出会いました。


    あなただけができることをやりなさい
    細貝俊夫 翔泳社

    この本はコンピュータの発展に寄与した偉人の伝記集です。
    タイトルの言葉は、その中の一人エドガー・ダイクストラ氏(コンピュータ科学者)のものです。

    あなただけができることをやりなさい

    なんでか分かりませんが、この言葉は心に響きました。

    自分にしかできないことは何だろうか?
    ひたすら考えた末に閃いたのが クロスカントリースキー用タイムチェッカー でした。

    自分だけができること

    当時クロカンのタイムチェックは、専用の機械を使うのが普通でした。

    しかしこれらは十万円以上するほど高価で、気軽に手を出せないものです。
    また海外製につき英語表示、日本人向きではありませんでした。

    それなら、もっと安価で使いやすいソフトを作れないだろうか?
    これはクロカンとプログラミング、両方に詳しい自分だけが出来ることのはずだ。

    そんな思いからEBATimeの開発が(ひっそりと)始まりました。
    当時スマホは普及しておらず、ターゲットはいわゆるガラケー(ドコモ)です。

    P505is
    開発に使ったP505iS まだ動きました!

    ただ最初は強い決意とか信念とかはなく、帰宅後や休日にダラダラ作ってました。
    スキーを止めてメタボな時期だったので「つまらなかったら、やっぱゲーム作ろ」程度の気持ちだったと思います。

    アプリ名について

    アプリ名 EBATime の由来ですが、これは私の名字(江畑)をもじっただけです…じつに単純。
    前述した通り大した決意も無かったので、3秒でテキトーに付ました。

    後でもっと格好良い名前に変えるつもりでしたが、アプリ名の変更がプログラム的に少し煩雑な事を知り、面倒になって正式名称になりました。

    ちなみに EBAT が大文字で ime が小文字なのが正しい表記です。
    また発音は「エバタイム」と呼びます。

    今では自分を納得させるために EBA の3文字は
     Extended Banal Architecture(エクステンデッド・べナル・アーキテクチャ)
     訳:拡張された平凡な構造
    の略だと言い聞かせてます。

    2005-6年 作者は地獄を見た

    分かりやすさへのこだわり

    EBATimeの開発で心掛けたのは

    分かりやすい操作方法

    というポリシーです。

    選手の両親やコーチといった高い年齢層をユーザーとして想定したので、機械が苦手な人でも使えるよう工夫する必要がありました。

    だから「画面を見れば操作が分かる」ことを重視しています。

    下の画像は初代EBATimeのタイム計測画面です。
    タイム計測画面

    よく見ると青い字で「キーと操作」が全て書いてあります。
    (1-9:ダイレクト入力 *:通過ビブ番号を入力 など)

    スペースの無駄かもしれませんが、前述の「画面を見れば操作が分かる」を実施した例です。

    このようにEBATimeは「できる事が全て画面に書いてある」設計を意図的にしています。
    機能を探す手間を無くし、分かりやすくするのが目的です。

    この方針はスマホ版(EBATime2)にも受け継がれていて、一般的なアプリに比べボタンが多くデカくなってます。
    またスワイプやピンチといった気付きにくい操作も採用していません。

    また、下のようなアイコンもほとんど使っていません。
    アイコン
    アイコンその2

    アイコンはスペースを節約できますが、絵から意味を想像しにくいこともあるからです。
    だからスペースを取りますが、出来る限り文字を使うようにしています。

    問題その1 携帯の性能

    開発にあたって、大きな問題になったのは携帯電話の性能です。

    当時のケータイはとても能力が低く、複雑な処理をすると直ぐに動作が重くなります。
    最初の試作では描画が異常に重く、キーを押してから画面が変化するまで3秒もかかる有様でした。

    そこで問題をクリアするために、一般的な設計を止めて変わった方法を取りました。

    一般的な方法 = ウィンドウに部品(ボタンなど)を配置する
    ではなく
    現在画面をスクリーンショット化し、キー入力があったら、スクリーンショットの一部分だけ書き換える

    という変化球的な仕組みを使って、動作を劇的に軽く出来ました。

    これはダブルバッファリング差分描画といって、ゲームでよく使うテクニックです。
    EBATimeはゲームじゃないですが、偶然にもゲームの仕事で得た知恵が活きたわけです。

    他にも数々の細かい工夫を重ねて、動作を軽くしています。
    その甲斐あって、当時最も低性能だったケータイ(三菱製)でも快適に動くようになりました。

    問題その2 アプリは肥えているか?

    性能の他にも、もう一つ厄介な問題がありました。
    それはアプリのサイズです。

    当時のドコモ携帯では、アプリのサイズは最大30キロバイトまでと決まっていました。
    ところが普通に作ってると簡単にオーバーしてしまうのです、

    ちなみにキロバイトは、通信量でよく使うギガバイトの100万分の1を表す単位です。
    これで小ささが分かって頂けるでしょうか?

    この問題をクリアする為には、プログラミングで「最新の機能を使わない」ことを徹底しました。
    最新機能は便利で開発を快適にしますが、その反面容量が増えやすくなります。

    つまり古い機能メインで作るわけです。これがなかなか不便で厄介でした。
    プログラムが見難くなったせいで、普段ならありえないミスを何度も犯し、何度も頭を抱えました。

    プログラミング経験のある方の為に、容量削減に行った工夫を挙げてみます。
    ・クラスを使わない
    ・関数は極力少なくする
    ・変数も少なくする
    ・const定数 は一切使わない
    ・シフト演算を多用
    ・switch は一切使わず else if で代用
    ・三項演算子は使わない
    ・JavaだけどC言語のプリプロセッサを使う
    ・オブファスケータを使った最適化(ビルド時間増)
    ・標準のjar を使わず 7zip で圧縮

    これがいかに面倒かお分かり頂けますでしょうか。。。汗
    とはいえ大変でしたが、それなりに楽しかったのを覚えています。

    もう一度クロカンを

    ちなみに当時の私はクロカンを止めて7年。
    メタボ気味でしたが、開発するにつれ徐々にクロカン熱がよみがえり、ついに再開を決断し今に至ります。

    復活を目指してジムへ行き体力測定をしたら、成人男子の平均を大幅に下回ったのは良い思い出です。

    問題その3 うつ病

    そうやって苦労しながらもコツコツと開発していましたが、2005年になって困った事態になります。

    仕事が忙しくなった結果、体調を崩し持病のうつ病が再発しました。

    体が鉛のように重く、何もやる気がせず、よく分からんけど死にたくなる。
    そんな状況なので休職し療養となりました。
    開発もトレーニングも出来る筈なく大きなブレーキになりました。

    うつ病は現在でも治っておらず、薬で症状を抑えつつ何とか生活しています。
    平和かと思ったら理由もなく牙をむくので、本当に厄介で予定を狂わせる元凶です。

    今後も苦労させられるであろう◯UCKな存在ですが、上手くなだめて共存して行くしかないでしょうね…

    2006-10年 EBATime1の完成

    ベータから完成へ

    技術的な問題や自身の病気など諸々の障害で遅くなりましたが、2006年7月にようやく試作版を公開しました。
    なお対応機種はドコモだけでした。

    人知れずひっそりとリリースしたのですが、幸運にも少しずつユーザーは増え、色々な感想や要望を頂きました。

    得られたフィードバックを基に改良を加える…最初の2年間はその繰り返しでした。

    そうやって多くの人の強力を得て、現在のEBATimeの原型が出来上がりました。
    古参ユーザーの皆様には大変お世話になりました。ありがとうございます。

    EBATime1スクリーンショット集

    ゲームみたいな?タイトル画面がありました
    タイトル画面

    ファイル数はわずか6つです
    ファイル選択画面

    決済方法は銀行振込(まだストアがなかったので)
    未払い状態で2週間の使用が可能でした
    振込後に送られて来るパスワードを入れ、制限を解除します
    実に回りくどい仕組みである
    パスワード登録画面

    とても簡素な設定画面
    設定画面

    ある年の国体リレーのスタートリスト
    スタートリスト

    そのタイムチェック結果
    タイム計測画面

    タイム差表示 今とほぼ変わりませんね
    詳細画面

    赤外線で送信する機能もありました
    メニュー画面

    確かな手応え、しかし…

    その後ユーザー数は順調に増え、多くの方から嬉しい報告を頂きました(〇〇で優勝したよ!など)。
    私自身も2008年に10年ぶりに国体へ出場でき、開発・仕事・スキーの三刀流生活にも慣れてきました。

    2009年にはドコモ以外の3キャリア( au, SoftBank, MIDP )への移植にも着手し、また苦労しましたが無事に完了。

    これでEBATimeは完成!今後は揺るぎなく安心だろう。そう思いました。
    しかし、思わぬ事態が発生します。
    それはスマホです。

    2011-18年 スマホの衝撃

    スマホ世紀の幕開け

    EBATimeの3キャリア移植をしていた頃から
    「スマホ版は無いのですか?」
    という問い合わせが来るようになりました。

    この頃から日本でもスマホが急速に普及し始めました。

    しかしEBATime1はガラケー専用。スマホでは動きません。
    というか1を作っていた時は、スマホなんて影も形もありませんでした。

    スマホで動かすには、また一から作り直しが必要です。
    これにはマジで頭を抱えました。

    スマホが一過性のブームで、そのうち消えてくれないかな…
    と祈ってましたが、その願いとは逆にどんどん勢力を伸ばし、気が付けば私もスマホ(Android)に替えてました。
    sh12c
    そのスマホ sh-12c こっちもまだ動きます

    できるか?スマホ版

    こうなるともう腹を括り、スマホ版の開発を決心しました。

    しかし一つ大きな問題がありました。
    それは Android と iPhone はプログラミング方法(言語)が全く異なることです。

    つまり先にAndroid版を作ってiPhoneに移植しようにも、方法(言語)が違うので、かなりの書き直しが必要になります。

    ガラケー時の3キャリア移植は、皆Javaという同じ言語だったのでまだマシでした。

    しかし、Android(Java)と iPhone(Objective C)では言語が異なり相当の苦労が予想されます。

    仕事とトレーニングをしながら空き時間で開発するには、正直いって困難だと感じました。

    Titaniumの旗の下に

    そんな困った状況でウダウダ考えていたある日、光明が見えます。

    プログラミング雑誌をパラパラめくっていたら Android & iPhone同時開発 の特集を発見しました。

    その中で紹介されていた Titanium(タイタニウム) という開発環境(ツール)に興味を惹かれました。
    なんでも一つの言語(JavaScript)でAndroidとiPhone両方で動くアプリを作れるらしい。
    マジか!これなら行けるんじゃないか?

    早速本屋へ行き↓の書籍を買って、調査を開始しました。


    (既にバージョンが古いので今買うのはおすすめしません)

    その結果「行ける!」との結論に至り、開発がスタートしました。

    この時アプリ名を EBATime2 に決めました。

    意味不の中の開発

    さて、Titanium を使って開発がスタートしました。
    しかし一筋縄では行きませんでした…

    確かに Titanium は一つの言語(JavaScript)で Android と iPhone アプリを作れます。
    ところが、なぜか同じ命令でも動きが異なるケースが多々ありました。
    Androidで動いてもiPhoneではエラーになったり、そのまた逆もしかり…

    仕方なくインターネットで検索しますが、出てくる情報は英語ばかりで意味不明。。。

    泣きながら翻訳しつつ情報を仕入れ、換骨奪胎してアプリに組み込み、エラーが出ては直す。上手く行かない時は別の方法を試す。

    その繰り返しでした。
    今でもよく完成したなと不思議に思います。

    またiPhoneアプリを作成するためには、必ずMacが要ります。
    私はWindowsしか持ってなかったので、開発の為だけに13万円のMacBookを購入しました。
    さらに動作検証用にiPadも2台買いました。

    他にも、年間約一万円のストア登録料、レンタルサーバー代などなど

    こういった金銭面の負担もキツかったです。

    スマホ版の完成、そして

    そんな苦労の末に2013年、Android版をリリースしました。
    翌年にはiOS(iPhone/iPad)版も完成し、ようやく肩の荷が下りた気がしました。

    ちなみにiOSアプリを公開するにはAppleの審査をパスせねばならず、審査中は心配で仕事にも集中できませんでした。

    スマホ版も出して終わりではなく、ユーザーからのフィードバックを得て改良を繰り返し今に至ってます。

    またOSがバージョンアップすると、今まで動いたアプリが突然動かなくなる事も多く、その度に修正を重ねています。
    例えばiOSが11になった途端、強制終了が多発しました。

    AppleやGoogleは過去との互換性をバッサリ切り捨てるので、OSのバージョンアップは本当に鬼門です。
    それに合わせてEBATimeも終わること無くバージョンアップをする予定です。

    2019年- 令和の時代果てしなく

    作者の長い開発

    OSが新しくなる、新機種が発売される…
    そんな事が続く限り、EBATimeも対応せねばなりません。
    つまり、開発に終わりはありません。

    幸い多くの方にご利用・ご購入いただき、モチベーションはまだ大丈夫です。
    (ストアレビューや励ましの声をいただけると嬉しい)
    何よりクロスカントリースキーが大好きなので、開発はライフワークだと思ってます。

    平成が終わり令和になりましたが、EBATimeは進み続けます。
    今後とも宜しくお願い致します。

    このページはサイトの中でも異質な自分語り全開文章ですが、ここまで読んで頂きありがとうございました。

    江畑 邦明

    TOPへ戻る