HOME'Sのエンジニアブログが始まってた

どうもsamrilです。
じつは私が勤めている某不動産情報サイト「HOME'S」を運営している会社でエンジニアブログが始まったのです。
私も記事を書く任務を受けたので、とりあえず書きました。

iOSシミュレータを使ったデバッグ時に気を使ってもらいたいこと
http://nextdeveloper.hatenablog.com/entry/2013/11/19/160221

よろしければ読んでねステマ

http://www.st-hatena.com/users/sa/samril/user_p.gifこちらは個人ブログになるので、ここの記事と会社は一切関係ないぞ

Androidアプリ開発メンバーにリリーサーなどの権限を追加する方法

例えば、同じ会社の中でAndroidiOSアプリに対して、リリーサーやDL数などの数値を見たい企画や解析系の人は何人かいると思います。
その場合、その職種に応じて、権限を変更してくことが1つ正しい管理・運用方法になります。

iOS では iTunes Connect > Manage Users から設定できます。
Android では Developer Console > 設定 > ユーザーアカウントと権限 から設定が可能です。

今回は Android で新規に管理・運用ユーザーを追加する方法を書きます。

基本として、ユーザーを追加できるのは、管理者だけになります(iOSも同様)
まず Google Developer Console にアクセスします。

メニューにあります 設定 > ユーザーアカウントと権限 から「新しいユーザーを招待」をクリックします。

ポップアップが表示されますので、

追加したいユーザーのメールアドレスGoogle Id)および、その権限を選択します。
権限は、任意で変更ができ、またあとで修正を行うこともできます。

そして「招待状を送信」をクリックすると

新たにメンバーが追加されます。

あとは、招待された人にGoogleからのメールが届くので、記載されているURLから承認すれば、晴れてAndroidメンバーに追加されます。

http://www.st-hatena.com/users/sa/samril/user_p.gifiOSに比べるとAndroidは楽だよね

CocoaPods を導入しているプロジェクトを Xcode 5 GM でデバイスビルドしたときに "library not found for -lPods" とエラーが出たときの対処法

CocoaPods を導入しているプロジェクトを Xcode 5 GM を使って、デバイスビルドすると次のようなエラーがでました。

ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)

これの原因は、以前までバージョンでの Xcode32bit でのビルドを行っていました。
しかし、 Xcode 5 GM からは 64bit でのビルドを行っているため、このようなエラーがおこります。

今回は、その解決方法を書きます。


まずはお使いの CocoaPods のバージョンを確認してみてください。

$ pod --version
0.24.0

※2013/09/11時点では 0.24 が最新バージョンです

もし、バージョンは 0.24 以下の場合は、次のコマンドを使って CocoaPods のバージョンをあげましょう。

$ sudo gem update --system
Password:
:
:
$ sudo gem update cocoapods
Updating installed gems
Updating cocoapods
:
:
Gems updated: cocoapods cocoapods-core cocoapods-downloader xcodeproj

完了したら、再度 CocoaPods のバージョンを確認してみてください。
バージョンが 0.24 を超えていたら良いです。


そしたら、問題が出ていた Xcode を開きます。

Pods プロジェクト > TARGET: Pods > Build Settings > Architectures の順で進んでいき、
Podsアーキテクチャを「Standard architectures」に設定する。

では、デバイスビルドをして、先ほど出ていたエラーが外れたら OK です。


ggった結果
CocoaPods devs
https://github.com/CocoaPods/CocoaPods/pull/1352

http://www.st-hatena.com/users/sa/samril/user_p.gifCocoaPodsも対応しているようなので、時間が解決してくれるよ、きっと

CocoaPods を使った自前ライブラリをユニットテスト( XCTest )するときに" '***.h' file not found "が起きる場合の解決方法

備忘録みたいなものですが...

Xcode 5 からユニットテストをする際に XCTest フレームワークを用いてテストケースを作ることが推奨されています。

CocoaPods を使っている場合、まだ XCTest フレームワークに対応していないため、テストモードでビルドするときに CocoaPods ライブラリがプロジェクトに設定されていません。

