47
Unityを使って1日で アプリを完成させる為には 株式会社 アイコック:木部 暁

【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

Embed Size (px)

DESCRIPTION

2014/6/27にTechBuzzSpaceにて行われた、第22回Unity勉強会での発表資料です。 ■勉強会詳細 http://atnd.org/events/50192

Citation preview

Page 1: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

Unityを使って1日で アプリを完成させる為には

株式会社 アイコック:木部 暁

Page 2: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

自己紹介• ファミコン世代ど真ん中(発売当初 小1)

• 中学生の時、マイコンBASICを写経し言語を学ぶ

• 趣味でプログラムやりながら色んなアルバイト転々(二十代は関東在籍。  故郷の長崎に戻ったらイントネーションはリセットされました…

• 1年程、ゲーム会社でプログラマを経験

Page 3: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

icocApps

• ICOCのゲームブランド icocApps

• 昨年10月よりゲーム開発事業部を設立

• 長崎の片田舎から世界にアプリを発信中

• 現在までにアプリを10作品リリース

Page 4: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

KING OF VEHICLES

WholeNewWorld

WholeNewWorld

Page 5: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

KING OF VEHICLES

WholeNewWorld

WholeNewWorld

5日間連続リリース

Page 6: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

5日間連続リリース• @ui_nyanさんの「素人が7日間クソゲーを作り続けてわかったこと」に触発

• ただ作ったら、2番煎じなのでアプリとしてリリースまでやってみよう

• 話題になってDL数が伸びるかも!?

• という事で、ブログで毎日記事に…

Page 7: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

アプリ内容

• 動画を御覧くださいhttps://www.youtube.com/watch?v=jvPiLwTHcAw

Page 8: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

総ダウンロード数

Page 9: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

総ダウンロード数

KING OF VEHICLES

WholeNewWorld

WholeNewWorld

28 33 59 1310 279

Page 10: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

大失敗 orz

• リツイートやお気に入りもわずかで、反響はほぼなし…

• 総収益は1000円ちょっと…

Page 11: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

得られたものあった• アプリ開発効率が少し上がった

• 前日とは違うものをというプレッシャーから、多彩なジャンルに挑戦できた

• メキシコ人が車ゲー好きだという事実を知った

• ここに登壇できた?(これのお陰かは不明…

Page 12: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

アプリ制作の工程

Page 13: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

の前に、前提 ①• 製作は全工程一人

• 製作開始から24時間以内にリリース※Google Playへの反映は登録から大体2時間位ストアの情報登録とかもあるので、実質3~4時間位はリリース作業に取られると考えておく

Page 14: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

の前に、前提 ②• 共用ライブラリ的なものは事前に用意※今回は、今までにリリースした三作で作成していたライブラリを元に作成

• 画像、音楽素材はフリー素材やAssetStoreを活用※流石に絵や音の製作も含めて一人日は厳しい

• 言語はC#

Page 15: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

製作企画 (設計) リリース

アプリ制作の工程

Page 16: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

企画+設計• 企画書がないと、勢いが止まった時に何をすればよいのか迷ってしまうので企画書は一応作る

• あまり深くつくっても完成させれないので、A4で1~2枚程度

• 時間ないし、企画書に設計も書いてしまえ

• バランスなども遊んでみて変えたくなると思うので、パラメータの種類だけ確定して、あとはなんとなく決めておく

Page 17: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」
Page 18: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」
Page 19: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」
Page 20: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」
Page 21: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

KING OF VEHICLES

Page 22: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

WholeNewWorld

WholeNewWorld

Page 23: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

WholeNewWorld

WholeNewWorld

Page 24: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

WholeNewWorld

WholeNewWorld

Page 25: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

WholeNewWorld

WholeNewWorld

Page 26: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

WholeNewWorld

WholeNewWorld

Page 27: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

製作

• とりあえず、余計なことを考えず企画のとおりに作ってみる

• 調整は完成後補正していく

• 個人的には画面遷移やUIは後半にやるのはしんどいので、先に作っておいたほうが楽だった

Page 28: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

リリース

• あと一息!提出すれば、とりあえず2時間は寝れるぞ!!

• っと思ったけど、ブログの更新などもあり、結局睡眠時間には使えず…

Page 29: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

製作効率を上げるために

Page 30: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

効率を上げれそうな項目 - コーディング -

• 迷う時間を減らす

• 繰り返し利用するパターンはライブラリ化

• ライブラリ部分や、よく使うものをpackage化

• 宣言はvar

Page 31: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

効率を上げれそうな項目 - 環境 -

• マルチディスプレイで効率1.2倍!?

• フリー素材、AssetStoreの利用 (※今回は言及しません

Page 32: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

各項目の例を挙げます

• あくまで例です。個人的な習慣でやりやすいという面もあるので、順序や範囲、規則等は自分なりの枠で変更したほうが更に効率が上がると思います。

Page 33: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

迷う時間を減らす①

• 関数名、プロパティ名はどうしようかな?→命名規則を確定しておく・関数名は大文字から始める・privateプロパティは_(アンダーバー)から始める ・状態を確認する関数はIsState、スキルを持ってるかはHaveSkill等、基本的に動詞を頭に

Page 34: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

迷う時間を減らす②• あの関数どこに書いたっけ? →関数を記述しておく位置を決めておく publicプロパティの後に、privateプロパティその後メソッド、最後にStart、Update等のメソッド等 →C#であれば、各まとまりを#regionでくくる →クラステンプレートに#regionをつけたものをダミークラスとして、プロジェクトに追加しておくと便利 →テンプレートサンプル紹介

Page 35: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

繰り返し使うパターンは ライブラリ化①

• Buttonクラス- ボタンはオブジェクトにButtonクラスとCollisionを付加するだけでボタンとして挙動- 詳細処理はこのクラスを継承して、OnMouseOverの挙動をOverride- 押下時のアクションは、位置を右下にずらすという処理で、汎用的に実現- 効果音もアタッチできるように

Page 36: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

繰り返し使うパターンは ライブラリ化②

• Transform関連の拡張- 位置、サイズ等はVector3を別に作って再代入しないと行けないので、TransformをExtentionsで拡張して、簡単な関数で手続きできるように

Page 37: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

(例)X位置だけ変更

public static void SetPosX (this Transform me, float val) { var newPos = me.transform.position; newPos.x = val; me.transform.position = newPos; }

transform.SetPosX(_firstTransform.position.x);

• 定義

• 利用

Page 38: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

ライブラリ部分や、よく使うものをpackage化

• Assets > Export Packageで簡単にpackage化が可能

• 必要部分のコピペでも良いが、package化しておくと、ダブルクリックだけで、フォルダ構成を保ったまま追加できるので楽

Page 39: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

宣言はvar• var pos = new Vector3(0,1,0);

• var no = 1;

• var waitSec = 1.5f;

• C#の場合、変数宣言は、型名を書かなくても var としておけば、代入文から推測して型を保管してくれるので、とりあえずvarと書いとく※ローカルスコープ内でしか利用できないので、 クラスのプロパティとしては利用不可

Page 40: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

マルチディスプレイで効率1.2倍?• MonoDevelopとUnityをそれぞれのディスプレイに表示しておけば、アプリの切り替えが不要

• コード書くときも、MonoDevelopと別のディスプレイにWebのサンプルコード等を表示させておけば、コピペが超楽

• MonoDevelop側のディスプレイは縦表示できるものがオススメ!!(PDFもA4サイズが実寸で見れたりする)

• 計測はしてないが体感的に1.2倍くらいの効率は上がってる気がする

Page 41: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

ASUS VG248QE

Page 42: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

まとめ

Page 43: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

効率アップは 細かいことの積み重ね

• 効率を上げる方法は色々あるけど、それぞれを積み重ねる事で、全体としてのスピードアップを測る

• C#の書き方を覚えるだけでかなり短縮できたり、スマートに書いたりできるので、C#のtips本は 多読をオススメ

• 個人的に一番為になったのはEffective C# 4.0

Page 44: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

連続リリース…• 5日目はリリース自体は24時間以内に間に合わなかったが、全てのアプリは24時間以内に完成はできた

• かなり苦し紛れの作品も生まれるが、アイデアの種も随所に生まれるので、次につなげていける (レースは普段やらないが、車のゲームが出来た

• しかし、この後インフルエンザにかかって、一週間欠勤…

Page 45: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

という事で、

• 結局無理したつけは回ってくるので 体を大切にしましょう…

Page 46: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

続きはWebで• Unityゲーム開発日記@長崎でちょこちょこ技術情報をアップしています

• 「Unity日記」でググれると思います

• 今後も長崎のゲーム産業発展の為にがんばりますので、よろしくお願いします→ハウステンボスに「ゲームの王国」誕生!!

Page 47: 【#TechBuzz】第22回Unity勉強会 「Unityを使って1日でアプリを完成させる為には」

ご静聴 ありがとうございました

• Unityゲーム開発日記@長崎http://icoc-dev.hatenablog.com/→本日のスライドはこちらに掲載予定です

• twitter@nagasaki_ent