2009/12/30

FavTun Timer 開発で参考させていただいた書籍群の紹介

先日公開させていただいたiPhone 用タイマーアプリのFavTun Timerですが、皆様のおかげで、AppStore Utilities カテゴリの TOP FREE APPS で86位というランクをいただくことができました!

ダウンロードしてくださった皆様、ご利用くださっている皆様、しかも Review まで投稿してくださった皆様、本当に感謝しております。有難うございました。なんであれ、使ってくださっている方々がいる、ということが大変に嬉しいです。

FavTun Timerは初めて書いた iPhone 用アプリケーションです。「iPhone OS 3.0 で膨大な数のAPIが追加される」という Apple からの説明を受け「どんなAPIが追加されるんだろう」と興味本位でAPIリストを覗いたことが発端でした。リストやドキュメントを見ているうちに「折角 Mac と iPhone を持っているのだから..」と、サンプルコードの改変を進めているうちに、完成された Framework の魅力へと引き釣りこまれていきました。当時は、ともに C で始まるから、という理由だけで Cocoa と Carbon とを混乱しているような初心者っぷりだったように記憶しています。

こんな状態で開発を始めたので、完成までは非常に様々な書籍、ドキュメントへお世話になりました。ここでは、参考になった書籍群の作者様へ感謝しつつ、それらを紹介させていただきたいと思います。なお、私が書籍を購入したのは主に2009年夏位で、まだiPhone OS 3.0に関する書籍が存在していなかった頃です。現在は改版されているものもあるかと思いますので参考にされる際にはご注意ください。またリンク先は、出版社のページです。

まずは、基礎となる Objective-C に関する書籍です。

詳解 Objective-C 2.0(荻原剛志)

Objective-C 2.0に関する包括的な言語解説書であり、リファレンスでもあります。Objective-C に於けるメモリ管理から、リフレクションの利用方法、Foundation ライブラリの概要やネーミング規約、また、2.0で導入された宣言プロパティ/アクセサまで、すべての内容が網羅されています。もしより深い内容を知るために、Appleの言語マニュアルを参照する場合でも信頼の於ける道標として利用できるでしょう。


次に iPhone アプリケーションの概念を学ぶ際に利用させていただいた書籍です。当時は Xcode での新規 Project 作成方法すらわからなかったので、それらの書かれている書籍を探しました。

iPhone SDKの教科書—Cocoa Touchプログラミング、最初の一歩(赤松 正行)

iPhone アプリケーション作成方法の概説を勉強させていただいた書籍です。数時間で読める解りやすい概説書です。Xcode や Interface Builder の概要を知った書籍で、Xcode と IB との連携方法などが実際に参考となりました。

基礎からのiPhone SDK(鶴薗 賢吾)

Cocoa Touch の規約などに関して勉強させていただいた書籍。こちらも数時間で読みこなすことが可能なサイズです。私は、先の本と併せて基本クラスを勉強させていただくとともに、Application Delegate など、各種実際に利用されている Delegate の概要などを学びました。


上記2冊が概念をつかむまでに参考にさせていただいた書籍です。今振り返ると、NSTimerや AVAudioPlayer など、FavTun Timer の基礎となるクラスの使い方は、ここで勉強したのかな、と思います。

アプリケーションへの機能追加など、開発が本格化してきた際にお世話になった書籍が以下の2冊です。

はじめてのiPhoneプログラミング(デイヴ・マーク、ジェフ・ラマーチ(著)/マーク・ダルリンプル(監修)/鮎川 不二雄)

非常に多くのコードが順を追って書かれている実用的な解説書。単一アプリケーション内での MutiView をどのように取り扱うべきか、また iPhone アプリケーションで数多く利用されている UITableView や、UINavigationCtonroller を実際のコードでどのように利用するのか、など、実開発で直ぐに利用可能な情報が数多く散りばめられています。FavTunTimer では3つのタイマーを切り替えていますが、その基礎はここで学びました。米国では OS3.0 対応版が発刊されているためか、現在この書籍は Amazon では入手が困難になっているようです。良い書籍であるだけに大変残念です。

iPhoneアプリケーションプログラミング(新居 雅行) / サポートページ

iPhone OSの基本クラスに関するリファレンス的な書籍。主要クラスを概説し、その使い方をシンプルなコードで説明しています。この本の素晴らしい点は、メモリ管理など、現実の実装で重要となる概念が、非常に詳しく書かれている点です。残念ながら、このあたりの解説が曖昧な書籍が多い中、この本では、例えば、「IB で作られたインスタンスの release 管理はどうすべきか」に関し、その onwer 権限の考え方も踏まえ、詳しく書かれています。Appleのドキュメントに散逸している情報がひとまとめにされており、何度もこの本に助けられました。非常に素晴らしい本であり、大変におすすめしたい書籍です。惜しむらくは、書籍名からは、その素晴らしさがわかりにくいことでしょうか...。


