メモリ増設

3月17日に iPhone OS 3.0 が発表されましたね!私自身、iPhone SDK 2.2.1 環境が必要なので、iPhone OS 3.0 beta はダウンロードしましたが 、インストールはしていません。

iPhone Dev Center - Apple Developer Connection
http://developer.apple.com/iphone/index.action

また

TOEIC テスト 英単語・熟語 マスタリー 2000
カテゴリ/教育
\900
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305620660&mt=8
神の雫 第1巻
カテゴリ/電子書籍
\450
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301761549&mt=8

を購入してみました。

神の雫‘ はいろいろなところで紹介されていましたし、ドラマ化されるぐらい有名です。私自身、ワインについての知識はありませんが、十分楽しめました。携帯向けに作り直しているのではなく、コミックの画像をそのまま表示してるだけですが、コミック1巻丸ごと入っているので、リーズナブルです。拡大したまま次のページに移動できないのは残念ですが、iPod touch を横向きにして読みました。ぜひ続きを読みたいですね。

話は変わりますが、VMWare Fusion で Windows XP Professional を起動したまま Mac OS X 上の Safari で 20個ぐらいタブを開くと突然反応が鈍くなります。私の使用している機種は iMac 24インチ 2.4GHz Intel Core 2 Duo でメモリは 2GB です。

/アプリケーション/ユーティリティ/アクティビティモニタ.app を起動して、メニュー ‘ウインドウ/アクティビティモニタ‘を開き、ウインドウ下にある ‘システムメモリ’ タブを選択するとメモリの使用状況が確認できます。下図は VMware Fusion を起動していない普段の状態です。

アクティビティモニタ.app のヘルプと

Memory Usage Performance Guidelines: Introduction to Memory Usage Performance Guidelines
http://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/ManagingMemory.html#//apple_ref/doc/uid/10000160

で用語を確認すると上図の VMWare Fusion を起動していない状況でも、ページアウト(物理メモリからディスクにデータを移動) が 214.90MB 発生しています。スワップ使用領域(ディスク上に確保された仮想メモリの使用領域)も 391.33 MB あります。メインメモリが 2GB あれば十分だと思っていたのですが、足りないようです。それでメモリを増設することにしました。

アップル - サポート
http://www.apple.com/jp/support/
iMac の識別方法
http://support.apple.com/kb/HT1463?viewlocale=ja_JP

iMac を識別しようと思ったのですが、表で示された ‘箱のマーケティング番号’ に ‘Z0E40026H’ がないので ‘EMC 番号’ で判断しました。結果は

EMC 番号: 2134
iMac (24-inch Mid 2007) MA878XX/A XX=JP

です。

iMac に付属した取扱説明書 (Everything Mac、Mac のすべて) に書いてあるように iMac には 2基のメモリスロットがあり、最大 4GB まで増設できます。

Memory Usage Performance Guidelines: Introduction to Memory Usage Performance Guidelines
http://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/ManagingMemory.html#//apple_ref/doc/uid/10000160

Mac OS X の性能としては、上の資料より 32-bit プロセスで 4 ギガバイト、64-bit プロセスでおおよそ 18 エクサバイトのようです。
一通り読んでみたのですが、MallocDebug はガベージコレクションを使ったものには対応していないようですし、ObjectAlloc は Instruments に含まれているようです。

私の場合には 各々のスロットに 1GB のメモリが差し込まれていました。それで 2GB のメモリを2枚買うことにしました。

Apple Store で確認すると 2.0 GB で 10,080 円します。

秋葉館オンラインショップ | Mac本体、Mac専用メモリ/HDD/パーツ、オリジナル外付けハードディスク、その他周辺機器を扱うMac専門ショップ。
http://www.akibakan.com/

秋葉館では 2GB が2枚で 5580 円で買えます。(選択によってはまだ安くなります。)

DDR2 SDRAM PC2-5300 2GB(2048MB) SO-DIMM SAMSUNG純正 [200-2048MS5300 AS]
単品 \ 2,790 x 2個 = \ 5,580

早速注文しました。

iMac に付属した取扱説明書 (Everything Mac、Mac のすべて) を参考にメモリを取り付けました。スロットにメモリモジュールを強く押し込む必要がありました。

ちゃんとメモリが 4GB と認識しました。VMWare Fusion で Windows XP Professional を起動し、/アプリケーション/ユーティリティ/アクティビティモニタ.app で確認すると

ようになりました。ページアウト、スワップ使用領域のどちらも 0 MB で、同時に Safari を実行しても動作が鈍くなることもありません。

