忍者ブログ

[PR]

2024年11月21日
×

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

さらば第1世代iPod touch(by iPhone OS4.0)

2010年04月10日
iPhone SDK 3.2が正式版になることでベータとの2環境体制から脱出できたと思ったら、あっという間に4.0ベータとの2環境体制に戻ってしまいました。今年はベータ並存期間が長いです。

iPhone OS4の情報がいろいろなニュース系サイトで公開されていますが、その中には第1世代のiPhoneとiPod touchのユーザーには悲しいお知らせがあります。それはiPhone OS4へのアップグレードがないということです。これらの機種では現在のiPhone OS3.1.xで打ち止めとなるようです。もっとも第1世代のiPhone(iPhone 2G)を持っている人は日本では稀でしょうから、実質的に第1世代iPod touchの切捨てといえます。アップグレードしたところでマルチタスクなどは使えないので、メリットが無いと判断されたのかもしれません。第2世代のiPhone(iPhone 3G)やiPod touchはアップグレード自体は可能ですが、マルチタスクは非対応です。現行のiPod touchについては少々複雑で、8GBタイプの中身は実質第2世代ですから、アップグレードしてもマルチタスクは非対応になり、上位の2機種は対応します。ざっくり系の言い方をすれば、

音声コントロールに対応している機種=マルチタスク対応

ということで問題なさそうです。
私にとってはiPhone SDK3.2がプレリリースではなくなり、SDK3.2がらみの記事が書けるのがちょっとした変化でしょうか。余談になりますが、先日のiPhone SDK 3.2の正式版への昇格により、これからiPhone/iPod touch/iPadソフトウェアを開発する場合、これまでのIntel Macであるという条件に加えて、

動作OSがMac OS X 10.6(Snow Leopard)

という条件が追加となりました。ホームページの開発に必要なものについての記述は変更が必要ですね。
PR

iPhoneアプリケーション用のアイコンファイルをHTML5で作ってみた

2010年02月04日
iPhoneアプリ開発中に早い段階でアイコンを作っておくと、ホーム画面が白いのっぺらぼうで埋め尽くされる…という心配がなくなります。アイコンを作る時に、同時にiTunes Connectでアップロードする時に必要なアートワークまで作れたら便利かと思い、アイコン製作用の簡易ツールをHTML5(+javascript)で作ってみました。ブラウザでファイルを表示すると、512×512のjpeg画像と57×57のpng画像が表示されます。以下はブラウザに表示させたときのスクリーンショットです。

sample.jpg







ブラウザ上から画像を保存することでファイルが得られます。得られた画像は以下のようになります。

bigicon.jpgsmallicon.png









ソースはこのような感じになります。

 

<!doctype html>

<html>

    <head>

        <meta name="Author" content="Konton (http://kontonsoft.blog.shinobi.jp/)">

        <meta http-equiv="Content-Language" content="ja">

        <meta http-equiv="Content-Script-Type" content="text/javascript">

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>HTML5CanvasiPhoneアプリのアイコン作製</title>

        <script type="text/javascript">

            function draw() {

                var canvas = document.getElementById('canvas_for_jpeg');

                var context = canvas.getContext('2d');

                drawCanvas(1, context);

                var img_jpg_src = canvas.toDataURL("image/jpeg");

                document.getElementById("icon_jpeg").src = img_jpg_src;

                var canvas2 = document.getElementById('canvas_for_png');

                var context2 = canvas2.getContext('2d');

                drawCanvas(2, context2);

                var img_png_src = canvas2.toDataURL();

                document.getElementById("icon_png").src = img_png_src;

            }

            function drawCanvas(mode, ctx) {

                // 以下でキャンバスに描画

                if (mode == 2) {

                    ctx.scale(57 / 512, 57 / 512); // 小さいアイコンの描画では縮小を行います

                }

                // Firefox, Operajpegの透明色部分が黒くなることなどへの対策

                ctx.fillStyle = "white";

                ctx.fillRect(0, 0, 512, 512); // canvas全体を白で塗りつぶします

                

                // 実際の描画開始

                ctx.lineWidth = 20; // 枠線の太さ設定を20ピクセルにします

                // 枠線の色設定を赤色にします

                ctx.strokeStyle = "red";

                // (64,64)を始点として幅、高さとも256ピクセルの矩形を描画

                ctx.strokeRect(64, 64, 256, 256);

                // 枠線の色設定を緑色にします

                ctx.strokeStyle = "green";

                // (128,128)を始点として幅、高さとも256ピクセルの矩形を描画

                ctx.strokeRect(128, 128, 256, 256);

                // 枠線の色設定を青色にします

                ctx.strokeStyle = "blue";

                // (196,196)を始点として幅、高さとも256ピクセルの矩形を描画

                ctx.strokeRect(196, 196, 256, 256);

                // ここまでで描画終了

                

            }

        </script>

        <style type="text/css">

            canvas { border: 1px solid black; }

        </style>

    </head>

    <body onload="draw();">

        <h1>HTML5CanvasiPhoneアプリのアイコン作製</h1>

        <h2>大きいアイコン(枠無しがjpeg画像)</h2>

    <img id="icon_jpeg" src="" alt="アイコン用画像()" width="512" height="512">

    <canvas id="canvas_for_jpeg" width="512" height="512"></canvas>

        <h2>小さいアイコン(枠無しがpng画像)</h2>

    <img id="icon_png" src="" alt="アイコン用画像()" width="57" height="57">

    <canvas id="canvas_for_png" width="57" height="57"></canvas>

    </body>

