ホーリーのプログラミング日記

ホーリーのプログラミング日記

エキセントリック・スーパーアプリクリエイター / アプリ総DL数 約180万 / 全然分からない 俺は雰囲気でアプリを作ってる / iOS : apple.co/3m3HxSm / Android : bit.ly/3ma0liZ

【自作アプリ第12弾】命の時間

 

命の時間ていう、カウントダウンアプリを出しました。これは誕生日や命日までのカウントダウンアプリですね。

 

命の時間 - Time of Life

命の時間 - Time of Life

  • Taro Horiguchi
  • ゲーム
  • 無料

 

 

実際の画面はこんな感じです。

 

f:id:gevvoihorry:20170413192608j:plain

 

死神がドヤりながら聞いてくるんで、自分の誕生日、またいつまでの時間を知りたいのか入力します。

(今のところ10年後の誕生日までOK)

 

f:id:gevvoihorry:20170413192552j:plain

 

するとその日までの時間を教えてくれるって感じです。

 

f:id:gevvoihorry:20170413192739j:plain

 

こんな風に命日までの時間も出ますね。

僕、あと17739日しか生きられないらしいです。日本人の平均寿命に照らし合わせると。か、悲しい。。

 

☆☆☆

 

このアプリを作ろうと思ったのは、メタップスの佐藤航陽さんが、同じようなものを使ってるって言ってたからです。

自分の誕生日までのカウントダウンアプリを使っていて、それを毎日見ていると。

僕も毎年自分の誕生日が来るのが早いなと思ってたんで、その時間を可視化しようと思い、これを作りました。

 

まあこれ、本当に簡単なものなんですよね。シンプルすぎるんで、全然ダウンロードされないんじゃないかと、今から心配していますw

(友達には、毎日開く理由がないって言われました。せめて占いでも付けてくれと)

 

まあまあ、でもよく考えたら、久しぶりの新作なので、テンションは上がってますよ。最近はiPhoneアプリAndroidに作り変えるだけでしたから。

また、Unityで初めて出したiPhoneアプリがこれになりますね。Androidは3本出してたんですが、iPhoneは初です。

 

これ作ったおかげで、Unityのドロップダウンメニューとか、時間の計算などが分かるようになりました。

これを他のアプリにも活かしていきたいと思います。

 

とりあえず、一回はダウンロードしてみてくださいね。それで自分の寿命を見て、愕然としてくれると幸いですw

今年のアプリ目標的な何か

 

何をするでも目標は大事っていうことで、今年のアプリ目標を書いてみたいと思います。

 

今年の目標はあれだ。

 

アプリを30本リリースするぞ

 

これ。これに決めました。いま。

 

えー、正月から今日までで3本リリースしてまして、今まさに4本目をリリースしようとしてるところなので、残り26本ですね。これを年内に達成しようと思います。

(この3本ていうのは、どれもiPhoneアプリAndroidに作り変えたものなので、本来ノーカウントなんでしょうが、SpriteKitで作ったものをUnityで作り変えるっていう作業だったので、ここはカウントさせていただきます。まあ別物ですしね。あれ)

 

しかし今が4月ってことは、今年は残り8ヶ月。んで26本てことだから、1ヶ月に約3本のペースでリリースするってことですか。10日で1本。

なんか無理ゲーっぽいし、今正月に書いた記事を見たら20本になってるので、近々下方修正するかもしれません。

(修正するときは潔くするので、温かい目で見てね。ハート)

新年の抱負的な何か - ホーリーのプログラミング日記

 

☆☆☆

 

しかし目標の立て方って人それぞれなんでしょうけど、僕は数字の目標じゃないと嫌なんですよね。それも自分でコントロール出来る数字じゃないと。

「アプリを頑張る」って目標だとザックリしすぎてるし、何よりゴールが分からない。

かと言って、「10万ダウンロードを目指そう」とか「毎月の収益10万円」とかは、自分でコントロール出来ることじゃないから嫌なんです。他人頼みの部分が多いですからね。

 

その点、リリース本数だけは自分の努力でなんとかなるから、いいんですよ。

30本は達成出来るか分からない数字なんであれですけど、こういう目標が好きですね。僕は。

 

まあガチで30行こうと思ったら、問題はアプリのネタでしょうか。何を作るでもそうなんですけど、内容を考えるのが大変ですよね。

