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周年が楽しみです!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS