« 2007年11月 | トップページ | 2008年1月 »

Respring - restarts SpringBoard with two taps on iPhone/iPod touch

Icon

Respring is the small application which restarts SpringBoard. Some other applications like SysInfo have the same feature. But this applications is very easy to use.

Interestingly, this application is implemented as a shell script with the alert command of Erica's Utilities:

#!/bin/sh
/var/root/bin/alert -C -b 'Restart SpringBoard now?'
if [ "$?" = "1" ]; then
  launchctl stop com.apple.SpringBoard
fi

If you are interested in this application, add my apptapp repository http://javaflavor.cocolog-nifty.com/apptapp/ to your Installer.app. Respring will appear in the category System.

If you want to manually install the application, download the application from the following link, copy it to your iPhone/iPod touch and expand it under /Applications directory.

Note that Respring requires Erica's Utilities and BSD Subsystem. These required softwares can be installed from Installer.app.

FYI: we shall not be liable for any damage or data loss arising out of or resulting from your use of this software.

History:

  • 1.0. Initial version. (12/30/2007)

| | コメント (0) | トラックバック (1)

jiggy - JavaScriptベースのiPhone/iPod touch開発ツール

iPhone/iPod touch向けのもう一つの開発ツールが登場しました。jiggyはmozilla.orgのSpiderMonkeyをベースに独自拡張したJavaScriptエンジンを用い、UIKitベースのスタンドアロンアプリケーションをJavaScriptシンタックスを用いて簡単に行うことができます。

jiggyのユニークな点は、開発環境としてWebブラウザを使用し、JavaScriptの編集からアプリケーションのパッケージングまで全てWebブラウザで行うことができる点です。

現在のiPhone/iPod touchの制約により、GUIのアプリケーションを同時に複数起動することができません。そのため、通常Jiggyアプリケーションの開発はiPhone/iPod touchとは別のマシンのWebブラウザが必要になります。JiggyのIDEはAJAXを使用しており、非常によくできたインタフェースなので、もしJiggy IDEとMobileSafariを同時に起動することができれば、スタンドアロンのアプリケーション開発ツールとして十分実用になるはずです。幸いJiggy IDE自身もJavaScriptで書かれているため、サーバ側のパスワード変更画面を表示させないようにスクリプトを修正し、Term-vt100からコマンドラインでバックグラウンド実行できるように修正してみました。結果はJiggy IDEのサーバ側の起動はうまくいきましたが、残念ながらエディタペインの部分が以下のようにぐちゃぐちゃになってしまい、事実上MobileSafariでの使用は不可能でした。

Jiggy

エディタペインの元になっているEditAreaのサンプルをMobileSafariで見ても同じ現象となるため、原因はEditAreaとMobileSafariとの相性問題のようです。

残念ながらJiggy IDEのスタンドアロン利用はできませんが、Javaと同様、ソースコードエディタとして、viかTextEdit.appを使用すれば、iPhone/iPod touchだけでアプリケーションを開発することは可能です。

JiggyのJavaScriptランタイムはJamVMよりメモリフットプリントが小さく、コンパイルも不要であるため、非常に手軽にアプリケーション開発が可能です。

【追記 2008.2.23】

現在、Installer.appから取得できるjiggy 0.21はファームウェア1.1.3では正しく動作しません。1.1.3に対応したjiggy 0.25をインストールするためには、http://jiggyapp.com/iをInstaller.appのリポジトリに追加する必要があります。

| | コメント (0) | トラックバック (1)

JavaSysInfo - shows Java system properties of iPhone/iPod touch

I am evaluating JocStrap, Java Objective-C binding framework, developed by Jay Freeman (saurik). JocStrap+JamVM+GNU Classpath provides the unique standalone iPhone/iPod touch development environment. I'm so excited!

JavaSysInfo is my first Java-on-iPhone application using JocStrap. JavaSysInfo simply shows Java system information on iPhone/iPod touch.

Javasysinfo

If you are interested in this application, add my apptapp repository http://javaflavor.cocolog-nifty.com/apptapp/ to your Installer.app. JavaSysInfo will appear in the category Java.

