2012-01-01
2011-09-28
■ [iOS][cocos2d] cocos2d入門書「cocos2d for iPhoneレッスンノート」を書きました

拡張現実ライフの@akio0911さんとの共著で、cocos2dの入門-初心者向けの「cocos2d for iPhoneレッスンノート」 なる本を書きました。3つのゲーム作成を通じて、cocos2dの中身や扱い方が学べるようになっている本です。
- 作者: 加藤寛人,佐藤伸吾
- 出版社/メーカー: ラトルズ
- 発売日: 2011/09/22
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 88回
- この商品を含むブログ (7件) を見る
cocos2dの本と言えば「cocos2dで作る iPhone&iPadゲームプログラミング」*1が有名ですが、その中にない情報もいくつか載っています。
たとえば、書籍としてはあまり紹介されることのない高性能サウンドエンジン:CocosDenshionについて、基本の使い方からサウンドのフェードイン/フェードアウトエフェクトを簡単に扱う方法などを説明しています。また、使いこなせるとすごく役立つイージングアクションの丁寧な説明が載っているのもポイントです。Flashコンテンツによくあるような、物体の滑らかな移動を使いこなせるわけですね。
cocos2dは、iOS上で動く2Dゲームエンジンとしてはかなり強力なものであるにも関わらず、高速で使い勝手もよいフレームワークです(執筆している最中、何度もそのことを再認識しました)。世界中の開発者も使っているエンジンを使って、いっしょに楽しいアプリを作りませんか?
サンプルコードのダウンロードなど、サポートページはこちらです。
リンク
*1:こちらでも、監修としてほんの少しお手伝いさせてもらいました
2011-02-10
■ [AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法
![[AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
ムービーを撮影しているときにデータをフレーム毎に処理したい場合、AVCaptureVideoDataOutputクラスを使用します。しかしこのクラス、他と違ってsupportsVideoOrientationプロパティに全てNOを返すようです(4.2で確認)。
for (AVCaptureConnection *connection in videoWriterOutput_.connections) { if (connection.supportsVideoOrientation) { // ここに入ってこない! connection.videoOrientation = orientation; } }
ですので、そのままAVAssetWriter&AVAssetWriterInputでムービーファイルを作成すると、縦に持っていようが逆さまに持っていようが横向き(ホームボタンが右)のムービーが出来上がってしまいます。そんな見にくいムービーは要りません。
これを解決するには、AVAssetWriterInputクラスのtransformプロパティを使います。縦方向のムービーにしたい場合のコードは以下のとおりです。
assetWriter_ = [[AVAssetWriter assetWriterWithURL:saveLocationURL
fileType:AVFileTypeQuickTimeMovie
error:&error] retain];
NSDictionary *outputSettings = NULL;
outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
AVVideoCodecH264, AVVideoCodecKey,
[NSNumber numberWithInt:(int)frameSize.width], AVVideoWidthKey,
[NSNumber numberWithInt:(int)frameSize.height], AVVideoHeightKey,
nil ];
videoWriterInput_ = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo
outputSettings:outputSettings] retain];
[videoWriterInput_ setExpectsMediaDataInRealTime:YES];
// 縦方向で録画するように変換行列を指定
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, frameSize.width/2, frameSize.height/2);
transform = CGAffineTransformRotate(transform, 90/180.0f*PI); // ここでorientationを指定
//transform = CGAffineTransformScale(transform, 1.0, -1.0); // ← 間違い。左右反転してしまいます
transform = CGAffineTransformScale(transform, 1.0, 1.0);
videoWriterInput_.transform = transform;
[assetWriter_ addInput:videoWriterInput_];
AVAssetWriter&AVAssetWriterInputの初期化処理も自分メモ気味に書いてありますが、メインはtransformプロパティのところです。
これで無事に縦方向で保存されます。
良かった良かった。
2011-02-08
■ [書籍] iOS4プログラミングブックの書評
![[書籍] iOS4プログラミングブックの書評 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [書籍] iOS4プログラミングブックの書評 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
FastEverをはじめとしたステキなアプリを開発していて、札幌にて精力的な活動を続けていらっしゃる id:frnk さんが、書籍「iOS4プログラミングブック」の書評を書いてくれました。
元々は「この本を使って、またステキなアプリを作ってくださいね」という下心全開でお送りしたのですが、書評まで書いていただいて嬉しい限りです。
さらには文中にて、
アプリ開発本を書くということは、読んだアプリ作者のためだけでなく、
そのユーザーさん全てのメリットになることなんだなあ、と改めて思いました。
という、私たちが考えていたことを見透かすようなコメントまで書いてくれています。アプリ開発に対して何かをするということは、その先にいるユーザーに対してのおもてなしを提供することに他なりません。この本で開発者が楽をするのではなく、ユーザーが楽しめるにはということをずっと意識して書いていたのです。
さすがfrnkさん、ありがとうございます。
2011-01-10
■ [iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました
![[iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
今月から発売される書籍「iOS4プログラミングブック」に、共同執筆の一員として参加しました。
この本は、iOS4で新しく追加された機能をメインに「どんな機能か」「どう使ったら良いか」、そして「使うときに気をつけたい箇所は何か」を詳細に説明した本です。
目次
Amazonでも確認出来ますが、本書は次のような構成になっています。
第1章 高解像度ディスプレイ
1-1 高解像度ディスプレイの概要
1-2 高解像度ディスプレイのリソース
1-3 Core Graphcisの高解像度ディスプレイ対応
1-4 UIKitの高解像度ディスプレイ対応
1-5 Core Animationの高解像度ディスプレイ対応
1-6 OpenGL ESの高解像度ディスプレイ対応
第2章 マルチタスキング
2-1 マルチタスキング
2-2 マルチタスキングのキーワード
2-3 目的別のマルチタスキング適用方法
2-4 マルチタスキングのまとめ
第3章 マルチメディア
3-1 AV Foundation概要
3-2 カメラ制御
3-3 ビデオの編集とエクスポート
第4章 アセットを使ったフォト/ビデオへのアクセス
4-1 Assets Libraryとは
4-2 クラス構造
4-3 基本的な使い方
4-4 Assets Libraryを使用する時の注意点
第5章 マルチスレッド
5-1 Blocksの概要
5-2 Blocks解説
5-3 Grand Central Dispatchの概要
5-4 Grand Central Dispatchの解説
第6章 ローカル通知
6-1 ローカル通知の概要
6-2 Local Notificationの実装
6-3 Local Notificationの応用
第7章 イベントキット
7-1 Event Kitの概要
7-2 Event Kitの実装
第8章 広告エンジン
8-1 iAdとは
8-2 iAdのiTCの登録
8-3 iAdの実装方法
8-4 iAdと他の広告との比較
8-5 iAdと他の広告の実装方法
第9章 ジャイロセンサー
9-1 ジャイロセンサーの概要
9-2 ジャイロセンサーの実装方法
第10章 ユニバーサル対応
10-1 ユニバーサルアプリケーション
10-2 デバイス識別方法
10-3 古いiOSバージョンへの対応
第11章 misc.
11-1 ドキュメントプレビュー
11-2 リソースファイル
11-3 データ保護
私が担当した箇所と、どういう内容を書いたか
上の目次のうち、私が担当したのは
- 2章のマルチタスキングについて
- 4章のAssets Libraryフレームワークについて
- 8章のiAd(これはサポートだけですが)
の3つです。
マルチタスキングでは標準的な説明だけでなく、アプリケーションの振る舞いがどうなっているのかを丁寧に説明することに注力しました。自分がマルチタスキングをサポートするアプリを作りたい場合に、どういう作法に従うべきかを解説しています。
Assets Libraryフレームワークでは、とかくマイナーな存在であるこのフレームワークについて、基本を丁寧に解説することに注力しました。ユーザーのiOSデバイスに保存されている、ユーザーにとっての貴重なデータを活用出来るという夢広がるフレームワークです。これまでに発売されている洋書でもほとんど解説されていない箇所ですので、貴重な資料になっています。
iAdでは、自分のアプリにiAdを組み込むにはどうしたらよいか、という点を丁寧に解説するよう心がけました。iAdはAppleの示す作法にしたがった実装が行われていないと審査でRejectされてしまいます。作法自体は簡単なものですが、それらを分かりやすくまとめています。
それ以外にも、超強力な執筆陣によるとても役立つ内容が揃っています。Mac OS Xアプリ作成にも役立つ(←重要!)BlocksやGCD、iOS4で格段に機能拡張されたAVFoundationをはじめ、「iOS4の機能を使いつつiOS3デバイスもサポートしたい」「iOS4でカメラ周りのAPIが変わったけどどうしたらいい?」「OpenGLをRetina液晶で使うベストプラクティスを知りたい」といった要望にも応える内容が満載です。
他の執筆者の紹介記事
最後に、他の執筆者の皆様が本書に言及されている記事を紹介します。それぞれがどのような内容になっているかを窺い知ることができますので、ぜひご覧ください。
- iOS 4プログラミングブック見本誌が届きました 1/27発売です。 - Seasons.NET
- サンプルコードのダウンロード先も日記上で公開しています。
氏は書籍「そのまま使える iPhoneアプリプログラム」の著者でもあります。
splhack氏はBlocksについての補遺(ほい)をブログ上で掲載しています。非常に濃い、良い内容ですのでぜひご覧ください。
後者のエントリは、「不安なので買う前にもっと情報を」という方にオススメの情報が書かれています。
また、南東京iPhone開発者勉強会を精力的に主催していらっしゃる@cqa02303氏も、得意のカメラアプリについての情報を惜しみなく記しています。
2011/2/3追記
発売してからもAmazonで1位を獲得したりと、好評を頂いていて何よりです。皆様本当にありがとうございます。
執筆者のブログも更新されていますので、現況に合わせてリンク一覧を纏め直しておきました。
LennaHHIS I soluhd have thought of that!
xpnqknfeqow9RUR <a href="http://audjfbjvqlik.com/">audjfbjvqlik</a>
profgpvcsRZRTQO , [url=http://fohadljpdglm.com/]fohadljpdglm[/url], [link=http://qjhmeuhwvxhm.com/]qjhmeuhwvxhm[/link], http://wltidlzitxgh.com/
profgpvcsRZRTQO , [url=http://fohadljpdglm.com/]fohadljpdglm[/url], [link=http://qjhmeuhwvxhm.com/]qjhmeuhwvxhm[/link], http://wltidlzitxgh.com/
hughorsnxmkRrBH <a href="http://osiwpxcljgkm.com/">osiwpxcljgkm</a>
pcwyjrxtfxD1omG0 , [url=http://nmpplywgacfu.com/]nmpplywgacfu[/url], [link=http://cxrclqyxdggb.com/]cxrclqyxdggb[/link], http://axqgeyrpktnh.com/
2011-01-09
■ [AssetsLibrary] Assets Libraryフレームワークを使うときの注意点
![[AssetsLibrary] Assets Libraryフレームワークを使うときの注意点 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [AssetsLibrary] Assets Libraryフレームワークを使うときの注意点 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
Assets Libraryフレームワークは、ご存じのとおりフォトライブラリの中の全メディアにプログラムからアクセス出来るようになる素敵なフレームワークです。
これを使えば、たとえば
- 複数の画像を一度に選択できるイメージピッカー(そしてFlickrに一括転送、とか)
- 画像管理アプリ
- 好きなあの子の写真だけを表示出来るスライドショーアプリ
- 撮影した写真のExif情報を取得
- ライブラリ内の画像にExif情報を付けて別名保存(上書きは不可)
みたいなことができるわけです。今さらかもしれませんが、本当に便利なフレームワークなのです。なのですよね!
さて、このフレームワークを使っているとき*1に1つ気づいた点がありますので、記しておきます。
注意点:「ALAssetsGroupのposterImageメソッドは、大元のALAssetsLibraryオブジェクトが解放されていると、nilを返すことがある」
これはどういうことかと言いますと、ALAssetsLibraryから取り出したALAssetsGroupで得られるグループの代表画像(=posterImageメソッドで得られるサムネイル画像)は、ALAssetsLibraryが解放されていると、正常な画像が得られないことがあるということです。確認し切れていませんが、さらに先のALAssetを取得する段階でも問題が発生する可能性があります。
// マズいコード ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:resultBlock failureBlock: errorBlock]; [library release]; // これだと以降のグループに対する処理がおかしくなってしまう!
上記のようにグループ取得後にリリースした場合、それ以降にALAssetsGroupオブジェクトに対して行う処理が失敗してしまうようになります。確認した範囲では、ときどき失敗したりと、不安定になっていました。
ですので、上記のALAssetsLibraryオブジェクトはクラスのメンバー変数にしておくことが必要になります。
// OKなコード // --- @interface部 --- ALAssetsLibrary *library_; // メンバー変数で持たせる // --- @implementation部 --- library_ = [[ALAssetsLibrary alloc] init]; // そして保持したままにする! [library_ enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:resultBlock failureBlock: errorBlock];
お気を付けください。
Assets Libraryフレームワークに関する資料は、現在だと世界中を見渡しても非常に少なく、クラスリファレンスとにらめっこして、動作のトライ&エラーを繰り返して開発しなければいけません。
しかし、今月発売される「iOS4プログラミングブック」にはこのAssets Libraryフレームワークについての解説が載っています。フォトライブラリに溜まる写真を活用したい方は、ぜひ手にとってご確認くださいませ。
*1:iOS SDK4.2.1で確認しました。
2010-12-31
■ [NSLog] 今さら聞けないNSLogの話
![[NSLog] 今さら聞けないNSLogの話 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [NSLog] 今さら聞けないNSLogの話 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
今更で本当に恥ずかしいことですが、自戒も込めて記事にしておきます。
NSLogで出力される中で[aaa:bbb]とある部分、これは[プロセスID:スレッドID]を表しています。プロセスIDである点は、NSLogvのマニュアル部分に載っているのですが、では右の値はどこから得ているのでしょう?
実際にGDBで確認してみましょう。実行中のスレッド情報をinfoコマンドで出力してみます。
(gdb) s 2010-12-31 08:01:14.096 MetronomePro[1183:207] hoge (gdb) info thread Thread 1 has current state "WAITING" Mach port #0x207 (gdb port #0x1403) ← ここ! -[KSPopoverViewController loadView] (self=0x8e558b0, _cmd=0x7414aa) at /Users/〜/KSPopoverViewController.m:48 frame 0: pthread ID: 0xa0b95540 system-wide unique thread id: 0x6ce4 dispatch queue name: "com.apple.main-thread" dispatch queue flags: 0x0 total user time: 120858000 total system time: 103652000 scaled cpu usage percentage: 0 scheduling policy in effect: 0x1 run state: 0x3 (WAITING) flags: 0x0 number of seconds that thread has slept: 0 current priority: 47 max priority: 63 suspend count: 0. (gdb)
gdbの出力から、右の番号がMah portのスレッドIDを表していることが分かりますね。ちなみにMach portについての説明は以下サイトで紹介されているPDFを読むと良いでしょう(とても良い内容です)。
Real-Time Mach NTT Release Home Page
いやあ、今まできちんと理解せずに使っていたので、何ともお恥ずかしい話です・・・。
■(応用編その1)凝ったNSLogにしたい
それだけだと恥さらしするだけで終わりですので、私が使っているNSLog代替のマクロを紹介しておきます。
#define KSLog(fmt, ...) \ NSLog((@"<%s/%d> " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
これはNSLogと同じように使え、さらに
- 現在の関数(見やすいフォーマット)
- 呼んだ行数
も同時に表示してくれる便利なマクロです。
■(応用編その2)NSLogを自前のログ出力関数とすげ替える方法
もう1つ、NSLogを自前の関数にすげ替えるテクニックを紹介します。まずはプリプロセッサを使う方法です。
// プリプロセッサで強制的に書き換えてしまう #define NSLog(...) MyLog(__VA_ARGS__) // 自前のログ出力 void MyLog(NSString *fmt, ...) { va_list ap; va_start (ap, fmt); #if 1 // NSLogvを使用する方法 NSLogv(fmt, ap); #else // fprintfで出力する方法 // NSLogと同様に、末尾の改行を入れ込む if (![fmt hasSuffix: @"\n"]) { fmt = [fmt stringByAppendingString: @"\n"]; } NSString *body = [[NSString alloc] initWithFormat:fmt arguments:ap]; fprintf(stderr, "MyLog:%s", [body UTF8String]); [body release]; #endif va_end(ap); } void MyUncaughtExceptionHandler(NSException *e) { MyLog(@"E:%@", [e reason]); } - (id)init { // 例外発生時に呼ばれる関数を設定 NSSetUncaughtExceptionHandler(&MyUncaughtExceptionHandler); : }
いやはや、defineマクロって恐ろしいですね。
そして、さらに荒々しい方法として、AppleのWebObjectsの記事で紹介されているこの方法によって、NSLogをSwizzlingしてしまう方法も紹介します。
// 準備 extern void _NSSetLogCStringFunction(void(*)(const char *, unsigned, BOOL)); static void _MyLogCString(const char *message, unsigned length, BOOL withSyslogBanner) { fprintf(stderr, "%s(%d[%s])\n", message, length, withSyslogBanner?"T":"F"); } - (id)init { // NSLogをすげ替え(プライベートAPI!) _NSSetLogCStringFunction(_MyLogCString); : }
これをランループを開始する前に呼んでしまえば、ことごとく差し替えられてしまうという、前述のプリプロセッサを使った方法よりも恐ろしい方法です。
ただ、この_NSSetLogCStringFunction()関数は、ほどのドキュメントにもあるとおりプライベートAPIですので、審査には確実に通りません(試してないですが)。
用法を守って、正しくお使いくださいませ。
2010-12-25
■ [UI] プルダウン型のUIを作りました
![[UI] プルダウン型のUIを作りました - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [UI] プルダウン型のUIを作りました - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
ボタンにタッチするとメニューがスルスルッと出てきて、フリックしたらイベントが発生するユーザーインタフェースがほしいなと思ったので、そういうビューコントローラを作ってみました。
katokichisoft/KSPopoverView ? GitHub
以下、自分の備忘録も兼ねた使い方です。
使い方
1. ビューコントローラKSPopoverViewControllerを作成します。作成する際、メニューを引き出すきっかけになるボタンの画像と、配置位置(左上)を指定します。
UIImage *image = [UIImage imageNamed:@"katokichi"]; _menu = [[KSPopoverViewController alloc] initWithImage:image point:CGPointMake(50.0f, 340.0f)];
2. メニューで表示するボタンを追加します。ボタンは文字列で指定します(KSPopoverViewButtonBaseのサブクラスを自分で作成すれば、文字列でないボタンも作成できます)。あとはデリゲートオブジェクトを指定してビューに突っ込むだけです。
[_menu addButtonWithTitle:@"アイテム 1"]; [_menu addButtonWithTitle:@"アイテム 2"]; [_menu addButtonWithTitle:@"アイテム 3"]; [_menu addButtonWithTitle:@"アイテム 4"]; [_menu addButtonWithTitle:@"アイテム 5"]; [_menu addButtonWithTitle:@"アイテム 6"]; _menu.delegate = self; [self.view addSubview:_menu.view];
3. UIで要素が選択されると、イベントを受信するデリゲートメソッドがインデックス番号とアイテムのオブジェクトと共に呼ばれます。
- (void)popoverViewController:(KSPopoverViewController *)controller selectedButton:(KSPopoverViewButtonBase *)button AtIndex:(NSInteger)buttonIndex { button.text = [NSString stringWithFormat:@"pressed %d", buttonIndex]; }
ここで処理を行います。
アドホックなところも多くあるので、何かあればコメントをもらえると嬉しいです。
2010-12-21
■ [AssetsLibrary][yidev] 横浜iPhone勉強会(yidev)の発表スライド
![[AssetsLibrary][yidev] 横浜iPhone勉強会(yidev)の発表スライド - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [AssetsLibrary][yidev] 横浜iPhone勉強会(yidev)の発表スライド - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
去る12月11日に行われた、横浜iPhone勉強会(yidev)でAssets Libraryについて発表してきました。
Assets Libraryとは、フォトライブラリの写真にプログラムからアクセスするとても、とっても便利な方法です。
イメージピッカーのようなUIを自分で作れるようになりますので、「複数の写真を選択して、一度にflickrに投稿する」というような、イメージピッカーでほしい機能を自由に作り込むことができる優れもののライブラリです。
とくにiOS4.1以降では写真に対してExif情報などのメタデータを保存するAPIも本フレームワークで提供するようになりましたので、カメラアプリを考える上では必須のフレームワークと言えるのではないでしょうか。
というわけで、そのときの発表スライドをここに置いておきます。ぜひ、Assets Libraryを活用したアプリを作ってみてくださいまし。
2010-12-02
■ [Photos][Tips] iPhoneシミュレータで実機上のフォトライブラリにアクセスする
![[Photos][Tips] iPhoneシミュレータで実機上のフォトライブラリにアクセスする - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント [Photos][Tips] iPhoneシミュレータで実機上のフォトライブラリにアクセスする - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント](http://r.hatena.ne.jp/images/popup.gif)
iPhoneシミュレータを使っていて不便なのが、フォトライブラリに画像がほとんど登録されていなくて、なおかつ大量の画像データを一度に登録する方法がない点です。
「iPhone シミュレータ 画像」とググっても、上記サイトのように「MobileSafariで画像表示→画像を長押し→登録」×n回、という方法が出てくるのみです。ちょっと(というかかなり)面倒です。
何かいい方法はないかなあと調べていたら「Phone Disk」というアプリを使ったナイスな方法が分かったので、本記事で紹介します。
このアプリは、MacFUSEを使ってiPhoneデバイスをファイルシステム上にマウントしてくれるアプリです。FinderでMediaディレクトリ上に直接アクセスできるようになって色々できる便利なアプリ。マウントしてくれるので、ターミナルからでも/Volumesディレクトリ経由でアクセスできるのもGood。
そこで、iPhoneデバイスをマウントしている状態で同ディレクトリにシンボリックリンクを貼ると、シミュレータでも実機で写真アプリを開いたときと同じ内容が表示されるようになります。
% cd ~/Library/Application Support/iPhone Simulator/4.2 % mv Media Media_orig # 既存フォルダを退避しておく % ln -s /Volumes/<デバイスに付けた名前>\ \(Media\) Media
上記のコマンドを実行しておけば、実機接続時に同じように写真を表示してくれます。AssetsLibraryで独自イメージピッカーなんかを作っているときなど、すごく便利ですね。
Phone Diskは$19.95(4ライセンスだと$35.95)の有料アプリですが、買っておいて損はないんじゃないかと思います。Safariで延々とファイルを保存していく時間ぶんのコストを考えると、なおさら。
迷っている方も15日間無料で使えますので、まずは試してみてはいかがでしょうか。
以上、開発上のTipsでした。
PunkHoly shinzit, this is so cool thank you.
pazjciufIgUs4a <a href="http://grpttulfnqna.com/">grpttulfnqna</a>
ffqyjfvfQe7IgZ , [url=http://lvjsyrvrncac.com/]lvjsyrvrncac[/url], [link=http://ewzbyhrhbcnx.com/]ewzbyhrhbcnx[/link], http://ppclzpjslora.com/
qxrddtoki5m4rMV <a href="http://gofencxgkbey.com/">gofencxgkbey</a>
bqupox77Ee87 , [url=http://tznbiqnyxzzn.com/]tznbiqnyxzzn[/url], [link=http://sxmctdooptxj.com/]sxmctdooptxj[/link], http://vfibnkhdemnc.com/

Metronome PRO (version 2.4)を使用しております。
さて、以下の二つの希望があります。
折角の美しいメトロノームのイラストなにの、
機能が増える毎に、文字も増えて、画面が汚くなります。
bookmark等の文字は無くても支障の無いものだと思いますが、
大きな文字で表示されています。
一旦設定が済めば、全ての文字等は消えてしまい、
メトロノームのイラストのみ表示し、
必要な時はワンタッチで表示できるする様に
なりませんか。
下記のリンクはコントラ・バス奏者のゲーリー・カー氏の
講演です。この中でめメトロノ-ムの使い方が述べられています。
一度お読みいただき、ソフト改良の参考にしていただけると
嬉しいです。
http://www003.upp.so-net.ne.jp/ultrabassissimo/contents/garylecture11.html
ご意見、そしてご愛用いただきありがとうございます。
コメントを頂いた当日に内容を拝見しておりましたが、返信が遅くなってしまい申し訳ありませんでした。
ご要望として以下の2つを承りました。
1. 乱雑なUIが演奏の邪魔をしている(確かに込み入った状況に陥っていますね)
2. bpmをもっと下げられる(リンク先では1が下限)
どちらも、とても参考になるご意見です。ありがとうございます。
うまくアプリに汲み取ろうと思いますので、どうぞしばらくお待ちいただけますでしょうか。
何とか形に出来るようにしてみます。