iOS9 の新機能について

iOS9 には新機能が追加されていますが,アプリの対応調査をしていて気づいた点をメモしておきます.

Bitcode エラー対応方法は?

iOS の場合,”Enable bitcode”をオフにすることでエラーは回避できる.
OFF にした場合,アプリが App Thinning 対応にならない.

Bitcode とは?

Xcode7 の新機能「App Thinning」に対応するための設定項目.
設定項目は,プロジェクトファイル – TARGETS – Build Settings – Build Options – Enable Bitcode に項目がある.

watchOS Developer Library – プレリリース より
App Thinning (iOS, watchOS)
デバイスに最適化されたサイズのアプリをダウンロード可能とするための技術.
以下の3つの要素で構成される.

  • Slicing (iOS) デバイスに適したアプリバンドルとする.
  • Bitcode (iOS, watchOS) コンパイルされたプログラムの中間表現.
  • On-Demand Resources (iOS) 必要になったタイミングで,リソースを追加ダウンロードする.

参考: https://developer.apple.com/library/prerelease/watchos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html

Note: For iOS apps, bitcode is the default, but optional. If you provide bitcode, all apps and frameworks in the app bundle need to include bitcode. 
For watchOS apps, bitcode is required.

ちなみに,iOS はオプション、 watchOS は必須とのこと.

以下にていねいな説明がありました.
参考: App Thinning メモ

Bitcode を生成するには?

AppStore への提出時に,ビルド済みのバイナリではなく,中間形式でアップロードする.

検索API とは?

iOS9 の Spotlight や Safari の検索機能で,アプリや Web コンテンツから情報が見つけられるようになる.
“Universal Links”という仕組みでアプリ,Web へユーザを誘導することができる.

iOS9 では,以下の3つの検索用APIが提供されている.

  • NSUserActivity アプリに関連したユーザのアクティビティを記録して,検索対象とする.
  • Core Spotlight アプリのコンテンツへのリンクを可能とする.
  • Web Markup Webサイトを適切にマークアップすれば,コンテンツが検索可能となる.Smart App Banner を追加すれば,Webサイトからアプリへ誘導することが可能となる.

いろいろ紹介されているみたいです.
参考: iOS 9はディープリンク機能のある検索APIを提供…ほかのアプリのコンテンツも検索

GenerateDSYMFile の警告について

最近,アプリの iOS9 上での動作検証のために,Xcode7 beta5 を使用している.
そこで,出力された以下の警告について少し調べてみました.

warning: Could not resolve external type ………

上記の警告を回避するには,以下の設定で開発時にはとりあえず,抑止することができるようです.

Xcodeの "Build Settings"→"Build Options"→"Debug Information Format" の項目を
"DWARF with dSYM file" から "DWARF" に設定する.

dSYM を作成しないのだから,出力はされないのでしょう.

ですが,dSYM bundle は本番リリース後のクラッシュ解析には必要です.
開発時には利用することがないので,ビルドの “Debug Information Format” を “DWARF with dSYM File” から “DWARF” に変更すると,ビルド時間が短縮できる.といった紹介がネット上では良くされているようです.

ちなみに DWARF とは、広く使われているデバッグ用データフォーマットの規格です.
参考: DWARF

.dSYMファイルとは?

.dSYMファイルは,デバックシンボル群を保存するファイルで,このファイルがあればアドレスしか書かれていない.crash ファイルからシンボルを確認することができます.

ビルド時に生成されるものなので,.crashのログが出力されたバイナリと同じビルドで生成された.dSYMファイルでなければ解析できないため,注意が必要.
以下のリンクには丁寧な説明があります.

参考: [iOS] アプリのクラッシュログを解析する方法

stackoverflow の分からなかったことを調べてみた

いつのころからか,web で問題を検索すると stackoverflow に行き着くということが増えて結構たちますが,いつも気になりつつもそのままにしていたことがあります.

stackoverflow

いつもお世話になっている stackoverflow

回答欄にある▲,▼って何だ?とか,表示されている数字が何を意味するのか?とか,チェックマークが何を意味するのかといったことです.

