Unityのiosとandroidのbuildをjenkinsで行う

概要

f:id:yasuaki-ohama:20160607030944p:plain
Unityでスマフォアプリ開発を行う場合以下の処理に時間がかかる

  1. Buildに時間がかかる
  2. (Android)毎回Keystoreにパスワードを入れる
  3. (ios)Xcodeプロジェクトの作成
  4. (ios)プロビジョニングプロファイルと認証キーの設定をしてappを作成しipaを作成する
  5. 実機確認等でUnityを使わない人にもアプリを渡す

そのため、今回はjenkinsを利用する事でボタンひとつでapk, ipaファイルを作成できるようにする。

開発環境

ソフトウェア バージョン
OS OS X El Capitan 10.11.5 (15F34)
Homebrew 0.9.5
Jenkins 1.601
Unity 5.3.4p4
Xcode 7.3.1 (7D1014)
Android Version 23

Unityのiosandroidのbuildをjenkinsで行う

  1. Jenkins
  2. Android Build
  3. ios Build

Google スプレッドシートでタスク管理/シートの作成3(カレンダー)

  • 以下の記事の「シートの作成3(カレンダー)」

yasuaki-ohama.hatenablog.com
f:id:yasuaki-ohama:20160423164948p:plain

目次

  • カレンダーの範囲の作成と固定
  • カレンダーに数値を入れる
  • カレンダーの書式を変更する
  • カレンダーに色をつける
  • カレンダーに月の予定を記載する欄を作る
  • カレンダーのスケジュール欄の作成
  • カレンダーの日付を追加する

カレンダーの範囲の作成と固定

列Fを作成する
f:id:yasuaki-ohama:20160423170350p:plain:w300
列Eを固定する
f:id:yasuaki-ohama:20160423170812p:plain:w300
カレンダー用にサイズを変更
f:id:yasuaki-ohama:20160423193049p:plain:w200
f:id:yasuaki-ohama:20160423170947p:plain:w300
適当に60列くらい作る
f:id:yasuaki-ohama:20160423171129p:plain:w300

カレンダーに数値を入れる

列F1に「2016/01/01」と入力する
f:id:yasuaki-ohama:20160423171449p:plain:w200
列F1の右下の青い四角をクリックして右端まで引っ張る
f:id:yasuaki-ohama:20160423171616p:plain:w400
3行作成する
f:id:yasuaki-ohama:20160423171627p:plain:w400

カレンダーの書式を変更する

f:id:yasuaki-ohama:20160423173036p:plain:w200
1行目は月
f:id:yasuaki-ohama:20160423172005p:plain:w300
2行目は日付
f:id:yasuaki-ohama:20160423172013p:plain:w300
3行目は曜日
f:id:yasuaki-ohama:20160423172020p:plain:w300
以下のように変更される
f:id:yasuaki-ohama:20160423173603p:plain

カレンダーに色をつける

月ごとに奇数と偶数で色を分ける

=MOD(MONTH(F1),2)=0
=MOD(MONTH(F1),2)=1

f:id:yasuaki-ohama:20160423174450p:plain:w200 f:id:yasuaki-ohama:20160423174457p:plain:w200
土曜日と日曜日で色を分ける

=WEEKDAY(F3)=7
=WEEKDAY(F3)=1

f:id:yasuaki-ohama:20160423174559p:plain:w200 f:id:yasuaki-ohama:20160423174612p:plain:w200
以下のように色分けされる
f:id:yasuaki-ohama:20160423174657p:plain:w300

カレンダーに月の予定を記載する欄を作る

各月の4,5行目のセルを結合する
f:id:yasuaki-ohama:20160423180147p:plain:w300
アプリ申請とかリリース予定とか書くと良い
f:id:yasuaki-ohama:20160423180156p:plain:w300

カレンダーのスケジュール欄の作成

はみ出ている灰色を消す
f:id:yasuaki-ohama:20160423180707p:plain:w300
f:id:yasuaki-ohama:20160423180711p:plain:w300
スケジュールへの記載設定の作成
f:id:yasuaki-ohama:20160423180741p:plain:w300
f:id:yasuaki-ohama:20160423180841p:plain:w150 f:id:yasuaki-ohama:20160423180849p:plain:w150 f:id:yasuaki-ohama:20160423180855p:plain:w150 f:id:yasuaki-ohama:20160423180900p:plain:w150
w, d, c, nの文字を入れると自動的に色がつく
f:id:yasuaki-ohama:20160423181131p:plain:w400