例えば脱出ゲームを作るにしたって、謎解きを考えなきゃいけないし、アクションゲームを作るでも、各ステージを考えなくてはいけない。

これが最大のハードルだと思っています。

 

大声で言えないんですけど、人のアプリを露骨にパクるのも時間かかりますしね。

何にせよども時間はかかるっていうことです。

 

とりあえず恥かくことを忘れて、なんでもポンポン出していこうと思います。

アプリごとの結果が全然出なくても、ひとまず目標達成には向かってるんで、OKってことで。

 

今年のアプリ目標的な何かは、こんな感じですかね。

プログラミングに慣れるということは、すなわちエラーに慣れるということである

 

こないだよく分からないエラーがあって、検索してたらトップに自分のブログが出てきました。

ええ、どうも前にも同じエラーでつまづいていたようですね。自分の学習能力のなさにホッとしましたよw

 

んで、その記事はちょうど一年前くらいのものだったんですが、それを見てたら「こんな自分でも成長したんだな」と感じました。

具体的に言うと、プログラミングに慣れてきたと感じたんですよね。

 

んで、この「プログラミングに慣れる」っていうのは、どういうことだろうと思ったんですが、それは「エラーに慣れる」ってことなんですよね。そういう結論に至りました。

 

他の人のことは知らないんですけど、僕なんぞがコードを書いてると、もう山のようにエラーが出るんですよ。てか一回でちゃんと動くことが珍しいくらいで。

(たまに一回で動くとビビりますw)

 

まあみんな多かれ少なかれそうなんでしょうけど、本当の初心者の頃って、このエラーにやられるんですよね。

動かないことにテンパるし、さらにはどうやって解決すればいいのか分からないっていう。

 

僕も山のようにエラーを出すんですが、この一年で動じなくなってきました。

「ふっ、エラーですか。はいはい」みたいな余裕が出てきたんですよねw

 

これは、散々ぱらエラーを解決してきたことによる自信だと思うんですが、この状態こそ、プログラミングに慣れたって状態だと思うんです。

エラーに慣れている、んでそのエラーを解決できるって状態ですね。

 

今日までPHP→Swift→C#って順に学習してきたんですが、新しい言語に触れると、それだけエラーも出ます。またどうやって実装すればいいのかも分からないことが多いです。

でもエラーにだけは慣れてるんで、大丈夫なんですよ。そういう状態になりました。

 

最近、アプリ初心者の方から、ご連絡をいただくことが増えたんですが、僕から言えるのは1つだけ。「解決出来ないエラーはない」ってことです。

いや、もちろんあるんですよ。そういうときもw でも、その場合はやり方を変えれば大丈夫。

Aっていう結果を出すためにXっていう方法を取ろうと思ったんだけど、それが解決出来ないときは、XをやめてYにすればいいんです。

 

なんか抽象的な表現で申し訳ないんですが、初心者が作ろうとするアプリなんていうのは、基本的にシンプルなものだと思うので、そのやり方、ゴールに至るアプローチは沢山あるってことが言いたいんです。

 

まあとにかく最初の一本ですよね。それさえリリース出来れば大丈夫。なんかよく分からない自信が付いてますよ。

 

僕は最初の一本を出すまでに20回くらい挫折しそうになりましたけど、なんとか出せました。

難しい機能を実装するのはドンドン諦めて、とりあえず何かリリースすれば、状況は変わると思います。

 

エラーは山のように出るし、挫折しそうになることも何度もあると思うんですが、その試練を乗り越えた頃には、プログラミングに慣れてますよ。

とにかく、何かを最後まで作ってみることですね。それしかないと思います。

 

Done is better than perfect(完璧を目指すより、まず終わらせろ)

 

とりあえず作っちゃいましょう。これが成長への一番の近道ですから。

アプリを出すときはOS対応を広くした方がいい

 

こないだ知り合いっていうか、ツイッターで見かけた方がいたんですよ。初めてアプリを出したって方が。

僕の初めてのアプリっていうのは、「来世占い」っていう、もうクソを通り越して下水に流れてるようなアプリだったんで、興味を持ちダウンロードしてみようと思ったわけです。この方の処女作はどんな感じなんだろうかと。

 

そしたら、僕のiPhoneのOSが古いせいでダウンロード出来なかったんですよね。

なんでもiOS10.2だか、その辺じゃないとダウンロード出来ないって表示されちゃいました。

 

