2001年1月26日、世界初のアプリがダウンロードできる携帯電話、P503iとF503i発売!
今からちょうど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周年が楽しみです!