投稿者「macj」のアーカイブ

続・疑似オートフォーカス

さて、オートフォーカスのお話、意外と反響が大きくて驚きました。いつもの3倍くらいのアクセスがありました。最大瞬間風速とは言え、びっくりしてます。

せっかくコメントも頂いたことだし、もう少しこの話題を引っ張ってみます。そもそも、わたしがこの話題を持ち上げたのは、新型に搭載されているカメラがOmnivision製でらしいという噂を聞いた為でした。

過去記事:http://www.macj-log.com/article/116797270.html

Omnivision社が、Truefocusという、新しいフォーカス技術を持っているっていうのはEDNを読んで記憶の片隅にありました。

http://www.ednjapan.com/issue/2007/07/u3eqp3000000q0tu.html

Truefocusは、通常のカメラとは異なるレンズを使うことで、レンズの位置を固定にしたままフォーカス機能を実現しているらしいんです。「レンズの位置を固定にしたままでよい」=「モーターでレンズを駆動してやる必要がない」、ということになります。モーターやギアなどの機構系が不要になるとスリムなiPhoneにぴったり!と半分願望まじりの予想をたてたというのが始まりでした。普通でないレンズを使うことで、一般のカメラでは固定であった光学的なパラメータを可変にする→可変になったパラメータを使って信号処理する→所望の位置にフォーカスして結像させることができる、という仕組みのようです。肝心の信号処理の中身については、光学系に全く疎いので、さっぱりわからんちんですが、抽象的に捉えるとそういう技術です。

