2013年11月7日木曜日

AppleさんのTechTalksに来ております

1日目はUtility、2日目のGameということですが、あえてGame回に参加しています。
本国から技術陣がたくさん参加してきてて、ラボでは技術的な相談に乗ってくれています。
まだ終わっていないのですが(Appleさん提供のWifiから書いています)
オーバービュー的な深さではありますが、重要な点を選んで網羅的に提供していただいており、なかなかに有用なセッションではないでしょうか。

また終わったらアップデートします。


2011年6月23日木曜日

WindowsでのAndroid開発環境構築メモ

WindowsでAndroid環境構築をしてみたのでそのメモです。
こういうのは時期によって手順やノウハウが変わってくるので、私もよく最新の体験談を参考にするのですが、自分でも提供してみようと思います。さらっと。

開発環境は、Eclipse + ADT Plugin + Android SDK + JDK で出来ている。
この4つ入れて、EclipseでADT Pluginの設定すれば終わり。

※Android SDK Managerからのダウンロードはものすごく遅いことがあるので余裕を見ておきましょう(Proxy環境だと一晩かかりました)

1.JDKをインストール
     Javaの開発環境
     インストーラつきでらくらく

2.Android SDKをインストール
     Androidの開発環境、JDKが必要。ここだけコメント多いのでわかると思いますがだめだめです。
     インストール時、JDKが認識されないというくだらないバグあり(rev10の時から)。なぜ放置しているのか。
     JDKが無いと言われたら、一度Backで戻って再度進むと回避できます。
     インストール後、Start SDK Managerを起動するかと聞かれるので起動すると、パッケージが更新される。
いきなり更新を始めるので、接続エラー出る場合(プロキシ環境の人など)はいったん中断し、Settingからプロキシ設定と、Force https://~をチェックする。
windows版なんだからプロキシ設定くらいie設定から読み取るべきではないかと思う。
更新は結構時間がかかる。というかダウンロードありえないくらい遅い。

          これの中身を検索してURLを抽出し、http://dl-ssl.google.com/android/repository/〜から直接ダウンロードしたzipファイルを、AndroidSDKインストールフォルダのtempに置く。そしてインストールするとダウンロード済みとして扱ってくれる。

3.Ecllipseをインストール
     統合開発環境(IDE)。バージョンいろいろあるがとりあえず新しめの 日本語版Helios を使用してみた。
     起動するとワークスペースを置く場所を聞いてくる。

4.ADT Pluginをインストール
     EclipseでAndroid SDKを使えるようにするためのプラグイン。
     Eclipseの新規ソフトウェアインストールダイアログ(ヘルプメニューにある)にて、下記URLを追加
     開発ツール(Developer Tools)をすべてインストール

5.EclipseにAndroid SDKの場所を設定する
     設定(Preferences) > AndroidにてAndroid SDKのフォルダを指定
     設定 > 一般(General) > Workspace でエンコードを UTF-8 にしておく
     環境変数PATHにAndroid SDKのtoolsおよびplatform-toolsを追加する

以上で基本的なインストールは完了です。(たぶん。これ書いてる時点でまだダウンロード終わってないので追記するかもしれないです)

追伸
この手順で完了してました!


2011年6月11日土曜日

YouTubeに初動画アップ

Sound StageというMacAppStoreで販売しているアプリの操作説明ムービーを作るソフトが使いやすかったので、練習動画をアップしてみました。

サンプル動画 ひまわりぐりぐり

動いているのは、置くだけでマルチタッチでぐりぐり動かせるクラスのテストプロジェクトです。
ただこれだけのアプリですけど、実機で、特にiPadでいじってると楽しいんですよ。
指についてくる動きをするだけで楽しいと感じるのが興味深いです。

2011年6月6日月曜日

iOSメモリのお作法

本稿は、2011/5/28(土)に開催された、第4回iPhoneアプリ開発合宿in府中にて発表した内容です。
お作法という偉そうな題名にしていますが、ごく基本的な内容です。iOSの公式ドキュメントに書いてある内容をまとめたものになっています。

スライド 「iOSメモリのお作法(改訂版)」


