Archive for the 'iPhone' Category

Scoreboard WebApp

7月 13 2010 Published by hkitago under JavaScript,iOS,iPhone

I apologize for the inconvenience about Scoreboard iPhone App, which is not yet ready for iOS4. And I have straggled to upgrade for development, meanwhile you can go through the following just 2 steps to set up Scoreboard WebApp on your device of iOS4 for free.

  1. Click Scoreboard on Safari of iOS4.
  2. And then, tap + button on the bottom center of the mobile Safari toolbar to add icon on your home screen.

That’s it. Of course, you can use it with fast-app-switcher.

And full screen viewing like a native application.

Stay tuned for update and enjoy.

コメントは受け付けていません。

iOS用お絵描きソフト

7月 02 2010 Published by hkitago under HTML,JavaScript,Safari,iOS,iPhone

iPad の Safari で動作するマルチタッチ対応お絵描きソフトを作ってみた” からコードを拝借し、フルスクリーンで起動するように次のタグを追加してローカル上にある Mac OS のサイトディレクトリに配置した。

"apple-touch-icon"を指定しない場合のホームアイコンはページのスクリーンショットになるので、何か描いた後に “ホーム画面に追加” ボタンを実行すると良い。

デモ (リンクは予告無く削除する事があります)

フルスクリーン表示ではアドレスバーの表示が無いので、白紙に戻す時に使う “再読み込み” は “ホーム>アイコン” とタップ数が多くなってしまう事に注意。

P.S. 子供に遊ばせてみる事にする。

更新: "apple-touch-icon"を指定したウェブアプリは iOS4 のマルチタスクに対応する様だ。

更新2(7/22):子供とお絵描きをして遊んだ。彼は飽きたらホームボタンを押すので同時にスリープボタンを押してキャプチャを撮る事に成功。

コメントは受け付けていません。

iCalとiPhoneでW杯の予定を管理

5月 21 2010 Published by hkitago under iCal,iPhone,スポーツ

あと21日と迫ったサッカーのW杯南アフリカ大会の予定が Google カレンダー上で公開されているらしいので過去の投稿に習って iCal と iPhone で閲覧できるようにした。

  1. Google カレンダーに登録する
    World Cup 2010 Google Calendar » The Artesea” に掲載されている Google カレンダー右下のボタンをクリックしてマイカレンダーに “World Cup 2010″ を登録し、”マイカレンダー>カレンダー設定” を選ぶ。
  2. カレンダーのリンクをコピーする
    “カレンダーのアドレス>iCal” ボタン上で右クリック、 “リンクをコピー” する。


    注意:iPhone から iCal ボタンを押してみたところうまくいかなかったので、デスクトップ環境と同様にコピーする必要がある。
  3. 照会する
    iCal を起動して “カレンダー>照会” を選んだ後に URL を貼付ける。左側に照会カレンダーから編集も可能。決勝トーナメントの事を考えると自動更新を毎日に変更した方が良いと思う。iPhone からはメールで URL を自分宛に送るだけ。詳しくは “iPhoneに祝日を自動登録” を参照のこと。

iPhone の Spotlight 検索が使えるのも良い。

(・∀・)イイ!

P.S. 実は iPhone対応「2010World Cup Schedule」(無料)を使ってみたのだけど、あまりに重たくて…

更新(5/24):iPhone から iCal のリンクボタンを押してみた結果を2に追加。

更新(6/25):大会も半ばにして照会していたICSファイルが接続できなくなったので “こちら” の webcal 形式のものに変更した。

No responses yet

SQLiteデータベースにカラムを追加する

3月 16 2010 Published by hkitago under JavaScript,iPhone,コーディング

以前 “SQLiteデータベースのバージョンを変更する“という記事を書いたが、結局実機でもうまく動作しなかった(Safari ブラウザやシミュレータと同じ結果だった)ので、データベースのバージョンによる管理を諦めて単純にカラムを追加することにした。