If you want to manually install the application, download the application from the following link, copy it to your iPhone/iPod touch and expand it under /Applications directory.

Note that JocStrap applications, including JavaSysInfo, currently require JocStrap, UICaboodle, JamVM, GNU Classpath, GNU Classpath Tools, Apache APR, libffi and BSD Subsystem. These required softwares can be installed by adding Jay's repository http://apptapp.saurik.com/ to Installer.app. Also note this application may not work with the future version of JocStrap. I will continue to maintain so that it will work with the up-to-date version of JocStrap.

FYI: the package also includes source codes. You can freely use these source codes for any purpose. But we shall not be liable for any damage or data loss arising out of or resulting from your use of this software.

History:

  • 0.9.0. Initial version. (12/22/2007)
  • 0.9.1. Changed to work with JocStrap 1.0.2274-1. No new feature added. (12/23/2007)
  • 0.92. Fixed broken packaging about symlink. You can install the package from my repository http://javaflavor.cocolog-nifty.com/apptapp/. (12/30/2007)

| | コメント (0) | トラックバック (0)

Java SE 6 Developer Preview 8 for Leopard

AppleからようやくMac OS X 10.5(Leopard)向けのJava SE 6 Developer Preview 8が公開されました。しかしながら、今回のリリースはIntel版の64bit VMだけのようです。

Java SE 6 Developer Preview 8
Java SE 6 Developer Preview 8 is an implementation of Sun's Java SE 6 for Mac OS X v10.5.1 and later. This Preview includes Java SE 6 version 1.6.0_01. This Developer Preview does not change the default version of Java. This release is only for Mac OS X v10.5.1 and later, and should not be installed on earlier versions of Mac OS X. This release is for 64-bit Intel-based Macs only and cannot run on PowerPC-based or 32-bit Intel-based Macs.

残念ながら私の初代MacBookでは試すことができませんが、AppleがまだJava SE 6を提供するつもりがあることがハッキリしましたので、とりあえず安心しました。

| | コメント (0) | トラックバック (0)

iPhone/iPod touch用Java SE実行環境:JocStrapでJavaからUIKitが利用可能に

Jay Freeman (saurik)氏は、iPhone/iPod touch用Java SE環境(JamVM+GNU Classpath)で、GUIを含む各種Objective-CフレームワークをJavaから利用する事ができるJava Objective-CバインディングライブラリJocStrapを公開しています。

現在、iPhone用のアプリケーション開発ツールとしては、gccクロスコンパイラ、Python、Perl、Rubyなどがあります。しかし、iPhone/iPod touch単体でUIKitを使用したGUIアプリケーションを開発できるスタンドアロン開発環境は、現状JamVM+GNU Classpath+JocStrapの組み合わせだけです。

JocStrapを利用する場合は、以前のエントリ「iPhone/iPod touch用Java SE実行環境(JamVM+GNU Classpath)」に従ってsaurikのレポジトリを設定することで、Installer.appからインストールすることができます。なお、パッケージの依存関係には明示されていませんが、JocStrapはランタイム時にAPR、libffiおよびUICaboodleを必要としますので、合わせてインストールしておきます。

JocStrapのObjective-Cバインディングは、Mac OS X用のCocoa Javaフレームワークとは全く異なります。Cocoa Javaフレームワークは、Objective-CのクラスライブラリをJavaらしいプログラミングスタイルに合わせてデザインされたものです。一方、JocStrapはObjective-Cのクラスライブラリを機械的にJavaライブラリにマッピングしたものとなっているため、アプリケーションの記述スタイルはJavaのシンタックスでありながら、良くも悪くもObjective-Cライクなソースコードに近いものになります。例えば、NSAutoreleasePoolオブジェクトの初期化処理はObjective-Cでは、

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

のように記述しますが、これをJocStrapを使用してJavaで記述すると以下のようになります。

NSAutoreleasePool pool = (NSAutoreleasePool) new NSAutoreleasePool().init();

