Amazon Campaign

2012年11月11日日曜日

カメラはiPhone5の大きな魅力

買い物帰りに足を伸ばして、大田区にある「浅間神社」に自転車を飛ばして来てみました。
神社は小さな山の上にあるのですが、なんとタイミングの良いことか、今日は晴天で時間的にもちょうど夕日が落ちる時だったので、とても奇麗な夕日を拝むことができました。
写真ではだいぶ小さいですが、夕日の右側には富士山もハッキリみえて、すっごい得した気分です。
ここはちょっとした夕日ポイントのようで、結構な人が夕日を眺めるために集っていました。

あいにくカメラは持っていなかったのですが、先週機種変した iPhone5 の iSightカメラを試す絶好の機会となりました。
空のグラデーションも奇麗だし、暗い部分もしっかり描写されており個人的には十分満足できる写真が撮れました。iPhone5 はディスプレイサイズや本体の軽さ・薄さなど目立つポイントが多く、iSightカメラは目立ちませんが、良いカメラを積んでいるってことをうっかり忘れがちですね。今後は多いに活用したいと思います。

■Apple の iPhone 写真ギャラリー
http://www.apple.com/jp/iphone/gallery/

2012年10月20日土曜日

UIActivityIndicatorView の実装まとめ

iPhoneアプリにおける定番のインジケーター、いわゆる「考え中」アイコンを実装するにあたり、いくつかポイントがあったのでまとめておきます。

UIKitにインジケーターを表現する"UIActivityIndicatorView"があるので、「このViewを表示してあげるだけでいーのね」と思ったら、とんでもない。以下を考慮した実装が必要です。

  • Viewの実装
  • 別スレッドで処理
  • コールバック
  • リリースタイミング

Viewの実装

まずは UIActivityIndicatorView を生成します。これは当然ですね。

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
[indicator setCenter:CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2)];

別スレッドで処理

インジケーターを表示したいってことは、当何らかの処理をさせたい訳なんですが、同一スレッド上で
インジケーター生成 → インジケーターViewを追加 → やりたい処理 → インジケーターView削除
ではダメなんです。
インジケーターViewを追加した状態でViewControllerの処理をいったん抜けて、端末上で描画処理まで進めてあげなければいけません。だから別スレッドで「やりたい処理」を実行させないとダメなんです。
そこで、メソッド"performSelectorInBackground"で別スレッドを立てて、引数のselectorで「やりたい処理」を呼び出してあげます。

// インジケーターView追加
[self.navigationController.view addSubview:self.indicator];

// インジケーター再生
[self.indicator startAnimating];

// 別スレッドで処理
[self performSelectorInBackground:@selector(othreProcess) withObject:nil];
[self.window makeKeyAndVisible];


コールバック

続いて、別スレッドでの「やりたい処理」が終わったら、メインスレッドへ処理が終わった旨を通知(コールバック)し、インジケーターの表示を止めてあげます。ここでは"hideIndicator"というメソッドを呼び出しています。
また、別スレッドを立てる場合は新たなスレッドでのautoreleaseを格納する"NSAutoreleasePool"を宣言してあげる必要があるようです。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

//
//  ここでやりたい処理を実行。
//

[pool release];
 
// 終了処理をメインスレッドへ通知
[self performSelectorOnMainThread:@selector(hideIndicator) withObject:nil waitUntilDone:NO];
-(void)hideIndicator {
 [self.indicator removeFromSuperview];
 [self.indicator stopAnimating];
}


リリースタイミング

最後に、別スレッドで実行した「やりたい処理」で、何らかのインスタンスを生成する場合、慣習的に "autorelease" を明示していると、先ほどの"NSAutoreleasePool"のreleaseメソッドを呼んだタイミングで開放されてしまいます。
ですので、autorelease とせずに、適切なタイミングを考慮して "release" を呼んであげる必要があります。

なんかインジケーターってよく見るので、もっと簡単、簡潔に実装できるもんだと思っていましたが、結構手間ですね。UIKit ってやつは。。。

2012年10月13日土曜日

TX-8050 で任意のネットラジオ局を登録してみる

もっぱらFMラジオとして使っている TX-8050 ですが、たまにはネットレシーバーっぽい使い方をしてみようと、任意のインターネットラジオ局を登録してみました。
登録方法としては3つ用意されています。
  1. リモコンを駆使して登録
  2. ローカルネットワークから TX-8050 へアクセスして登録
  3. vTuner というクラウドサービスを使ってクラウド上で登録
写真の付属リモコンには文字キーはなく、本体の小さなディスプレイ上でカーソルキーを使って文字を選択することになり面倒なので、今回は 2. でやってみます。


まず、登録する好みの局を探します。80年代ののRock&Pops を聞きたいので iTunes を使って探しました。iTunes上で選曲後にタイトルバーのプロパティを見るとビットレートとURLを確認することができます。ビットレートは当然高い方がいいので、今回は「BEST80 POP&ROCK」(128kbps)を選びました。


ローカルネットワークで TX-8050 にアクセスするため、IPアドレスを確認します。リモコンの[セットアップ]ボタンを押して、メニューから「5. NetworkSetup」を選択後、「IP Address」で確認できます。
ブラウザでアクセスすると以下のような画面が表示されます。


「My Favorites」で登録した局が本体から選局できるようになります。入力後「Save」ボタンを忘れずに押しましょう。


