【個人開発】iOSアプリ開発に必要なもの
この度個人製作初アプリリリースしました!
apps.apple.comハイパーカジュアルゲーム毎月一本リリースを目標に今後も制作進めていくつもりです。
ご興味のある方ぜひインストールしてレビュー頂ければと思います!
宣伝はこのくらいにしまして、iOSアプリをリリースを経て
必要なものやあると便利なものなどをまとめてみました。
今後制作を考えている方のためになればと思います。
iOSアプリ開発に必要なもの
ipaの作成に使用します。
証明書やAppStoreへのアップロード等もMacを通して行います。
こういったツールもあるようなのですが
証明書の登録等は最初に必要になるらしいのでMacは欠かせないようです。
※ツールを試したわけではないので不確かです。
- iOS Developer Program 登録
https://developer.apple.com/jp/programs/how-it-works/
AppStoreへアプリを登録するためにAppleの開発者に登録する必要があります。
こちらは年間1万1800円かかります。
参考にさせて頂いたサイト
i-app-tec.com
iOSアプリ開発にあるといいもの(使ったツール等)
- プライバシーポリシー作成
アプリを登録する際に知ったのですが、プライバシーポリシーの記載が必須になったそうです。
サイト作って英文書いて、、、は流石に骨が折れるのでこちらを利用するとよいと思います。
ベースとなる文章が用意されているので、参考に進めると楽に作成できます。
こんな感じに作成できます。
Don't drop it!! - Privacy Policy
外部SDKを組み込んでいる場合は、それらリンクも入れておくと良いでしょう。
- スクショ作成
https://help.apple.com/app-store-connect/#/devd274dd925
比率違いのスクショを3つ作成する必要があります。
画像をドロップすると作ってくれるサイトもあるようなのですが
私はGIMPを使用して各サイズ用意するようにしました。
画像を拡縮→キャンパスサイズ(比率)を変更で作成しました。
【Jenkins】ipaを自動生成する③(mac/Jenkins/Unity/GitHub/DeployGate)
概要
Jenkinsビルド→ipa作成までを自動で行えるようにする
今回は、Xcodeプロジェクト→ipa作成まで
Jenkinsのセットアップ~Unityビルドは前回までの記事を参照
peachtea-tom.hatenablog.com
peachtea-tom.hatenablog.com
環境
Unity2019.3.13f1
Xcode 11.4.1
ExportOptions.plist作成
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>compileBitcode</key> <false/> <key>destination</key> <string>export</string> <key>method</key> <string>ad-hoc</string> <key>provisioningProfiles</key> <dict> <key>アプリのBundleID</key> <string>プロビジョニングファイルの名前</string> </dict> <key>signingCertificate</key> <string>証明書名</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/> <key>teamID</key> <string>チームID</string> <key>thinning</key> <string><none></string> </dict> </plist>
※バンドルIDやプロビジョニングの名前は適宜変更を。
BuildSettings/iOS/DevelopmentExportOptions.plist
に保存しておく。
Xcodeビルド(ipa生成)
前回作成したbuild.shに下記を追加します。
UNITY_APP_PATH="/Applications/Unity/Hub/Editor/2019.3.13f1/Unity.app/Contents/MacOS/Unity" PROJECT_PATH=$WORKSPACE UNITY_EDITOR_LOG_PATH=$WORKSPACE/build.log $UNITY_APP_PATH -batchmode -username ここにユーザ名 -password ここにパスワード -quit -logFile $UNITY_EDITOR_LOG_PATH -projectPath $PROJECT_PATH -executeMethod BuildROM.BatchBuild cat $UNITY_EDITOR_LOG_PATH #------ここからが追加分------------------ # Xcode Projectのパス XCODE_PROJECT=$WORKSPACE/Product/Unity-iPhone.xcodeproj # アーカイブ先 ARCHIVE_PATH=$WORKSPACE/Product/rom.xcarchive # ipa配置場所 IPA_PATH=$WORKSPACE/Product/ # plistのパス XCODE_EXPORT_OPTION_PLIST_PATH=${WORKSPACE}/BuildSettings/iOS/DevelopmentExportOptions.plist # キーチェーンをアンロックしておく security -v unlock-keychain -p MACのパスワード #clean xcodebuild clean -project $XCODE_PROJECT -target Unity-iPhone -configuration Release #archive xcodebuild -project $XCODE_PROJECT -scheme Unity-iPhone archive -archivePath $ARCHIVE_PATH -configuration Release #export xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath $IPA_PATH -exportOptionsPlist $XCODE_EXPORT_OPTION_PLIST_PATH
補足
cocoapodsを使用する場合は、xcodeprojではなくxcworkspaceを使うことになります。
※Facebook SDKを導入する場合等はこちらのケースになります。
xcworkspaceを使用する場合、build.shを次のように変更する必要があります
# Unity-iPhone.xcodeproj => Unity-iPhone.xcworkspace XCODE_PROJECT=$WORKSPACE/Product/Unity-iPhone.xcworkspace # -project => -workspace xcodebuild clean -workspace $XCODE_PROJECT -target Unity-iPhone -configuration Release # -project => -workspace xcodebuild -workspace $XCODE_PROJECT -scheme Unity-iPhone archive -archivePath $ARCHIVE_PATH -configuration Release
おまけ(DeployGate)
①~③までお付き合いありがとうございました。
これまでのことを一通り行うことで、Jenkinsビルド→ipa生成までが出来るようになります。
最後におまけで、DeployGateにアップするコマンドを記載しておきます。
curl \ -H "Authorization: token アプリトークン" \ -F "file=@${WORKSPACE}/Product/Unity-iPhone.ipa" \ -F "message=jenkins upload" \ "https://deploygate.com/api/users/ユーザ名/apps"
アプリトークンはDeployGateのアカウントページから確認してください。
こちらのシェルスクリプトをbuild.shの最後に追加 or Jenkinsのシェル実行に追加することで
ビルドされたipaをDeployGateにアップするまでを自動で行うことが出来ます。
ここまで設定しておけば、Jenkinsのビルドを押すだけでDeployGateにアップロードまでが自動化されるので端末確認までが非常に楽になると思います。
【Jenkins】ipaを自動生成する②(mac/Jenkins/Unity/GitHub/DeployGate)
概要
Jenkinsビルド→ipa作成までを自動で行えるようにする
今回は、Jenkinsビルド→Unityビルド(Xcode生成)まで
Jenkinsのセットアップは前回の記事
peachtea-tom.hatenablog.com
を参照
環境
Unity2019.3.13f1
Xcode 11.4.1
手順概要
Unityビルド処理の作成
public class BuildROM { // ビルド対象とするシーン static readonly string[] BUILD_SCENES = { "./Assets/main.unity" }; // 出力先 static readonly string PRODUCT_PATH = "Product"; // プロビジョニングファイルUUID static readonly string PROVISIONING_PROFILE_ADHOC = "11111111-2222-3333-4444-55555555555"; static readonly string PROVISIONING_PROFILE_APPSTORE = "6666666-7777-8888-9999-0000000000"; public static void BatchBuild(){ #if UNITY_IOS if( is_app_store_build ) { PlayerSettings.iOS.iOSManualProvisioningProfileID = PROVISIONING_PROFILE_APPSTORE; } else { PlayerSettings.iOS.iOSManualProvisioningProfileID = PROVISIONING_PROFILE_ADHOC; } #endif // ビルド var report = BuildPipeline.BuildPlayer( BUILD_SCENES, PRODUCT_PATH, BuildTarget.iOS, BuildOptions.None ); if( report.summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded ){ Debug.Log("[BUILD SUCCESS]"); }else{ Debug.LogError("[BUILD FAILED]" + report.summary ); } } }
BUILD_SCENES
PROVISIONING_PROFILE_ADHOC
PROVISIONING_PROFILE_APPSTORE
これらは適宜自分のプロジェクトに合わせて変更してください。
プロビジョニングのUDIDは
hogehoge.mobileprovision
をサクラエディタなりで開き、UUIDのkeyに設定されている文字列を指定します。
Unity PlayerSettingsの設定
Bundle Identifier:アプリのユニークなIDを設定(任意です)
Signing Team ID:プロビジョニングファイルに記載されているTeamIDを入力します。
Automatically Sign:チェックを外します。
シェルスクリプトからUnityビルド処理を実行
下記のシェルスクリプトをプロジェクトフォルダ内に入れておく。
今回はProjectフォルダのAssetsと同階層にBuildSettingsというフォルダを作成し
その中に、build.sh(下記シェルを記載したファイル)を作成
UNITY_APP_PATH="/Applications/Unity/Hub/Editor/2019.3.13f1/Unity.app/Contents/MacOS/Unity" PROJECT_PATH=$WORKSPACE UNITY_EDITOR_LOG_PATH=$WORKSPACE/build.log $UNITY_APP_PATH -batchmode -username ここにユーザ名 -password ここにパスワード -quit -logFile $UNITY_EDITOR_LOG_PATH -projectPath $PROJECT_PATH -executeMethod BuildROM.BatchBuild cat $UNITY_EDITOR_LOG_PATH
【Jenkins】ipaを自動生成する①(mac/Jenkins/Unity/GitHub/DeployGate)
概要
Jenkinsビルド→ipa作成までを自動で行えるようにする
今回は、Jenkinsのセットアップまで。
Qiitaやブログを漁ってみたけれど、バージョンが違ったりで躓くことがあったので
一番手軽であろう手順を残しておきます。
(2020/05/31)
補足:細かい説明は省いているので、
とりあえずmacでJenkinsをセットアップしたい。
という方向けにやることだけをざっとまとめて書いていますのであしからず。。
Jenkinsセットアップ
今回はMacのパッケージマネージャ
Homebrew(ホームブルー)
を使う方法で進める
Homebrewのインストール
上記公式サイトにあるように下記のスクリプトをターミナルに貼り付けて実行するのみ。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
ちなみにターミナルは、
Applications/Utility/Terminal
※アプリケーション/ユーティリティ/ターミナル
から実行できる。
OpenJDK8のインストール
Jenkinsに対応しているバージョンのJDKを入れる必要がある。
※2020/5月時点ではjdk8
$ brew tap adoptopenjdk/openjdk $ brew cask install adoptopenjdk8
Jenkinsのインストール
$ brew install jenkins
Jenkinsの起動
$ brew services start jenkins
Jenkinsが軌道出来たら、safari等でURL欄に下記を入力
> localhost:8080
初期パスワードの入力を求められるので下記コマンドで確認
cat /Users/{アカウント名}/.jenkins/secrets/initialAdminPassword
入力後、プラグインのインストール画面の確認が出るので
左のデフォルトセット(Install suggested plugins)をクリック。
インストールが終わればJenkinsの画面が立ち上がる…はず。
まとめ
次回はJenkinsビルドからUnityビルド(XcodeProject生成)までの流れを記載します。
peachtea-tom.hatenablog.com
【Unity】Coroutine管理システム?作ってみた
概要
- 全コルーチンの管理、制御が可能。
自前で回しているので、何が動いているのかの確認も勿論可能ですし、一時停止といったことも可能になっています。
- 速い&即時実行。
UnityのStartCoroutineと違い、フレームロスなく関数実行時に即実行されます。また処理速度も高速になっています。
- Editorでもそのまま動く。
Editorスクリプトからも処理を変えずにそのままコルーチンの実行が可能です。
【Unity】UnityCollaborate 使い方
個人製作するときに楽なバージョン管理システムって何だろう。とふと思い。
今までは、Subversionを主に使ってました。gitはちょこっとだけ。
個人製作レベルのモノに対して、わざわざローカルにリポジトリ作ったり、仮想サーバー立てたりはちょっと手間だなあと思い、、
そういえばUnity Collaborateをちゃんと触ったことがなかったので、使ってみました。
Unity Collaborate
- Unity専用(特化した?)のバージョン管理システム
- Unity上でコミットやRevertが可能。変更の可否もProjectビューで見れる
- ただし無料ではチームメンバーは3人、ストレージは1GB
※ストレージ容量はユーザー単位になっているようなので、複数プロジェクト持っているとすぐ一杯になる懸念
- Unity Cloud Buildと連携しているので、ライセンスがあればビルドまで楽にできる
Unity Collaborateの始め方
1. Unity Serviceのプロジェクト設定
Unity上部メニューにある
Window > General > Servicesを選択
ここでプロジェクトの作成 or 既存プロジェクトとの紐づけが出来ます。
初めてであればプロジェクト名をつけて作成をします。
2.Unity Collaborateの設定
Unityのメニュー内にCollaborateボタンが表示されるのでStartnow!を押下します。
これでUnityCollaborateが有効になります。
初めて有効にしたときには、自動で初期設定等がパブリッシュ(コミット)されます。
変更を加えた際には、こちらのボタンを押下することで変更内容をパブリッシュすることが出来ます。
3. Collaborateボタンが使えないとき
プロジェクトを設定してもCollaborateボタンが使えないことがあるようでした。
そんな時は改めて、Window > General > Servicesを選択し、各種サービスの設定を確認します。
CollaborateがOFFになっている可能性があるので、これをONにします。
ONにできないよ!と謎のエラーが出たことがありましたが、2,3回タブのONを繰り返したらONにできました。
※不思議
使ってみた所感
- パブリッシュしながらも作業を進められるのは良い
こちらがパブリッシュ中の画面になります。
バックグラウンドで処理されているので、アップしている最中もEditorで作業が出来ました。
作業が止まらなくていいですね。
- 変更履歴がEditor上で一目でわかる
自分がどこをいじったのかがEditor上ですぐ見れるのはいい点です。
いじったつもりのないところはここで右クリック > Collaborate > Revertで戻すことも出来ます。
まとめてパブリッシュするとうっかりあげちゃったパターンがあるので、逐一見えるのは大事ですね。
- Unity立ち上げ時に更新チェックが走り時間がとられる
プロジェクトを開いたときに"Cheking for Changing"というプログレスバーが表示される。
これがまあまあ時間がかかりちょっと億劫でした。
プロジェクトサイズが大きくなったらだいぶ時間かかるんじゃないかなあ…。
結論
実際のプロジェクトで使うなら、ライセンスは購入したほうが良いと思う。
世間一般の馴染みやすさでいうと、SubversionやGitを頼るのがベターかなと感じました。
逆に個人製作でやるレベルであれば、1GB制限やチーム人数制限はそこまで大したことではないので
気軽にバージョン管理するにはいいかもなと思いました。
まだ触って間もないので、もう少し使い倒してみようと思います。
実際競合した場合どうなるんだろう。とかは個人では測れないので難しいところですが。
【Unity】SoftBodyを作ってみた(NVIDIA Flex for Unity/ObiSoftBody)
柔らかいモノを作りたい
男たるもの誰しもが1度は考えるはずである。
ということで、UnityでSoftBodyを実装するにはどうすればいいのかを調べてみました。
今回はスマホをターゲットに検討
ざっと調べた感じの選択肢
NVIDIA Flex for Unity
NVIDIA FleX | NVIDIA Developer
- 流体
- 軟体
- 布
等の動きをランタイム上でシミュレーション出来るミドルウェア(無料!)
youtu.be
使い方は下記のサイトを参考にさせて頂きました。
めちゃ分かりやすかったです。ありがとうございます。
qiita.com
Obi SoftBody
assetstore.unity.com
youtu.be
有料ですが、半額セールの時に購入して試してみました。
使い方は公式ドキュメントを参照
Obi Physics for Unity - Rope Setup
所感
基本的な構成はNVIDIA Flexと似ているのでNVIDIA Flexを触った後だと入り込みやすかったです。
AssetStoreの紹介動画には柔らかいモノが載っていなかったので不安でしたが
サンプルシーンにはちゃんと入っていました。GalaxyS8での検証になりますが、数個球を出しても60FPSは維持できてたので処理負荷も最適化されていると思われます。
※全てCPUで処理をしているとのこと。
http://obi.virtualmethodstudio.com/tutorials/index.html
公式FAQ
Q.Does Obi run in the GPU?
A.No. The core physics solver runs 100% in the CPU. Only rendering is done using the GPU.Q.Can Obi be regarded as a fast simulator, for CPU standards?
A.Yes. It is extremely well optimized. A task-based multithreading scheme is used to split workload into evenly sized chunks. All the math-heavy routines are SIMD accelerated.
iOSはまだ試せていないですが、せっかく購入したのでこれで色々やってみようと思います。
球をぶつけて物体を凹ませることも出来るのでゲームの表現幅が広がりますね。
youtu.be
その他
Obi SoftBodyの他にもObiシリーズが出ているようで
- Obi Rope(ロープ表現)
Obi Rope | Physics | Unity Asset Store
- Obi Cloth(布表現)
Obi Cloth | Physics | Unity Asset Store
- Obi Fluid(流体表現)
Obi Fluid | Physics | Unity Asset Store
といくつか出ているようです。
紹介動画を見る限りどれも面白そう!機会を見つけて触ってみようと思います。
アップデートも細かく行われているようなのでこの点も安心できました。