いやこれ、多分初めてゆえの凡ミスだと思うんですよ。僕もやったことがあるんですけど、リリースするときの対応バージョンを最新のものだけにしてしまうっていう、ケアレスミス

 

確かなんですけど、Xcodeだと初期設定がそうなってるんですよね。自分で変えない限り、幅広い対応にならなかった気がします。

んで、確か僕はiOS8から使えるように、いつもやってたはずですよ。

 

やってたはずっていうのは、今はUnityだからです。Unityだと、初期設定がiOS7なんですよ。

 

f:id:gevvoihorry:20170412181827p:plain

 

ここここ。このターゲットミニマムどーしましたってやつですね。

ここの数字が高いものになってると、ダウンロード出来ない人がいるんで、気を付けた方がいいでしょう。

 

僕もそうなんですけど、OSのバージョンを上げてない人って結構いるんですよ。

そういう人にアプリが届かないのはもったいない。

 

ツイッターでリプライ飛ばす勇気がなかったんで、ここに書いてみました。

 

気を付けた方がいいですよーw

アブラカタブラの難所を超えてきました

 

アブラカタブラってゲームを作ってるんですが、やっとプログラミングの難所を超えた気がします。

「油田採掘ゲーム アブラカタブラ」を作ります - ホーリーのプログラミング日記

 

自分の中の難所っていうのは、以下の3点でした。

 

① ライフ制の導入

② みんなのゴルフ風のインパクトゲージ

③ カードガチャシステム

 

ライフ制の導入

これは石油を掘るゲームなんですが、毎日少しずつ掘ってもらいたいので、ライフ制を導入しようと思いました。

一回プレイするごとにライフを1個消費して、そのライフは時間が経たないと回復しないってシステムです。

僕がやってるゲームだと「ツムツム」とかそうですね。アプリゲームには多いライフ制ですが、これを作りたかったんです。

 

色々とやってみた結果、なんかそれっぽいのが出来ました。

 

 

動かしてみてる感じだと、問題ないですね。恥ずかしいんですが、一応コードを貼っておきましょうw

 

【追記 2017.04.27】

ごめんなさい。下記のコードなんですが、これ盛大に間違ってましたw

その後に別のやり方で実装したので、詳しくはこの記事をご覧ください。

【Unity】バックグラウンドでも時間の経過を取得する方法 - ホーリーのプログラミング日記

 

using UnityEngine;
using System.Collections;
using System;

public class TimeManager2 : MonoBehaviour {

    int life;

    int addFlg = 0;

    DateTime startTime;
    DateTime nowTime;

    double seconddiff = 0;

    double minute = 0;
    double second = 0;
    double num = 5;


    // Use this for initialization
    void Start () {
        life = PlayerPrefs.GetInt ("LIFE");
    }
    
    // Update is called once per frame
    void Update () {

        if (life >= 0 && life < 5 && addFlg ==0) { //ライフがない状態
            startTime = DateTime.Now;
            addFlg = 1;

        }

        if(addFlg == 1){
            nowTime = DateTime.Now;

            seconddiff = (nowTime - startTime).TotalSeconds;
            seconddiff = Math.Floor(seconddiff);

            minute = Math.Floor((num - seconddiff)/60);
            second = Math.Floor((num - seconddiff)%60);
        }

        if (seconddiff >= num && life >= 0 && life < 5 && addFlg == 1) {
            life++;
            PlayerPrefs.SetInt ("LIFE",life);
            addFlg = 0;
        }

    }
        
}

 

みんなのゴルフ風のインパクトゲージ

みんゴル風のインパクトゲージを導入したかったんですよ。石油を掘ってると岩が出てくるんですが、そのときにこのゲージが出てきます。

んで、上手くインパクト出来ると、岩が壊れて、コインを獲得出来るってシステムです。

これはこのゲームで唯一技術介入があるポイントですね。湘南辻堂地区において、みんゴルの腕前がベスト20に入る僕だけに、このシステムも、どうしても導入したかった。

 

えー、結果はこんな感じ。

 

 

現状、自分でもジャストインパクト出来ないんですが、まあいいでしょう。

デザインを整えれば、いい感じになると楽観視していますw

 

カードガチャシステム

実はこれを実装するのが一番手間取りました。ガチャなんですけど、カードを引いていくんですよ。例えば1000コインで一回引けるんですが、引いてハズレの場合、次回はそのカードがオープンになってるって仕組みです。

