cappuccinoのコンピタブログ

cappmac.exblog.jp
ブログトップ

ViewDidLoad内の処理をメソッド化する

サンプルコードは単一の機能を説明する上で、簡単化したいため、ViewDidLoad内に直接描かれていることが多いです。
そのため、まとまった機能は部品化していきたいため、メソッド化してしまいましょう。

例として以下のソースコードを変更してみます。

https://www.cocoacontrols.com/controls/lmgeocoder

LMGeocoderという、ジオコーディングを簡単化するコントロールのソースコードです。

この中の、LMGeocoderDemoプロジェクトを開いてみます。

実行すると、映像に合わせて、緯度、経度、ジオコードした結果(住所、道路名)が表示されます。

以下のような感じ。
c0064553_17421606.png
ちなみに映像に対して、文字が縦のままなのはHorizontal専用のレイアウトだからです。
レイアウトの調整もそのうち手を付けていきたいですが、とりあえず今日の本題はそのコードの内容について。

ソースコードは以下のファイルで構成されています。
c0064553_18150996.png
このうち、AppDelegate.mとLMViewController.mが、このコードの主要部分となります。

[AppDelegate.m]
特にいじりません。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

メソッドの中で初期化処理が行われております。


[LMViewController.m]

- (void)viewDidLoad

メソッドの中でビューのライフサイクルが動作しています。語弊は有りますが、main関数みたいなものです。

この中で位置情報を取得する処理は、部品化されています。


一方、ビデオを表示する処理は、ベタに書かれています。AVFoundationを使った簡潔なコードなので、このまま部品化して呼び出せるようにまとめておこうと思います。


とりあえず、メソッド化してみます。


返却値も、引数も無いので、以下の関数(videoLayer)を作って処理をコピペしました。{}内はviewDidLoad内のコードをそのまま移植しただけです。


- (void)videoLayer

{

BOOL hasCamera = ([[AVCaptureDevice devices] count] > 0);

if (hasCamera) {

AVCaptureSession *session = [[AVCaptureSession alloc] init];

session.sessionPreset = AVCaptureSessionPresetHigh;

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];

[captureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

[captureVideoPreviewLayer setFrame:self.backgroundImageView.bounds];

[self.backgroundImageView.layer addSublayer:captureVideoPreviewLayer];

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

NSError *error = nil;

AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];

[session addInput:input];

[session startRunning];

}

else {

self.backgroundImageView.image = [UIImage imageNamed:@"background"];

}

}


幸い、スコープはメソッド内で閉じているので、変更はいっさい不要でした(ビデオを表示するだけだしね)。

これでメソッドは作成できたので、あとはviewDidLoadで呼び出せるよう、コードを追加します。
自分の中のメソッドを呼び出すだけなので、以下を追加するだけです。ドットでもかけますが、Objective-Cらしくメッセージで。

[self videoLayer];


この部品は後々、ビューの中で表示するビデオを実現するコードとして利用したいと思います。

今回は改変しても壊れないこと、および見通しを良くすることに主眼を置いたので、自分のやりきった感は少ないですが、実行結果は映像があったり、位置情報が変化したりと見栄えがするので面白いと思います。

今後も、見た目重視のアプリをいろいろいじっていこうと思います。

[PR]
# by cappuccino_mac | 2014-06-29 17:06 | 開発メモ

コピペで作るiOS App

iOSアプリの開発情報は巷に溢れておりますが、大抵、以下のパターンが多いと思います。

  • 言語仕様から理解して、コツコツ作っていく(座学的イメージ)
  • 簡単なアプリを拡張して、実用的なアプリに仕立てていく(実践的イメージ)
  • Tipsのまとめ(「分かる人」向けの開発情報)

どれも必要な情報があって、便利なのですが、手早く作る上で必要な技術とは何か、というのを模索しながら作っていくと、

(やりたいことを実現できるコードのコピペ) + (コピペをのり付けするための知識)

ということが大事かと思えてきました。

コピペで参考になるサイトはいろいろ有りますが、GitHubでパブリックに公開されているコードがよいと思います。
部品化が徹底されているものが多く、殆ど手直しせずに利用できます。

コピペをのり付けする知識は、いくらでもありますが、巷のコードを利用する上で特に必要となるのは、

  • IB依存コードとIB非依存コードの違いを吸収する
  • ビューコントローラとビューの違いを吸収する
  • Storyboardを理解する

だと思います。

この辺りを意識してアプリを作っていく記録を残していきます。

お断り:実践の記録なので挫折しているところも記録していくつもりです。




[PR]
# by cappuccino_mac | 2014-06-28 17:00 | 開発メモ

dp2 Quattroインプレッション

フォトヨドバシより

dp2が発売されたようですね。

画質は素晴らしいの一言。

ぜひ買いたいですが、35mmはDP2 merrillで当分フォローできるので、dp1 quattroを狙いたいところ。
さすがに10万は手が出ないので、1年待ちで8万切りあたりを狙いたいかな。。。シグマがなんかとんでもないキャンペーンをしてくれたら話は別ですがw


[PR]
# by cappuccino_mac | 2014-06-22 22:27

SSDが死んだ

Macに外付けディスクとして、Lacie Little Big Disk Thunderbolt SSD 240GBを接続して
運用していたのですが、数日前から勝手にアンマウントすることが多発し、おかしいなと思
っていたところで、完全にマウントされなくなりました。

ディスクユーティリティを開くと、RAID0のセットのうち、片方のディスクがエラーを起こして
オフライン状態になっていることが分かりました。
このディスクにはiPhotoやiTunesのライブラリが保存されていて(つまり内蔵HDDにはいっさい、
iTunesやiPhotoのデータは無し)、依存度が高いため、バックアップはそれなりに取っていました。
(といっても、iPhotoのバックアップはたま〜にしかとって無かったので、結構焦りましたが...)

