FreelyApps

個人によるアプリ開発の日記です。アプリの収入だけで生活できるようになるのが目標です。UnityでAndroid向けのゲームアプリを作成しています。


    アプリ『トランプ・7並べ』を公開しました。
    Android/iOS https://goo.gl/zsFces

    タグ:ツール

      このエントリーをはてなブックマークに追加 Clip to Evernote
    作業時間計測するためのアプリを作成しました。アプリ名はMeasureTimeです。

    エディター上ですが、動作を録画してみたのでご覧ください。
    mt
     
    5つのボタンが用意されていて、タイトルと累積時間がそれぞれのボタンに表示されています。ボタンを押すとタイマーのOn/Offが切り替わります。ストップウォッチと考えるとわかりやすいと思います。
    アプリの中断や終了時に時刻を保存しているので、再開時に経過した時間も足されます。(On状態になっているボタンのみ) 

    Editボタンを押すと書くボタンについて編集することができます。
    タイトルの設定、時間の修正、時間の初期化、全部初期化が可能です。これくらいあれば便利かと思ったのを入れてみました。時間の上限は表示から推測できそうですが、99d23h59m59sです。 つまり100日分です。2400時間を超えるものを考えていません。

    右上の歯車は全体の設定です。一応ボタンを押すとSEが鳴るようにしてあって、それを消すことが設定できます。全体に関わることがあればここに追加していくというところです。 


    需要があるなら公開しようと思っています。 
    さっそくこの記事を書くときに使っていて、これにかかった時間は約18分でした。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    作業時間を計測する」で作業時間計測用のアプリを作ると言っていたので、現在作成中です。

    核となる時間を測ることについてはいくつかの問題を解決したので、後は細かな機能を追加するくらいで完成しそうです。
    アプリケーションのポーズ時(Androidのナビゲーションバーによりアプリが中断されてしまう時)にその時刻を保存してやらないと、中断から復帰したときに経過した時間がわからなくなってしまいます。 この経過時間分を加算することで時間を正しく測ることができるようになります。
    またアプリを終了させた場合、次にアプリを起動するまでの時間がわからないと正しい時間を測れなくなります。
    この2点を解決すれば、時間を測ることができます。解決方法は特定のタイミングで時刻を保存しておくことです。

    時間計測部分を作ったところです。ボタンをタップすると計測の有効/無効を切り替えることができます。自分で使うように作っているので、なるべく楽なものにしたつもりです。5個までしかボタンがないのは、同時に測りたいものが5個もあることがないだろうからです。
    これが2日前くらい前の状態です。
    mt

    現時点の状態です。
    Editボタンの機能を入れてみました。色々な機能はEditボタンを押したときにウィンドウが開き、その上で設定するようにしています。最も重要な機能はストップウォッチ機能なので、それはボタン上で直接できるようにしたかったためです。
    タイトル、時間のリセット、全部リセットの機能を作ってみました。後は時間の直接編集機能があれば十分かなという感じです。
    mt2

      このエントリーをはてなブックマークに追加 Clip to Evernote
    アプリが完成するまで多くの作業時間が要ります。どれくらいかと言えば十時間くらいから数百時間までと範囲が大きいです。作りたいものが大きかったり、一から作るのであれば時間がかかります。

    この作業時間を見積もったり、終わった後(ある程度の区切りですね。リリースしたとかアップデートしたとか。)に
    どれくらいの時間がかかったかというのを調べるのは難しいです。
    作業時間の見積もりが難しいのは必要となるものが全て明らかでなかったり、実際にやってみたときの問題の発生回数などで時間が足りなくなるからです。またゲームでは作り直しがあり得るためです。
    終わってからかかった時間がどのくらいなのか調べるのが難しいというのは変な気がします。自分がやったことを覚えていないのかという声がありそうですが、事実そうなのです。1日2日でできるものではないし、作業時間が一定でないとどれくらいかかっているかわからないのです。

    作業時間を測るのが重要なのはどれくらいのコストがかかっているかを知るためです。コストと言っても自分の時間ですが、結局これはお金であり命です。払える量は限られているので、どれくらい使っているかを知っておく必要があるのです。

    時間を計測する簡単なものがないかと調べてみたのですが、あまり使いやすそうなものはなくAndroidについていたストップウォッチで測るかとも考えました。タップでスタート/ストップするだけで非常に使いやすいのですが、長時間は測れないので駄目でした。
    仕方ないので自分で適当なアプリを作ってみようかと考えています。
    貯金をするのに貯金箱を作るところから始め、貯金箱ができてから貯金を始めようというような感じです。

    UIをちょっと組んだところですが、いまはこんな感じです。
    mt
     

      このエントリーをはてなブックマークに追加 Clip to Evernote
    5.2以前ではVisual Studioを使うにはどうなっていたかというと、非常に手間のかかるものでした。
    Visual Studioは使いたい人は自分でVisual Studio Tools for Unity(VSTU別名UnityVSらしいです。)をインストールし、専用のアセットをインポートします。Preferenceの設定が変わってしまうために他のプロジェクトを使う時にいちいちPreferenceの設定を戻したり、アセットをインポートしてVisual Studioが使えるようにしなければならなく面倒です。
    大したことのないことですが、忘れるとうまく動かず「あ~設定し忘れた~」 みたいなことになります。不便なところがあると使いたくなくなるものですし、大勢で開発しているなら結構大きな問題になるでしょう。

    5.2になりVisual Studioが標準的なエディターになるようです。(MonoDevelopは相変わらず付属しています。MacとかLinuxとかありますしね……)これにより改善されていることがあります。
    連係のために必要だったアセットのインポートが不要になります。つまり、インストールするだけで使えるということです。(古いプロジェクトで既にVisual Studioを連携させていた場合アセットのインポート時にUnityVSというフォルダができていたはずです。これは不要になったので消してください。)インポートがなくなったことにより自分の好きなエディターを簡単に使えるようになり、切り替えも自由に行いやすくなりました。(2013と2015の切り替えがPreferenceの設定だけでできます。)
    これについては英語のドキュメントに言及されています。プロジェクトフォルダ内のVSTUではなくVSTUのインストールフォルダから自動で読み込むようになっているらしいです。

    Visual Studioをエディターとして使うにはPreferenceの設定を変更します。External Script Editorの設定を使いたいVisual Studioにします。(下の画像では2013を設定しています。2015でも構いません。)Editor Attachingのチェックをつけておきます。Unityでの設定は以上です。
    v2013
    デバッグの方法は以前と同じですが、うまくいかない場合は「Unity5.2でVisual Studioでデバッグする」の記事を参考にしてみてください。

    Unity Project Explorerがいつのまにか追加されました。
    upe
    Unity Project Explorerを表示に追加することができます。これによりUnityのフォルダ構成をVisual Studioでも表示できるようになりました。Solution ExplorerだとEditorフォルダやPluginsフォルダ等があるといくつかの(Visual Studioの意味で)プロジェクトにわかれてしまい見にくくなります。Unity上と同じように見えると違和感なくVisual Studio上でも作業できるでしょう。
    VSの機能のSolution Explorerでの表示だといくつかのプロジェクトにわかれて表示されます。ビルドしたときのdllごとにプロジェクトがわかれているようです。下の画像だと、Unity.CSharpがC#のスクリプト、Unity.CSharp.EditorがC#のEditorスクリプト、Unity.CSharp.Pluginsがプラグインになります。
    sol

    下のようにUnity Project Explorerの見た目はUnity上のプロジェクトブラウザーの構成と同じです。フォルダが同じになったことでどこにスクリプトがあるのかわかりやすくなります。
    upes

    デバッグ時にブレークポイントで自動的にVisual Studioに移り、処理を抜けるとUnityに戻るというようになっていました。これはいちいちツールを選択しないで流れるように作業ができるので楽です。 たまに反応しないことがありますが……

    今やUnityのスクリプト用の言語はC#ですね。メニューに表示されるボタンにもC#と書いてあるようになりました。 
    opc

    Unity Script(Unity用にJavaScriptを拡張したプログラミング言語)は消えていく運命にありそうです。IL2CPPがあるのでむしろC++が使えるようになる気もしますね。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    UnityとVisual Studioを連携させる」という記事ではUnityでVisual Studioを使ってデバッグができるということを書きました。その時はUnity4.6とUnity5.0での内容だったため、Unity5.2とは大分やり方が異なっています。今回は5.2でVisual Studioを使えるようにする方法について説明します。
    私は以前からVisual Studioでデバッグしていたのですが、今回Unity5.2にアップデートしたところデバッグができなくなってしまいました。後で詳しく書きますが、原因としてはVisual Studio Tools for Unity(VSTU)のバージョンが古かったためでした。スクリプトの編集はできていたので、デバッグもできるだろうと思いこんでいてはまりました。Unity5.2にアップデートしたら、自動でVSTUのバージョンアップしてくれればいいのですが、そうはなってくれませんでした。



    以前からVisual Studioを使っていた人は既にVSTUがインストールされているでしょうからアップデートが必要です。使いたいVisual Studioに対応するVSTUのバージョンアップをしてください。Unity5.2ではVSTUの2.1を要求するので、それ以降のバージョンでないとデバッグできません。(編集は可能ですが、デバッグができません。) VSTUのインストーラをダウンロードして、インストールすると正しく動くようになるはずです。

    none 

    on
    Help->About Unity...を開くと、デバッグできない場合は上の図のように表示されていると思います。正しいバージョンのVSTUがインストールされている場合は下の図のように表示されます。 このようになっていれば、Visual Studioでデバッグできます。

    デバッグの方法は
    buatt
    このAttach to Unityボタンを押してUnityで再生することでできます。

    もしくはDEBUGを選び、
    attau
    メニューからAttach Unity Debuggerを押すと、Select Unity Instanceというウィンドウが開かれます。
    sel
    このウィンドウで対象となるものを選びOKを押します。Unityで再生を行えばデバッグが可能です。

    Attach to Unityボタンを押す方が簡単なので、そちらを利用する方が普通だと思います。 


    新しくUnity5.2から始める人はUnityのインストール時にVisual Studioも入れるか設定できます。VSTUも入るのだと思いますが、試していないのでそれについてはわかりません。
    Help->About Unity...を開いて、VSTUが正しくインストールされているか確認してください。
    520p
     


    MicrosoftのページでVSTUについての記事があったのでリンクを載せておきます。英語ですが、詳しく説明が載っています。
     「Unity 5.2 and Visual Studio Tools for Unity 2.1」と「Native support for VSTU 2.1 in Unity 5.2」が参考になると思います。

    デバッグできない人には「Native support for VSTU 2.1 in Unity 5.2」の一番下にあるChecklistが役に立つので訳しておきます。

    Visual Studioを使用する手順のまとめ
    • Visual StudioとVisual Studio Tools for Unityのバージョン2.1をインストールします。
    • 以前からVSTUを使っている場合、Unity上でUnityVSフォルダがあるはずなのでそれを消します。
    • Unity上でPreferenceのExternal Script Editorを使用するVisual Studioに設定する。
    • Unity上でAbout Unityウィンドウを開きVSTUが有効になっているか確認する。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    音楽ファイルはフリー素材を使うことがあるのですが、ゲームに使う上で困ったことがありました。それは先頭部部分に入っていた無音です。

    mp3やwavといった音楽ファイルの先頭に無音の部分が入っていることがあります。作る都合上発生するのか、何らかの理由があってそうなっているのかわかりませんが、そのようなものが存在します。

    この無音部分はゲームで使う上で面倒です。ボタンを押したときのSEなどレスポンスが要求されるUIにおいて頭に無音があるSEを流してしまうと、反応が悪く感じられます。少し遅れて再生されるような印象なので、ずれていて一度気になると気持ち悪いものです。

    下のように左端から少しの間無音になっていのがわかります。
    ほんの0.1秒くらいですが、再生するとわずかに遅れる感じがします。

    nosound

    Unity Editor上の画面でも無音部分があることを確認できます。
    調べたい音声ファイルを選び、インスペクタ―の下の方にあるプレビュー画面を見ると波形が表示されています。左側の方を良く見ると、波形が一直線上になっていて無音であることがわかります。
    pre-nosou

    解決方法は2通りあります。
    素材を加工して無音部分を削除する方法とプログラムで再生開始位置をずらす方法です。

    素材を加工するにはその素材が加工しても良くなくてはいけません。フリー素材といっても商用利用が可能なのか作者の情報を載せることが必要なのかといった利用規約についてはそれぞれ異なるため、必ず確認しましょう。加工可能と明記していない素材である場合は、作者に連絡するか使わないのが賢明です。

    素材が加工して良ければ、Audacityというフリーのツールを使って無音の場所を消します。Audacityは色々なファイル形式に対応しているのですが、MP3、WAV、Ogg Vorbisに対応しているのが非常に使いやすいです。
    どのような音楽ファイル編集ソフトでも大抵切り取りは入っているようなので別の編集ソフトを使っても同じ作業はできます。

    編集作業は先頭部分の無音と思われるところを選択して、削除するだけです。Audacityでの編集操作をgifでキャプチャーしたので下の動画を見れば操作がわかると思います。
    無音の領域を消した後に「オーディオの書き出し」というコマンドを選び、保存することで修正を行った音楽ファイルが得られます。

    pre-nosou


    もうひとつの解決方法のプログラムでやる場合は、マニュアルに載っているようにAudioSource.timeに再生場所をセットした状態でAudioSource.Playを呼びます。こうすると自由に再生位置を変えられるため、素材を変更しなくても無音を飛ばして再生することができます。 
    私の場合はSEの再生にAudioSource.PlayOneShotを使っていたので、AudioSource.timeを変更しても再生位置を変えることができませんでした。おそらくはAudioSource.Playだけが設定を反映されるのでしょう。

    プログラムで無音をなくす方法はお勧めしません。調整が非常に難しく時間がかかってしまいます。リソースを編集する方法は専用のツールということもあり、意外と簡単に精度良く加工できます。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    PCの操作を撮影したいことがあります。それもそんなに大容量なファイルに書き出さないようにしたいときです。具体的な例で言うと、TwitterにPCの操作画面を載せるときなどです。Twitterは3MBまでの容量制限があるので、普通の動画ファイルをアップすることは無理なことが多いです。
    要望を満たすスクリーンのある範囲を軽いファイルで録画できるフリーソフトを紹介します。

     以前、ロイロゲームレコーダーを使い動画を撮ることを記事にしました。ゲームプレイの動画を撮る以外にも操作しているウィンドウの録画ができるので、PCの操作画面も撮ることができます。
    スクリーンのある範囲を録画しているわけではないので、下のように複数の異なるソフトを同時に撮るといったことはできません。
    mulwin

    画面上のある範囲を録画するレコーダーは、スクリーンレコーダーとかで検索すると見つかると思います。私が使っているソフトは、ScreenToGifというものです。
    ウィンドウの枠だけのような見た目のソフトでこの枠がそのまま録画できる範囲を表しています。ウィンドウのサイズと位置を調整したら、Recordボタンを押して録画できます。簡単に録画ができるのがすごく便利です。

    stg

    録画をやめたくなったら、Stopを押して録画終了です。終了後には下のような編集画面が開きます。色々な編集ができますが、特に何もせずDoneを押せばそのまま録画がGifとして保存されます。操作画面を撮っていると、動画の初めと終わり部分はいらなかったりすることが多いのですが、ScreenToGifではある時点の前もしくは後ろを全てカットする機能があり簡単に邪魔な部分を消せます。

    stgedit

    GIFファイルは画像なので、音声を入れることができません。操作中の音を入れたいという場合はこのツールでは対応できないので、その場合はロイロゲームレコーダーを使うとか他のツールを使う必要があります。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    DDMS(Dalvik Debug Monitor Server) を使うとログが見れます。
    端末での実行時に起こったことが見れるので、特にエラーが出ていないかを調べるときに重宝します。

    Android SDK をインストールしてSDK Manager からいくつかのツールが落とせますが、その中の一つです。たぶんAndroid SDK Tools を入れておけばDDMS が使えたと思います。

    Android SDK をインストールしたフォルダにtools というフォルダがあるはずです。その中のddms.bat をダブルクリックで実行するとDDMS が起動します。端末をUSBケーブルでつながないと情報は見れませんので、それだけ注意してください。

    実行画面は次のような見た目です。

    ddms-window
     

      このエントリーをはてなブックマークに追加 Clip to Evernote
    以前書いた『UnityでVisual Studioを使う』よりも進んだ内容です。
    具体的にはVisual Studioでデバッグできます。ブレークポイントをVisual Studioで設定して、Unityでゲームを実行するとブレークポイントにひっかけることができます。

    MicrosoftのこのページにVisual Studio Tools for Unity(VSTU)というものがあります。
    これがUnityとVisual Studioを連携させるためのツールです。

    Visual Studioのバージョンによりダウンロードするべきファイルが違います。
    対応しているバージョンは以下の4つです。
    • Visual Studio 2015 Preview

    • Visual Studio 2013

    • Visual Studio 2012

    • Visual Studio 2010

    ただし、Visual Studio Expressという無償版は対応していないそうです。
    私は2010 Expressを使用していたので、今までこのツールを使えなかったのです。

    しかしながら、Visual Studio Community 2013 において個人開発者であれば、これを無償で使えるということになりました。Visual Studio Community 2013は機能の拡張ができます。つまり、個人開発者であれば、Visual Studio Tools for Unityが無償で利用できるということです。

    まずVisual Studio Community 2013をここからダウンロードします。
    ダイアログに従ってインストールを行います。(かなりの時間がかかります。30分~1時間程)

    2013用のVSTUをここからダウンロードします。
    これもインストールします。

    Visual Studio Community 2013とVisual Studio Tools for Unityのインストールが終われば、もう少しでUnityとVisual Studioを連携させることができるようになります。
    UnityのメニューのAssets->Import Packase->Visual Studio 2013 Toolsを選んでください。(どうもUnity5になってからはメニューの表示がなされないようです。C:\Program Files (x86)\Microsoft Visual Studio Tools for Unity\2013にVisual Studio 2013 Tools.unitypackageがあるのでダブルクリックしてインポートするかメニューからインポートするファイルを指定してインポートしてください。)
    インポートができると、プロジェクトビューにUnityVSというフォルダができます。
    ここで一度Unityを終了させます。再起動しないとEditorスクリプトが反映されません。

    メニューにVisual Studio Toolsというものができます。
    Open in Visual Studioを押せば、Visual Studioでスクリプトの編集が可能です。

    Visual StudioにAttach to Unityというボタンが出ているので、それを押すとUnityの実行時にブレークポイントを利用できます。このあたりの使い方はMonoDevelopと似てます。

    最後に重要なこととして、VSTUをインストールするとUnityのPreferenceを設定されてしまいます。
    デフォルトのエディターとしてVisual Studioが設定されるので、プロジェクトにVSTU用のパッケージのインストールが必須になります。Visual Studioを使ってみようかなという程度の人は、まずはVSTUではなく『UnityでVisual Studioを使う』で紹介したVS用のプロジェクトファイルを生成するのを試した方が良いと思います。その上でVisual Studioを使い、MonoDevelopはもう使わないというのならVSTUをインストールしてください。



    Preference->External ToolsのExternal Script EditorをMonoDevelopに設定するとエディターをMonoDevelopに戻すこともできました。

    その後、エディターにVisual Studioを設定するには、画像のようにすると再度戻りました。
    External Script EditorをUnityVS.OpenFileにし、External Script Editor Argsをに"$(File)" $(Line)します。
    VSpreference.png



    (Visual Studio 2013 Language Packをインストールして日本語の表示にしたかったのですが、インストールが終わらなくなってしまいあきらめました。Language PackがなくてもVSTUは動いたので、良しとしました。)

      このエントリーをはてなブックマークに追加 Clip to Evernote
    apkファイルというのはAndroidのアプリを作ったとき、最終的に出来上がるファイルのことです。
    このファイルをDeveloper Consoleで登録することでアプリを配信することができます。

    中身はアプリのプログラム、画像、音、AndroidManifestなどが含まれています。
    AndroidManifestというのはAndroidのアプリでは重要なファイルです。
    xml形式で書かれたアプリの設定をまとめたものです。
    このAndroidManifestの設定で起動する画面を決めたり、権限を割り当てることができます。

    アプリをビルドしてapkファイルができたとき、AndroidManifestが正しく設定されているか確認したい時があります。
    Unityを使っている場合は、AndroidManifestをプラグインのために使用すると最終的に出来上がるマニフェストファイルがどうなるか分かりにくいです。Project Settingsで指定したAndroidManifestのための設定とファイルとして存在するAndroidManifestがマージされるのです。
    AndroidManifestが正しくないとアプリが動かないこともあるので、どうなっているか確認したいわけです。



    apkの中にあるAndroidManifest.xmlの確認方法は以下の通りです。

    apkファイルを用意します。XXXXX.apkのような名前だとします。
    apkという拡張子をzipに変えます。
    そうすると解凍することができるので解凍します。(Windowsならダブルクリックするだけ)

    解凍したフォルダにAndroidManifest.xmlというファイルがあるはずです。
    これが見たいファイルなのですが、バイナリになっています。
    このままだとわかりづらいので、xmlのバイナリ形式をテキスト形式にしてくれるツールを使います。

    AXMLPrinter2.jarというツールをまずDLします。
    置き場所はどこでも良いので、自由においてください。

    java -jar (AXMLPrinter2.jarのパス) (バイナリ形式のxmlのパス)
    というようにしてツールを実行すると、テキスト形式になったxmlが表示されます。



    コマンドを実行するのが良く分からない場合は、
    AXMLPrinter2.jarをデスクトップに置き、見たいAndroidManifest.xmlもデスクトップに置きます。

    アクセサリ->コマンドプロンプトを選択し、cdコマンドでデスクトップに移動します。
    その場所でjava -jar AXMLPrinter2.jar AndroidManifest.xml > output.xml
    を実行すればoutput.xmlがテキスト形式のマニフェストファイルになっています。

    このページのトップヘ