週刊SleepNel新聞

SleepNel所属のぽうひろが日々の個人開発で気になったことを綴ります。

2022年ふりかえり

みなさん、こんにちは。ぽうひろです。

前回の記事が2021年の振り返りなので、1年に一回のエントリになっております。

このままでは週刊の名がすたるので、来年は1ヶ月に一回は記事をかけるようにがんばります・・・(タイトルは変えないのね)

過去記事
sleepnel.hatenablog.com


さて、例によって2022年も激動の1年だったわけですが、今年も色々とございました。

まず、一番大きかった出来事が、

会社員になりました✨

もともとシステム開発会社の社員を10年前にやっていて、そこからずっとフリーランスを10年やっていたわけですが、ついに会社員になることにしました。
といっても特別な決意とか想いとかがあったわけではなく、以前ご一緒していた方が社長をやっているベンチャーの会社に入るので勝手がわかっていたので不安とかもあまりありませんでした。
強いて言えば不安なポイントとしては、収入・会社という謎の箱へ対する恐怖・未経験言語(Python)への挑戦、などがありましたが、1年やってみてこれらは解消されつつあります。

収入への不安

やはりこちらが一番の不安でしたが、自分が10年間フリーランスやってきて「最低これくらいあれば生活できる」という条件は了解いただけました。
正直、「最低限」の額なので余裕があるかというとまったくないのですが、この会社は「副業を推奨している(応援してくれる)」ので、自力で余裕分はなんとかできるかなと判断しました。
実際に社員のなかでは副業もみなさんきっちりやられているようなので、一人の社会人として認めてくれているいい会社だなあと感じています。

会社という謎の箱へ対する恐怖

こちらは、私が会社員だったときに辞める理由となったものです。
システム会社時代は、客先に5年以上常駐しており、自分がどこの会社に在籍しているのか、わからなくなったものです。大きな会社で社員数も1000人以上いたとおもいます。
違う部署の人間など全くわからず、おれここにいる意味あんのかなあとずっと考えたりしていました。
新しい会社はまだ30人ほどの社員数で全員の顔と名前がわかります。そして全員バイタリティ溢れており、性格もめちゃくちゃいい人ばかりです。
誰か何かにトライすると、みんなで褒める文化があります。失敗してもナイストライと称賛する文化があります。
自分の存在を無条件で認めてくれる。本当に家族のような存在がありました。
会社にもこんなところがあったんだと、10年前の自分に言ってやりたい気分です。

こんな会社ですが、ベンチャーなので当然、将来の上場を目指して規模を拡大中です。
願わくばこんな居心地のいい会社のままでいてほしいな・・・・と思うばかりです。

未経験言語(Python)への挑戦

会社では開発言語はPythonが使われています。ずっとJavaとUnityではC#な私(4○歳)にとってはちょっとしたチャレンジです。
最初の半年くらいはなかなかキツかったのですが、「Pythonチョットデキル」くらいにはなったので、引き続き仕事できそうな雰囲気ではいます。
特にFastAPIというフレームワークに出会い、印象も慣れもガラリと変わりました。
これなら(フロントは別として)バックエンドだけなら副業でも使いたいなくらいの便利さを感じています。いつもはJavaなんですが、素早く作れるとこがとても気に入っています。

と、こんな感じで会社員生活1年目は総じていいことづくめでよかったです!!

手術をして高血圧が治りました!!

