Mac OS X

ffmpegの再配布について

以前、nConverterというソフトを作ってとりあえずリリースしましたが、その後、自分が使わないので放置し続けていて、OS X 10.6 でうまく動作しない状態でした。

最近なんとなく気が向いたので、うまく動かない部分を修正していっているのですが、主な修正箇所は NSCollectionView がうまく表示されないという謎な箇所でした。ログに unlockfocusなんとか と出るだけで、かなり謎でしたが、NSCollectionViewItem の View に乗っている NSImageView の中の NSProgressIndicator が原因でした。結局何をしても NSProgressIndicator が邪魔するようだったので、あまり必要もないので削除して対処しました。

ついでに動画の変換もうまくいかなかったので、原因を調査していると、どうやらmovtowavに変なバグがあって、どうしてもうまく動きませんでした。movtowavを配っていたサイトもなくなってしまったので、ffmpegのみでエンコードできないかと試すと、最新のffmpegなら十分エンコードできそうでした。(以前のffmpegはffmpegXのffmpegを使っていました)

そこで、ffmpegのみでエンコードできるように改良して、とりあえず修正は完了したのですが、ここで大きな問題が発生しました。

iPhone用の動画はmp4でh264/AACなのですが、この音声コーデックのAACエンコーダであるlibfaacを付けてffmpegをビルドすると、ライセンス上 ffmpeg を再配布できなくなってしまい、nConverterに同梱できなくなってしまうのです。

ffmpegはユーザーにビルドしてもらうという手もありますが、それはなかなか敷居が高く、しかもバージョンによってオプションの指定が変わったりもするので、そうするのは難しいです。

そんなわけで、せっかく修正したものを、どうやってリリースしようか迷っています。

なぜ iPhone プログラミングではデリゲートを多用するのか

iOS / iPhone プログラミングでは、デリゲートをよく見かけることになります。どうしてこんなに見かける羽目になってしまったのでしょうか。それを考えてみることにします。

まず1つ。iPhone アプリケーションでもっとも基本的なユーザーインターフェースは、おそらくテーブルビュー ( UITableView )になるのではないでしょうか。このテーブルビューの実装では、少なくとも2つのデリゲートを実装することになります。それは、UITableViewDataSource と UITableViewDelegate であり、1つのクラスで両方のデリゲートを実装してしまえば、1つのクラスしかできませんが、それでもテーブルビュー1つにつき、2つのデリゲートを実装する必要があるのです。

そして2つ目。アプリケーションにも依りますが、 NSURLConnection ではデリゲートで通信のやりとりをします。つまり、ネットワークから何かリソースを取得するようなプログラムの場合、この NSURLConnection によってデリゲートを使う必要が出てくるわけです。

他にも UIAlert など、デリゲートが出てくる場面はたくさんあります。その結果、iOS / iPhone プログラミングでは、デリゲートを多用する必要が出てきてしまっているのでしょう。

一方で、OS X はどうなっているのかと言えば、そもそも UI の基本がテーブルビューとは限らないので、iOS ほどテーブルビューを使いません。そして何よりも、 OS X では Cocoa Biding が利用できるわけで、outlet / action 接続がほとんど無くなるだけでなく、テーブルビューでデータソースをデリゲートにする必要もなくなり、デリゲートの数が少なくなります。

iOS / iPhone で Cocoa Binding が無いのは、おそらくオーバーヘッドが大きいし、バインドして値を同期させるほどの処理性能が iPhone にはないからだと考えておりますが、よりデバイスが進化した数年後には、Cocoa Binding が iPhone でも使えるようになっていてもおかしくはないと思います。

MacBook Air 13インチ の使用レポート

MacBookAir 13インチ 128GB モデル メモリを4GB カスタマイズ を買ってから半月くらい経ちました。外出時かつ他のパソコン環境がないところでしか使わないので、まだあまり利用していませんが、電車の中で寝ていないときには大活躍しています。

いいところ

  • 起動が速い
  • 軽い
  • 画面が広い
  • キーボードが打ちやすい
  • SDカードが挿せる
  • バッテリーが持つ
  • 十分なスペック

わるいところ

  • キーボードの感覚
  • まれに画面が乱れて再起動せざるを得なくなる
  • CDが取り込めない
  • 文字がちっちゃい

いいところ – 詳細