通常、Objective-Cにおけるオブジェクトの初期化はallocとinitの2つのオペレーションのペアによって行われますが、Javaの場合もデフォルトコンストラクタの後にinit()メソッドを実行する事になります。ここでJavaプログラマは、init()の戻り値を明示的にNSAutoreleasePoolでキャストしている点が不思議に思われるかもしれません。Objective-Cはコンパイラ言語でありながら、強いリフレクションの性質を持っており、initの結果として自分自身以外のオブジェクトを返すことが許されています。JocStrapのObjective-Cバインディングもこの性質を引き継ぐため、init()メソッドの戻り値もObject型で宣言されています。Javaは強い型付けの言語であるため、実際に返されるオブジェクトの型に合わせてダウンキャストが必要になるわけです。

また、Objective-CはSmalltalkと同じように、オブジェクトのメソッド宣言には名前付きパラメータ形式を採用しおり、同じ引数型の並びであってもパラメータ名が異なっていれば、メソッドのオーバローディングができるようになっています。

- (void)send:(id)mail to:(id)address;
- (void)send:(id)mail with:(id)signature; 

一方、Javaのメソッド呼び出しではパラメータに名前をつけない仕様であるため、Objective-Cクラスバイディング時のメソッドの衝突を避けるため、Objective-Cクラスにおけるメソッド名とパラメータ名を全て繋ぎ合わせたものをJavaのメソッドにマッピングしています。

public void send$to$(Object, Object);
public void send$with$(Object, Object);

また、Window Serverからのイベントメッセージを受け取るアクションメソッドには、@Messageアノーテションを付与する必要があります。

@Message
public void applicationDidFinishLaunching$(Object unused) {...}

上記のようないくつかのルールがありますが、Objective-Cの知識さえあれば、比較的ストレートにJavaでアプリケーションを記述することができます。現在のバージョンでは、UIApplicationMainクラスが自動検出できなかったために、ブートストラップのためのコードが若干醜くなってしまうようですが、Objective-CネイティブのHello Worldが、Java版のHello Worldに変換してきちんと動いているのは立派です。

まだまだ改善の余地が沢山あるJocStrapですがとても興味深いプロジェクトだと思います。

| | コメント (0) | トラックバック (0)

iPod touchでワイヤレスヘッドフォンを接続する - サンワサプライ MM-BTAD10BK

iPod touchは残念ながらBluetoothが省略されているため、A2DPプロファイルのワイヤレスヘッドフォンを直接接続する事ができませんが、サンワサプライから発売されているiPod用のBluetoothアダプタ MM-BTAD10BK(白の方はMM-BTAD10W)を接続することでBluetoothステレオヘッドフォンを利用する事ができます。

Ipodtouchbta2dp

MM-BTAD10BK/WはiPodのドックコネクタに接続するタイプのBluetoothアダプタで、A2DP、AVRCPプロファイルに対応しています。MM-BTAD10BK/Wの対応機種にはiPod touchが明示的にはリストアップされていませんが、実用上の問題はなさそうです。今回私が接続に使用したBluetoothヘッドフォンはiTech Clip R35で、ペアリングのパスコードが8888に固定のものですが、MM-BTAD10BK/Wは複数のパスコード0000, 1234, 8888に対応しており、ペアリング時にこれらのパスコードを順番にチャレンジしてくれるため、iTech Clip R35とも問題なくペアリングに成功します。

本当は、サンワサプライのものと同等機能で、さらにUSBポートがついているPrincetonのPTM-BAHIDがよかったのですが、製品仕様からiTechのパスコード8888に対応しているかどうかが分からなかったため、安全をみてサンワサプライの方にしました。いずれにしても、これでiTech Clip R35は、705NK(Nokia N73)、MacBook、iPod touchの3つのデバイスで利用できるようになりました。

アダプタをつけると通常のiPodより大きいiPod touchがさらに大きくなってしまいますが、使用感としては大変満足です。ヘッドフォンがワイヤレスになったこともありますが、それよりもiPod touchをズボンのポケットに入れたまま、音楽の再生コントロールとボリュームの調整が胸元のボタンで制御できるようになったことの方がメリットとして大きいと思います。