Windows XP Professional で一度は試したかった X68000エミュレータ を遅ればせながらインストールしてみました。エミュレータには XM6、WinX68k高速版などがありますが、今回は XM6 を使用することにしました。フォントデータは WinX68k高速版で作成し、ROMやソフトウェアなどは

X68000 LIBRARY
http://retropc.net/x68000/

からダウンロードしました。最初は軽く触れるつもりでいたのですが、mint、MicroEmacs などをインストールすると熱中してしまい、GCC環境まで作ってしまいました。随分昔になるので記憶は曖昧ですが、私の実機での環境では SX-WINDOW 上の make はメモリ不足でできなかったと思います。エミュレータ環境なのでメモリも最大にしました。SX-WINDOW 上で make が余裕でできるのは感慨深いものがあります。

エミュレータのハードディスク上へのファイル移動は、シャープが公開しているディスクイメージの中身を空にして

DiskExplorer
http://hp.vector.co.jp/authors/VA013937/editdisk/index.html

でファイルをディスクイメージ上にコピーし XM6 で読み込みました。

最初に LZHアーカイブ高速展開プログラム lx.r の圧縮ファイルを Windows 上で展開し、 実行ファイル lx.r を DiskExplorer でディスクイメージにコピーし XM6 上に移動させれば、ディスイメージに LZH ファイルをコピーして、XM6 上の X68000 で展開させることができます。WinX68k高速版 にはもっと便利な機能があるようですが!

SX-WINDOW でマウスを利用するには Mac OS X で割り当てられているファンクションキー機能を無効にする必要があるので、システム環境設定の ‘キ−ボートとマウス’ の ‘キーボート’タブを選び、’F1、F2 などのすべてのキーを標準のファンクションキーとして使用’ にチェックを入れました。当たり前ですが X68000 上での make の時間が速くなるわけではないんですね!



話は脱線しましたが、本当の目的は Ubuntu 上での Android です。ちょっと試してみたかっただけで、本格的に取り組むつもりはないのですが!


RemoteKey

RemoteKey
カテゴリ/ユーティリティ
\230
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301472359&mt=8

技術的に興味があったので購入してみました。無線 LAN 環境が必要です。(Mac に AirMac カードが内蔵されていれば、利用できます。設定方法は、下の URL の右下 ‘外出先での接続方法’ を参考にしてください。)

RemoteKey
http://hmdt.jp/remotekey/index-jp.html

iPod touch 上で RemoteKey を動作させた後、上の URL から ダウンロードし、Mac 上にインストールした RemoteKey Connect を起動します。
Devices (私の場合は iPod touch) を選んで Connect ボタンを押します。これで Mac の RemoteKey Connect で入力した文字が iPod touch の Remotekey に表示されます。
RemoteKey Connect で Mail ボタンを押せば iPod touch 上のメールが起動し、入力した文字列が本文として入力されています。RemoteKey Connect を終了するには、メニューバーの右端のアイコンからメニュー ‘Quit RemoteKey Connect’ を選択してください。

動作原理を調べてみました。間違っている記述もあると思いますが、メモとして残しておきます。

RemoteKey は Bonjour を利用して Mac と iPhone または iPod touch 間で動作します。
サンプルコード WiTap が参考になりそうです。(ソースを覗いてみましたが、私には理解するのに苦労しそうです。) WiTap は Bonjour を利用して2台の iPhone で 動作します。もちろん iPhoneiPod touch でも動作します。

WiTap
http://developer.apple.com/iphone/library/samplecode/WiTap/index.html
(iPhone Dev Center に登録していないと閲覧できません。)

私自身、iPod touch 1台しか所有していないので、WiTap を iPod touch 32GB、iPhone Simulator.app にそれぞれインストールして、両方の WiTap を実行し動作確認しました。WiTap は、カラーパッドをタップすると、もう一方の端末の WiTap のカラーパッドが点滅します。

iPod touch 上の ‘メール’、’マップ’ を起動するには NSURL、NSApplication を利用します。
‘メール’ を起動する例です。

	UIApplication *application;
NSURL *url;
url = [NSURL URLWithString:@"mailto:foo@me.com"];
application = [UIApplication sharedApplication];
[application openURL:url];

また、自分が作成したアプリケーションに Custom URL Schemes を登録して、他のアプリから起動させることもできます。動作確認には iPod touchiPhone Simulator.app 上の Safari の URL に Custom URL Schemes を含んだ URL を入力して試すと良いようです。下の例では URL は “xyzlist://Sample.koyama.jp/?test#20090221” です。