上記刊行書籍以外に参考になったのは、もちろん Apple Developer Connection で公開されているドキュメントとサンプルコードです。Apple のドキュメントは非常に丁寧に整理/維持されており、また、Xcode と緊密に統合されているため、開発途中に於いても、簡単に各種ドキュメントへたどり着くことが可能です。記載内容も、まずは概説のち詳細と順を追って書かれており、ドキュメントの内で説明されているコードは、実行可能なサンプルとして提供されています。PDFとHTMLの両フォーマットで閲覧可能な点もポイントが高く、私は多くのドキュメントを印刷し、通勤中に読んでいました。一部のドキュメントは日本語訳も公開されています

最後に「Google Objective-C スタイルガイド 日本語訳」を紹介します。Google の定めた Obj-C のコーディングルールがまとめられたもので、Takashi Sasaiさんが日本語へ翻訳してくださっています。私はここに書かれている内容を何度も読み砕くことで、ようやく Objective-C で正しいコードを書く糸口を発見できたような気がしました。

以上、私が参考にさせていただいた書籍、ならびにドキュメントです。作者の方々へ感謝しつつ、他デベロッパの方々の参考になれば嬉しく思います。



2009/12/22

FavTun Timer が AppStore の UTILITIES に並びました & 公開までの日数

昨日公開させて頂いた FavTun Timer ですが、無事 App Store 内の UTILITIES カテゴリへ表示されました。



ありがたい事に、早速お使いくださっている方もいらっしゃり、更に、レビューを書いてくださっている方もいらっしゃって、本当に有り難い限りです。皆様へ深く感謝させて頂きます。小さなアプリですが要望など、可能な限り、応えていければ、と思っています。

さて、AppStore 公開時のハードルと言えば Review の期間がまちまちだ、という点がしばしばあげられます。例えば1ヶ月間以上認可が下りなかった、という話は度々聞きますし、5日で公開されました、という話を聞いた事もあります。Apple曰く、12月17日付け公開の情報では、
97% of applications are being approved within 14 days.

とのことです。

ということで、今回の FavTun Timer 公開にあたり、かかった日数です。

December 17, 2009 11:44   Ready for Sale
December 11, 2009 10:38   In Review
December 10, 2009 08:16   Waiting For Review

有り難い事に、私の場合は7日間で Ready for Sale として頂くことが出来ました。私は、公開申請にあたり、公開予定日をずっと遅くの日程へ設定していたため、昨日この日程の再設定を行い、21日に公開された、という流れになっています。

わずか1アプリケーションの公開スケジュールに過ぎませんが、御参考まで。

Blog のタイトルを短く変更しました

唐突ですが Blog のタイトルを短くしました。

この Blog では Google の Bloggerサービスを使わせて頂いているのですが、Blogger では HTML の title を、「Blogのタイトル」:「記事のタイトル」という形式で生成します。例えば、こんな感じです。
Tempus - 今日は明日で昨日: FavTun Timer 1.0.0 リリースしました

しかしこの形式は、肝心の記事名が、付加情報的な扱いになってしまっており、一瞥性がそれほど高くありません。例えば Google などの検索結果一覧でこの状況は顕著になり、肝心の検索ワードを探す為のお視線移動量が増えてしまいます。

そこで、根本的な解決策ではないですが、Blog のタイトルを短くする事で対策してみよう、と思いたち、今回の変更を行いました(そもそも長い名前は、何かと不便ですし)。

ちなみに Google の検索結果一覧ページでは、検索ワードを含んだ title が生成されています。しかしその生成順番は Blogger と異なっており、例えば foo を検索すると
foo - Google 検索

のように、検索ワードが先頭にくる形式になっています。

Blog の場合、過去記事タイトルを一度に集めて並び替える、ということが行われる事も少なくないでしょうから、一概にどちらが良いとは言えませんが、少なくとも Blogger では選択できると良いなぁ、と感じました。

2009/12/21

FavTun Timer 1.0.0 リリースしました

iPhone 用アプリケーションである FavTun Timer をリリースしました。本日よりAppStore から入手する事ができます。価格は無料です。

アプリケーションとしては、非常にシンプルなタイマーです。




アラーム音に iPod ライブラリに入っている任意の音楽が指定できるのですが、加えて、任意の「フレーズ」を指定できる点が特徴です。



一般的にタイマーのアラーム音は10秒も聴かないと思いますので、任意の曲が指定できたとしても、お気に入りのサビへ到達する前に止めてしまう事が多いのでは、と思います。このアプリケーションでは、アラームとして利用するフレーズを自由に設定できますので、サビをアラームに使える、という点が大きな特徴になっています。

FavTun Timer公開にあわせサポートページを公開しました。細かな特徴なども併記してありますので、あわせてアクセスして頂ければ嬉しいです。

裏話になりますが、当初は、iPhone OSの構造やAPIセットを勉強しようと、小さなサンプルプログラムを幾つか作って遊んでいたのですが、折角なので、ということでアプリケーションという形式にまとめようと考えました。構想は結構前で、当初は、VFD(FLディスプレイ、家電のフロントパネルなどで利用されているもの)を模したデザインの小さなアプリケーションを作る予定だったのですが、絵心が無いため、七転八倒を繰り返し、出来上がった物は、当初とずいぶん違ったものとなりました。参考書籍などは、忘れる前に、追って、まとめていきたいと思っています。