try {
 if (window.openDatabase) {
  db = openDatabase("BackgammonPositionsDB", "1.0", "Backgammon Positions DB", 200000); /* 現行バージョンのまま */
  if (!db) {
   alert("Failed to open the database on disk.");
   /* 初期化 */
  } else {
   db.transaction(function (tx) { /* 新しいカラムがなければ追加する */
    tx.executeSql("SELECT crawford, star FROM BGPositions;", [],
     function(tx, result) { },
     function(tx, error) {
      tx.executeSql("ALTER TABLE BGPositions ADD COLUMN crawford INTEGER default 0; VACUUM;");
      tx.executeSql("ALTER TABLE BGPositions ADD COLUMN star INTEGER default 0; VACUUM;");
    });
   });
   /* 全行読み込み */
   return;
  }
 } else {
 alert("Couldn't open or support the database. Please try to contact with author.");
  /* 初期化 */
 }
} catch(e) {
 /* former changeVerion.js (前回はここにバージョンを変える関数をいれていた) */
}

Webkit のバグが解消されない限りはこの方法が良いと思う。

さてこのコードを埋めたアップデートファイルが、驚愕のわずか12時間程度で承認され公開(Backgammon Position Cards for iPhone, iPod touch, and iPad on the …)されている。また以前の投稿 “iPhone アプリのアップデートで課金する” で話していた様に価格も元の Tier5 に戻した。

更新(2010年5月11日): 一年間十分食べさせて頂いたのと世界的な不況ということを考慮してTier4に値下げした。:-)

No responses yet

SQLiteデータベースのバージョンを変更する

2月 07 2010 Published by hkitago under JavaScript,Safari,iPhone,コーディング

iPhone アプリで利用している SQLite のスキーマを変更する必要に迫られ開発中に予期せぬ出来事があった。具体的にはテーブルに一列追加する changeVersion という関数を利用する際に必ずバージョンがマッチしないというエラーを出力するというものだ。

success callback である第五引数内でもoj.versionがoldVersionを返すのが気になります、、、。リロードするとようやくnewVersionに変わるんですけれど、これで良いのかなぁ。

引用元: JavaScript++かも日記: 【iPhone】iPhone用 JavaScriptデータベースプログラミング入門 (6).

Safari の JavaScript のデバッガでこの問題を確認し回避策を模索していたところ、Apple の文書に次のような回答を見つけた。

Unfortunately, the only way for your code to see the new version number is by closing the browser window. If you get an error code 2 (see “Error Codes”) and the database version you passed in for the old version matches the version in db.version, you should either assume that the version change already happened or display an alert instructing the user to close and reopen the browser window.

引用元: Safari Dev Center: Safari Client-Side Storage and Offline Applications Programming Guide: Using the JavaScript Database.

結局のところ挙動は問題ないのだけど、ブラウザを閉じるか再読み込みしないと利用者に反映されないということで、次のようなコードにして iPhone の UIWebView 用に移植する前段階として一旦作業を終えることにした。

try {
  if (window.openDatabase) {
  // db = openDatabase("BackgammonPositionsDB", "1.0", "Backgammon Positions DB", 200000); /* 現行バージョンの記述 */
  db = openDatabase("BackgammonPositionsDB", "2.0", "Backgammon Positions DB", 200000);2.0バージョンは開けずエラーをキャッチするので通常の処理は省略)
} catch(e) {
  if (e.code == DOMException.INVALID_STATE_ERR) { // Version number mismatch.
    var prevdb = openDatabase("BackgammonPositionsDB", "1.0", "Backgammon Positions DB", 200000);
    prevdb.changeVersion("1.0","2.0", 
      function(tx){
        tx.executeSql('ALTER TABLE BGPositions ADD COLUMN crawford INTEGER default 0;VACUUM;');}, 
        function(error){ /* SQLエラー処理 */ }, 
        function(){ /* 成功後初期化処理 */ });
    return;
  }
  alert("Unknown error " + e + ".");
}

またこの検証作業に関して SQLite のバージョンを戻す(1.0 に下げる)必要があり、前述した Apple の文書にもある ~/Library/Safari/Databases/ にあるファイルを削除して Safari を再起動するという若干面倒な手続きを取るしか方法がないので、Rails のような管理手法を Automator や AppleScript で作ることが望ましい気がした。

実際の iPhone 上の UIWevView ではどのような挙動になるのか、悩ましいことになるようであれば追って報告しようと思う。

No responses yet

何故日本でiPhoneの販売数が伸びないのか

11月 23 2009 Published by hkitago under iPhone,ビジネス

