2019年10月23日オクダヒロキFacebookTwitterはてブPocket現在の携帯端末といえば、スマホのiPhoneとandroidが主流で、それぞれのアプリも非常に充実しているものがあります。皆さんも自分の好きなアプリをインストールして、充実したスマホライフを満喫していることでしょう。エンジニアの中には「スマホアプリ作っているよ」という人もいるでしょう。僕もだいぶ昔にandroidアプリ作成を多少経験したことがあります。いっても、アプリ開発をしていたわけではなく、テスト用のアプリ作成を経験した程度。当時はまだスマホが出て2~3年くらいのときで、作り方もいまいちよく分からない状態でやっていました。その後現場が変わったこともあり、androidアプリに触れる機会はなくなってしまったのですが、チャンスがあればやってみたいなと思っているところです。いうわけで、今回はスマホアプリの話・・・と思いきや、そうではありません。スマホ誕生前に主力として活躍していたフューチャーフォン(=ガラケー)で、かつドコモのiアプリの話です。初期のドコモのiアプリのときに導入されていた方法が、涙ぐましい努力の結晶だったことを紹介したいと思います。昔は大変だったな~なんて感傷に浸りたい人は、ぜひどうぞ。最後に:今では絶対やらないであろう工夫がおもしろいドコモのiアプリとは?「iアプリ」とは何ぞやということですが、日本の携帯電話のキャリアとして最大手であるドコモがガラケー全盛時代にリリースしたJavaアプリのことです。iOSのアプリという意味ではありません。僕は大学生から18年間くらいドコモを使っていて、iアプリの誕生から現在までをユーザとして経験した人間。いっても、もはやどんなアプリを使ったか全然覚えていません。唯一覚えているのは、「Jigブラウザ」かな。ケー時代は、通常ブラウザとフルブラウザ(PCサイトも見れるブラウザ。今では当たり前)のに分かれており、フルブラウザ対応の料金プランはも高く設定されていたんだけど、「Jigブラウザ」などのiアプリによるフルブラウザを使えば、安い料金プランでも使い放題で重宝していました。今のスマホとはもちろん比べ物になりませんが、当時のガラケーの性能をフルに引き出して、速度的にも非常に優秀だったと記憶しています。思い出補正は否定しませんが。調べてみたところ、なんと、公式サイトがまだ生き残っていました。スマホ用のJigブラウザがあるのは知っているけど、ガラケー今でもサポートしているんですね。usersフルブラウザ-携帯にはjigブラウザhttp://br.jig.jp/pc/?p=1フルブラウザの定番。パケット定額対応でお得。初期のアプリサイズは10KBまでで、そんなiアプリですが、初期のアプリサイズが驚愕の数値で、最大10KBです。これは最初期に出された、DoJa-1.0プロファイル上のアプリの情報です。アプリサイズは10KB、ヒープ容量が96KBが最小でした。どちらも極めて厳しいサイズですが、アプリサイズの制限が本当に大変だったと言われています。NTTドコモhttps://www.nttdocomo.co.jp/service/developer/make/content/spec/iappli/#notice05iモード対応機種のiアプリのスペックについて、制作者向けの情報を紹介します。アプリサイズというのは、つまりはコードからコンパイルしたバイトコードや、画像などのリソースも含めたJarファイルです。これを10KB(10240バイト)に抑えていたわけです。アプリサイズはあまり意識しかことないかもしれないので、どのくらいのもんなのか確認してみます。iアプリの開発環境を構築するのはいろいろと難しい事情があるので、2019年4月30日現在のandroidのアプリサイズで比較します。2.34MB比較的機能が少なそうなアプリを選んだつもりですが、小さいものでも2MBは軽く超えています。モノも時代も異なるので、一概に比較はできませんが、10KB以内にまるのを作成できるとは想像できないですね。初期のアプリの開発コードiアプリのサイズが極めて厳しいことは分かったけど、じゃあどうやって作っていたのよ、と疑問になりますよね。何か削る要素があるのかというと、基本的にはなくてプログラムを削るしかないんです。プログラム削ったら機能が不足するので、やりたいことができないじゃないか、と言われると確かにそうなんですが、一つだけ機能を減らさずにサイズを減らす方法があります。それは変数名やクラス名、メソッド名を小さくすることです。コードはかなり適当な感じで書きますが、例えばこんな感じ。}}変数名やメソッド名の文字数を減らしていけば、コンパイルされるclassファイルに書かれる文字数が減るのでサイズ減少が期待できます。省エネのプログラムですね。この程度の大きさのプログラムであれば、これでも読めないことはないですが、組めば組むほど可読性が悪くなるのは目に見えています。先人は知恵を絞った結果、Java言語では使用しないあるものを使用することにしました。C系の言語でよく使用するプリプロセッサです。具体的には以下のようなコードを書きます。}}下記の構文は"_MainFrame"という文字を"F"という文字に変換することを意味しています。この部分はJavaの構文ではないので、当然Javaコンパイラではコンパイルできません。1回をプリプロセッサに通します。すると、以下のコードが出来上がります。}}これでコンパイルすることができるので、あとは普通にビルドするだけですね。このようにマクロ併用のコードに対し、プリプロセッサ→Javaコンパイラと2段階に分けて通すことで、可読性を上げつつサイズを減少させることができました。IDEは使えないので、それは大変だったと思いますが。実は今回の記事は、別サイトで見たプリプロセッサ併用の工夫を元に書いています。そのサイトを最近探してみたのですが、見当たらず。個人的におもしろいと思ったので、自分で残したくて書いたものです。最後に:今では絶対やらないであろう工夫がおもしろい当時のモバイル端末は、メモリもストレージもとにかく少なく、開発時にも知恵を絞っていたことが伺えます。詳しくは知らないけど、ファミコンのソフトなどはもっとすごい工夫をしていたんじゃないかなと予想しています。現在の携帯やスマホは、メモリもストレージの容量も充実しているので、このような工夫は全く必要なく、恵まれた環境にあります。いう絞りに絞った知恵みたいなものは生まれにくくなったかもしれません。潤沢なリソースが使用できる環境で開発できることに感謝しつつ、制限があった場合でも精一杯取り組むことは忘れないようにしていきたいですね。今後も良いものを作ることができるように心がけていきましょう。Hacks」プログラミングを独学で習得する際に障壁となるのが、「環境構築」と「質問できない環境」です。予備知識もなくプログラミング言語を学習すると、この2つで9割近くの人が挫折します。Hacks」はこの問題点を解消。Hacksの特徴AWSを使用して環境構築は一瞬で完了LINE@で質問し放題また、本講座で使用するRubyは未経験者でも比較的覚えやすく、日本語のドキュメントも充実しているプログラミング言語です。派遣・SESのエンジニアを考えてほしい理由リツアンSTC所属の正社員で、派遣のプログラマをやっているオクダヒロキです。「仕事も好き...オピニオンエンジニアは業務時間外でも勉強するべきなのか→そらそうよリツアンSTCの普通エンジニアのオクダヒロキです。社会人になると、学生とは違った勉強が必要になります。行間を広く、先頭行と最終行に...プログラミング系のブログでよく使われる、WordPressのプライン「SyntaxHighlighter」。技術系の記事を書くので僕のブログ...オピニオン派遣エンジニアは自己実現への一つの正解こんにちは、管理職から人材派遣会社に転職し、IT系のエンジニアをしているオクダヒロキです。僕は正直なれていません。強烈な個を組織化した未来型...Webサイトの制作やコンサルティングを頼みたいんだけど、どこに頼めばいいか分からない。ブロガーなら誰もが持つ悩み。僕はあなたの記録が見たいですいきなりだけど、早速結論です。SNSで子供の写真しか載せないあなたたちよ。僕はあなたの子供の写真が見たいわけじゃない。ソフトウェア会社に就職。前職11年勤めて課長→鹿児島に縛られる他人の為に仕事を得る立場に嫌気→36歳でリツアンSTCに転職及び上京。副業OK、発信も自由にOKの会社でのびのびと活動中。本業のSE・プログラマをやりながら、エンジニア全般や副業に関するブログを運営しています。詳細プロフィールリツアンSTCはこちら僕が所属する高還元のエンジニア派遣会社「リツアンSTC」については、別ブログを用意しました。副業のススメ収入源を分散しようライフハック効率的な仕事術プログラミングプログミングするならオピニオン僕なりの考えお問い合わせご連絡はこちら。