そのため" '***.h' file not found "というエラーが出ます。

今回はその対応方法です。

プロジェクト > Info > Configurations > Debug/Release > {プロジェクト名}TestsNone -> Pods に変更する。

これだけ

http://www.st-hatena.com/users/sa/samril/user_p.gifいずれCocoaPodsも対応するでしょう

Apple Push Notification Serviceを使ってiOSにプッシュ通知をするために必要な証明書の準備方法

WEBブラウザアプリと、AndroidiOSなどのスマートデバイスアプリでの大きな違いの1つとして「プッシュ通知」というのがあります。

まず、iOSバイスへのプッシュ通知の仕組みです。

Androidと似ておりますが、iOSでもデバイスにプッシュするには Apple Push Notification service (以下 APNs )を経由しなければなりません。

そのため、まずは APNs にプッシュ通知を送る仕組みが必要になります。
その証明書の作り方を、今回は記述します。

1. プッシュ通知用の Certificate を作成する

アプリを1つでも app store へリリースしたことがある人なら分かると思いますが、まずはプッシュ通知用の Certificate が必要になります。
いつものように iOS Developer Center から Member Center へいきます。

Manage your Certificate, ... を選択します。

何を作成、管理するか選択します。

ここでは iOS App の Certificates を選択する。

新しい証明書を追加します。

画面右上にある「」を選択する。

今回作成するのは APNs の証明書です。

Apple Push Notification service SSL (****) をチェックして次へ
テスト用のを作りたければ Development
本番用のを作りたければ Production

今回は Production を選択しました。

次に、プッシュ通知を送りたいアプリを選択します。

ここでは Identifier が登録されているアプリのみ選択可能です。
ここに対象のアプリの Identifier が表示されていない場合は、新しく作成してください。

証明書を新しく作るにあたり Certificate Signing Request (以下 CSR )が必要になります。

このページでは作り方が英語で書いてありますが、以下で説明するので、読める人だけ読んでください。

まずは、キーチェーンアクセスを起動してください。

メニューにある キーチェーンアクセス > 証明書アシスタント > 認証局に証明書を要求 を選択します。

証明書アシスタントが起動します。

ユーザのメールアドレス:あなたのメールアドレス
通称:何の証明書にするか分かりやすいものにした方が後々便利です ex. MyappAPNs
CAのメールアドレス:「必須」と出ていますけど、空欄でOKです
要求の処理:ここは「ディスクに保存」だけでOKです

そうすると CertificateSigningRequest.certSigningRequest という証明書が出来上がります。
上で設定した「通称」はどこいったの?と思いますが、キーチェーンアクセスの「鍵」の名前を見ると、そこに設定されています。

そして作られた CSRファイル をアップロードします。

ファイルを開いて選択

「Loading...」が終わると APNs 用の Certificate が作成されます。

これをダウンロードして、ダブルクリックで、現在使っている mac に登録しておきます。

これでプッシュ通知用の Certificate の作成が終わりです。


2. サーバ用PEMファイルの作成

自分のサーバから APNs にプッシュするために SSL証明書とそれにひもづく鍵 が必要になります。

まず、キーチェーンアクセスを開きます。

証明書の項目から、先ほど作成した証明書、および秘密鍵2つで
右クリック > "Apple Production/Development Push Service: *****"を書き出す... を選択します。

保存する名前は分かりやすいほうがよいです。
ex. MyappProd.p12
パスワードは任意で(後で使うので覚えやすいやつをオススメ)

証明書用、秘密鍵用、の計2つの p12 ファイルができたと思います。

最後にコマンドラインを使い、サーバに設置するための PEMファイル を作成します。

まず、証明書用のファイルを作ります。

$ openssl pkcs12 -clcerts -nokeys -out {任意のファイル名}.pem -in {上で作成した証明書p12ファイル}.p12
Enter Import Password:
MAC verified OK

パスワードを求められるので、上記で設定したキーチェーンアクセスで書き出した時のパスワードを入力する。
作成するファイル名は、例えば MyappProd.pem など p12ファイル と同じ名前でも良い