今年の大きな出来事の2つ目はコレ。ご存じの方は多いとは思いますが、今年の1月頃に病院にいったら血圧210近辺を叩き出してしまっていました。
最初は食生活が悪いのかなとバナナとか塩分控えたりとかしてたんですが、どうもそういうことじゃなかったようです。
ちゃんと診断をうけると「原発性アルドステロン症」という病気でした。
どういうものかというと、血圧をコントロールしている「副腎」という臓器に腫瘍(良性でも)ができ、血圧を上げるホルモン(アルドステロン)が過剰分泌される状態になる病気です。
手術をうけるまでに検査やら(本当にこの病気なのか、左右どちらなのかなどを調べる)で半年を要し、結局手術は9月とかになってしまいました。
人生初の全身麻酔とかいろいろ得難い経験をしました。
いやあ、眼が覚めたら手術終わってたすごい。あと、眼が覚めたらやっぱりお腹に4個穴があいててめっちゃ痛かった(すぐに麻酔追加してくれたけど)
この病気はお医者さんにいかないとわからなかったし、200越えってちょっと手遅れだった感もありますよね(お医者さんには救急車ものだって言われた)
この病気は高血圧の人の10%くらいが該当するらしく、多いのか少ないのか(自分は多いと感じた)わかりませんが、ちゃんと診断がついて手術で治せてよかったな。。。と思いました。
もういい年なので、異変に気づいたらちゃんと病院にいこうと思いました・・・(けど血圧高くてもあまり体調に変なところはなかったし、今回は本当に運ゲーだった)

5年前から熱望してた(ほぼ)フルリモートが気づいたら実現してた

sleepnel.hatenablog.com

5年前の記事・・・・

この会社は全国に優秀なメンバーがいて、本社は東京です。
はい、当然リモートワークですね!!
みんなイキイキ働いてるし、生活しやすそう。
みんな仕事だけじゃなくて家庭もあるんだよ。ついに時代が追いついてきた!!!


とまあ、こんな感じで2022年を振り返りました!

仕事も安定しました(ベンチャーなので安定はないのだが)し、2023年はゲーム開発に再トライしたいと思っています!!
さっそく何か作ろうとしていますよ!


また、いい報告ができるように頑張ります!!!

来年もどうぞよろしくおねがいいたします!!

ぽうひろ

2021年ふりかえり&来年の展望

前々回のエントリーが2021年1月なのに、もう振り返り記事を書く暴挙をお許しください。

こんにちは、ぽうひろです。

波乱に満ちた2021年ももう終わりを迎えようとしています。

先日、オンライン忘年会をやったのですが、一応準備したスライドをお披露目する機会を逃したので
ここに供養をしたいと思います。

docs.google.com

2021年ふりかえり

  • 真のフリーランスにチャレンジ(エージェントに頼らずに自分で仕事をとる)

おおむね成功 1年間生きることができた

  • ゲームは何もリリースできなかった

tmmcさんごめんなさい・・・・

  • 仲間にお仕事をお願いすることができた

tmmcさん、ぽこさん、ありがとう!!!

真のフリーランス

エージェント紹介ではなく自分宛てて受ける仕事。想像以上にきっついかったです。
何がきついって、次の3ヶ月仕事も仕事しながら常に探しておかないといけないということですね。
けど人脈に救われて、なんとか1年続けることができました。
かなり自信になりました。

来年の展望

春からサラリーマンをやることになりました(以前お世話になった方が独立して作った会社に誘われた)
副業OKの会社なので個人事業も続けようと思っています。
ゲーム開発にかけれる時間も増やせたらいいなと思っています!


来年もよろしくお願いします!

Unityブレークポイントを使ったデバッグ方法 [VisualStudio Community2019編]

こんにちは、ぽうひろです。

最近、大学や専門学校でUnity講師をやらせていただいているのですが、

意外とブレークポイントを使ったデバッグ方法がわからない」といった声を聞きますので、ここに記しておきたいと思います。

f:id:pouhiroshi:20210601181005p:plain

こんなSceneがあったとします。 画像にはTest.cs がアタッチされています。

using UnityEngine;

public class Test : MonoBehaviour
{
    float x = 10f;
    Transform transform;

    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Start");
        transform = GetComponent<Transform>();
    }

    // Update is called once per frame
    void Update()
    {
        transform.position += new Vector3(0.1f, 0f,0f);
        x += 1f;

        Debug.Log("Update");
    }
}

このプログラムにブレークポイントをいれてデバッグしていこうと思います。

f:id:pouhiroshi:20210601181002p:plain

UnityからTest.csをダブルクリックすると、VisualStudioが開くと思います。