見た目で驚き、持って驚き、そして起動して驚きます。起動速度がとにかく速いです。ばらつきがありますが、15〜30秒で起動します。本当に速い。

13インチなので、画面が十分な広さです。これなら、プログラミングも満足に行えます。長いメソッド名も、これでバッチリです。

SDカードを挿せます。デジカメの画像を簡単に取り込めるので iPhoto と連携して活躍します。

バッテリーが持ちます。開発作業なら、おそらく公式の7時間は持つことでしょう。ちゃんと測っていませんが、それくらいは持ちそうな気がします。

十分なスペックがあります。たいていの作業は、ストレス無く行うことができます。たまにひっかかりを感じたり、待ち時間を要する作業もありますが、この軽さ、バッテリーの持ちを考えると、とても素晴らしいです。

わるいところ – 詳細

キーをストロークしたときの感覚があまり良くありません。好みに依るところが大きいので、購入前に一度試してみましょう。感覚が悪いからと言って、打ちにくいわけではないので、実用上問題はないのかもしれません。

稀に画面が乱れて何もできなくなる現象が発生します。しかし、これは最近のアップデートで直ったかもしれません。

CDが取り込めません。ネットワークドライブから iTunes に読み込もうと思ったのですが、うまくできませんでした。調べてみると、著作権保護のかかったCDはネットワークドライブからインポートできないようです。

文字がやや小さいです。まだ許容範囲ですが、小さいなと感じる場面がたまにあります。

まとめ

どこへ行っても作業したくなる人に大変おすすめできます。iBook G4 12 inch を持っていた経験からすると、ポータビリティはとても重要で、とにかく、いつでも持ち運ぶ気にならなければ、ノートブックを買う意味がありません。

しかし、ポータビリティを重視しすぎると、スペックが十分でなかったり、バッテリーの持ちが悪かったりしますが、その点、この Air は絶妙なバランスを保っていると言えるでしょう。

11インチについて

軽いのはいいのですが、ややスペックと画面の広さ、そしてバッテリーの持ちに不満を感じそうだったので、13インチを選びました。迷っている方は、店頭で比較してから買うといいと思います。

MacBookAir を買いました

そろそろノートパソコンが欲しかったので、MacBookAir 13インチ 128GB モデルを買いました。メモリを4GBにカスタマイズしています。

まだあまり使用していないので、詳しいレビューはあとでしようと思いますが、私のMac環境のセットアップを書いていこうと思います。

1 アップデート

最初にソフトウェアアップデートをしました。

2 設定の移行

Mailは手動で設定し、Safariのブックマーク、アドレスブック、iCalのデータ等は、iPhoneを通して同期させることで、iMacから移行しました。他の設定は、それほどいじっていないので、必要になったら手動で設定しています。

3 アプリケーション入れる

growl
通知専門アプリケーション。いろんなアプリケーションが対応しているので、必ずインストールしておきたアプリケーション。
Adium
インスタントメッセンジャー
CotEdtior
さまざまなエンコーディングに対応した、シンプルなエディタ。コードのハイライト機能もある。
Google 日本語入力
「ことえり」に不満を感じる場合もあるので、必要に応じて使い分けます。
NetNewsWire
RSSリーダー。Google アカウントで管理します。iPhone版もある。
Yorufukurou
Twitter クライアント。
The Unarchiver
圧縮ファイル展開アプリケーション。さまざまな形式に対応している。
Xcode
開発ツール。言うまでもなし。
Xcode 4 Preview
プレビュー版
MacPorts
Mac版port
pTeX
TeX。portからインストールする。

4 データ移行

あまり移行するようなデータがないので、必要に応じてファイル共有をして取ってきます。

あまりカスタマイズしないで使っているため、こんな感じでいつもの環境になります。

OpenCLの本

そういえば、OpenCL の本をいくつか見つけたので、紹介しておきます。どちらの本も基本的なことは書かれているような気がしましたが、OpenCL入門 の方が、詳しく載っていた気がします。

OpenCL入門 - マルチコアCPU・GPUのための並列プログラミング - OpenCL入門 – マルチコアCPU・GPUのための並列プログラミング -

インプレスジャパン 2010-01-22
売り上げランキング : 1864

Amazonで詳しく見る by G-Tools

OpenCL並列プログラミング―マルチコアCPU/GPUのための標準フレームワーク OpenCL並列プログラミング―マルチコアCPU/GPUのための標準フレームワーク