</html>

 


ソース内の「// 実際の描画開始」の行から「// ここまでで描画終了」の行の間にあるキャンバスへの描画コードをテキストエディタで入れ替えるだけで、大小2個の画像が得られるのでそこそこ有用なのではないでしょうか。描画用のスプリクトは大きいほうの512×512のサイズがあるものとして作ります。小さいほうにはそれが自動的に縮小されて表示されます。Internet Explorer以外の代表的なブラウザの最新版(Safari4.0.4、Firefox3.6、Google Chrome4.0、Opera10.10)で正常に動作することを確認しています。

2010.02.05追記:
Internet ExplorerではExplorerCanvasに含まれるexcanvas.jsを組み込めばcanvasをInternet Explorer 8などで表示することができます。(現在の最新版はRelease 3。ライセンスはApache License 2.0なので、原文のまま使用するなら商用、非商用問わず利用可能です。)ただし、円形グラデーションなど一部の機能はサポートされていません。インターネット上のサイトにhtml形式で公開する場合はこのようなものを組み込んで対応すべきなのでしょうけれど、ローカルでは別のブラウザにドラッグ&ドロップするだけなので不要でしょう。ブラウザはInternet Explorer以外は死んでも使いたくないという人がiPhoneアプリケーションの開発をするとは思えませんからね。

開発者の視点で見るiPad

2010年01月31日
とりあえずiPadに関する公式情報はほぼ出尽くしたようなので、一開発者としての視点でiPadについて私見を述べてみます。

なぜ今回もFlash非対応なのか

まず、Flashへの非対応について。これは対応させる気があれば既にiPhone 3GSが出るまでには対応させていただろうと思われるので、「Flashは未来のWebには不要なもの。」というアップル社の思想が背景にあるように思えます。ネット上の噂話に「Flashの存在はApp Storeを脅かす存在だから非対応にしているのだ。」などといったものがありますが、これは間違いでしょう。もしそれがFlash非対応の理由ならHTML5を使用したWebアプリケーション開発や配布もFlash同様にApp Storeの外で行われ、その存在を脅かすものであるはず。そのためHTML5もFlash同様に非対応を貫かなければおかしいはずです。ですがHTML5への対応についてはFlashとは正反対であり積極的に行われています。ここから考えられるのは、「HTML5は今後必要になるものなので積極的に対応してゆく。」という思想です。Flashが飯の種という人たちにとっては残念な話なのでしょうけれど、外野がいくら騒いだところでこの方針が変わることは無いと思われます。

なぜMac OS XではなくiPhone OSなのか

iPadの動作OSがMac OS XではなくiPhone OSであるのは、「指で画面をタッチして使う機器にはiPhone OSのほうがMac OS Xよりも適している。」という思想があるのではないかと思われます。実際にやったことがあるわけではありませんが、Mac OS X動作機器を「マウスのようなポインティングデバイスなし、タッチパネルを指のみ」で操作するのは至難の業でしょう。話はそれますがアメリカではModBookという、「Apple純正MacBookホワイトなどの画面を液晶タブレットに置き換える改造したもの」を売っている会社があります。ちなみに価格は一番安いものでMacBookホワイト分も込みで2248ドルからだとか(本体持ち込みの改造のみは1299ドルから)。このModBookは指での操作も一応できるようですが、細かい操作はスタイラスを用いなければ厳しいものと思われます。Mac OS X向けの開発用には用意されているツリー表示用の部品がiPhone用としては存在していないのも、指では操作中に画面が隠れてしまうため、マウスポインタ操作のような数ドット単位の細かいコントロール が容易ではないからでしょう。

アプリケーション開発者にとっての魅力は何か

