ゲームプログラマのすすめ

https://coconala.com/users/3696234

UnrealEngine4

本日発売の書籍を購入させて頂きました。

実際に読んで試して何かアウトプットをGithubで公開できたらと考えてます。

協力したりライバルになってくれたりする人は連絡下さい。

f:id:TrueSnowman:20150131230258j:plain

見てわかるUnreal Engine4 ゲーム制作超入門 (GAME DEVELOPER BOOKS)

 

私はゲームエンジンミドルウェアなどのライセンスビジネスにとても好感を持っています。

なぜ好感を持っているかというと次の2つの理由が大きいです。

 

1つ目の理由は餅は最高の餅屋

いちエンジニアとしてアーケード、モバイル(ガラケー)、PC、

PS2PS3Xbox360AndroidiOSなど様々な環境でお仕事させて頂きました。

開発規模も大小様々なプロジェクトチームありましたが会社が変わったり

対象プラットフォームが変わったりしただけであれ?似たような機能を

また作ってるなとか、場合によっては低機能で拡張性もない社内で

開発されたシステムを使ってクオリティの高いものを作ろうとしたりして

余計に時間かかったりしてコストが見合わなかったりなんてことがざらにあります。

そこで辿りついた結論は自分達に出来ないもしくは実現できていないものはコストを

計算した上で最高の餅屋を利用してクオリティを担保して利益をあげようという考え

にたどり着きました。これが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/から必要情報を入力してユーザ登録します

 f:id:TrueSnowman:20140923234719p:plain

2. プロジェクトを登録

 サイトへログインしてプロジェクト名とプラットフォームを選択してプロジェクトを登録します

 f:id:TrueSnowman:20140923234924p:plain

3. SDKをダウンロード

 サイトのDownloadsからiOSSDK(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];

 f:id:TrueSnowman:20140923235836p:plain

感想

 http://docs.crittercism.com/index.html に Japanese Documentationという日本語専用ページがあり
 各作業にどれくらいの時間がかかるなど細かく記載されており導入は迷うことなく出来ました。

 dSYMをアップロードしないと詳細が見れないところが少し使いづらいような印象を受けました。

 

参考にさせて頂いたサイト

Xcode - クラッシュログ収集Crittercism を仕込む時のメモ - Qiita

 

アプリのクラッシュについて Crashlytics導入編(iOS)

今回はCrashlyticsの導入をしていきます。

Crashlytics導入

1. アカウント登録

 http://try.crashlytics.com/からユーザ名、メールアドレスを登録します。

 登録して実際に使えるようになるまで数時間がかかりました。

 使えるようになると登録したメールアドレスへメールが届きます。

 f:id:TrueSnowman:20140923145729p:plain

2. Crashlyticsアプリをダウンロードして起動

 サイトへログインしてアプリをダウンロードする(Crashlytics-latest.zip)

 アプリを起動します。起動するとメニューバーにアイコンが出ます。

 

3. xcodeプロジェクトをCrashlyticsへ登録

 Crashlyticsアイコンを選択してxcodeプロジェクトを選択します。

 f:id:TrueSnowman:20140923150212p:plain

 4. xcodeプロジェクトへコマンドを設定

 Build Phase - New Run Script Build Phase で設定項目を追加。

 f:id:TrueSnowman:20140923153721p:plain

 Run Script Build PhaseへCrashlyticsで指定されているコマンドを追加。

 f:id:TrueSnowman:20140923150531p:plain

5. プロジェクトをビルド

 ビルドするとframeworkの追加を促されます。

f:id:TrueSnowman:20140923151256p:plain

6. プロジェクトへCrashlytics.frameworkを追加

 CocoaPodsを使ってframeworkをインストールしました。

 Linked Framweworks and LibrariesにCrashlytics.frameworkを追加。

 

7. プロジェクトへコードを追加

 f:id:TrueSnowman:20140923151707p:plain

 #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];

 f:id:TrueSnowman:20140923152010p:plain

感想

サイトへの登録からアプリを起動するとアイコンからグラフィカルに

やるべき手順を通知してくれるのでそこはかなり分かりやすかった印象です。

あと落ちた関数の行数が出ていたのでどこで落ちたか分かりやすかったです。

 

参考にさせて頂いたサイト

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ボタンを押す

f:id:TrueSnowman:20140921211050p:plain

 プロジェクト用のKEYが発行されます。

f:id:TrueSnowman:20140921211058p:plain

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分ぐらいでサイトには反映されました。

f:id:TrueSnowman:20140921211100p:plain

感想

アカウント登録から実装まで2時間もあれば試すことが可能でした。

dSYMをアップできるページがあったので詳細な情報を追えるように出来るのかもしれません。

参考にさせて頂いたサイト

スマートフォンアプリのクラッシュログ解析サービス (crittercism と bugsense) を使ってみた - むらかみの雑記帳

iPhone - Crash Report解析サービスのBugSenseを試してみた - Qiita

クラッシュ分析ツールBugSenseでアプリのバグの原因を突き止める。 | 三度の飯とエレクトロン

iOSアプリ開発でもCI/継続的デリバリしようぜ(5):アプリのクラッシュリポートを統計解析できるBugSenseの使い方 (3/3) - @IT

アプリのクラッシュについて 検討編

スマホアプリのプロジェクト規模としては

マスターを区切りに限定すれば多くの企業で次のような形になるとは思います。

  • 短期プロジェクト

    開発メンバー 数名(10名未満)

    開発期間   数ヶ月 ~ 半年未満

  • 長期プロジェクト

    開発メンバー 十数名

    開発期間   半年 ~ 一年

当然、期間が長ければ長いほど複雑な機能装されより複雑なバグの発生にも繋がります。

関わるプログラマの経験によっては短期プロジェクトでも多くのバグが発生するでしょう。

デバッグ期間内に全てのバグを見つけることが出来れば

ユーザにバグが届くことはありませんがそれは現実にはほぼありえません。

機能追加によるアップデート、DBのテーブル追加、サーバー負荷改善のためのクエリ改善

ありとあらゆる理由で一時でもユーザがバグに遭遇する可能性は常に存在します。

 

そんな中、iOS/Androidアプリがクラッシュした時のどういった手法でアプローチされてますか?

AndroidGoogle Play Developer Console、iOSはiTnuesConnectからクラッシュ情報を見れます。

※私のアプリでは原因は不明ですがiOSでCrashReportsという項目が見れません

 

そこで配信中のアプリで発生するバグを継続的に手に入れることが出来れば最も発生件数の

多いものから対応できたり発生した時間帯などからバグを推測したり出来るのではと思います。

 

色々検索してみると次の3つが候補にあがってきましたので次回はその検証を進めてます。

BugSense   https://mint.splunk.com/

Crittercism   http://www.crittercism.com/

Crashlytics     http://try.crashlytics.com/

 

 

ブログ開設

この度、ブログを開設させて頂きました。

主な目的は多くのエンジニアがBlogをやってる理由と同じです。

プログラムを楽しみながら微力ながら他の方の役に立つ情報が共有できればと思っています。

 

私自身はWindowsNintendoDSPS2PS3Xbox360AndroidiOSなど

様々なプラットフォームでのゲーム開発に運よく関わることが出来ておりますので

そういった部分でも色んな話を織り交ぜられたらと思っています。