ブレークポイントを使ったデバッグを行うには、上部にある「Unityにアタッチ」ボタンを押します。

f:id:pouhiroshi:20210601181020p:plain

その後、処理を止めたいコードの行番号の左あたりをクリックします。 すると赤い丸がつき、その行が赤くハイライトします。 この部分のプログラムが実行されると、ここで処理を一時停止することができます。 これがブレークポイントです。1つだけではなく複数個所に設定できます。 これで準備はOKです。

ではこの状態でUnity側で再生ボタンをおして実行しましょう。

f:id:pouhiroshi:20210601181000g:plain

Update()が実行され、ブレークポイント黄色くなりました。ここで処理が一時停止しています!

f:id:pouhiroshi:20210601181017g:plain

一時停止したのち、右上のステップオーバーボタンを押すと、1行処理をすすめることができます。 黄色い部分が現在実行中のプログラム行です。

プログラムの下にはその時点の変数の中身も見ることができる「ローカル」というタブも見えますね。 x変数が増えているのが確認できると思います。

一時停止を終了し、後続の処理を続ける場合は「続行ボタン」を押します。 今回の例ではUpdate()内にブレークポイントをいれているので、すぐ次のUpdate()呼び出しがあり、また同じブレークポイントで一時停止することになります。

f:id:pouhiroshi:20210601182606g:plain

ですので、「続行」をどんどん押していくと、xが1ずつ増えていっているのが確認できますね!

ブレークポイントは、ちゃんと自分が意図したとおりにこのプログラムが呼び出されているか?の確認にも使えます。 例えば、OnCollisionEnterなどのUnityできめられたメソッドを実装した際、スペルミスなどがあるとコンパイルエラーは出ないけど、呼ばれないので思った通りに動かないというケースがありますが、それを調べるのにも使えますね。 呼ばれていないのであれば、ブレークポイントをいれて実行しても一時停止しません。これで何かスペルミスがあるんだなと気づくことができます。

いかがでしたでょうか。 Debug.Logによる確認は限界がありますので、ブレークポイントをつかって変数の内容を確認しながらデバッグを行うと、プログラム制作も格段に効率が上がります。 ぜひ、ブレークポイントデバッグを身に着けて効率よくデバッグを行えるようになりましょう!!

2021年1月振り返り

みなさん、こんにちは。ぽうひろです。

久しぶりにブログを書いていきます。

エージェントからの案件を受けなくなってから早5ヶ月が経ちましたが、なんとか生き延びています。

せめて一ヶ月の振り返りエントリーくらいは書いていこうと思います。

 

さて、今月なのですがいつもの専門学校講師の週3日をベースに、ロボット教室、プログラミング教室をいつもどおり行いました。

プラスで、Unity教材作成のお仕事(3本)納品しました。

あとはアプリ作成のお仕事のプロトタイプを提出しました。

IT顧問の仕事も調査してメールしたのですが反応がありません。こちらはまだお金がいただけてないので、ちゃんと入金されるまではわかりませんね。

ということで、今月は目標収益を達成することができました。(入金が思ったより早く、2月分までは確保できるくらいまでいただけました🙌)

懸念点は、個人開発の時間が取れなかったことと、IT顧問の仕事がまだ不確かというところです。

 

さて、2月の動き方ですが

講師業ベースは変わらず、アプリ案件の完遂を大目標に据えていきます。

また、1月よりは個人時間が取れそうなので、DiveOceanGoGoの開発を進めたいと思います。

 

本当は週イチくらいで振り返ったほうがいい気がしますけどね笑

なるべくブログも書いていきたいなと思う2021年でございます。

それではまた!

 

あれから3年・・・ リベンジ the リモートワーク!!

こんにちは、ぽうひろです。
お久しぶりのエントリになります。
みなさん、コロナ渦の中、元気でお過ごしでしょうか。。。。

さて、3年前のこちらのエントリを覚えていますでしょうか。

sleepnel.hatenablog.com