先日参加した「スマートフォン市場における iPhone & Android の今後のビジネス展開」というセミナーでは、国内の市場の方向性を決定する存在でもある、ケータイのソフトウェアベンダーがどのような価値観を持っているのかについて伺い知る事ができて参考になった。特に質疑応答の中で「何故日本でiPhoneの販売数が伸びないのか」という回答が、発表者の個人的主観であると前提はあるものの、以前から繰り返されていることではあるが、直接聞く話として確認ができたことは有意義だったと思う。その部分を iPhone のボイスメモから切り出したので興味がある方は聞いて頂きたい。(録音と流用の禁止は通知されていなかったのだが、もし問題がある場合はご連絡願いたい。)

大筋では Phil Shiller 来日報告に関する 2ch まとめブログで分かるような内容ではあるが、細かい所で2つ思うことがある。それは、凡そ一年間世界中からフィードバックを頂いた経験から把握はしていたが、iPhone 利用者はウィンドウズ OS の利用者が多いという調査結果があるということと、関連した戦略として Apple は iPhone の販売を Mac OS へのスイッチキャンペーンの一環として利用しているのだろうということだ。事実その効果は、最近の決算報告を見るとうまくいっていることが分かる。

C2Cのウェブを絡めるサービス/アプリケーションの開発者としては国内ケータイや iPhone の善し悪し、あるいは非接触通信などの技術はどこの国が開発したかというような問題を捉えるのは二の次で、人の問題を解決したり目的までの手間を軽減するために、利便性や柔軟性の高い開発と実行環境が揃っていればこちらで対応するので何でも良く、もっとハッキリ言えば国内の iPhone 販売数自体興味が薄い、というのが本音だ。ただ先にも述べた様に今回聞いた内容は、携帯端末の国内市場がどちらの方向にどのくらいの速度で転がって行くのかを予想する上で役に立ったと思う。

No responses yet

XcodeでJavaScriptを外部ファイルとして扱う

10月 02 2009 Published by hkitago under JavaScript,Xcode,iPhone

UIWebView を使い iPhone のウェブアプリケーションをネイティブアプリケーションとして構築していると、Canvas 描画やタグ出力、Sqlite の扱い等、膨大なコード量になる JavaScript は次の様にしておくとプロジェクトの管理が楽になるのはウェブ開発者であれば誰もが思うところだが、そのままビルドすると Xcode は JavaScript をコンパイルしてしまい外部ファイルとして認識しないという問題がある。

<script src="xxx.js" type="text/javascript"><!--mce:0--></script>

そこで Developer Forums を覗いてみると、次のような回避策が紹介されていたので試してみた。

So you need to do two things – select the .js file in your project, and turn off the checkbox that indicates that it is compiled (the “bullseye” column).  If you don’t do this, you’ll get a warning in your build log about being unable to compile the file (which should be your first warning – always try to figure out and and correct any and all warning that appear in your build).

Then drag it and drop it in the target’s “Copy Bundle Resources”.

引用元: Developer Forums Beta: UIWebView and JavaScript ….

  1. 外部ファイルとして HTML に読み込みたい JS ファイルを選択し、表示メニューから詳細コマンドを選択する。(この詳細表示とエディタの間にあるハンドルをマウスで下方へドラッグしても良い。)
  2. ターゲットのチェックボックスを外す。ターゲットのチェックボックスを外す
  3. グループとファイルのターゲットからアプリケーション名ツリーの中にあるバンドルリソースをコピーに対し対象となる JS ファイルをドロップする。JS ファイルをドロップする

これで Safari ブラウザ等のデバッガと連携する JavaScript プログラムの管理や分業がより容易なものになり、加えて jQuery 等のライブラリも自由に扱える事で開発の効率が上がるのは間違いない(はず)。

更新:Xcode 3.2で検証した結果、チェックボックスのチェックが自動的に復活しているにも関わらず動作しているので手順1と2は不要かもしれない結論に至った。単にバンドルリソースとすれば良いらしい。

No responses yet

移植を視野に入れたウェブアプリ開発

8月 06 2009 Published by hkitago under JavaScript,iPhone,ウェブ,ビジネス

「移植性を無視して最新のハード向けにばりばりのネーティブコードを書きたかったらiPhone向けのアプリをObjective Cで作り、さまざまなデバイスへの移植性が重要ならHTML5+Javascriptでインタラクティブなアプリを作ってiPhone上のSafariでテストしておく」というのが現時点でのスマートフォン向けの開発投資の仕方としては、最も賢い選択肢だと考えている私である。

引用元: Life is beautiful: GoogleのAndroid向けのアプリビジネスはなぜ魅力的ではないか?.

