9月2009

iPhoneのメール環境 あと一歩

発売当初は使い物にならなかったiPhoneのメールですが、いよいよあと一歩で最高のモバイルメール環境になりそうです。

というのも、発売当初はメール以前に、文字入力が重すぎて困難だっために、iPhoneでメールを打とうだなんて、考えもしなかったからです。さらに、連文節変換もなかったので、なおいっそうに文字入力は貧弱だったのです。この文字入力のもたつきと連文節変換については、だいぶ早い時期にバージョンアップで改善されており、今なお改善が続けられていますが、現時点でも、十分に実用的な軽さと変換精度を備えるようになりました。

もうひとつの問題としては、プッシュ方式に対応していないメールアカウントでは、メールを即時受信できず、一定期間ごと、たとえば15分に1回の頻度でしかメールの受信を自動で確認できないことでした。プッシュ方式に対応しているアカウントとしては、MobileMe、yahoo.comが有名でしたが、つい最近、ようやくGmailも加わり、Exchangeの設定をすることによって、Gmailもプッシュ方式での即時受信ができるようになりました。もう、メールの受信を待つのに、手動で更新する必要はありません。

しかし残念なことに、現時点ではあと一歩のところで、完全なメール環境にはなっていません。そのひとつの問題点として、GmailをExchangeで同期させると、なぜかDocomoからのメールが文字化けしてしまうことです。以前は、そもそも普通のGmailアカウントの設定でも文字化けしていた時期があったので、これもいずれ改善されるのではないかと期待しています。

まだ問題点はいくつか残るものの、やはりPCで扱うメールアカウントを携帯電話でそのまま扱えるのは、パソコンをよく利用するユーザーにとっては非常に大きなメリットです。とくに、私はGmailのひとつのメールアドレスでほとんど対応しているので、それが携帯電話から使えることは、とても便利なことなのです。

まだまだソフトウェアのバージョンアップで進化し続けるiPhone。買ったときのiPhoneと、今のiPhoneは全く別の携帯デバイスとなっている気がします。

Concurrency Programming Guide

Concurrency Programming Guideをざっくりと読み終えました。やはりこのドキュメントはアプリケーションの最適化のカテゴリに入るだけあって、それほど重要視できるような内容に見えないドキュメントであると思います。しかし、Appleの選択はそうではなかったことは、Snow Leopard でお分かりいただけることだろうと思います。

Concurrency Programming Guide は、ドキュメントのタイトルの通り、並列プログラミングについて書かれているドキュメントです。既存のコードを並列化した方がよいかどうか、というところから、具体的にどのような場所に対して、どんな手法を使うえば良いかが書かれています。Grand Central Dispatch を活用したいと考えているプログラマは、よく読んでおきましょう。

また、ドキュメントには、既存のアプリケーションを並列化するのは容易だと書かれています。実際どの程度容易かはやってみたいとわからないような気もしますが、とりあえずアプリケーションを作って、それから余力があれば、このドキュメントの内容にそって、アプリケーションを最適化していくと良いでしょう。

ちなみに、ドキュメントの最初の方に出てくるNSOperation関係は、実は Leopard からでも使える並列処理に便利なクラスなので、ご存じない方は一度チェックしてみる価値はあると思います。

400

どうやら、この記事で投稿数が400になるようです。投稿数200が2007年8月だったようなので、全盛期より更新速度が半減しているようですね。よくもまあ、あんなに長い記事を書いてたなと。最近更新速度が落ちているというのは、プログラム以外のことも始めたというのが原因であるのですが、そこはまた別に。

これからもプログラム関係の面白いネタを紹介していこうと思っていますので、よろしくお付き合いください。

Concurrency Programming Guide を早く読んで、早く実際に試して、そしてここで紹介したいです。って書いてみたものの、まだ開発環境を手に入れていなかった。

Luaの公式本が出たようです

Programming in Lua プログラミング言語Lua公式解説書 Programming in Lua プログラミング言語Lua公式解説書
新丈 径

アスキー・メディアワークス 2009-08-28
売り上げランキング : 23027

Amazonで詳しく見る by G-Tools

Luaを使おうと考えている方、またはすでに活用されてる方は、いつも手元に置いておきたいような本です。前から読んでいってもよし、必要なところだけ読んでもよし、といった感じの公式本です。

Snow Leopardの気になるとこ

Snow Leopardの気になるところといえば、やはりパフォーマンス。各所でベンチマークの結果などが出揃っています。

Snow Leopardレビュー:さらに軽く、快適に(ベンチマーク&動画)(ギズモード・ジャパン)

要約すると、純正アプリケーションなどで64bit対応、GCD(Grand Central Dispatch)が使われたものはそこそこパフォーマンスが向上している様子。サードのアプリケーションは、それらの最適化がされていないので、ほとんど変わらない感じとなっています。

というわけで、そのあたりの最適化について載ってる気になるところをメモしておきます。

GCDを利用しようと考えている方は、こちらのドキュメントをどうぞ。
Concurrency Programming Guide
Grand Central Dispatch (GCD) Reference
Blocks Programming Topics

GPUも利用して最適化しようと考えている方は、こちらもどうぞ。
OpenCL Programming Guide for Mac OS X

ついでに、XcodeにStatic Analysisと呼ばれる機能が付いたようなので、興味のある方はどうぞ。名前の通り、実行前にコード上からわかるバグとかを解析する機能のようです。
Static Analysis in Xcode 3.2

まだ全然読んでいないのですが、GCDを使う場合は、やはりGCDを意識して設計し、コーディングしなければならない様子。特に、C,C++,Objective-Cそれぞれにブロック構文なるものを導入し、それを積極的に利用するっぽいので、しっかりとドキュメントを読み込んだ方が良さそうです。

ちなみに、ブロック構文については、一般にクロージャ、ラムダ、とか呼ばれるものらしいです。割ときれいだったObjective-Cの文法が、だんだん複雑になっていくのは残念ですが、ブロック構文は一応C言語からの拡張って感じなので、まあいいかなと思います。

QTKitで空の動画が作成できるようになった

Snow Leoaprdで一番気になっていたQTKitのドキュメントを眺めていましたが、これといって大きな変化はなさそうでした。しかし、よく見るといつの間にかQTMovieクラスに空の動画を作成するメソッドが追加されていました。以前は、QTMovieではなく、Cベースの複雑なコードを書く必要がありましたが、これでCocoaベースのイニシャライズ一発で作成できるようになったようです。

QTMovie *movie = [[QTMovie alloc] initToWritableFile:fileName error:NULL];

まだかなりざっくりとしか見ていないのですが、どうやらSnow LeopardではQuickTimeXとQuickTime7が共存しており、基本的にQTKitでは以前からのQuickTime7を使っているようです。ただし、QTMovieを初期化するときにオプションでQuickTimeXを使用して再生することを指定したりできるようになっているみたいです。QuickTimeXを使用するメリットは、マルチスレッド、64bit、Colorsyncのサポートなどのようです。

要するになにかといえば、QTKitのAPIはQuickTimeXがあろうとなかろうと変わらないので、QuickTime7があれば同じことができるようです。もちろん、パフォーマンスは落ちますが。

ちなみに、initToWritableFile:などの新しいAPIは6月にリリースされたQuickTime7.2.1から使用できるようになっていたようです。

それと、ADCのWEBページがだいぶ進化してますね。iBookには少々重いですが、キーワードとかポップアップで出るのにちょっと驚きました。

ADC popup keyword

今更そんなに珍しがるものでもないですけどね。