そう、3年前、私はリモートワークの仕事をあてにし常駐案件を飛び出し、見事撃沈。
物凄いトラウマと共に常駐案件に尻尾を振って逃げ帰ったのでした。。。。

あれから3年・・・・機は熟した・・・!

ぽうひろ、エージェントさんからの受託案件を卒業します!!

今回は以前とは状況がまるで違います。

大事な大事な収益の必要と見積もった金額の80%を確保した状態です。

内訳は
専門学校の非常勤講師 で 40%
自分運営のロボット教室・プログラミング教室 で 30%
オンラインプログラミングスクールのメンター講師 で 10%

この状態でさらに使える時間が 週3日程度!
この時間をゲーム開発や知り合い、地域からの事業をやることで売り上げの不足分を賄っていこうという魂胆です。

あと、持続化給付金も大きいのですが不足分をカバーできる貯金も半年分くらいはあると思います。

この万全の態勢をもちまして、エージェント案件を卒業したいと思います。

7月中は案件がありますので、新しい働き方は8月からですね。
自分の事業をあれこれ進めていきたいと思います。。。!!

いまやろうと思ってることとしては。。。。

  • デザイナーたまむしさん(@tamamushi_tmm)と開発を進めている「DiveOceanGOGO!」をデジゲー博展示を目指す
  • アーバンナックルシリーズの復活(今ストアから落ちているので・・・)
  • コインゲームの開発(スマホでできるのを目指しています)
  • 地元のビジネス交流会での活動(商店街を盛り上げるための事業も立ち上がりつつあります)
  • もしかしたらUnity教材を作るかも?
  • 知り合いから受けたりする案件とか
  • yokohama.unityなどのコミュニティ活動!
  • UnrealEngineもうちょっと触って慣れていきたい

多い!多いよ!
もう並べただけでも結構あるのですが、自分がやりたいと思ってることなのできっと頑張れると思います^^

できればブログやラジオも定期的にアウトプットしていきたいですね。
そして自分事業を盛り上げていきたいです!
みなさん、応援してください!!><

今でこそこんな夢溢れる状態になっていますが、3ヶ月前とか結構どん底でした。

フォロワーのみなさんはご存知かもしれませんが、受託クライアントから
「リモートワークのメンバーではチームワーク感が出ないので、ぽうひろさんは終了してほしい」
3年くらい携わったプロジェクトからこのように言われてしまい、愕然としましたね。
ちょうどそのタイミングでコロナ騒ぎになり、プロジェクトメンバーは全員リモートになりましたが、特に終了は変わりませんでした。
おそらく、資金がショートしたのかパフォーマンスに不満があったのでしょうが、それならそれで正直に言っていただいた方がまだマシでしたね。
ここから、もう会社からの受託案件というのが心底嫌いになりました。
できればもうこの先請けたくない。あ、知り合いの会社とかはいいかなと思ってます^^

※あまりにムシャクシャしたのでゲームを作りました(unity1week)
「デストロイ・ザ・密 〜偽りのチーム感〜」
偽りのチーム感を出したいだけの会社に向けてのアンチテーゼです(大袈裟)
デストロイ・ザ・密 〜偽りのチーム感〜 | フリーゲーム投稿サイト unityroom
f:id:pouhiroshi:20200716202516p:plain


この状況が好転したのは、yokohama.unityの運営のお二人との出会いです。
f:id:pouhiroshi:20200716202614p:plain

紹介でやってみたかった非常勤講師のお仕事も受けることができましたし、繋がりでUnityのお仕事もちらほら出てきています。
UnityステーションというUnityJapan公式の配信にも出演することができました。
www.youtube.com

UnityJapan公式の配信に出演できるとか、夢にも思っていませんでした。
人生何が起きるかわかりませんが、なんかちょっとわかってきたことがあります。

  • 楽しく活動してる人には楽しい人や事が集まってくる
  • 気軽(軽率)に始められることをやる
  • 無理なく続けられることをやる

