2009-08-10

/Applicationsのアプリと、/var/mobile/Applicationsのアプリの出来ることの違い

/Applicationsのアプリで出来て、/var/mobile/Applicationsのアプリ(Xcodeで開発する一般アプリ)で出来ないこと。
  • NSThreadは使えるが、popen()はPARENTAGE_FORK DENY 1のエラーで阻害される。やはりバックグラウンド処理はFrameworkの範疇のお行儀の良いものでないと許されない(ちなみにバックグラウンド実行のNSTaskはiPhone OSのFrameworkから元々外されている;参照noviさんのBlogエントリ)。
  • Shellのターゲットは作成できるけれど、デプロイ時に実行権が外される(chmod -x)。
逆に、/Applicationsアプリで出来ないこと。
  • Settings Bundleによるアプリ設定アプレットが効かない。一般アプリはplistを作成するだけで、設定アプリ(Preferences.app)に組み込まれた設定項目と画面を、非常に容易に生成することができますが、/Applicationsのアプリはこの機能を使えないようです。
  • SpringBoardによるアイコンの自動iPhone化(rounded border と glossy effect) が利かない。一般アプリではべた塗りのアイコンを作成すれば済むが、/Applicationsアプリでは自分でアイコンのiPhonne化をしないといけない。(逆に、一般アプリでアイコンの自動いPhone化を抑止するにはInfo.plistにUIPrerenderdIcon属性を設定する。)
[2011-05-14] アイコンの自動iPhone化を追記。これが分からず、1週間くらい悩みました。一般アプリと/Applicationsアプリのアイコンpngを入れ替えたりして確かめました。

Xcodeで実機デバッグの初級編

XcodeのiPhoneシミュレータでの開発は、すんなりいきましたが、今回、実機デバッグを初めて体験しました。
Xcodeで [Device 3.0 - Debug] をターゲットに選んで [ビルドして進行] を実行すると、iPhoneまたはiPod touchの実機でアプリの実行が始まります。
デバッグモードでは通常より起動が少し遅いので落ち着いて待ちます。

下記3つのウインドウは、実機デバッグ中にいつでも開いておくと便利。
  • [ウインドウ] メニューの [オーガナイザ] を開き、[DEVICES] から実機を選び、[Console] を選ぶと、何がおこっているのかのログが表示される。
  • [実行] メニューの [コンソール](またはメインウインドウのgdbのボタン)はgdbのコンソールで、アプリが落ちたときのステータスなどが表示される。
  • [実行] メニューの [デバッガ](またはメインウインドウの殺虫スプレーのボタン)はGUIデバッガで、コールスタックから調査したいプロシージャを選んで、ソースコードや変数を見たりできる。
シミュレータで一通りうまく動いても、実機では動かないケースがやはりあります。
私がいきなり経験したのは、
NSStringでstringByAppendingString: の引数がnilだと NSInvalidArgumentExceptionで落ちるケースと、
NSDateでdateFromString: でこちらも引数がnilだとEXC_BAD_ACCESSのシグナルで落ちるケース。

2009-08-05

今日の気になるiPhoneアプリ;SNS Contact、ColorBinder、Instaviz

  • SNS Contact~連絡先にフレンドアイコン
    どれだけの一般人がSNSに鮮明なプロフィール写真を開けっぴろげにしているか、多少疑問が残りますが、着想はすばらしいと思いました。
  • ColorBinder
    いろいろな色をRGBやHSVやCMYKで作成して表示するアプリは、Motifの時代から一度私も作ってみたいアプリです。
  • Instaviz
    Newton Message Padのように手書き入力の図が自動的に清書されるアプリ。iDiskへの書き出し機能あり。ただしエンジンが高級なためか高価。

2009-08-02

グレーなiPhoneアプリ;MemoryInfo

iPhoneアプリは、他のアプリに影響を及ぼしてはいけないはずなのに、MemoryInfoは(おそらく)他のアプリプロセスを強制終了させて、空きメモリを増やしてくれます。
初回起動時にネットへの接続が要求されるようですが、何をやっているのかも謎(ユーザ一覧を更新?、強制終了させてはいけないプロセスの一覧を取得?、など?)。

類似のアプリとして、同じ作者のFree Memory、Mac版で有名なiStat、Memory Sweep Lite(App Storeのダウンロードがおかしい)、Memory Status(iPhone 3.0対応審査通らず)があります。
SysStats Liteのkimadaさんは、いろいろ試行錯誤されていますが、メモリ解放機能は正式審査には至っていないようです。

[2009-08-09] MemoryInfoとFree Memoryの両方が恐れていた通り「Apple has demanded that we remove the feature to Free Memory from all our apps.」となってしまいました。
代わりにMemory Sweep (Lite)のダウンロードが開始されました(まだアプリ名がScanとなって怪しいままですが、機能します)。Memory Sweepはプロセスの終了ではなく、自分のメモリを15MBまたは30MB確保した結果空きができるようにしているようです。