下の動画を見ていただければ、なんとなく分かっていただけるかと。

 

 

9枚あるんで、9回引けば、必ず当たります。

ここで「動画を見るともう一回引ける」みたいなことにしたいんですよね。お金ほしいんでw

 

最後に

えー、こんな感じで、アブラカタブラの難所を超えた気がします。プログラミングの。

 

ただ、ここからが難しい。なんせあれですからね。

 

イラストが待ってますから

 

大嫌いなお絵かきの時間がやってくるわけですよ。ここからは。

いやー、憂鬱だわ。マジで。

 

四苦八苦した結果、現状はこんな感じになっています。

 

f:id:gevvoihorry:20170412180043p:plain

 

ああ、憂鬱だわ。。 

 

P.S.

ツイッターに貼ってある動画なんですが、どれも直撮りしてるだけあって、見にくいですね。しかもカメラ構えてる自分も映ってるし。

お恥ずかしい限りなんですが、凝視されなくていいかなと思っていますw

「いらすとや」さんのイラストはアプリに使えるのか

 

みんな大好き、フリー素材の「いらすとや」さんですが、もちろんこれアプリにも使えます。

かわいいフリー素材集 いらすとや

 

どうでもいい話なんですけど、僕が一番好きなイラストはこれなんですよ。

 

f:id:gevvoihorry:20170409161342p:plain

 

サイト内を「成金」で検索すると出てくるこれが、大好きなんです。いずれ何かのゲームで使おうと思っています。なんなら主人公でw

 

えー、それで「いらすとや」さんなんですが、よくある質問に、アプリ使用のことが書いてあるんですよ。

 

スマートフォン用のアプリに利用できますか?

問題ありません。ただし広告を掲載しているものや課金システムが導入されているものについては商用利用となりますので点数制限があります。

また「課金をすることでイラストやキャラクターが手に入る」といった形ではご利用できません。

 

「点数制限」っていうのは、以下のことですね。商用利用の場合は20点までしか使ってはいけないみたいです。それでも十分ですけどね。さすが太っ腹のいらすとやさんですよ。

 

イラストは何点でも利用出来ますか?

非商用目的の場合、点数に関係なく無料でご利用いただけます。

商用目的の場合、一つの作成物の中に20点までは無料でご利用いただけます。それ以上の点数をご希望される場合、有償で対応させていただきます。尚、重複したイラストや、ひらがな・カタカナ・国旗・単純な色違いでセットになったイラストなどについては、複数回使われてもまとめて1点として数えていただいて構いません。

 

また、イラストの一部を加工することも、ほぼほぼ認めているみたいです。ほぼほぼっていうのは、下品な加工はお断りってことです。以下の通りなんですが。

 

イラストの一部を加工して使うことはできますか?

問題ありません。ただし、過激な表現やグロテスクな表現、法的に問題のある表現など、素材の印象を著しく損なうようなことはやめてください。また、いらすとやのものと分からなくするための加工もご遠慮ください。

加工・トレースをしても素材部分の著作権は作者に帰属しますので規約に沿ったご利用をお願いいたします。

 

そしてそして、、、

 

取材はお断り

 

いらすとやさんは取材お断りなのでご注意くださいw

 

取材できますか?

苦手なのでお断りをしております。本当に申し訳ありません。 

 

アプリに使えるフリー素材って沢山ありますけど、やっぱいらすとやさんも王道ですよね。作風によっては、俄然使用させていただくのもありだと思います。

 

とりあえず僕は成金野郎で一本出しますよ。

【Unity】DropDown内にあるitem Labelのサイズを変更する方法

 

前にUnityのDropDownについて書いたんですけど、これちょっと間違いがありました。

UnityのDropDown(ドロップダウン)で値を取得出来るようになりました - ホーリーのプログラミング日記

 

この記事の最初に書いた「文字がぼやける」ってやつ。これDropDown内にあるitem Labelのサイズを変えればいいことに気が付きました。

 

f:id:gevvoihorry:20170409054015p:plain

 

このブルーになってるところですね。ここのフォントサイズを大きくすれば大丈夫です。

ただ、単純に大きくすると、文字を表示するための幅が確保されていないので、表示されません。

それはitemのheightを変更すればOK。

 

他にも上下の余白をContentで設定するとか、Scrollbarのwidthもあわせて広げたほうが自然になるとかあったんですが、まあこんな感じで対応することが出来ました。