1つ目は、カモラジとかコミュニティ活動とかそうなんですが、楽しそうに作ったり公表してると、いろんな人が声かけてくれるんですよね。
一緒にやりたいとかこういうこともあるよ、とか。教えてくれるんです。
いやいややってる仕事とか、受託している仕事とか、あんまり公表できないじゃないですか。
なので、自分の意思で興味あることを目一杯やって楽しそうにするのが大事なんじゃないかなと思ったりしています。

2つ目と3つ目はコミュニティ活動とか、教室とか講師の仕事で感じたんですが、
やり始めないとわからないことっていっぱいあるので、まずあまり考えこみすぎないでやり始めることが大事だなと。
無理だったら頑張りすぎないでやめちゃうのもOKだと思います。
あと、続けないとやっぱり形になりませんから、心と体とお金に無理がないように続けられること。

この3箇条と、以前のリモートワーク失敗の教訓を得て、自分の事業を頑張っていきたいと思います!

また、3年後、無事に生きていられていますように!!

失敗を胸に・・・・
f:id:pouhiroshi:20200716202738p:plain

Arbor3について雑に解説してみる

みなさん、こんにちは。ぽうひろです。

この記事は アセット真夏のアドカレ2019 8/5 の記事になります。

先日のUnity1week で作成した「にゃん友ワンだふる」でも使用しました
VisualScriptingアセット「Arbor3」について使用感などふくめて雑に解説していこうと思います。

assetstore.unity.com


unityroom.com

にゃん友ワンだふる
にゃん友ワンだふる

VisualScriptingということで、C#のプログラムを書かずにイマドキの命令ブロックをつなげていくような形で
プログラムを作成していくことができます。

にゃん友ワンだふるでは、障害物となる車の生成、移動処理に使用しました。

f:id:pouhiroshi:20190802190853g:plain
緑の四角アイコンが表示されているのがArborがついているGameObject

やりたかったこととしては、「ランダム間隔で車オブジェクトを作成(Instantiate)し、進行方向を向かせて、そのあとは移動させる」
というものです。

まず最初にArbor3で制御したいGameObjectにArbor FSMコンポーネントをつけます。

f:id:pouhiroshi:20190802191436p:plain
ここではVehicleSpawnという空のGameObjectにArbor FSMコンポーネントをつけています

はい、準備はこれだけ。
Open Editorというボタンが付いていますので、これを押すとArborのビジュアルプログラミングEditorが開きます。

車を作成(スポーン)して進行方向へ向かせる。それをランダム間隔で繰り返す。

f:id:pouhiroshi:20190802191912p:plain

これが「ランダム間隔で車オブジェクトを作成(Instantiate)し、進行方向を向かせる」までのプログラムです。

Initという右上のブロックが初期状態です。
TimeTransitionというブロックをつかっていますが、これはある時間seconds(秒)が経過したらNext Stateでにつながっている状態に遷移してくれます。
secondsに左上のRandom.Range FloatからOutputでつながっていますが、Random.Range Floatは最小(Min)から最大(Max)までのFloat値を返してくれます。
ランダム間隔でというのはこれを使って実現しています。

次の状態は Instantiate(コピーを作成する)ですね。
Instantiate Game Objectは文字通りGameObjectを作成してくれます。
Prefabには作成したいPrefabを指定します。この場合は車を作成したのでバスのPrefabを指定しています。

Instantiateしたあとは、車を進行方向へ向かせます。
ここでつかうのはTransform Set Rotationで回転させるブロックです。
回転対象物のTransformを繋げる必要があるのですが、 Instantiate Game ObjectブロックでOutputされるのは GameObject型です。
そのため、Transform.Get ブロックを通してTransformを得て、つなげています。

そのあとにつけているのは Go To Transitionというブロックで、Next Stateにつなげた状態に状態遷移させます。
ここではずっと繰り返し処理させたいのでInitへ戻しています。

一定速度で移動させる

さて、これだけだと車は移動してくれません。
次は車を勝手に動かすようなArborプログラミングをつけてみます。
f:id:pouhiroshi:20190802194535p:plain
さきほどInstantiateする対象にした車のPrefabにArbor FSMをつけます。