良いアプリとは?
良いアプリの条件は数々ありますが、内容の前に重要なのが落ちない事です。可用性が低いアプリはいくら良いものを持っていても評価が低くなってしまい、レビューが荒れる原因にもなりかねません(^^;)。かなり勿体無いです。本稿は、アプリがなぜ落ちるのか、またiOSでのメモリの作法を理解することで、落ちないアプリに近づいていただくことを目的としています。


アプリはなぜ落ちるのか?
アプリが落ちる原因についてはいくつか考えられます。

iOSアプリの状態遷移図(改訂版)

以前書いた、iOSアプリの状態遷移図を書きなおしてみました。
ロジック的には変わってないです。少しは見やすくなったかな。

2011年3月10日木曜日

iOS4以降で実装されたマルチタスキング対応アプリの状態遷移をまとめてみました。

iOSアプリの状態遷移

iOS4.0からアプリのマルチタスキングが導入され、アプリはバックグラウンドという状態を持てるようになりました。それ以前にはアプリの状態というのは起動中(アクティブ)かそうでないかぐらいの区別しかなかったものが、これによってぐぐっと複雑になり、アプリケーションガイドを一度見たくらいではたぶん完全には理解できなくなったのではないでしょうか。(ガイドにはちょっと嘘も書いてあります)

アプリケーションガイドによると、アプリの状態というのは下記5種類があるそうです。
・非実行
・非アクティブ
・アクティブ
・バックグラウンド
・一時停止(サスペンド)

フォアグラウンドっていう状態はないみたいですね。たしかApplicationDelegateにapplicationWillEnterForegroundっていうのがあったはずですが、あれはフォアグラウンド状態に遷移するときに呼ばれるんじゃないんでしょうか。
そうなんです。フォアグラウンドっていう状態はないんです。このへん、自分でもよくわからなくなったので、あちこち調べて理解したのですが、最近人に聞かれる機会があったので図にしてみました。

IOS4以降のアプリ状態遷移図

ログ入れて実機(iPhone4)で調べたので実際の動作と同じになっていると思います。(間違いあったらご指摘お願いします)
図中、起動系は赤、終了系は青の線と色分けしています。
先程のフォアグラウンドの件、これがフォアグラウンドだという明確な記述は見つけられませんでしたが、たぶんACTIVEかINACTIVEかのどちらかにいる時をフォアグラウンドといってるっぽいですね。

ローカル通知はどう受け取るか

どういうときに状態遷移を理解していると便利かという事例として、時刻がくると発報するローカル通知を使ったアプリを作っている時に、通知イベントの動作で困ったことがありましたのでそれを紹介します。
通常、ローカル通知イベントが発生するとアラートウィンドウが出ますが、アプリが動いている(わざとあいまいな表記をしています)時に発生したローカル通知イベントは、アラートウィンドウを出さずにApplicationDelegateに通知されます。アプリからは、アラートウィンドウが出たかどうかを知る手段がないんです。
そこでログを入れて調べていますと
  • アラートウィンドウが出るパターン (メソッド名は一部省略しています)
EnterForeground → Notify通知 → BecomeActive
  • アラートウィンドウが出ないパターン
BecomeActive → Notify通知

となっていました。どうやらNotify通知を受け取るのがapplicationDidBecomeActiveの前か後かによって判別できそうです。フラグをBecomeActive時にYES、ResignActive時にNOになるフラグを作って、フラグがYESの時は自力でアラートウィンドウを出すという対策を施しました。
でも、すべての場合についてこれで良いかどうか確信が持てません。こういう時はテストして調べることになるのですが、すべての状態を網羅しないと完全とは言えません。
このような場合に状態遷移図を見てテストケースを決めるわけです。
今回の場合は、メールなどのアラートを出していたりするときのNotify通知のテストが漏れていることがわかりました。(ちゃんと動きました)

参考になれば幸いです。

2011年3月4日金曜日

Facebookにページを作りました

Facebook勉強中です。
とりあえずページを作ってみました。よろしくお願いします!

ついでにここのテンプレートいじってShareボタンといいね!ボタンを各投稿の下↓につけてみました。(こちらを参考にさせていただきました)