カレンダーの日付を追加する

列を追加する
f:id:yasuaki-ohama:20160423181506p:plain:w300
青い四角をクリックして右に伸ばす
f:id:yasuaki-ohama:20160423181519p:plain
日ずけが上がっていく
f:id:yasuaki-ohama:20160423181526p:plain:w300
カレンダーに月の予定を記載する欄を作りたい場合は4,5行を結合する

Unity GooglePlayGameServicesとGameCenterを利用する

概要

GooglePlayGameServicesとGamecenterを利用して
ランキングボードとアチーブメントを表示する。
f:id:yasuaki-ohama:20151219115036p:plain:w300
f:id:yasuaki-ohama:20151219115028p:plain:w300

play-games-plugin-for-unityをダウンロード

GitHub - playgameservices/play-games-plugin-for-unity: Google Play Games plugin for Unity
右側にあるDownload ZIPをクリックして、ダウンロード。
f:id:yasuaki-ohama:20151219095117p:plain:w500
今回の記事の時の最終コミット
f:id:yasuaki-ohama:20151219095630p:plain:w500

プロジェクトにプラグインを入れる

play-games-plugin-for-unity-master->current-build->GooglePlayGamesPlugin-0.9.27a
f:id:yasuaki-ohama:20151219100024p:plain:w500

f:id:yasuaki-ohama:20151219100649p:plain:w400
f:id:yasuaki-ohama:20151219101002p:plain:w400

ストアからIDを習得する

ゲームセンターアイコン->実績->リソースを取得
f:id:yasuaki-ohama:20151219115716p:plain:w400
f:id:yasuaki-ohama:20151219115721p:plain:w400

アチーブメンント、ランキングボードの公開設定

公開してなくてもテストアカウントでみること見ることができます。
f:id:yasuaki-ohama:20151219110717p:plain:w400
公開するとりせっとできないので注意
f:id:yasuaki-ohama:20151219114909p:plain:w400

プロジェクトでID設定

Window > Google Play Games > Setup > Android Setup...
f:id:yasuaki-ohama:20151219101443p:plain
f:id:yasuaki-ohama:20151219115730p:plain

説明
directory to save constants プロジェクトのどこにC#のIDスクリオプトを置くのか
Constants class name 作成されるIDリストスクリプトC#のIDスクリオプト名
Resources Definition さっきストアから取ってきたもの
Web client ID ゲームセンターアイコン->リンク済みアプリ->OAuth2 クライアント ID

f:id:yasuaki-ohama:20151219103306p:plain:w400

起動確認

以下をインポート
play-games-plugin-for-unity-master->samples->Minimal->Minimal.unitypackage
f:id:yasuaki-ohama:20151219104514p:plain:w300
GooglePlayGamesPlatformSample.csを作成し、MainSceneのカメラにアッタッチする
gist.github.com
build
f:id:yasuaki-ohama:20151219104521p:plain:w300

アチーブメントとリーダーボードの表示、送信

f:id:yasuaki-ohama:20151219112000p:plain:w300
f:id:yasuaki-ohama:20151219115031p:plain:w300
f:id:yasuaki-ohama:20151219112008p:plain:w300
f:id:yasuaki-ohama:20151219115025p:plain:w300
f:id:yasuaki-ohama:20151219115028p:plain:w300
f:id:yasuaki-ohama:20151219115033p:plain:w300
f:id:yasuaki-ohama:20151219115036p:plain:w300

IOS

google play serviceを利用しないのでここにiOSの設定に以下を追加
(これを追加しないとXcodeでframeworkないとエラーでる)

NO_GPGS

f:id:yasuaki-ohama:20151219103312p:plain
itunesconnectの「達成項目ID」をgoogleと同じものを入れる

Unity5のバグ

アチーブメントが習得できないバグがあるので以下のURLから
GCNative.h, GCNative.m, GCNative_Bridge.h, GCNative_Bridge.m
を作成
[iOS]Unity5でGame CenterにAchievementを送れないバグに対処する - Qiita

アチーブメンント、ランキングボードの公開設定