ご意見、ご感想など、お待ちしております。お気軽にご連絡ください。

2009/12/06

KBC-L2ASを購入しました

USB出力付きリチウムイオンバッテリーKBC-L2ASを購入しました。eneloop universe products シリーズに属する商品です。

主な目的は、先に購入したD25HWの外部バッテリです。

従来、ノートPCのバッテリが不足しがちな状況にありながら、且つD02HWなどによる接続をを行うと、あっという間に電池不足に陥るケースが多くありましたので、少しでも通信可能時間が伸びれば良いな、と購入しました。

人気商品なようで、なかなか店頭で目にする機会がありませんが、私は秋葉原のヨドバシカメラで入手する事が出来ました。やはり店頭には置いておらず、店員さんに尋ねた所、レジ奥から持ってきてくれました。感謝です。

ブリスターパックパックに入っています。本来は他の eneloop 同様、店頭に吊るされているのでしょうね。



重量は138g。手に、ずしり、とくる重さです。



付属品は充電用のACアダプタと、接続用のUSBケーブル。USBからの充電も可能です。



例えば、iPhone 3Gへ給電するとこんな感じ。給電中はランプが光ります。



給電時間は、USB1端子接続で約240分。一方充電時間はなかなか時間が必要で、フル充電にかかる時間は、ACアダプタ利用時で7時間、USB経由では倍の14時間です。夜中に充電開始して、朝に回収という使い方になる気がします。なお、充電中でも外部機器へ給電可能です。

比較的重量があるため、万人へ常時の持ち運びをお勧めする訳ではありませんが、モバイル機器のバッテリ切れに悩まされている方は、鞄の片隅に忍び込ませておくと良いかもしれません。

D25HWを購入しました

イー・モバイルのD25HW(Pocket WiFi)を購入しました。

今までモバイル用には、同じくイー・モバイルのD02HWを使っていましたが、そろそろ長期契約割引の「新にねん」が切れるので、そのリプレース目的です。

外箱はおしゃれに黒一色。



本体はD02HWなどと同じ楕円形で、上1/3くらいはディスプレイが付いています。視認性は高いです。モックやWeb上の写真よりもメタリックな感じが強く、MacBook ProやiMacなどの色味に近いです。



D02HW と大きさはそれほど変わりません。少し横に太いですね。



重量は79g。



今までのD02HWは36gですから2倍くらいあります。



D02HWがタダの「プラスチックボックス」、という位の軽かったのに比べ、D25HWは「中に機械が詰まっている」と感じる重さです。

裏蓋を開けたところ。大きな電池があります。



SIMカードは電池を外して差し込みます。上に写っているのは、横向きに置いた電池。



D25HWの特徴は、それ自身が802.11gのアクセスポイント機能を有したNAT(NAPT)ルータである点です。今までのブリッジ的なD02HWなどとは、商品カテゴリが大きく違います。ブリッジとして使うことは出来ませんので、クライアントPCへ割り当てられたIPアドレスを用いて直接外部へ接続したい場合などには適していません。

電源投入から使える状態になるまで概ね20秒弱。取扱説明書を見ると、OSはLinux 2.6.25、その他 BusyBoxやNetFilterなどを使っているようで、典型的な最近の家庭用ルータと同様の構成だと言えるでしょう。

設定項目も家庭用ルータ同様で、DHCPサーバ機能やパケットフィルタ機能は勿論、ゲームコンソールからの利用を強く想定しているのでしょうか、UPnPやSIPのアプリケーションゲートウェイ機能も有しています。マニュアルにも、ニンテンドーDSやPSPなどのゲームコンソールと接続する方法が詳しく書かれています。

無線アクセスポイントとしては、WPSやWPA2-PSK、MACアドレスフィルタリングなど、一般的な機能がひととおり揃っています。

3G性能は、下り7.2Mbps、上り5.8Mbps。今まで使っていたD02HWは、上り384kbpsでしたので、この点は嬉しい進化です。

対応OSとしては、Windows系はWindows7まで、MacOSXは10.6(SnowLeopard)までがうたわれています。Windows7 ならびに Snow Leopard から接続実験を行いましたが、ドライバのインストールから接続性まで、良好でした。

注意点としては、デフォルトで幾つかパケットフィルタリングが設定されていることです。137、139、445 など、狙われやすいポート番号に対する外部アタックを防ぐ設定ですが、ネットワーク接続性に問題が生じた際には確認してみることをお勧めします。

実際の取扱説明書がイー・モバイルのサイトで配布されていますので、機能詳細を知りたい人は、事前に参照してみると良いでしょう

こんな小さな筐体でありながら、3G接続可能であり、バッテリ駆動だけで動作可能な無線アクセスポイントを備えたルータである、という点には、素直に驚いてしまいます。特に私にとっては、外出先からノートPCでネットワーク接続する際、わざわざUSBを使った物理結線を行わずにすむ、という点だけでも、大きく利便性が向上しそうです。