カットシステム
売り上げランキング : 38079

Amazonで詳しく見る by G-Tools

ADC にも OpenCL Programming Guide for Mac OS X がありますが、英語で読むのに時間がかかりそうなので、こちらの本と併用していきたいですね。

iPad は一般消費者向けのデバイスだと思います

タイトルの通り、 iPad は私のように毎日パソコンに張り付いているような人々のためのデバイスではなく、パソコンとあまり縁のないような人々のために作られたデバイスだと思います。

パソコンは、汎用的なデバイスすぎて、ただネットを見たいという一般の方々には、少々高価でありオーバースペックであり複雑で使いにくいものだと思います。そんな方々にとって、 iPad は理想的なデバイスに見えるのではないのでしょうか?

マルチタスクできないと不満を漏らしている上級ユーザーさんがいるようですが、一般のユーザーに対して、本当にマルチタスクを提供する必要はあるのでしょうか?マルチタスクという機能さえわかっていない人々は、たくさんいると思われます。

Flash非搭載というのは、よくわかりませんが。あとから対応させて、話題を誘うためのだったらいいですね。

そんなわけで、私はあまり iPad は欲しくありません。 iPhone で十分です。ただし、ネットをやりたいけどパソコンがわからないと言っている、身近な方々に、ぜひお勧めしたいデバイスとなることでしょう。

iMac 21.5 inch の使用感

iMac 21.5 inch の上位モデルを購入し、使用し始めてから2週間くらい経ったと思いますが、そろそろ使用感でもレポートしてみようかと思います。

まず、21.5 inch のスペックから。

プロセッサ:Intel Core 2 Duo 3.06 GHz
メモリ:4 GB
グラフィクス:ATI Radeon HD 4670 VRAM 256MB
HDD: 1TB

ざっとこんな感じのスペックで、ほとんどの人は満足できるスペックとなっています。

1. 本体とか
非常にスリムな一体型デスクトップは、大変素晴らしいものです。コードは電源プラグしかないので、机の上がすっきり保つことができます。USBの挿入口がモニタの裏面にしかないのが若干不便かもしれませんが、iMacなら仕方のないことだと思います。

2. キーボード、マウス
キーボード、マウス、ともにワイヤレスで、コードがなくなるので、机をすっきりと保つことができます。キーボードが薄いので、ちょっと打ちづらいと感じる方もいるかもしれませんが、すぐに慣れるかと思います。マウスは、マルチタッチ機能付きの Magic Mouse ですが、ホイールなどの隙間がないので、ゴミが溜まらなくて良さそうです。このマルチタッチ機能は、あまり使う場面はまだなさそうなのですが、ブラウザの戻るや進むの動作など、カーソルやキーボードで操作するよりも、若干楽に操作できるアクションは覚えておくと便利です。ただ、このペースで使っていると、数カ月に一回は電池を交換する必要がありそうなので、そこはちょっと残念です。

3. ディスプレイ
少なくとも、普通の人の目には美しいディスプレイに見えます。どの方向から見ても、だいたい同じ色に発色してくれるのが良いです。21.5inchは解像度がフルHDサイズと同じ、1920×1080です。個人的には、もう少し広く使いたかったので、27inchを買っても良かったかもしれないと思いました。この解像度だと、ウインドウを二枚並べることもできますが、しっかりと配置しなければ二枚並ばないので、もう少し広かったらと思ったりします。

4. Snow Leopard
起動はボタンを押してから30秒くらい、終了は10秒以内で即座に終了してくれます。非常に高速です。ちょっと気になった点としては、Dockのアイコンを長押ししたときのメニューが、アプリケーションのメニューではなくなった点です。私はよくこのメニューを使っていたので、異なるメニューになってしまったのは、少し残念です。アプリケーションメニューは右クリックすると出るようになったので、ctrlキーを押しながらクリックしなければならなくなったので、多少面倒になってしまいました。

5. 性能
少なくとも、開発マシンとしては、十分すぎる性能です。メモリ4GBもありますが、開発だけでは全部使うことはないでしょう。他には、Photoshopも軽快に動作してくれますが、動画を再生しながらドローしていると、極稀にひっかかる感じがするときもあります。今のところ、スピードに不満を感じるところはありません。

iMac買いました