また、iTech Clip R35に対してiPod touchとbluetooth接続可能な携帯電話の両方から同時に接続しておくと、iPod touchで音楽の再生中に電話がかかってきたときにはiPod touchの音楽が自動的に停止し、ワンタッチで電話に応答することができます。

| | コメント (4) | トラックバック (0)

iPhone/iPod touch用Java SE実行環境:jikesも利用可能に

以前のエントリ「iPhone/iPod touch用Java SE実行環境(JamVM+GNU Classpath)」で紹介したJay Freeman (saurik)氏のレポジトリからjikesがインストールできるようになっています。

jikesはC++で実装されたJVMを使用しないjavac互換の高速Javaコンパイラです。先にも述べたようにJamVMにはJITがないため、ecj.jarを使用したjavacは非常に遅いのが問題でしたが、jikesの登場によってiPhone/iPod touch上でのJavaのコンパイルが非常に快適になります。

簡単なHello Worldなクラスでもjavacではコンパイルに40秒近くかかっていますが、jikesなら1秒足らずで終了します。

Jikesiphone

| | コメント (0) | トラックバック (0)

iPod touchで読書しよう - Books.app

Iphonebooks

iPhone/iPod touchをjailbreakすると、InstallerのカテゴリにeBooksというカテゴリがあり、著作権の切れたいくつかのEブックが含まれています。これらのEブックは、カテゴリProductibityにあるBooksというEブックリーダで読むことができます。

eBooksカテゴリにあるEブックはHTMLで整形されたEブックですが、Books.app自身はテキスト形式にも対応しています。また、UTF-8でエンコーディングされていれば、日本語の表示も問題なくできます。例えば、青空文庫で公開されているテキストはShift_JISですが、nkfなどを利用してUTF-8に変換すれば、iPhone/iPod touchをEブックリーダとして利用することができるわけです。

Books.appは、ディレクトリ/var/root/Media/EBooks/配下のファイルを認識しますので、UTF-8変換したテキストファイルをscpコマンドなどでこのディレクトリに転送します。この時、ファイル名は日本語であっても構いません。

$ ls
太宰治「斜陽」.txt 畑仲哲雄「スレイブ」.txt
夏目漱石「明暗」.txt
$ scp * root@xx.xx.xx.xx:~/Media/EBooks/
root@xx.xx.xx.xx's password:
太宰治「斜陽」.txt                     100%  280KB 280.0KB/s   00:00   
夏目漱石「明暗」.txt                  100% 1086KB   1.1MB/s   00:01   
畑仲哲雄「スレイブ」.txt         100%  280KB 279.7KB/s   00:01   
$

sshでiPodにログインしてみるとロケールを設定しても日本語が化けてしまいますが、iPhone/iPod touchのファイルシステムはMac OS Xと同じでロケールに関わらずファイル名のエンコーディングにはUTF-8が使用されているようです。そのため、~/Media/EBooks/をMobileFinder.appで表示させてみても、キチンと日本語のファイル名が表示できますし、Books.appでも以下のように日本語のファイル名でテキストファイルをリストしてくれます。

Iphonebooks1

以下は実際にテキストファイルを表示させたところです。Eブックはスナップジェスチャでもスクロールできますが、画面下のボタンを使ってページめくりした方が圧倒的に便利です。また、画面のタップ1回で画面上部にスクロールバーが現れるため、これを使って任意のページに高速スクロールする事もできます。

Iphonebooks4Iphonebooks5

その他、フォントの拡大/縮小、画面の白黒反転などの機能があり、どこまで読み進めたかはEブック毎に記憶しておいてくれるため、大変便利です。

Iphonebooks7Iphonebooks8

Books.appがサポートしているフォーマットは、HTML形式、テキスト形式以外に、PalmDOCやPluckerにも対応しています。例えば、Project Gutenbergのサイトで公開されているPlucker (.pdb)形式のファイルも以下のように表示することができました。

Iphonebookspdb1

| | コメント (0) | トラックバック (0)

« 2007年11月 | トップページ | 2008年1月 »