2009-08-01

今日の気になるiPhone OSアプリ;NetSketch、DocScanner、Blue Reversi、Free Memory、MemoryInfo

  • NetSketch - Collaborative Drawing for the iPhone and iPod Touch
    無限大のドローイングエリアを持つドロー系アプリ
  • DocScanner, iPhone as a Scanner
    iPhoneのカメラをスキャナとして使用し、PDFやJPEGとして保存。自動歪み補正(キーストーン)機能もある。
  • Blue Reversi
    レベル指定可能なオセロ
  • Free Memory 1.5, MemoryInfo 1.1
    他のアプリの強制終了、空きメモリの最大化(Game Mode Free Memory)機能を持つシステム使用状況表示ツール

2009-07-09

iPhone/iPodに同期した写真はVGA程度、もっと高解像度で写真を持ち歩きたい

今更ながらですが、iTunesでiPod touchに写真を同期させ始めました。
でも、とても低い解像度でしか同期してくれません。
たかだかVGA程度でしょうか(2倍程度に拡大するとアラが見える、右の絵のように)。

せっかく持ち歩くとっておきの写真なので、何とかもっと高解像度で同期させたいものです(大量の写真をとにかく放り込みたい使い方や、旧機種で処理能力や画面解像度が足りない場合はは今の方式で良かったのでしょうが)。
いい方法ないでしょうか?
iPhoneで撮影した写真はiTunesで同期した写真よりも高解像度のまま保持されますよね。

2009-07-08

iPhone OSのGoogle ReaderとMailはオフラインでも結構使える

ふとしたことから、Google ReaderとMailをオフライン状態で試したみたところ、結構使えることが分かりました(おそらくiPhone 3.0に限らない)。

Google Reader編:
私はGoogle Readerの記事を読むのに、もっぱらSafariを使ってWebから直接 http://www.google.com/reader/i/ で読んでいます。
「オフラインでも使えるRSSリーダアプリ」というのがApp Storeで結構出ているのは知っていましたが、Webアプリ版のGoogle Readerの使い勝手が良いので、アプリ版は一つも試したことがありませんでした。

SafariでGoogle Readerの必要なページ(15トピック×nページ)を読み込んで、Wi-Fiを切ってみたところ、下記のことがオフラインでできることが分かりました。
  • SafariのGoogle Readerのオフライン利用時の機能
    • スクロールして一覧として読み込んだ記事の本文はすべて読める。つまり、キャッシュされている、あるいは読み込み済みの状態になっている。
    • イメージは表示されない。
これって、「オフラインでも使えるRSSリーダ」の要件をかなり満たしていると思うのです。
iPhoneで3Gが圏外になっても読み続けることができます。
ただし、制約が2点;オフラインの間に読んだ記事の既読情報はGoogle Readerサーバに反映されません(画面上は既読の色になりますが)、それと、Safariプロセスが終了したり、リブートするとWebキャッシュがなくなるので一覧も、記事も表示されません。

Mail編:
標準のメールアプリもオフラインでの便利な利用が可能なようです。
IMAP接続のアカウントで試しました(GmailもMobileMeもIMAP接続)。
  • Mailのオフライン利用時の機能
    • 一覧に読み込まれ概要テキストまで取得したメールは、オフラインになっても本文の表示が可能。
    • ある程度の大きさであれば、添付も表示可能。
    • 既読・未読情報は、次回接続時に同期される。
    • メールをフォルダ移動すると、次回接続時に同期される。
PC/MacのThunderbirdやOutlookなどのメーラのオフラインモードでも上記のようなことができますが、iPhone OSのMailもそれらと同等の機能を持っているといえます、なかなかものです。
Safariと違って、Mailはキャッシュをファイルに保存するようなので、プロセス終了やリブートしても表示できる内容は失われません(反映前の既読情報だけはメモリに保持しているようです)。

----
iPhone OS 1.1や2.0のころは、Google Mapをオフラインで使うツールや、Webページをオフラインで使う方法(data: URL にhtml本文をbase64エンコードした巨大な文字列をブックマークとして登録)などが話題になっていたことが懐かしく思い出されます。
なお、Web版のGmailは上記Google Readerよりもう少し賢くて、オフライン中の既読情報が接続後反映されるようになっているようです
(ただし、muumoo.jpさんが『GmailのiPhone版、オフラインに対応していた』に書かれているように、Gears的なローカルストレージではなく、メモリキャッシュ上の処理のようで、Safariアプリのプロセスが終了するとやはり表示内容がなくなります。
なお、Web版のGmailの日本語版はまだ旧バージョンのままですが、PCから表示言語を英語に設定すると、新バージョンの画面になります)。

2009-07-07

Blogspot/Bloggerで、よりお手軽に投稿

