iPhone/iPod touch用アプリ「騒音計測メーター」の作成時に参考にした文献

はじめに


騒音計測メーター(NoiseLevelMeter) 無料でダウンロードできます。

今回作成したiPhone/iPod touch用のアプリである、NoiseLevelMeter(騒音測定メーター)は、2作目の自作アプリになります。本アプリは、1作目の「プライベート15パズル」に比べると、画面遷移あり、データの記録、地図表示等、いくつかの(今まで使ったことがない)機能を取り入れたため、コードを書く敷居が格段に高くなってしまいました。そのため開発も一筋縄にはいかず、いろいろな本や文献を参照しながら多くの壁を乗り越えてやっと完成したという感じです。
NoiseLevelMeterの使い方は、先日の記事を参照していただければイメージできるかと思います。
2作目のiPhone/iPod touch用アプリが公開されました - 理想のユーザ・インターフェイスを求めて

本記事では、このアプリを作成する際に新しく何を学んだかということと、どうやって学んだかということをまとめておきたいと思います。

storyboardを使って画面遷移を実装

今回の開発ではstoryboardを使うことにしました。アプリの機能として複数画面の遷移やテーブルビューの表示が必要であり、それらを効率良く実装するには、storyboardを使うのが良いと思われたからです。まずはstoryboardとは何で何ができるか、ということから勉強しました。
以下の資料を参考にしました。NavigationControllerとTabBarControllerを使ったアプリの実装方法がとても良く分かりました。storyboardを使うと使わない場合と比べて、TableViewの実装がとても簡単にできるらしい、ということも分かりました。

http://www.raywenderlich.com/ja/25696/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AE-storyboard-in-ios-5-part-1
SoftwareDesign 2012年2月号のiOSに関する2本の連載記事

Software Design 総集編 【2001~2012】
Software Design 総集編 【2001~2012】SoftwareDesign 編集部

技術評論社 2013-03-27
売り上げランキング : 4017


Amazonで詳しく見る
by G-Tools

騒音レベル(デシベル)の測定

このアプリのメイン機能である騒音レベルの測定機能ですが、AVFoundationライブラリを使って実装しています。サウンドの再生や録音程度のコードであれば、多くのiPhoneアプリの入門書にしばしば紹介されているのですが、一歩踏み込んだ使い方が紹介されている本はあまり見当たりません。今回は、以下の本でサウンド関係の踏み込んだ部分を勉強しました。

iPhone SDK アプリケーション開発ガイド
iPhone SDK アプリケーション開発ガイドJonathan Zdziarski 近藤 誠 (監訳)

オライリージャパン 2009-09-07
売り上げランキング : 135040


Amazonで詳しく見る
by G-Tools

ボタンの装飾

アプリのメイン画面には大きなボタンを3つ設置しています。それらは「測定する」「データを保存」「データを共有」ボタンです。これらのボタンはアプリの中心となるボタンなので、見た目もそれなりに”良く”したいと考えました。
自分でボタンの画像を作成して貼り付ける方法もありますが、あまり凝りすぎてもきりがないので、既存のコントロールを使うことを検討しました。しかし、XcodeのUIButtonで作成した標準的なボタンでは、この3つのボタンを表現するのには何か物足りなさを感じます。
そのときたまたま以下の本を見ていまして、紹介されていたUIGlossyButtonを使って作成することにしました。おかげでイメージ通りのボタンになったと思っています。この本には、他にもいつか使ってみたいと思うレシピがいくつか紹介されており、今後も参考にしようと思います。

iPhoneアプリ開発レシピ iOS 6対応
iPhoneアプリ開発レシピ iOS 6対応佐藤 伸吾

インプレスジャパン 2013-04-18
売り上げランキング : 338152


Amazonで詳しく見る
by G-Tools

CoreDataを使った記録データの保存

騒音の測定値を記録しておくために、途中からCoreDataを利用することにしました。なぜ「途中から」かというと、開発の始めには、データを保存しておく機能のことなど全く考えていなかったからです。開発途中で、保存できたらいいな、という軽い気持ちで機能として加えることにしました。iOSにはデータを保存しておく機能としてどのようなものがあるかと調べた結果、CoreDataというのが便利そうだと分かりました。なので、開発がある程度進んだ段階でCoreDataを初めて使うことにしました。
storyboardを使って開発をする場合、最初プロジェクトを定義するときに、「CoreDataを使うか?」を指定することができます。これを指定すると、CoreDataのコードの雛型が、生成されるファイルに自動的に埋め込まれて比較的簡単にコードを書くことができます。しかし、自分の場合、CoreDataを使うことを想定していなかったので、この指定はせず、CoreDataの雛型無しのコードだったため、一から自分でコードの中にCoreData用のコードを埋め込んでいくことになり、どこに何を書くかということから勉強を始めました。
具体的にはCoreDataを使うための準備(初期化)、データの保存方法、データの取り出し方法、等の実装を学びました。そのとき、繰り返し読み込んだ文献がAppleチュートリアルです。

iOS Core Dataチュートリアル

CoreDataに関して詳細に解説してある本は少ないのですが、以下の本では比較的詳しく踏み込んで解説されています。同書は同じタイトルで第2版が最近発売されていますが、第1版とは筆者も変わり、全く別の内容の本となっていますのでご注意ください。

10日でおぼえるiPhoneアプリ開発入門教室 (10日でおぼえるシリーズ)
10日でおぼえるiPhoneアプリ開発入門教室 (10日でおぼえるシリーズ)関根 元和

翔泳社 2011-07-23
売り上げランキング : 209316


Amazonで詳しく見る
by G-Tools

位置情報の取得

本アプリは騒音測定時のユーザーの位置情報を取得します。この実装方法はどの本でも解説されていますが、自分の場合、先に紹介した「iPhoneアプリ開発レシピ」がとても参考になりました。

複数画面間でのデータ受け渡し

今回のアプリの地図表示機能を用いる際に、測定履歴のリスト表示画面から地図表示画面へ遷移するときに、テーブルの各行の測定情報を次の画面に渡すにはどうやればいいのか、2週間くらいずっと試行錯誤しました。最終的にはprepareForSegueを使って思うように動くようになりました。以下のAppleの公式チュートリアルを参考にしました。

2つ目のiOSアプリケーション:ストーリーボード

その他 iPhoneアプリ全般

今回の開発の最中、以下の本も読みました。コードの実装の参考にしたというところは特にないのですが、とても読みやすく2ページに1回は笑える箇所があります。通勤の電車の中で何回か繰り返して読みたくなる本です。delegateの概念がなんとなく理解できました。また、「アプリをリリースする手続き」のところが参考になります。

iPhoneアプリ開発塾
iPhoneアプリ開発塾カワサキ タカシ

技術評論社 2012-06-08
売り上げランキング : 87581


Amazonで詳しく見る
by G-Tools

おわりに

今回のアプリを作成するにあたり、やりたいこと(実装したい)が先にあってそれを実現するためにはどうすればいいか、ということを考えて、いろいろな本や文献で必要な知識を増やしていくという方法で学習していきました。
それでなんとか動くものを作り上げることができましたが、将来的に大規模なアプリを効率良く作れるようになるためにも、そろそろObjective-Cの基本的な事から時間をかけて勉強する必要性を感じています。
でもまあ、動くものを作り続けることで「いつかは量が質に転化する」というのも真実ではあると思いますので、このまましばらくは思いつくままに作っていこうと考えています。