GameCenterをサンドボックスにしておく事
f:id:yasuaki-ohama:20151219134257p:plain:w300
f:id:yasuaki-ohama:20151219134251p:plain:w300
f:id:yasuaki-ohama:20151219134248p:plain:w300

毎日ログインボーナス スクリプト C++

概要

毎日ログインボーナスを実行するためのスクリプト

計算式

以下の条件を満たす時、trueを返すスクリプトを作成すれば毎日ログインボーナスの状態確認ができる。

過去にログインした時刻 < 現在時刻より過去の一番近いログイン更新時刻 <= 現在時刻

画像で説明

例1:「過去 < 更新1 <= 現在」が成り立つ
f:id:yasuaki-ohama:20151218135712j:plain:w300
例2:「過去 < 更新0 <= 現在」が成り立たない
f:id:yasuaki-ohama:20151218135713j:plain:w300
例3:「過去 < 更新0 <= 現在」が成り立たない
f:id:yasuaki-ohama:20151218135714j:plain:w300
例4:「過去 < 更新0 <= 現在」が成り立つ
f:id:yasuaki-ohama:20151218140340j:plain:w300

求め方

  1. 現在時刻を取得する。
  2. 現在時刻より過去の一番近いログイン更新時刻を求める。
  3. 過去にログインした時刻よりログイン更新時刻が未来であればtrueを返す。

gist.github.com

$ ls
DateUpdate.cpp
$ g++ -o  DateUpdate DateUpdate.cpp
$ ./DateUpdate 
読み込み失敗 ファイル LastLoginTime.txt が開けません。 0を返します。
Tue Dec 15 13:51:37 2015 現在時刻の表示
Thu Jan  1 09:00:00 1970 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新する
$ ./DateUpdate
Tue Dec 15 13:51:41 2015 現在時刻の表示
Tue Dec 15 13:51:37 2015 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新しない
$ vim LastLoginTime.txt
$ ./DateUpdate                     
Tue Dec 15 13:52:02 2015 現在時刻の表示
Mon Dec 14 10:04:57 2015 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新する
$ ./DateUpdate
Tue Dec 15 14:12:08 2015 現在時刻の表示
Tue Dec 15 13:52:02 2015 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新しない

その他

バイナリで保存したい場合

    ofs.write(( char * ) &currentTime, sizeof( long ) );//バイナリ保存
    while(!ifs.eof())
    {
      ifs.read( ( char * ) &d, sizeof( long ) );//バイナリ保存
    }

速攻で作れる OS別 リダイレクトURL QRコード 短縮URLも可能

このGitHubをCloneする。
github.com


以下、Android, iOS, その他のURLを変更する
redirect/index.html

...
    window.location.href = "https://itunes.apple.com/";
...
    window.location.href = "https://play.google.com/";
...
    window.location.href = "http://www.desunoya.sakura.ne.jp/product/panda/";

自分のgithubのURLにアクセスして確かめる
http://yourself-account.github.io/yourRepository

(例)作成したリポジトリがredirectなので
http://yasuakiohama.github.io/redirect

短縮URLQRコードを作成する
Google URL Shortener

完成
f:id:yasuaki-ohama:20151219174445p:plain
http://goo.gl/4KakGZ
goo.gl/4KakGZ

Google スプレッドシートでタスク管理/シートの作成2(演算)

以下の記事の「シートの作成2(演算)」
yasuaki-ohama.hatenablog.com
f:id:yasuaki-ohama:20160202011531p:plain:w400

目次

  • 「完了」した数をカウントする
  • 達成率を求める
  • 応用

「完了」した数をカウントする

B2に「完了」と入れる
f:id:yasuaki-ohama:20160202010359p:plain
COUNTIFを利用して「完了」した数を求める
COUNTIFは指定した範囲内で任意の文字列と同じものをカウントする

=COUNTIF(範囲,比較する文字)
  • 範囲「B列の7行目から最後まで」
  • 比較する文字「B2」
=COUNTIF(B7:B,B2)

完了したタスクが2と表示される
f:id:yasuaki-ohama:20160202010346p:plain

達成率を求める

達成率は

完了した数 / 全体

で求めることができるので

=COUNTIF(B7:B,"完了")/COUNTIF(B7:B,"*")

以下のように記載する
f:id:yasuaki-ohama:20160202011000p:plain