本体の「My Favorites」を表示させてみると・・・選局できました!


128kbps のソースはだいぶ良い音に聴こえます。TX-8050 は機能が豊富な割には安価なので、あまり音質には期待していませんでしたが期待以上に再生してくれます。
また、ネットラジオやファイルサーバー上の音楽ファイルなど、高品位なデジタルソースを簡単に再生できるため、ソースの質が上がったことにより、より高音質になっているように感じます。

2012年9月20日木曜日

EclipseユーザーのためのXcodeキーボードショートカット

近ごろiPhoneアプリ作成へのモチベーションが再熱してきて、Xcodeと格闘する日々です。
ボクは10数年に渡りJavaをメインに開発を行っているので、IDEの操作といったらEclipse、そりゃぁもう体に染み付いてしまっています。
なので、Eclipseでよく使うキーボードショートカットがXcodeではどうなのか、マッピングをまとめていきます。

アクションEclipseXcode 3.2系Xcode 4.5系
インデント(増やす)行選択 + [Tab]行選択 + ⌘ + ]
インデント(減らす)行選択 + [Shift] + [Tab]行選択 + ⌘ + [
コメントアウト[Ctr] + /⌘ + /⌘ + /
候補リスト[Ctr] + [sp]ESC
指定行へジャンプ[Ctr] + L⌘ + L
宣言にジャンプF3[Shift] + ⌘ + D[Ctr] + ⌘ + J
選択文字列で検索文字列選択 + [Ctr] + F[Shift] + ⌘ + E(⌘ + E) to (⌘ + F)

<2012/12/04 追記>

Xcode 4.5 へアップデータしたらUIも操作も、ツールの構成も大きく変わってしまったので 3.2系と分けて書きます。

<2013/02/26 追記>

インデント追加。
つづく。

2012年9月18日火曜日

期待はずれだった「科学で体験するマンガ展」

ウチの子供は大の漫画好きなので、いま「日本化学未来館」で開催している「科学で体験するマンガ展」に行ってきましたが、ちょっと期待はずれでした。。。

ドラえもん特集の「コエカタマリン!」は、自由に話した言葉が文字になると思いきや、ワーとかコラーとかの5単語しか認識してくれず、スマホの方がよっぽど高性能です。
鉄腕アトム特集の「アトムと一緒に空をこえよう!」は、GoogleEarthまんまだし。
ウチの子の感想

「いまの科学じゃまだまだドラえもんの道具は作れないね。」

が表すように、残念ながらこのマンガ展だけを目当てで行くのはお勧めできません。

ただ、未来館の常設展示は見応えあるので未来館を未体験の人は行っても良いと思います。ローソンにてマンガ展と常設展示のセットチケットが親子ペア 2,000円で買えるのでお得です。
前売りだと「オリジナルしおりセット」も貰えますよ!

2012年9月17日月曜日

アクションベースでガンダム、舞う



丹精込めて作り上げたデスク上のガンダム、ポーズがマンネリ化してきたので、アクションベースなるものを購入してみました。

いいですね!これ!
デスク上でガンダムが舞います。
台座は広くてMGでも安定してるし、バーの伸縮、角度もわりと自由で不満ありません。目立たないクリアがオススメです。

2012年8月18日土曜日

Wii の読み込みエラーへの対応

発売当初に購入していたWiiが頻繁にゲームディスクの読み込みエラーを起こすようになってしまいました。
とくにヒドイのが「大乱闘スマッシュブラザーズWii」で必ずと言っていいほど発生します。どうやらスマブラは2層ディスクらしく、他のソフトに比べて読み込み精度が必要なようです。
さて、どうしようかとググってみると、任天堂は過去に今回と似た症状のユーザーに対して
無償で「読取りレンズクリーニング」と称した対応を行っていたようです。残念ながら任天堂のホームページでは現在該当するような内容のページは見当たらず、すでに無償対応は終了しているようです。

参考)当時無償対応してもらった方のBlog
http://iphone.rich-poppa.com/etc/disk-error.html

発売当初に購入しているので当然、すでに保証期間は過ぎています。ですが、レンズクリーニングごときに素直に修理代を払う気にはなれないので、下記先人の情報を元にレンズクリーニングをしてみました。

参考)Wiiのレンズクリーニングの手順
http://signal-gamers.seesaa.net/article/108082810.html

症状としては正にレンズ汚れのように感じていたので、これで対応できることにかなりの自信がありました。ところがNG。全く症状改善されませんでした。(TT)

仕方がないので分解したことはなかったことにして修理に出すことにしました。
修理内容は想定外の

「ディスク読込み機能部品と本体基盤が故障のため本体交換」

というものでした。そのためシリアル番号も変わりました。
気になる修理代金は 3,000円 ナリ。当然修理に出す際の送料は自己負担でしたが、修理後の発送は任天堂が負担です。
クリーニングだったとしても 5,000円 は覚悟していたのでちょっと得した気分です。
噂どおり任天堂のサポートは良心的なのかもしれません。

また、おそらく製造ロットが初期のものだったので本体交換という対応だったのでしょう。購入が発売初期で同様の症状が発生した方は素直に修理に出すのが得策のようです。
参考までに今回修理に出したシリアル番号は下記の通りです。

LJF100547***

※当然、症状や状態により今回と異なる修理対応になる可能性はあると思いますので、あくまで自己責任でお願いします。

Amazon_ad