-- 起動されるアプリケーションの Info.plist (今回の例ではアプリケーション名 Sample) --
▼ Information Property List
▼ URL types
▼ Item 1                    : jp.koyama.Sample
URL identifier
▼ URL Schemes
Item 1               : xyzlist
//アプリケーション Sample を起動させるソースコード
UIApplication *application;
NSURL *url;
url = [NSURL URLWithString:@"xyzlist://Sample.koyama.jp/?test#20090221"];
application = [UIApplication sharedApplication];
[application openURL:url];

下記の URL が参考になります。(ただし、以降に出てくる Apple の URL は iPhone Dev Center に登録していないと閲覧できません。)

iPhone Application Programming Guide: Customizing Your Application’s Behavior
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ApplicationEnvironment/chapter_3_section_6.html#//apple_ref/doc/uid/TP40007072-CH7-SW22
The Core Application
Customizing Your Application’s Behavior
Communicating with Other Applications

The iPhone Developer's Cookbook: Building Applications with the iPhone SDK (Developer's Library)
Erica Sadun
10 Connecting to Services
Recipe: Subscribing Application to Custom URL Schemes
P303

上の本も参考にした方が理解しやすいと思います。また、’The iPhone Developer’s Cookbook’ [ asin:0321555457 ] は、

日本語に翻訳された本 ‘iPhone デベロッパーズ クックブック’ [ asin:4797352418 ] が発売されています。

他のアプリケーションから起動されたアプリケーションは

UIApplicationDelegate Protocol Reference
http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html
Opening a URL Resource
- application:handleOpenURL:  optional method  

が呼び出され、起動します。

//   アプリケーション Sample の UIApplicationDelegate
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
//   url = @"xyzlist://Sample.koyama.jp/?test#20090221"
NSString *taskName = [url query];
NSString *dateString = [url fragment];
NSLog(@"%@ %@", taskName, dateString);
}

起動されるアプリケーション (上の例では Sample) の UIApplicationDelegate に上のソースを追加し、iPhone Simulator.app の Safari で URL “xyzlist://Sample.koyama.jp/?test#20090221” で起動させると、/アプリケーション/ユーティリティ/コンソール.app の ‘ログ・データベース・クエリー/コンソールメッセージ’ で下のメッセージを見つけることができます。

09/02/21 18:49:35 Sample[3392] test 20090221

また URL を利用して渡される値は下記の URL を参考にしてください。’メール’、’マップ’ を起動する時に渡すパラメーターが、Mail、Phone、Text、 Map、YouTubeiTunes Links としてそれぞれ説明してあります。

Apple URL Scheme Reference: Introduction
https://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007891
NSURL Class Reference
https://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#//apple_ref/doc/uid/20000301-4355
RFC 1808 - Relative Uniform Resource Locators
http://tools.ietf.org/html/rfc1808

2ch Script version 0.3

利用している人はいないと思いますが、以前 [ id:KYoshiaki:20081026 ] 紹介した iPhoneiPod touchSafari 対応 2ch Script version 0.3 [ hhttp://kyoshiaki.sakura.ne.jp/osx/leopard.html ] を公開します。

時間がとれないので、厳密に動作確認をおこなっていません。問題があるかもしれません。コメント設定を許可にしておきます。だだし、コメントは承認後に公開されます。時間がとれる限り返事はするつもりですが、遅くなると思います。

ブログには書いていませんでしたが、随分前に値段は高かったのですが DS 版 Chessmaster: The Art of Learning を購入していました。

ニンテンドーDSi にリージョンプロテクトがないので、問題なく動作します。私自身めちゃくちゃ弱いのですが ELO レーテイングをこつこつあげています。

また iPod touch 用に iTunes StoreApp Store から

iChess (Free)
カテゴリ/ゲーム
無料
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=298074242&mt=8

をダウンロードして遊んでいたのですが、結構勝てそうなので

iChess
カテゴリ/ゲーム
\115
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292985696&mt=8

を購入してみました。レベルをちょっと下げてみたら勝てたので驚いています。iChess はあまりにも機能がシンプルなので他のチェスソフトを物色中です。

また、将棋ソフトが発売されるのを待ち望んでいました。

柿木将棋
カテゴリ/ゲーム
\450
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301163765&mt=8

とうとう、柿木将棋が発売されました。早速購入しました。勝てた時はうれしかったですね。レベルは内緒ですが!

あと前々回 [ id:KYoshiaki:20081207 ] 紹介した自作 iPhoneiPod touch 用アプリ iYKRSS や Safari を使ってウェブブラウジングしているのですが、わからない英単語を見つけた時、以前のように一度 Safari を終了して i英辞郎 で調べるのではなく、ニンテンドーDSi ‘漢字そのまま DS楽引辞典‘ で調べられるのは便利ですね!本当は iPod touchiPhone の両方があればよいのですが!