そのため、RAIDセットを破棄して、それぞれのディスクをフォーマットし直しました。

いまは問題なく使えているようです。SSD自体が堅牢でもRAID0はエラーを起こすととたんに使え
なくなり、対処不能となることが分かりました。
世の中にはたまに速度向上をウリにSSDのRAID0構成で出荷するマシンがありますが、意外に
脆いかもしれません。

また、TimeMachineでは内蔵HDDのバックアップはしっかり取っていましたが、外付けディスクの
バックアップは手動だったので、今後はTimeMachineに外付けディスクも含めて、バックアップを
取るよう対策しようと思います。

[PR]
# by cappuccino_mac | 2014-06-14 15:53

jetson tk1が来ました

c0064553_21513990.jpg

c0064553_21513927.jpg


取り急ぎ写真を載せてみました。
脚のストックを探さないと…
[PR]
# by cappuccino_mac | 2014-06-01 21:49

Jetson TK1注文してみた

ASCIIより

NVIDIAのTegra K1搭載開発者向けボード「Jetson TK1」がオリオスペックから発売開始されたようです。

早速、ここで注文をしてみました。

このボードはいくつか契約事項があるため、署名が必要となります。
注文後に添付のPDFに署名捺印をしてから発注処理に入るというメールが来ました。

早速、署名捺印をし、郵送しました。

発送は5月下旬〜6月上旬になるみたいです。

Streaming Processor数は192コアなので、絶対性能からいうとけして高い性能ではありませんが、モバイルサイズとしては破格の性能なので、面白そうです。
同梱、もしくはCUDA Registered Developer Programにログインしてダウンロードできることで入手できる(と思われる)Vision Worksがどのようなものかも興味深いです。
[PR]
# by cappuccino_mac | 2014-05-02 21:11 | 雑感

春イベ攻略状況

いまだにE-2あたりをさまよっていますが、ボスを初回撃破記念に投稿。

霧島が虎の子の46cm三連装砲と一緒に海の藻くずとなって消えてしまった反省を生かして、ダメコン
は全員に詰んでおくという対策を施しました。これまでオーバーキル気味だったので火力を下げてでも生存性を上げる作戦です。

とてもフルボッコですが、ダメコンを全員に詰んでいるのでそれほど絶望感は無かったかな。

後半の夜戦とボスは復縦陣で行くと単縦陣に比べてダメージが少なめだった(多分)。

c0064553_14285635.png


一周したあとの消費資源はこんな感じ。

c0064553_14243575.png


ボス撃破でS勝利できた訳ですが、なかなか手に入らなかった阿武隈さんをドロップしました。
あいかわらずレア駆逐艦は手に入らないっすねー。
ドロップ入手画面撮り忘れたので、とりあえず、図鑑画面。

c0064553_1430127.png

[PR]
# by cappuccino_mac | 2014-05-02 14:30

レア艦建造祭り状態?

こちらの熊野
建造レシピを参考にしたら一発で鈴谷が出ました。航空巡洋艦をそろえるクエストで欲しかったので、
とてもラッキー。

一応レシピだけ抜粋すると 400/100/600/30

c0064553_638346.png



調子に乗って、こちらの大鳳建造レシピ(3600/2000/5300/5200/20)を入れたら一発で大鳳さん
がきました。ここのサイトは大和の推定率も比較的高めみたいなので、資源がメド着いたら試してみようと思います。

c0064553_6383175.png



正規/装甲空母勢はこれですべてそろいました。空母でそろってないのは瑞鳳くらいか。
ドロップも建造もやたら空母ばかりがコレクションされていくので、そろそろレア駆逐艦こないかな。

現状、雪風も島風もないです。もちろん、初風、枚風とかもない。強いていえば巻雲くらい?
これもレアリティでいえば普通くらいだと思いますしね。ま、何事も焦らずデイリー回しでいきましょう。
[PR]
# by cappuccino_mac | 2014-04-27 06:40 | 雑感

艦これ5万ポイント分ゲットを試してみた件について その後

結論

だめでした。

何の音沙汰もないので、結局ガセっぽいです。

その後、関係ないキャンペーンメールが続々スパム的に届きますが、
リンクを飛んでも更なるサイト追加のページに飛ぶだけであまり意味は
なさそう。

いわゆるムシのいい話はやはりいいこと無いですね。
[PR]
# by cappuccino_mac | 2014-03-16 15:45

テスラ モデルS

車メーカーのしがらみにとらわれない発想のEVですが、どの辺が普通の車メーカーと違うかというと

・航続距離 約500kmを達成したEVである。
・エンジンを積まない利点を十二分に生かしたフロアレイアウト&ラゲッジスペース。
・インパネとナビを融合し、すべての操作がタッチパネル。巨大なタッチパネルは動くiPhoneといっても過言ではない。

あたりでしょうか。静粛性と加速性の良さも相まって、マセラッティやフェラーリといった高級車を脅かす存在になりつつあります。

日本でも4月からデリバリーが開始されるといわれていますが、まだまだ課題も多そうです。

・維持費の安さが魅力だが、点検・修理は青山のファクトリーだけ
・上記のため、修理が発生した場合のハードルが外車の中でもとびぬけて高い
・電池の寿命および交換時の費用が不明。テスラロードスターでは電池の交換費が600万したというウワサも

上記の欠点は概ね、今後の普及次第とも言えます。
将来、モデルXも登場するようですが、普及とともにこれらの問題も解決されるかもしれません。

まだ、一度も出会ってませんが、街中を走っているのを見る日が待ち遠しいです。
[PR]
# by cappuccino_mac | 2014-03-10 00:00 | 雑感