一言で言うと「従来とは異なる方法でフォーカス調整をしている」のであって、ほんとうは「疑似」ではないんですね。「疑似」という言葉はある意味、釣(ry

さらに持論を展開すると、ほんとうにTruefocusを搭載しているならば、上述の信号処理をソフトウェアではなく、専用ハードウェアで処理していると思います。いくらプロセッサの動作クロックがあがったからって、ポンポンとタップして所望の位置にフォーカスさせるような高度な処理をリアルタイムに近いスピードで処理するのは厳しいんじゃないかと。顔認識とか最近のカメラのなかのセンサーの中にはいろんな信号処理が入ってますが、ああいったものはほとんどが専用ハードウェアでしょう。CanonのDigicエンジンとかそのたぐい。

さて、”元信者”さんの仰る「同じOS3.0というソフトウェアで動かしていて、一方だけオートフォーカスを実現しているのなら、その違いはハードウェアにある。だからハードウェアとしてフォーカス機能を実現している。」というお考えに対する答えは、「ソフトウェアの中で処理をスイッチしている」と想像してます。そういう切り替えなしには、「タップしたところにフォーカス」っていうユーザI/Fも3GSにだけ実装することはできませんからね。OSとかファームウェアとかにも全くの素人なのでこのレベルのご返答しかできないのですが、いかがでしょうか。激しく勘違いしていたらごめんなさい。「ハードウェアとしてフォーカス機能を実現している」という点については、上述の通り全くもって同意です(^-^)

最後に、「ジョブス信者」的にまとめると・・・
新型iPhone 3GSでは、全く新しいテクノロジーにより高速なフォーカス機能を実現している!われわれアポーはじれったいオートフォーカスなんてクールだと思っていない。

以上、妄想でした。これでほんとにモーター積んでたらどうかご容赦を。

と、ここまで書いた後に下記のiPhone 3GS Guide TourというムービーをTwitterで知って、見てみたら、まさに2:08くらいからカメラの動作デモでオートフォーカスをやってました。うーん、微妙だ、遅い。モーターが動く普通のオートフォーカスのような気がしてきた。。。うーん、うーん。

http://www.apple.com/iphone/guidedtour/#large

iMacのメモリ増設

我が家のMac君、IntelベースのiMac (Early 2008) にメモリを増設することにしました。正直とりわけ動作が重たいとかそんなわけでもなかったんですが、メモリの価格を見て、「あ、こんなに安かったんだ」と思ったら買うの買わないのと迷う余地がなくなりました。

ちなみに購入したメモリは、Early 2008が対応しているDDR2 PC2-6400です。2GBで2980円。ネットで見てる限りだと、Early 2009版に搭載するDDR3もあんまり値段は変わらないようですね。

ちなみに、Intel iMacはSO-DIMMなんですね。今日の今日まで知りませんでした。さすがにこれだけ省スペースな筐体だったら普通のDIMMはありえないか。しかし、SO-DIMM 2GBで2980円なんて想像してなかったです。

参考までに私が今晩注文したブツ PC2-6400 2GB SO-DIMM

DDR3はこちら。安いねー。PC3-8500 2GB SO-DIMM

ちなみに、メモリ購入を考えるきっかけというのはちゃんとあって、実は、Windows7のβ版を、1GBしかメモリをつんでいないMac上のVirtual Boxにインストールしたらクソ重たくてお試しどころじゃなかったんですね。リベンジするにはまずはメモリ増設だなーと思っていたのもあって、購入に至りました。Macとして使ってる分には、そんなに重たい訳じゃなかったんですよ、と繰り返してみる。また信者おつって言われちゃうかな。

所感、WWDCの祭りの後で。

今朝は大盛り上がりでしたね。私はと言うと、WWDC見なきゃーとうなされながら寝て、終わった頃に目が覚めたという顛末でした。結局ベッドの中でTwitterのTimeLineを追いかけて、ダイジェスト的に把握して「私のWWDC(?)」は終了です。

基調講演のビデオはここから見ることができます。週末にでもゆっくりみるとします。

Apple WWDC 2009 Keynote Address

http://events.apple.com.edgesuite.net/0906paowdnv/event/index.html?internal=ijalrmacu

メジャーなトピックに沿って私個人の今後のアクションを書いてみます。

(1)OS X Snow Leopard

こちらはもちろんupgradeします。29ドルですって。安っ!Microsoftとは大違い。

(2)Safari 4

今日から既に公開されています。Firefox派ではない私は、WindowsではChromeを、MacではSafariを使ってます。なんかだ最近よく落ちるChromeをやめてWindowsでもSafariを使おうかしらん。とりあえず、Macはこの記事をupしたらバージョンアップだ!

(3)新型iPhone 3G S

新型と現行型の比較表はこちら。
http://japanese.engadget.com/2009/06/08/iphone-3g-s-iphone-3g/

目立った差異と言えば、動画撮影、オートフォーカスカメラ、電子コンパス、公称2倍速の処理速度UPでしょうか。個人的には、強く惹かれるハードウェアではなかったので、次の機種を狙う、っていう考えでいます。魅力的なアプリが3G S専用でじゃんじゃん登場って話になってくると心が動くかもしれません。今のところは、エビデバキャンペーンで3月頭に新規契約したばかりなので、買いたくても3ヶ月は機種変更できません。

ちなみに、オートフォーカス。以前予測したように、きっと疑似オートフォーカスだろういまだに思ってます。iPhoneの筐体の中に本物のオートフォーカスのようなモーターなどの機構系が入ってるのは似つかわしくない!絶対にそうだ!早く分解記事とかでないかなー。そういう記事大好き。

参考記事:次期iPhoneカメラは疑似オートフォーカスか?(4月5日)

http://www.macj-log.com/article/116797270.html

▼オートフォーカス無しの現行機と変わらない見た目。
WWDC2009_1.png

(4)iPhone OS 3.0

6/17にリリースだそうです。来週の水曜ですねー。週末にしてほしい、今週末とか。個人的には、iPhone Developer Programにお布施しているので今すぐにでも手に入るのですが、ビビリなのでみなさんと一緒に6/17にアップデートします。

(5)macbookのラインアップ、価格がアップデート

macbook pro欲しい。17インチが欲しい。オプションで256GBのSSDとか最高。

tumblr gearでreblogしまくり

tumblrgear_itunes.png
(クリックするとiTunesが起動します)

まもなくWWDCですね!実はこんなタイミングで優良なtumblrアプリが出たんです。いやー、いいアプリなのにWWDCの熱気の中に埋もれてしまいそう。というわけでOS3.0が出る前にtumblr gearをレビューです!!

現在までに、Tumblr用アプリは以下のようなものがありました。

  • Tumblr純正アプリ(無料)
  • iView(無料)
  • tumbladdict(230円)

利用頻度としては、

  1. tumbladdict 80%
  2. iView 19%
  3. 純正アプリ 1%
という感じだったんですが、このアプリの登場で大きく変わりそう。今日一日使ってみたところ以下のようになりそうです。

  1. tumblr gear 90%
  2. iView 9%
  3. 純正アプリ 1%

そうなんです。tumbladdictが不要になっちゃうアプリなんです。なのに無料なんです。お金払ってもいいくらいのアプリです。
では、スクリーンショットはこちら。

▼起動画面
IMG_0038.PNG

▼起動後、ログインと100エントリーの読み込みが始まる。今どういう処理が行われているかが右上に表示されるのは、待ちを感じさせない設計だと思う。
IMG_0039.PNG

▼右上にあるReblogをタップしたところ。tumbladdictと違って必ずこのダイアログが表示されます。
IMG_0040.PNG

▼ダイアログでReblogをタップすると、裏でreblogが実行されている状態となります。この間にページをめくる(他の記事に移動する)ことも可能です。じゃんじゃん雑誌のページをめくるように次々に記事を開いて、気に入った記事があったらreblogする。といった動作が非常に快適です。
IMG_0041.PNG

<まとめ>

  • さくさく動く
    • tumbladdictで感じる10エントリーごとの読み込み待ちを感じない。
    • 写真の表示もかなり早い。
  • reblog, likeのインターフェイスはすっきり
    • ボタンが一個ずつ
    • reblogを選択するとコメント用のダイアログが必ず出てくる。
    • コメント無しreblogはtumbladdictのほうが高速。(専用のボタンがある)
    • この善し悪しは意見が分かれるところ?
  • reblogでない、オリジナルのpostはできません。iPhoneからのポストはどうしても純正アプリ or Web版に頼る必要があります。

とにかく大量のエントリーがさくさく見られるのでfollowを増やす気になりましたし、それに伴ってreblog数も増えました。これだけ快適だとweb版のDashboardから足が遠のきそうです。

参考記事:Appbankさん
http://www.appbank.net/2009/06/08/iphone-application/29817.php

今日はこれにて!あと2時間でWWDCだー。今から寝て、盛り上がった頃に起きよう。

アプリ開発雑記[10]

2週間ぶりのアプリ開発雑記です。開発作業もこの日曜日に2週間ぶりにやりました。
まずは前回のエントリで挙げた今後の課題を再掲します。新しい課題も追加しました。

  1. SQLite(データベースの作成、データの登録・抽出)
  2. 画面の切り替えをかっこよく
  3. マルチタッチの使い方
  4. TabBarでタブを選んだ時にタブバーを表示させない。
  5. テーブルのソート
  6. 列を複数持つテーブルを作る
今回は、5と6をやっつけました。


<テーブルのソートが解決>

ソートがなんともあっさり解決しました。NSDictonaryとか小難しいこと言っていましたが、SQLiteでデータを読み出す時にQueryでソートしてしまえば何の苦労もなかったです。サンプルコードのSQLitebooksで言えば、


const char *sql = "SELECT title FROM book WHERE pk=?";
const char *sql = "SELECT title FROM book WHERE pk=?
ORDER BY title";

とします。ちなみに、新しいデータを追加した場合はソートされたデータの最後尾に新しいデータが追加されます。サンプルコードでは起動時に一度データを抽出してテーブルを作っていて、あとの処理では並びかえをしていないためです。追加後も並び替えたいという場合は、テーブルのデータソースとなっている配列を破棄してもう一度新しいQueryで読み出し直すか、上記のNSDictionaryが必要ということになります。

今のところは目標が最低限達成されたので次の課題に移ることにしました。


<列を複数持つテーブルを作る>

SQLitebooksをベースに作ったオリジナルDBを使ったプログラムで、SQLitebooksのように1行にひとつの情報だけでなく、1行に複数の列を持たせて多くの情報を表示させるように改変しました。参考にしたサンプルコードは、「TableViewCellSubviews」です。

1行の場合は、cellForRowIndexPath内でUITableViewCellを生成して、そのセルに、

cell.text = book.title;

のようにcell内に表示するテキストを指定していました。複数の列を持たせる場合は、ここで行の中の子セルを作って挙げる処理を記述します。サンプルコード「TableViewCellSubviews」では、tableviewCellWithReuseIdentifierというメソッドを定義してそれを呼び出す格好で、子セルを生成しています。ここの記述はdefineマクロを使って、サイズを制御しています。お絵描きしているだけなので難しい記述ではありません。子セルはUILableやUIImageViewの箱を載せることで実現し、defineマクロで定義されたTAGを各箱に与えて(TIME_TAGなど)、各箱の中身へアクセスします。こんな感じ。

label = (UILabel *)[cell viewWithTag:DATE_TAG];

label.text = [dateFormatter stringFromDate:training.date];

cell.text = book.title の部分がcell内の各箱(LabelやImageView)になるわけです。サンプルコード「TableViewCellSubviews」では、別メソッドconfigureCellにこの処理を定義しています。

さて、SQLitebooksを改造したプログラムに、これらの処理を書き加えることで1行を2列にしてみましたが、実は最初はうまくいきませんでした。作った箱に表示したいデータが反映されていないんです。そして、その行を選択してDetailViewを表示させると中身はちゃんとある。さらには、DetailViewからMasterViewControllerのビュー(一覧)に戻ってくると、さっきまで表示されていなかったデータがちゃんと入っている。そんなバグを埋め込んでしまいました。

その原因は、SQLitebooksの起動時の処理にありました。

実はSQLitebooksの起動時のqueryでは、表示させる必要最低限のデータ、すなわち、"title"しか読み込んでないのでした。なので、箱を作っても入れるデータを読み込んでいないので、表示されないのは当たり前でした。行が選択されDetailViewを表示するときになって、残りの情報(copyright, author)を読み出すという方法をとられています。こうすることで、起動時に余計な処理をしないようにしているんですね。それはそれで勉強になりました。


<今後の課題>


芋づる式にいろいろ課題が出てきます。たまる一方。

  1. SQLite(データベースの作成、データの登録・抽出)
  2. 画面の切り替えをかっこよく
  3. マルチタッチの使い方
  4. TabBarでタブを選んだ時にタブバーを表示させない。
  5. テーブルのソート
  6. 列を複数持つテーブルを作る
  7. ダイアログ表示
  8. 起動時のSplash画面表示

まもなく、iPhone3.0へのバージョンアップが来ると予想されていますね。
当初は3.0公開前にひとつアプリ出してやるぜーと思ってましたけど、このペースでは全然無理でしたー(’д`;)ノもっとがんばらなきゃ。