さて、何も特別な道具なし、指のみで直感的に操作可能というのが売りのiPhone OSですが、それゆえの開発上の問題点もあります。iPhone OSの標準ユーザーインターフェイス(以下UIと略)用の部品はどれもそこそこのサイズがあります。そのためUI部品を多数必要とするようなアプリケーションを作ろうとすると、画面がそれらで埋め尽くされ、データ表示部分が狭くなってしまうのです。狭い部分に無理をして多くのデータを詰め込もうとするれば、文字が小さく読みにくくなってしまいます。逆にデータ量を減らせば一覧性が低下し、全体を把握するために何個かの画面を右へ左へと行ったり来たりしなければならなくなります。そこを何とかするのが開発者の腕の見せ所だろうという厳しい声も聞こえて来そうではありますが(汗)、多くの開発者にとって頭の痛い問題だったのは事実でしょう。

そんなわけで、今回発表されたiPadをiPhoneアプリケーション開発者の視点で見てみると、一番の魅力は画面の解像度とサイズです。まずピクセル単位で考えると、画面はこれまでの5.12倍の面積があります。そしてppi(pixel per inch)の比較でもiPhone/iPod touchが163ppi、iPadが132ppiですから、たとえこれまでと全く同じピクセル数の文字を表示させたとしても、1.2倍以上の大きさとなり読みやすくなることがわかります。UI部品配置の自由度は格段に上がり、一画面で表示できるデータ量も一気に増える。開発者にとってこれは大いに歓迎すべき部分でしょう。

当日追記:
Flashの非対応については別の側面もあるかもしれません。アップル社にとってiPhone OSは「コンピューターにあまり詳しくない人でもセキュリティ面で余計な心配をせずに使えるインターネット端末」を提供するためのものとも考えられます。ユーザー側によるマルチタスク不可も、背後で動作するコンピューターウィルスやスパイウェアの排除という側面もありそうです。この点から考えると、Flash対応→iPhoneのセキュリティ管理をアップル社で一元管理できない→セキュリティ面に他社任せで不安な部分が出来てしまうという図式が成り立ちます。アップル社としては「これまで信頼を築き上げてきたiPhone OSのセキュリティ面での安全性を他社任せにして失うようなことがあってはならない」と考えているのかもしれません。HTML5についてはアップル社の自己責任でSafariに実装するものなので、たとえ不備が見つかっても自身で対処できます。これはFlashとは対照的な部分です。HTML5の積極的な採用と、Flashの非対応にはこのような背景もあるのではないでしょうか。

OSについては、Mac OS Xを入れたらストレージ(フラッシュメモリ)の大半がそれで埋まってしまうのではという問題や(フル機能のMac OS Xや周辺ソフトをインストールするなら16GBでは足りないのでは?)、OSのメジャーバージョンアップファイルが肥大化して「オンライン配布でボタン一 つでアップデート」というiPhoneのようなシンプルさが失われてしまうという問題があります。ストレージ容量はハードディスクの搭載や搭載フラッシュメモ リーの大容量化でなんとかできたとしても、「素直にMacBookでも買ったら?」という価格帯になってしまいそうです。また、「バージョンアップはお手持ちの母艦とケーブルで繋いだ後にディスクを入れて、説明書でも見ながら頑張ってね」というのは大衆向けの手軽な機器を目指していると思われるiPadにあってはならないことでしょう。 結局のところ、コストやターゲットを考えると、Mac OS Xの搭載はあり得ないということになるのではないでしょうか。

iPadについて

2010年01月28日
 ついにiPadが発表となりました。iPhone OS 3.2で動作します。3G対応版はざっくりと表現するなら大きな画面でカメラがついていない電話のかけられないiPhone 3GS、WiFiのみ版は大きな画面のiPod touchという感じでしょうか。細かく見れば無線が802.11a/b/g/nに対応するなど、これまでと異なる部分もあります。iBooksという電子ブックアプリもありますし。iPadでは3G対応版とWiFiのみ版で3G通信の有無以外の差は無いようです。

CPUの処理能力はおそらくiPhone 3GSの2倍以上ありそうですが、ストレージではないアプリ実行用のメモリー容量が増えているのかは不明な状態です。これまでのiPhone用アプリは全て動くようです。ただカメラアプリについてはよくわかりません。ドッグからUSB用のアダプタを経由してWebカメラ等を繋げば使えるということなのか、カメラ系アプリはiPod touch同様使えないのか、どちらなのでしょうか。このあたりは実機が出ないとわからなそうです。