次に、秘密鍵のファイルを作成します。

$ openssl pkcs12 -nocerts -out {任意のファイル名}.pem -in {上で作成した秘密鍵p12ファイル}.p12
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

パスワードを求められるので、分かりやすいパスワードを入力する。
作成するファイル名は、例えば MyappProdKey.pem など p12ファイル と同じ名前でも良い

この時点で次の4つのファイルになっていると思います。
証明書.p12
証明書.pem
秘密鍵.p12
秘密鍵.pem

次に秘密鍵パスフレーズを解除します。
※サーバのプログラム上でパスフレーズを記入する場合は、不要になります。

$ openssl rsa -in {秘密鍵}.pem -out {公開鍵}.pem
Enter pass phrase for kurashito-key.pem:
writing RSA key

パスワードを求められるので、上記で設定したパスワードを入力する。
作成するファイル名は、例えば MyappProdKeyNoenc.pem など 元となる秘密鍵.pem と別の名前が良い

最後に 証明書.pem と 公開鍵.pem の2つのファイルを1つのファイルとしてまとめます。

$ cat {証明書}.pem {公開鍵}.pem > {あるアプリのAPNs用証明書だと分かりやすい名前が望ましい}.pem

作成された PEMファイル をサーバにおけば、 APNs にプッシュすることができます。

http://www.st-hatena.com/users/sa/samril/user_p.gif有効期限は1年だぞ!

iOS 7 beta を実機にインストールする方法

2013/08/08時点での iOS 7 は beta 5 になります。
そろそろ iOS 7 対応したアプリの開発も進み、実機でテストをする人が増えてくると思います。

今回は、実機に iOS 7 beta 5 をインストールする方法を書きます。
※現在は beta なので、あくまで自己責任でお願いします。


1. iOS Dev Center から iOS 7 beta 5 をダウンロードしてくる

次の iOS デベロッパーセンターにアクセスする

iOS Dev Center - Apple Developer
https://developer.apple.com/devcenter/ios/

iOS タブから iOS 7 SDK beta を選択する

ページ中断にある次の項目から、アップデートしたい端末の .dmg ファイルをダウロードする


2. iTunes と端末を接続する

アップデートしたい端末と mac pc を接続して iTunes を起動する


3. iOS 7 を実機にインストールする

「概要」から「アップデートを確認」ボタンを オプションキー を押しながらクリックする。
そうすると Findウィンドウ が開くので、先ほどの .dmg 内に格納されている

*******.ipsw

ファイルを選択する。

そうすると iOS 7 へのアップデートが始まります。

以上で、実機に iOS 7 beta 5 をインストールしたことになります。

http://www.st-hatena.com/users/sa/samril/user_p.gifmember center 未だに直らず

cocoapods のインストール中に「 std=c99 option to compiler 」と失敗した時の対処

cocoapodsのインストールに手間取ったので、原因と対応を書いておく

こんな感じで gem を使って cocoapods をインストールしようとしたときにコンパイラで NG が出てきる

akiyoshi@mac [17:45:33] % sudo gem install cocoapods
Building native extensions.  This could take a while...
ERROR:  Error installing cocoapods:
	ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for -std=c99 option to compiler... no
checking for CoreFoundation... no
checking for main() in -lCoreFoundation... no
CoreFoundation is needed to build the Xcodeproj C extension.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
	--with-CoreFoundationlib
	--without-CoreFoundationlib


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/xcodeproj-0.6.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/xcodeproj-0.6.0/ext/xcodeproj/gem_make.out
zsh: exit 1     sudo gem install cocoapods

cocoapods のインストールに必要な rubyXcode command line tools はインストール済み

原因は、以前このPCには Xcode4.3 がインストールされていたこと
Xcode は4.3以降から /Application/Xcode.app にパッケージ統合されている

次のコマンドで command line tools の設定をおこなう

$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/

これでok

http://www.st-hatena.com/users/sa/samril/user_p.gifXcodeのアンインストール方法も変わっているからね