先週の水曜日にiMacが届いて大興奮。ようやく落ち着いてきたので、iMacを購入してから、環境をセットアップする過程でもブログに書いておきます。今回は、LeopardのiBookから、Snow LeopardのiMacに移行する過程となります。

ちなみに、購入したiMacは21.5inchの上位モデルです。下位モデルを選ばなかったのは、店頭でExposéをしてみると、アニメーションがあまり滑らかでなかったからです。21.5inchの上位モデルならば、27inchの下位モデルを買ってもよかったかもしれませんが、別の理由により、27inchは選びませんでした。それでは、iMacを箱から出して、iMacに電源コードを繋ぎ、キーボードとマウスと共に机に置いたところから話をはじめます。

電源を入れると、例によっていつものセットアップが始まります。今回は、出荷時にインストールされている状態で使用するので、最初から再インストールなんてことはしませんでした。

まず、マルチIMクライアントであるadiumをインストールしました。そして、スキンを設定し、前のiBookからチャット履歴をコピーしました。チャット履歴は、Application Supportsのそれっぽいファイルをコピーすれば、問題なくadiumは認識してくれるようです。

adiumと一緒に、growlも付属していたので、とりあえずgrowlもインストールします。

次に、音楽を流したかったので、iTunesを移行しました。やり方が正しいかとても怪しいのですが、iBookのiTunesフォルダをiMacのフォルダに上書きしました。とくに今のところ問題はないのですが、正しい方法かわかりません。

次に、おもにiPhoneの中に入ってるようなデータ、すなわち、ブックマークやアドレスブック、スケジュール、メールアカウントなどを移行しようと思いました。最初は手動でやろうと思ったのですが、iPhoneからiMacに同期できないのかと考え、iPhoneをiMacに繋ぎました。

最初は無理だと思ったのですが、意外なことに、アドレスブック、スケジュール、ブックマークは、iPhoneからiMacへ逆に同期させることができました。これができたのは、iTunesフォルダを事前に移行させていたせいかもしれません。ただし、両者は異なるMacなので、購入したアプリケーションや音楽については、認証を解除しなければ使用できないようです。認証を解除すると、5回までの制限が1回分なくなります。

ただし、メールアカウントの同期はできなかったので、手動でアカウントのセットアップをし直しました。

テキストエディタが欲しかったので、CotEditorをインストール。
RSSリーダーが欲しかったので、NetNewsWireをインストール。これはもともとGoogleReaderを利用しているので、アカウントを設定するだけでいいです。

最後に、Xcodeをインストールし、とりあえずいつもの環境になった気がします。

ちなみに、Social IM も入れたところ、Snow Leopardでも問題なく動作してくれています。

使い勝手については、また後日ブログに書くことにします。
Windows環境も欲しいので、Windows7も入れたいのですが、Windows7高すぎます。残念。

Flash上の動画がカクカクする噂

新しいiMacのFlash上で、比較的重い動画を再生しようとすると、Mac全体が重くなって、そのまま戻らなくなるといったような噂が立っています。AirMacでネットワークに接続している場合起きるようなので、そのへんのバグなのだろうと予測されています。

しかし、Mac OS X上のFlashの実装は、決してよいものとは言えないでしょう。なぜなら、新しいiMacに限らず、少なくともこのiBookでも、Flash上の動画再生は重いからです。Flash上で動画を再生する場合、通常の動画再生アプリケーションで再生するよりも、なぜか格段に重くなるのです。QuickTimeなどで余裕で再生できる動画でも、Flash上ではカクカク再生になってしまうことは多々あります。Adobeさんにはもうちょっと頑張ってもらいたいところです。

そんなわけで、なかなか新iMacの購入に踏みきれないのであります。

そろそろ新しい開発環境を

Snow Leopard が8月末に発売され、そして新しいiMac先週発売、Windows7も発売されました。

私の今の開発環境は、iBook G4 1.33GHz メモリ:1.5GB HDD:40GB モニタ:12inch OS: Mac OS X Leopard。

そろそろスペック的に厳しくなってきましたし、Snow LeopardのGCDをはじめとする新しい技術や、もちろん、Windows7にも少なからず興味はあります。

そんなわけで、近いうちに iMac 21.5inch の上位モデルを買おうと思います。これで全て解決。Bootcampは12月頃対応するそうなので、その時期になったらWindows7も買おうと思います。ただ、ちょっと高いので、見送る可能性もなくはないですね…。Windows7の価格にはちょっとがっかりです。