f:id:pouhiroshi:20190802194318p:plain
たったこれだけ

はい、たったこれだけです。
Transform Translateは、Velocityに指定した移動量で移動しつづけてくれます。
動かす対象はTransformで指定します。

UnityEditorで動作しながら状態遷移が確認できる

f:id:pouhiroshi:20190802195525g:plain

UnityEditorで動作しながらArborの状態遷移が確認できます。
黄色くなっているところがいまの状態です。Instantiateは一瞬で終わるので、パッと見黄色く見えませんね^^;
その代わり、ブロックの右上にその状態になった回数が出ていますので、その数字が増えているので
ちゃんと状態遷移しているのがわかると思います。
ブロックにブレイクポイントをいれて処理を止めることもできますし、とてもデバッグがしやすいです。

まとめ

ランダム時間間隔で何か処理をさせる、みたいな処理をプログラムで書く場合、
タイマー変数を用意して、Time.deltaTimeで増やして〜、みたいな意外な面倒な手順を踏むことになりますが、
Arborをつかえば簡単に作ることができます。
それに加えて、状態遷移になっていて後から見返したときに何をしているのか、わかりやすいです。
自分でつくったロジックをいつもすっかり忘れてしまうというアナタにとてもおすすめなアセットです!w
作者さんが頻繁にアップデートしているようなので、今後もとても安心です。
ぜひ、使ってみてください!

UnityStandardAssetを使って5秒でTPSを導入する

みなさん、こんにちは。ぽうひろです。

f:id:pouhiroshi:20190225154755p:plain

先日の記事 3秒でFPSを導入する
sleepnel.hatenablog.com
の記事がそこそこ好評でしたので。。。。

今度はTPSをサクッと導入する方法を紹介したいと思います!

1手順挟むので5秒にしてますが、それでも簡単です。ぜひやってみてくださいね!

TPSはThird Person Shootingの略ですね。
3人称視点ということで、カメラがキャラクターの背後などにあり追随していく形式が多いです。

無料で手軽なアセットを探したのですが、結構ガチ有料のものが多かったので、
今回はUnityStandardAssetにあるTPSを使ってみたいと思います。

UnityStandardAssetは以前はUnityのメニューからインポートできたと思うのですが、
最近ではAssetStoreからダウンロードする形になっているようです。

無料なので気軽にDLしましょう^^
assetstore.unity.com

インポートすると、色々なAssetが入っていますが、TPSに関係するのはその中のCamerasとCharactersにあります。

まずはTPS操作できるキャラクターを配置します。
Standard Assets/Characters/ThirdPersonCharacter/Prefabs/ThirdPersonController のprefabをステージ上にドラッグ&ドロップしましょう。
f:id:pouhiroshi:20190225155655p:plain

つぎにカメラです。
Standard Assets/Cameras/Prefabs/FreeLookCameraRig のprefabをステージ上にドラッグ&ドロップしましょう。
f:id:pouhiroshi:20190225182329p:plain

はい、これでOK!と言えれば3秒だったのですが、もう1つ残っています。
配置したFreeLookCameraRigのFree Look CamコンポーネントのTargetに、ステージ上においたThirdPersonControllerを指定します。
f:id:pouhiroshi:20190225182922p:plain

はい、これで準備完了!
動かしてみましょう!!

あっという間にTPSコントローラの完成です!!

例によってコントローラやカメラには、パラメータがあり数値をいじればカメラ追随の速度やターンスピードなど変えることができます。

f:id:pouhiroshi:20190225183130p:plain
コントローラの設定

f:id:pouhiroshi:20190225183214p:plain
カメラの設定

あ、歩かせる範囲で地面のコロイダ(PlaneなどでOK)をつけるのを忘れないでくださいね!キャラクターが落ちてしまいますのでw

お手軽なので、ぜひチャレンジしてみてください!!

それではよいゲーム開発ライフを!! :)