忍者ブログ

[PR]

2024年04月29日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

CoreDataが開く新たな可能性

2009年11月02日
現在KigenやTiny3Dでデータ保存をCoreDataで行ったらどうなるのか、性能評価試験をしています。まだリリース用としての作り込みまでは至っていませんが、いろいろとメリットがありそうです。大きなメリットは以下の2つになります。

1.データベースの各項目間での連携が行いやすい
例えばKigenの場合だと期限や個数の変更をトップのカテゴリへ簡単に通知できるため、「カテゴリの中の期限が1個でも期限切れなら、カテゴリの名前を赤くする」などということも簡単に実現できる。

2.データの読み書きが高速
SQLite3を直接使うのと同様に各項目単位での小刻みな保存が出来るため、現行版Tiny3D(現在は機能拡張性を考慮してデータ保存にNSMutableDictionaryを利用しています)での問題であった「巨大なファイルを終了時に保存しようとして失敗する」問題が解消できる。キャッシュデータの読み込みも高速なので、3D表示への切り替えも今以上に速く行える。このレベルの変更なら逐次変更、このレベルの変更なら表示前に変更といった切り分けにも柔軟に対応できる。

そのため次回のバージョンアップはおそらく両者とも内部データ保存形式をCoreDataに変更する事になります。過去のデータはバージョンアップ後の初回起動時に変換するようにしようかなと考えています。欠点として動作OSが3.0以降になってしまうことがありますが、それを補って余りある利点があると判断しました。
PR

第3世代iPod touch、そろそろ発表?

2009年09月07日
久しぶりに更新します。更新をしていなかったのは、またこっそりとアプリ開発を進めているからです。せっかくOpenGLも1.1はそれなりに使えるんだし、ゲームでも作ってみるかなどと軽い気持ちでスタートしましたが、ゲームの場合、これまでに作ったソフト後比較すると動作検証に膨大な労力がかかりますね。まあ、かなりランダム要素の強い題材を選んでしまったのが災いしているのかもしれません。まだアップロードできるようになるまで時間がかかりそうなのと、今後も仕様がいろいろ変更になる可能性も大きいため、詳細はまだ秘密にしておきます。

さて、近年この時期には毎年行われているiPod touchの新機種発表ですが、今年も有るという噂が濃厚です。例年通りなら日本時間で9月9日の発表でしょうか。ネット上で飛び交う噂ではカメラの搭載や64GB版が出るなど、いろいろなことが言われています。ただ、個人的には現在のiPhone 3GSを超えるスペックを一度に多数搭載するとは考えにくく、今回それがあるとしてもCPUがちょっと早いですよ程度じゃないかと思っています。カメラの搭載やブルートゥースはiPhone 3GSと同等程度の機能を搭載するとは思います。開発者向けのガイドラインの中で、カメラの有無はiPhoneかiPod touchかを判別して決定するのではなく実際に機能が使えるかで判断するようにとされていたことから、将来iPod touchにもカメラを搭載しようと思っていた事は間違いないと思います。また、某メーカーの第3世代iPod touch用と思われるケース画像の背面の上部中央付近に穴が開いていたなどという情報もあるので、この辺りについてはほぼ確実と思われます。64GB版や無線のn対応は、iPhone系列でも同等機能版の発表が同時にあるならまだ可能性はありますが、それが今の時期に発表可能なら6月の時点でさっさと出していそうな気がします。64GB版は今回は見送りで早くても来年2月頃、無線のn対応は先にiPhone系列で搭載するまでは非搭載になるというのが私の勝手な予想です。

2009年9月9日追記:
アップル社の音楽関係のイベントは日本時間で10日の午前2時から行われるそうです。

データ関係のオブジェクト

2009年07月07日
ホームページのプログラミングのコーナーにもそれなりにコンテンツが増えてきました。現在は自作アプリケーションのデータを入れるのに使いそうなオブジェクト、という部分に焦点を絞って簡単な説明を作ってみています。NSStringについての説明がずいぶんと長くなってしまいましたが、いろいろな機能がある分仕方ないのでしょう。

ブログの編集ウインドウで編集するよりは長文の場合でも全体が見渡しやすく楽ですが、スタイルの設定や改行のチェックをしなくて良いのはブログの方が便利ですね。コードをそのまま貼り付けなどという手抜きも出来ましたし(おいおい…)。あとはNSMutableStringとNSNumberくらいは説明しないと駄目だろうな、などと考えています。

現在ホームページの改装工事中です

2009年07月04日
こちらのブログではなくホームページの側の話ですが、現在リニューアル工事の真っ只中です。こちらのブログの内容をちょっとずつまとめたページもこっそりと追加していたりします。まあ基本事項の時点でかなり寄り道しているので、こちらの記事のメインになっているUITableViewやSQLite3の話に到達するのはいつの日になるやら、という感じです。レイアウトの基本構造を決定していざ現在のページを置き換え始めたところでTiny3Dバージョン2.0のReady for saleになりましたよメールが届き、大慌てでストアの写真を入れ替えたりと、なんだがバタバタした状況になっています。

NASでTimeMachineを使う方法

2009年03月28日
Macを使っていて便利なのはTimeMachine機能が使えることです。これによりついつい勢い余ってゴミ箱から消してしまったファイルを復活させたり、Macの内蔵ハードディスクに異常が起きるといった最悪の事態でも、データが1時間おきに自動保存されているので被害が少なくて済むなど、多くのメリットがあります。以前にTimeMachineについて調べた時にはTimeMachine機能が使われ始めた頃の記事しか読んでいなかったようで、最近はTimeMachineを取り巻く環境にも異変が起きていました。私が今まで知らなかったのは以下の二点です。

まず第一に、本家TimeCupsule以外にも標準機能としてTimeMachine機能に対応しているNASがあるということです。バッファローのNASでは全部ではありませんが、TimeMachine機能に標準で対応しているものがあります。メーカーサイトの製品比較の一覧表にはちゃんと比較項目として「TimeMachine対応」という項目がありました。家電量販店のサイトなどではこのことに触れられていないため、全く知らなかっただけでした。

第二に、TimeMachine非対応のNASでも、TimeMachine対応にできる方法があるということです。「TimeCapsuleじゃないNASを使って、TimeMachineを使ってみる」の記事を参考に自宅のNASで実験をしたところ、バックアップの開始まで行けました。実験ではディスクがHFS+ではフォーマットされていないためか、途中でエラーで止まってしまいました。今NASにあるデータを消すわけにもいかないため、残念ながらバックアップが終了するところまでの実験はできませんでしたが、フォーマットが正しければ問題なく動きそうです。

これらのことから、TimeCupsuleのようなネットワーク上のTimeMachineバックアップ先を低コストで手に入れられる方法もあることが分かりました。設定の手軽さや付加機能など本家のTimeCupsuleにも利点は多くありますが、既に無線アクセスポイントなどTimeCupsuleと重複する機能が既にある場合や、データのさらなる安全性向上のため、ネットワーク上にあるRAID対応ディスクをバックアップ先にしたい場合もあるでしょう。利用者の状況に合わせて選択肢が存在するのは、ユーザー側としてはありがたいことです。

追記
さらに調査を行い「Time MachineでNASにバックアップ」をもとに再度実験を行った結果、バックアップが開始されました。前回の失敗の原因はディスクに実体としてのパーティションが存在していなかったことにあり、NASのファイルフォーマットはLinuxで認識されるものなら何でもいいようです。なお、当然ながらこれらの方法は自己責任で行うハイリスクなものであり、故障しても誰も助けてはくれません。私も記事で触れるため実験だけはしてみたものの、長期間運用するリスクまで負う気にはなれませんでした。そのため実験終了後さっさと消して、バックアップ先を元に戻しています。自分でいろいろいじるより、メーカーの保障があるバッファローのTimeMachine対応NASやTimeCupsuleを買ったほうが確実ですからね。

メールサーバーの個性

2009年03月23日
このところの相次ぐバージョンアップにより、現在リリース中の全ソフトがメール送信機能を持つ事になりました。これまで自分の自宅で契約しているインターネットプロバイダのメールサーバーで実験を繰り返していましたが、ある事情により別のメールサーバー用のアカウントを取得しました。そこで試しに実験をしていくと、今まで試していたメールサーバーと挙動が違う部分があることが判明しました。仕様のドキュメントなどに記載されているのかもしれませんが、今回判明したのは以下の2点でした。

  1. POPサーバーにリスト送信要求をした場合、一回の受信で最後まで受信できるサーバーもあれば、2回目の受信で".+CR+LF"だけを受け取る必要があるサーバーもある。
  2. メール送信時にテキスト送信でCRなしでLFが送信された場合、エラーを返して送信失敗になるサーバーもある。

私のソフトの場合、メール添付のファイルはどちらもテキストファイルのため、ファイルサイズを減らそうとBASE64でのエンコードは行っていません。そして、一度NSMutableStringにテキストを一気に生成し、文字数区切りで送信させていました。運悪くその区切りがCRとLFの間にある場合、CRを伴わないLFが送信されたと判断され、送信が失敗したものと思われます。結局これはNSMutableArrayに一行ごとにテキストを格納する事にしたところ、エラーを回避できるようになりました。サーバーの振る舞いにも個性があるものなのですね。ネットワーク関係で買った某参考書にはこれらのことは載っていませんでしたので、ちょっと驚かされました。

iPhone OS 3.0 速報

2009年03月18日
 現在アメリカで発表中のiPhone OS 3.0ですが、どうやらとんでもないことになっているらしい。何でも100の新機能があるとか。その中にはこれまで何かと批判を受けていたコピー&ペースト機能も入っています。アップルにとってはiPod touchこそが他社のネットブックに該当するものだったのか、と思えるような機能アップが行われているようです。デベロッパー用のβ版は全デベロッパーに対して本日公開となるそうです。iPhone 3Gは無料でアップデート可能でiPod touchは9.95ドルでアップデート可能なのだとか。2.1などのバージョンアップをしている私のようなiPod touchユーザーの場合どのような扱いになるのか気になるところです。まあ、これだけ機能アップするなら有料でもいいか、という気もしますが。

なお、新規に追加になるAPIは1,000個だそうです。全部使うなんて事は無いとは思いますが、新APIを使いこなすまでには覚えなければならないことが多数ありそうな気がします。また英語ドキュメントと格闘することになるのでしょうか。リリース済みの部分でも日本語の情報は少ないんですけどね。そのせいかこんな個人の備忘録に検索経由でアクセスされる方も結構います。

追記
3.0は現在β版なのでデベロッパーには秘密保持義務が発生します。よって正式版リリースまで、3.0にしか含まれないAPIなどは記事にできません。このブログの内容もこれまで通りリリース済みである2.2.1までとなります。上に書いたような内容は現在あちこちのニュースサイトでも載ってるので問題ないと思いますが。

こんな機能があったのか

2009年03月16日
とりあえず断りを入れておきますが、この記事はプログラミングとは直接の関係はありません。

iPhoneやiPod touchではQuickTimeムービーの再生はできません。以前アップルの英語サイトからiPhone SDKがらみのムービーを入手したとき、移動しながらでも見られて便利かと手持ちのiPod touchにムービーを放りこんで見ていた事がありました。その時、アップルの日本語サイトでcocoaのセミナーを収録したビデオを発見した私は、それもiTunesに取り込めば転送できるのかと思っていました。でも、同期を行っても転送はされず、iPodでは再生できない形式だという警告が出るだけでした。

その時は全く気がつかず転送を諦めただけだったのですが、実はビデオのサムネイルの上で右クリックをしたところで(私はもともとWindowsユーザーなので、Windows用のUSBマウスを流用しています)、ポップアップしたメニュー項目の中に「iPod/Phoneバージョンを作成」などという項目があったのです(グリッド表示の時は出ません)。こんな項目あったっけと思いつつ、その項目を試しに選んでみると、しばらくしてビデオの項目が分身したかのように2個になりました。そして同期を行うと、新しく作られた方のビデオファイルが転送されました。もとからあるほうは以前と同じく警告が出て転送できないままでした。そして転送されたビデオはきちんと再生できました。

これと似たような事が音楽ファイルでもあります。それはmidiファイルの場合です。こちらも「AAC バージョンを作成」という項目が選べるので、それを選択するとAACフォーマットのファイルが作られます。これも先ほどの場合と同様に転送し再生する事ができます。もしかしたらソフトの説明にはちゃんとこの機能について書いてあるのかもしれませんが、いちいち説明書を読まなくても基本的な事は出来てしまいます。そのため、私と同じように最近使い始めたばかりの人の中には、これらの機能の存在に気がついていない人が結構多いのではないでしょうか。なおAACに変換した方は普通にmidiファイルをQuickTime Playerで再生した時より音質は良くないようです。そもそもPC用CPUの機能をフルに利用可能な状態で再生させた音質と、携帯機で再生できるように加工したものの音質とを比較するのが間違いなのですけどね。手持ちのmidi曲が大した手間もかけずに持ち歩いて聞けるようになることを考えれば、有用な機能である事は間違いないでしょう。