これまでのアプリはこれまで同様の解像度で動かす事も、拡大表示で動かす事もできます。今後発表されるであろう正式なiPhone SDK 3.2を使用すれば、iPadの解像度にも対応したアプリの配布が可能になるようです。画面が9.7インチのXGAに広がる事で、ビューアー系の用途ではより見やすく便利になりそうです。同時発表のiWorkを使って個人相手のプレゼンに使うという用途も考えられそうですね。

当日追記:
一応GPSは3G対応版のみということになるようです。iPod touchでも無線LANのアクセスポイントとつながっていればほぼ同様の位置情報を割り出せていたので、大きな差にはならなそうです。

2010年1月29日追記:
現状ではiBooks関連機能は日本で利用できない可能性が大きいようです。日本のアップル社ホームページにもiPadの紹介ページが出来ましたが、それらに関連した部分は全部カットされています。
A4と呼ばれているチップのCPU部分はARM系のコアだそうです。iPhone OSが動作する(これまでのiPhone OS動作機器は全部ARM系コア)ことから考えると当然といえば当然なのですが。

ベータの季節?

2010年01月27日
日本時間の28日午前3時から米アップル社のイベントが開催されます。世の関心はおそらく出るだろうと噂されているタブレット端末に向いているようです。周辺からの情報漏れが起きている現状、出ないという可能性のほうが低くなっているように感じます。動作OSがMac OS X系ではなくiPhone OS系ということになる可能性が高いという噂もあります。iPhone OS系だとストレージはフラッシュメモリになりそうですが、どうなるのか気になるところです。

もしタブレットがMac OS X系で、iPhone OSとは無縁なものであったとしても、毎年恒例のiPhone SDKの新ベータ版は発表になると思われます。そちらで気になるのは、

3.2βとなるのか年が変わったから4.0βとなるのか
4.0βとするならコピーペースト並みの新機能追加はあるのか
サポート範囲は初代iPhoneや第1世代iPod touchを含むのか

といったところですね。新規ハードを準備しているとしても、iPhone 3GS同様市場に出る直前まで発表はしないでしょう。今回はOSのみの発表でSDKのβ版が発表後にダウンロード開始になるというのが妥当なところでしょう。

Core Data独習用記事 その2

2009年11月10日
以前ホームページに書いたCore Data独習用記事の続きを書きました。今回は前回のコードに手を加えて、複数のエンティティで関連を行わせる部分が理解できるように仕様を変更させています。ここまでやれるようになってくれば、自分で直接SQLite3を使う必要はほぼなくなるでしょう。多少手抜きしていますが、コメント付きのサンプルコードも掲載しています。

ちょっとだけ本格的なiPhone Core Dataアプリケーションへの拡張(混沌のiPhoneアプリケーション工房、プログラミングセクション内)

現況報告

2009年11月09日
現在のソフト関係の状況をまとめると以下のような感じです。

Abyss Quest (Lite含む)
・1.1へのアップデート提出済み
・要望のあったアイテムソート機能の追加
・ボタンの一部に効果音を追加
・ヘルプ書き換えの必要のある機能変更は次回アップデート(1.2?)に持ち越し

Kigen (Lite含む)
・2.0へのアップデートを計画中
・データ形式をCore Dataに変更(OS3.0より前では使用できなくなります)
・アイテムの1個でも期限切れがある場合には、カテゴリやアイテム名を赤字になるようにする機能の追加を予定。
・変更履歴の保存と表示機能を追加できないかなどを検討中

Tiny3D
・3.0へのアップデートを計画中
・Kigen同様、データ形式のCore Data化を準備中(OS3.0より前では使用できなくなります)
・表示ルーチンの改良でちょっとだけ3D表示が軽くなってます
・現在変更部分のバグフィックスを行ってます

なんと言うか、やること(&やりたいこと)だらけです

Core Data独習の参考に

2009年11月05日
最近Core Dataについてそれなりに理解できてきたので、その初歩の初歩について記事にしました。ちょっと文量が多いので、ブログではなくホームページへ直接掲載しています。もしこれからCore Dataについて勉強しようという方は参考にしてみてください。なお、今までに学んだTableViewがらみの操作をそのまま利用したい場合には、NSFetchedResultsControllerを使うとちょっと使い勝手が悪いです。その場合にはNSManagedObjectContextにあるメソッドを使って検索結果のNSArrayを得て、それをデータソースとして使った方が扱いやすいです。その方法についても近日中にまとめてホームページの側で記事にすることになるでしょう。ちなみに以下にホームページに追加したCore Dataの記事へのリンクを載せておきます。

初めてのCore Data on iPhone(混沌のiPhoneアプリケーション工房、プログラミングセクション内)