Tumblr が提供する、ブックマーク Scriptlet ブックマークレット "Share on Tumblr" を使うと、ポストをとても手軽に行え、もう他のブログツールに戻れなくなってしまいそうになります。
今見ているページや、選択した文字列を元に、投稿を作成できます。

Blogspot/Blogger でも、少しでもポストの敷居を下げられないか、考えてみたところ、ちょっとした方法を思い付きました。
Blogspot/Blogger の投稿画面の URL (http://www.blogger.com/post-create.g?blogid=xxxx) をブックマークしておけばよさそうです。

今までは、[1] 自分のBlogspotを開いて、[2] ログオンボタンを押して、[3] 投稿ボタン を押す、3ステップの手間が必要でしたが、今日からは一発でポストできます。
小ネタでした。

[2009-08-19] 改良版を紹介しました。

2009-06-27

Safari 4 MacがずっとFlashでハングしていたんだけれど

じつは、私のMac miniのMac OS Xで、Safari 4がBetaのころから、Flashを使ったページでずっとハングしていたんです。
Safari 4って本当に大丈夫なのか、って心配し始めていたのですが、結局、SafariStandを削除したら問題なく普通に動くようになりました。
そういえば、Safari 4を入れてからSafariStandをアップデートしていませんでした。
改めて標準環境の大切さを感じました。

SafariStandのインストール先は、/Library/Application Support/SIMBL/Plugins/SafariStand.bundle です。
ちなみに、Safari 4とSafariStand 3.1T161を一緒に使っていました。
Safari 4用の現行バージョンはSafairStand 4.0T167です。

2009-06-18

あなたの大切なiPhone/iPod touchのパスワードを強化する方法

iPhone/iPod touchのパスコード(パスワード)は標準では4ケタの数字だけなので、ちょっと不安です。
このページにあるiPhone and iPod touch Enterprise Deployment Guideのパスコード・ポリシーのところをよく読んで、iPhone Configuration Utilityを使えばよいことは、以前から何となくわかっていたのですが、なかなかやってみるまでには至りませんでした。
Mac OS X Hintsのサイトの「Use a longer alphanumeric passcode on the iPhone」というポストにもっと簡単な解説と、方法が出ていました。
以下を行うと、iPhone/iPod touchのパスワードが英数字6文字以上に拡張されます。
  • Mac OS X HintsのサイトにあるXMLを適当な名前+.mobileconfigの拡張子で保存する。
  • iPhone/iPod touchで設定しているメールアカウントにそのファイルを添付して送信する。
  • iPhone/iPod touchで受信したメールの添付ファイルをタップし、[インストール] する。
  • プロファイルがインストールされる。その時、古いパスワード、新しいパスワード(英数字)の入力が求められます。
ロック解除のパスコード入力画面が右のように拡張されます。
見事にセキュリティが強化されました。

元に戻したい場合は、[設定]->[一般]->[プロファイル] から [削除] すればOKです。

[2009-06-19追記、注意]
iPhone Configuration Utility を安直に Mac にインストールしないでください。
インストールすると、iPhone/iPod touch が Mac に認識されなくなってしまいます。
MobileDevice.framework が古いものに上書きされてしまうためのようです。
修復するためには、iTunes を再インストールするだけではだめなようで、Time Machine で /System/Library/PricateFrameworks/MobileDevice.framework を復元するか、これを削除した後 iTunes をインストールするしかないようです。

[English version]

2009-06-14

ターシャの新刊「コーギコテージの四季」

Yahoo! TVでターシャを検索していたら、2009年7月3日発売の新刊「コーギコテージの四季」を見つけました(7&Y、amazon)。
まだ表紙も完成していないようなのですが、さらに検索してみると、原作の「Seasons of Delight / A Year on an Old-Fashioned Farm / A Three-Dimensional Pop-Up Picture Book」が見つかりました(キュリオブックスさんありがとう)。
ターシャの作った飛び出す絵本を、手に取って見たいものです。

一番ほしいのはMacBook Air 4GB

iPhone 3G Sの発表と一緒に、MacBookシリーズも更新されました。
13 inchのMacBook Proの久々の復活(そのうえお安い)、最大8GBのメモリ。
でもスペック一覧を見ていて腑に落ちないのが、MacBook Air。
SDD版が20万円を切ったのは偉いのですが、メモリが2G固定というのは、いまどき物足りません。
5万円くらいアップしても良い?から、4GB版がほしいところです。

また、個人的には手が出ませんが,17inch版(場合によっては15inch版も)ではメモリスロットを倍増させて、16GBあるいは、安価な8GBが構成できるようになっていると面白いと思うのですが。
最近はいろいろな検証を何でもVMで動かして済ましてしまうことが多いので、32bit OSの3GBメモリではもう狭苦しいです。
Mac OS Xの魅力を最大メモリ容量でより高めてほしいものです。