今からちょうど20年前、jig.jp設立へと続く、手元で動くケータイアプリが始まった日です。
記念にひさびさiアプリづくり。実機が手元にないので、エミュレーターを作ってコンパイル、実行!
2000年12月に発表された、iアプリの仕様。開発環境が待ちきれず勝手に作って公開した開発環境「iEmulator」は、日本内外に大人気。 開発コミュニティを創ろうとスタートした「iappli-fan」ですが、開発者がうまく集まらず。 原因が、iアプリの上限10KBを実機にダウンロードするだけで最低24円もかかるパケット代にあると見て開発したiアプリが、パケット削減ブラウザ「パケットセイバー」。 自作の開発環境があったからこそ実現できた、わずか10KBのブラウザ(サーバーでがんばるモデル)。後に「jigブラウザ」へと発展していくベースとなりました。
そんな思い出の開発環境「iEmulator」をオープンソースにしようと探してみるも、見つからなかったので、超初期版を改めて作ってみました。
public class A extends IApplication { public void start() { Display.setCurrent(new Canvas() { int key = 0; public void paint(Graphics g) { g.drawString("祝! モバイルアプリ 20th!", 10, 20); g.drawString("Hi! iアプリ", 10, 40); g.drawString("key: " + key, 10, 60); g.drawLine(60, 60, 120, 120); } public void processEvent(int type, int param) { if (type == KEY_RELEASED_EVENT) { key = param; repaint(); } } }); } }
懐かしいですね!最近Javaを使ってないので、今どきのJDKの調査からスタート。
$ brew install openjdk
アプレットは消えてしまったようですが、java.awtパッケージは健在でした! com.nttdocomo.ui.Graphics クラスは、java.awt.Graphics クラスを使って、こんな風にエミュレートしていきます。
public class Graphics { java.awt.Graphics g; Graphics(java.awt.Graphics g) { this.g = g; } public void drawString(String s, int x, int y) { g.drawString(s, x, y); } public void drawLine(int x1, int y1, int x2, int y2) { g.drawLine(x1, y1, x2, y2); } }
シンプルですね!
$ javac A.java; java A
コンパイルして実行!
ここから仕様や実機の動作に合わせて、いろいろと微調整しながら開発していきました。
(iEmulator 超初期版 - src on GitHub)
「Mobile:ビジネスiアプリ開発講座:第1回」
iEmulatorを探していて発見、懐かしい記事!
「i-appli Content Developer's Guide for DoJa-5.x/5.x LE」
かろうじて残っていた公式資料!
儚いwebと違って、安定の書籍。執筆したiアプリAPIリファレンスがあるので大丈夫。
iアプリの制限、勝手なネットワークアクセスはできず、プライバシーへの配慮は完璧で、開発可能な容量はわずか10KB!
付属のCDROMには、その当時の開発環境「iEmulator」が入っていそうですが、ソースはどこにいったのやら・・・。
「アプリ⚡ゲット 20周年記念サイト」
アプリゲットでの特設サイトが思い起こさせてくれました!
広がりつづけるアプリの世界、30周年が楽しみです!