選択肢にした経験から気をつける点が2つ思い当たる。1つ目は iPhone で Canvas が使い物にならないと感じたことだ。具体的には読み込みに時間を必要とし利用者の精神的負荷となる可能性がある。ポジションカードアプリで描いているボードの絵柄は当初 Safari 3 上の Canvas で検証し問題が無いことを確認していたが、実テストに於いて第二世代 iPod touch で且つ OS が v2 だったことを考慮しても、起動に7秒前後を要した。ゲームのようにローディングで対応するということも思いついたが、ユーティリティの部類では難しいと判断した。

2つ目はスコアボードアプリの開発に於いて実践し学んだことで、こちらは manifest ファイルを記述したウェブアプリ版を先行して公開していたのだが、それら2つの機能差に明確な優位性が無かったことから販売台数は伸び悩んでいる。結果として無計画になってしまった理由は Apple の開発者向け戦略が勇み足だったというか、iPhone SDK 公開の流れでお分かり頂けると思う。

さらに、この方法を後発のポジションカードアプリ開発に適用しなかったのはこのような外的要因に加え、上述したような場合に、水平モードに固定できず Safari のツールバーが邪魔をして描画領域を確定できなかったことが挙げられる。これらの問題がクリアできれば車輪を再開発することなく移植はもちろん、ウェブアプリとして無料版に仕立てることも可能だと思う。

実際に手を動かす視点では ActionScript を使えれば OpenGL も楽しいだろうと思う反面、ビジネス的にはクラウドネットワークについて考えてしまうので SQLite を直接扱える JavaScript を選択し iPhone 市場に参入した次第だが、そんな技術話よりも米国の顧客からはブラックベリーや Facebook といった別プラットフォームへの移植の需要があるのは確かだ。しかし開発環境が無いからと断っているのは、競合が皆無でロングテール(素麺代稼ぎ)を楽しんでいるという反省すべき点がある。;-)

最後にウェブ開発者という視点で見ると、重い Parallels を使った貧そな UI を持つ IE の動作確認から逃れ、ミドルウェアを使わずにデータを入出力できる新しい技術を試す興奮や楽しさを得られたと思う。日本の自称ウェブ業界スーツ民達に技術の理解が浸透し、仕事として回り出すのはいつのことになるのだろうと思ったが、広報の方法が変化するように、案件が降りてくるのを待つよりも昨年の不況が転換期のような気もするので、日々精進あるのみと再度自省する。

P.S. Interview with Neil Mix of Pandora – iPhone Audio Streaming, Memory Management, and More も JavaScript を iPhone に利用する面白い例だと思うので参考迄。

No responses yet

iPhone を DFU モードで起動する

8月 01 2009 Published by hkitago under Xcode,iPhone

What worked best for me is hold down power and home for about 10 seconds and then release the power button and keep holding home until the device is recognized.

引用元: How I downgraded 3.0 to 2.2.1 « cocos2d for iPhone.

iPhone SDK 3.1 beta を入れた時に iPod touch のアップデートに途中で失敗し Xcode や iTunes で認識しなくなったことがあるが、引用した手順を使って DFU モードで起動したところ、初期化状態(iTunes に接続する絵が表示)の iPod touch を認識し復元することで再起する事ができた。

しかもかなり愚かだったことが、iTunes のバックアッププロセスを無効にしていたことだった。加えてアップデートに失敗した原因を冷静に考えれば 3.1 beta は Snow Leopard や iPhone 3GS 以降のハードへの最適化を目指しているだろうから、手を出したのは感情に流されたとしか言いようがない。

No responses yet

iPhone アプリのアップデートで課金する

7月 29 2009 Published by hkitago under iPhone,ビジネス

先日 Facebook である開発者と話していた中で「その発想はなかった!」と思ったのが有料 iPhone アプリのアップデート作業に対する課金方法について、バージョンの段階毎に、定期的なマイナーバージョンアップや偶発的な時候や行事の要素を理由に価格を下げて行き、大きな新機能が追加になるメジャーバージョンを公開する時に、元の設定価格に戻すというものだ。

これは機能や要素を段階的に追加するに書いたように、製品や計画についてその物語や将来像を構想することと等しいと思ったのと同時に、自らの想像力不足を(あるいは論理思考との均衡が崩れているのかもと)反省した。また、これもやり方の1つとして参考し他に何か面白い方法も考えてみる。

No responses yet

Next »