これって正確にはなんだか分からなかった...

これって正確にはなんだか分からなかった…

stackoverflow 質問ページの上部には,質問内容が配置され,その下には複数の回答がリストされていることは,なんとなく分かってはいたのですが,ずっとだましだまし利用していたわけです.

ですが,先日 stackoverflow の日本語サイトができていることを知り,解説ページを見て,気になっていたことを調べてみました.(^^)v
調べるというより,確認?(笑)

stackoverflow beta (日本語) 2分間のツアー

stackoverflow 日本語版

stackoverflow 日本語版

回答欄にある▲,▼マークは,回答内容を評価するプラス票,マイナス票を投じることができるボタンのようです.
また,チェックマークは,「質問者は,1つの回答に「承認済み」のマークを付けることができます.」と説明がありますので,質問者の役に立ったか?どうか?という基準のマークとのことです.

必ずしも投票数が多い回答ににチェックがついていない理由が分かりました.
あースッキリ (・∀・)

PhpStorm のブックマークレットって?

PhpStorm のデバッグ設定を行っていて,ブックマークレットを作成する手順があったので,どのようなことをしているのか確認してみた.

このブックマークレットは,PhpStorm のサイトで生成することができる.
Xdebug & Zend Debugger bookmarklets generator for PhpStorm

ブックマークレットとは「JavaScript」の簡単なプログラム.
start debugger は,以下の通り.

1
2
3
4
javascript:(/*%20@version%200.5.2%20/function()%20{
document.cookie=
’XDEBUG_SESSION=’+’PHPSTORM’+’;path=/;’;
})()

現在開いているドメインのトップパスに、クッキー(“XDEBUG_SESSION=PHPSTORM”)を登録するしているだけ.
ide key(session id) は,xdebug と PhpStorm の PHP Remote Debug で適用するが,全て ”PHPSTORM”にしておいた方がいいですね.

PhpStorm をデバッグできるようにする

夏休みだったので,つい先日バージョンアップされた PhpStorm Version 9.0.1 を触ってみました.
(2015/8/19時点で,9.0.2).

私の場合,OS X に PHP をセットアップする場合,以下の手順で行っています.
久しぶりに思い立ってセットアップしても,この手順であれば簡単なので迷わず行えます.

1. MAMP のインストール
2. Apache で PHP の動作確認
3. php.ini を編集して,xdebug の有効化
4. PhpStorm のインストール
5. PhpStorm のデバッグ設定

PhpStorm のデバッグ設定

まず,久しぶりなので,デバッグできるように設定します.

参考: Installing and Configuring MAMP with PhpStorm IDE

本家の英語ドキュメント.
英語のドキュメントは,かったるいという場合は,以下を参照.
Xdebug の設定からとても丁寧に説明されています.

参考: PHPStorm – Xdebugを利用してPHP(WordPress)のデバッグを試してみる | matomerge.com

Xdebug が LISTEN 状態か?確認する

Xdebug が LISTEN 状態か以下のコマンドで確認することができる.

lsof -n -P -i :9000

PhpStorm のデバッグ機能

以下が,デバッグ中の PhpStorm エディタです.
ステップ実行した変数の値が表示されたり,マウスカーソルを合わせることで,変数の値が参照できたりします.
便利ですね.(^_^)v

デバッグ中の phpstorm

PhpStorm のエディタは,ストレス無く動作し,とても使いやすいです.
(以前に触った eclipse (PDT) は処理が重かった… (>_<)) 少しずつ触っていきたいと思います.

iOS9 で通信プロトコルを https → http とする方法

開発している iOS アプリの iOS9 対応を行っていて、気づいた点をメモ。

既存のアプリが iOS9 環境で通信できない場合,通信プロトコルが http → https とされるていないか?確認する.
通信が https に強制されることが原因で通信できていない場合は,info.plist に以下の設定を追記することで回避することができる.

1
2
3
4
5
<key>NSAppTransportSecurity</key>
	<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
</dict>

【参考】
App Transport Security

iOS9でHTTP通信がSSL通信になるのを防ぐ方法