UnrealEngine4
本日発売の書籍を購入させて頂きました。
実際に読んで試して何かアウトプットをGithubで公開できたらと考えてます。
協力したりライバルになってくれたりする人は連絡下さい。
見てわかるUnreal Engine4 ゲーム制作超入門 (GAME DEVELOPER BOOKS)
私はゲームエンジンやミドルウェアなどのライセンスビジネスにとても好感を持っています。
なぜ好感を持っているかというと次の2つの理由が大きいです。
1つ目の理由は餅は最高の餅屋。
いちエンジニアとしてアーケード、モバイル(ガラケー)、PC、
PS2、PS3、Xbox360、Android、iOSなど様々な環境でお仕事させて頂きました。
開発規模も大小様々なプロジェクトチームありましたが会社が変わったり
対象プラットフォームが変わったりしただけであれ?似たような機能を
また作ってるなとか、場合によっては低機能で拡張性もない社内で
開発されたシステムを使ってクオリティの高いものを作ろうとしたりして
余計に時間かかったりしてコストが見合わなかったりなんてことがざらにあります。
そこで辿りついた結論は自分達に出来ないもしくは実現できていないものはコストを
計算した上で最高の餅屋を利用してクオリティを担保して利益をあげようという考え
にたどり着きました。これが1つ目の理由です。
2つ目の理由はチャンスの拡大。
ゲームを作りたいと考える人のうちゲームを作れるようになる人は何%いるか。
10年以上前の話になりますが私が学んでいた学校ではゲーム業界に進みたい人のうち
数%しかその夢を実現できていませんでした。私も当時一度はその壁にぶつあたり
挫折をしました。様々な要因はあると思いますがゲームというビジネスで食える人が
もっと増えればいいなと考えてるので特に利用料金の少ないゲームエンジンは作る環境
の裾野が広がり今まで作れなかった人やアイデアを持っている人にチャンスが与えられる
ことになると思っています。
アプリのクラッシュについて まとめ編
3回にわたり下記の3つのサービスを導入してみたので振り返りです。
BugSense https://mint.splunk.com/
Crittercism http://www.crittercism.com/
Crashlytics http://try.crashlytics.com/
結論からいうとCrashlyticsが一番オススメです。
BugSenseは落ちたソースの行が分からないため選択肢からはずれました。
そこまで詳しく触ったわけではないので出来るかもしれませんがわからなかったです。
Crittercismは手動でdSYMファイルをアップしないと落ちた場所が分からないのが面倒。
ただ会社で利用するケースを考えるとapkやipaを申請するタイミングで
登録することを考えるとそこまで日常的な作業にならないのでアリかもしれません。
見た目はどのサービスもグラフィカルでかっちょいいです(笑)
アプリのクラッシュについて Crittercism導入編(iOS)
さて最後のCrittercismの導入です。
Crittercism導入
1. アカウント登録
http://www.crittercism.com/から必要情報を入力してユーザ登録します
2. プロジェクトを登録
サイトへログインしてプロジェクト名とプラットフォームを選択してプロジェクトを登録します
3. SDKをダウンロード
サイトのDownloadsからiOSのSDK(v.4.3.7)をダウンロードします
4. プロジェクトへCrittercismライブラリを追加
Linked Framweworks and LibrariesにlibCrittercism_v4_3_7.aを追加。
5. プロジェクトへコードを追加
#import "Crittercism.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Crittercism enableWithAppID: @"Crittercism_API_KEY"];
return YES;
}
6. クラッシュレポートを送りサイトでの表示を確認
■テストコード
NSArray *array = [NSArray array];
id data = array[0];
感想
http://docs.crittercism.com/index.html に Japanese Documentationという日本語専用ページがあり
各作業にどれくらいの時間がかかるなど細かく記載されており導入は迷うことなく出来ました。
dSYMをアップロードしないと詳細が見れないところが少し使いづらいような印象を受けました。
参考にさせて頂いたサイト
Xcode - クラッシュログ収集Crittercism を仕込む時のメモ - Qiita
アプリのクラッシュについて Crashlytics導入編(iOS)
今回はCrashlyticsの導入をしていきます。
Crashlytics導入
1. アカウント登録
http://try.crashlytics.com/からユーザ名、メールアドレスを登録します。
登録して実際に使えるようになるまで数時間がかかりました。
使えるようになると登録したメールアドレスへメールが届きます。
2. Crashlyticsアプリをダウンロードして起動
サイトへログインしてアプリをダウンロードする(Crashlytics-latest.zip)
アプリを起動します。起動するとメニューバーにアイコンが出ます。
3. xcodeプロジェクトをCrashlyticsへ登録
Crashlyticsアイコンを選択してxcodeプロジェクトを選択します。
4. xcodeプロジェクトへコマンドを設定
Build Phase - New Run Script Build Phase で設定項目を追加。
Run Script Build PhaseへCrashlyticsで指定されているコマンドを追加。
5. プロジェクトをビルド
ビルドするとframeworkの追加を促されます。
6. プロジェクトへCrashlytics.frameworkを追加
CocoaPodsを使ってframeworkをインストールしました。
Linked Framweworks and LibrariesにCrashlytics.frameworkを追加。
7. プロジェクトへコードを追加
#import <Crashlytics/Crashlytics.h>
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Crashlytics startWithAPIKey:@"Crashlytics_API_KEY"];
return YES;
}
8. クラッシュレポートを送りサイトでの表示を確認
■テストコード
NSArray *array = [NSArray array];
id data = array[0];
感想
サイトへの登録からアプリを起動するとアイコンからグラフィカルに
やるべき手順を通知してくれるのでそこはかなり分かりやすかった印象です。
あと落ちた関数の行数が出ていたのでどこで落ちたか分かりやすかったです。
参考にさせて頂いたサイト
Objective-C - Crash Report解析サービスのCrashlyticsを試してみた - Qiita
iOS アプリのための Crashlytics | moonxseed
アプリのクラッシュについて BugSense導入編(iOS)
色んなサイトで3つ(BugSense,Crittercism,Crashlytics)を比べましたが
正直どれがいいのやら決定的ではなかったので全部試して見る方向で動きます!!
さっそくBugSenseから試していきます。
BugSense導入
1. アカウント登録
https://mint.splunk.com/からSIGNUP FOR FREEボタンからユーザ情報を登録
2.BugSenseにプロジェクト登録する
サインインしてサイトからAdd Projectのボタンから次のような画面に進み
情報を入力してSUBMITボタンを押す
プロジェクト用のKEYが発行されます。
3.BugSenseをインストール
CocoaPodsを使ってインストールしました
4.プロジェクトへ設定を追加
Linked Framweworks and Librariesに2でインストールしたBugSense-iOS.frameworkを追加
5.プロジェクトへコードを追加
2で発行されたKEYをプロジェクト内の関数に埋め込む
#import <BugSense-iOS/BugSenseController.h>
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[BugSenseController sharedControllerWithBugSenseAPIKey:@"BugSense_API_KEY"];
return YES;
}
6.クラッシュレポートを送りサイトでの表示を確認
■テストコード
NSArray *array = [NSArray array];
id data = array[0];
レポート結果の一部を下記に抜粋しましたが反映までは3分ぐらいでサイトには反映されました。
感想
アカウント登録から実装まで2時間もあれば試すことが可能でした。
dSYMをアップできるページがあったので詳細な情報を追えるように出来るのかもしれません。
参考にさせて頂いたサイト
スマートフォンアプリのクラッシュログ解析サービス (crittercism と bugsense) を使ってみた - むらかみの雑記帳
iPhone - Crash Report解析サービスのBugSenseを試してみた - Qiita
クラッシュ分析ツールBugSenseでアプリのバグの原因を突き止める。 | 三度の飯とエレクトロン
iOSアプリ開発でもCI/継続的デリバリしようぜ(5):アプリのクラッシュリポートを統計解析できるBugSenseの使い方 (3/3) - @IT
アプリのクラッシュについて 検討編
スマホアプリのプロジェクト規模としては
マスターを区切りに限定すれば多くの企業で次のような形になるとは思います。
- 短期プロジェクト
開発メンバー 数名(10名未満)
開発期間 数ヶ月 ~ 半年未満
- 長期プロジェクト
開発メンバー 十数名
開発期間 半年 ~ 一年
当然、期間が長ければ長いほど複雑な機能装されより複雑なバグの発生にも繋がります。
関わるプログラマの経験によっては短期プロジェクトでも多くのバグが発生するでしょう。
デバッグ期間内に全てのバグを見つけることが出来れば
ユーザにバグが届くことはありませんがそれは現実にはほぼありえません。
機能追加によるアップデート、DBのテーブル追加、サーバー負荷改善のためのクエリ改善
ありとあらゆる理由で一時でもユーザがバグに遭遇する可能性は常に存在します。
そんな中、iOS/Androidアプリがクラッシュした時のどういった手法でアプローチされてますか?
AndroidはGoogle Play Developer Console、iOSはiTnuesConnectからクラッシュ情報を見れます。
※私のアプリでは原因は不明ですがiOSでCrashReportsという項目が見れません
そこで配信中のアプリで発生するバグを継続的に手に入れることが出来れば最も発生件数の
多いものから対応できたり発生した時間帯などからバグを推測したり出来るのではと思います。
色々検索してみると次の3つが候補にあがってきましたので次回はその検証を進めてます。
BugSense https://mint.splunk.com/
Crittercism http://www.crittercism.com/
Crashlytics http://try.crashlytics.com/