C++幼女先輩

プログラミング成分多め

Android用のプラグイン。AARなんてものが増えたんだね

UNITY用のAndroidプラグインでありますが
昔作った時はNativeでC言語インタフェースを作り、Dllimportで読み込んだ覚えあるんだけど
今回は、AndroidJavaClass(AndroidJavaObject)で呼び出す方針にしました
Cインタフェースだとネイティブメモリ管理が複雑だけど
こっちはかなり楽だ

で、それとは別の話だけど
今まで通りJarファイルを作ろうとしたら、AndroidArchive AAR形式というのがあったので
調べてみたところ
JARはJavaのクラスファイルしかないが、AARだとManifestやリソース等も全部含めることが出来るらしい
今回の案件はManifestを含める予定なのでAARで出力してみた
まあ、色々調べるとManifestのコンフリクト等で苦しむ可能性あるし、アプリ共通のManifest使えばいいんだけど

とりあえず、新しいものを試したかったの

で、例のごとくAARファイルはZip圧縮になっているのでUnzipしていけば、ManifestやらリソースやらJarファイルが出てきます
もちろんJARファイルもZip圧縮なので解凍すればClassファイルが取れます

己を知る

自分の方向性にいつも悩む
ので、まずは己を知ること

若さ

まず、もうそんなに若くないので、自分探しする時間はない
もちろん新しいことにチャレンジしていくが、すでに基礎のあるものか、すぐに見切りをつける
例えば今から、バンドマンになりたい、歌手になりたいとかそういうのはしない

体の強さ

体は基本的に頑丈である。多くの人が体調不良で仕事休むなか、私は強い
そして精神的な疾患もなく強い
もちろん、弱さもある
まず、最近肥満が進んでいる為食い止める必要がある。肥満は総合疾患だ
お腹は強くないので、お腹を冷やさない、お腹をこわす食べ物は食べないなど
寒さに弱いので暖かくするなど注意は必要だ

プログラム

今までも、これからも、このスキルに頼るしかない
ただ、今まではフルスタックとして何でも屋だったが
特に自分が能力を発揮できる分野は、C++と描画エンジンの低レイヤーである
もちろんシェーダー、アセンブラ等も含めて
なので、この分野を専門にしていこうと想う
ただ、新しい知識も必要なので知識を仕入れしつつ、新しい仕事もほそぼそと請ける

また、自分の力だけでなく、周りの力もほしいので、人を育て、足りない部分を補ってもらう
そして、目標に、コンシュマーゲームの自社IPを持つことを掲げる

釣り

幼稚園に入るまえから、釣りキチの父親のせいで、毎週2回ほど釣りに連れていかれ
投げ釣りの腕はプロクラスである
何十年も釣りをしてなかったけど、あまり腕は衰えてない
特に飛距離が凄い事が特徴なので、飛距離を鍛えていきたい

ロードバイク

DNA検査の結果、私は速筋がなく長距離しか駄目のようだ
健康のために長距離やりたい
そのために体の負担の低い、水泳と自転車をやっていきたい

以上なので、もう少し出来ること増やしたい

4月からの案件

通常では4月から新しい案件がはじまるので、2月の終わりからソワソワし始めます
が、今年は新型コロナ COVID-9の影響で、新案件がスタートしなかったり
一度予算がついたものが止まったり
滅茶苦茶です

とりあえず今まで請けていた案件は継続になりつつ(案件1つは作業を減らす予定)
新規の案件は1つはいります
その会社の新規案件は私に話が来たものは3つあったのですが
結局この騒ぎで1つだけ予算が通りました
今から体制作りです
まあ、1つで良かったかもしれません。この時期あまり人を集めにくいので

具体的なお話はできませんが、今のところC++ゲームエンジンの作成から入る珍しい案件です
楽しみ

WindowsUpdateかけたら起動しなくなったので再インストール

今日は長いぞ!!

昨晩、Windows10が検索バーが何も出ないという不具合に遭遇し
緊急WindowsUpdateした
私は、検索バーのヘビーユーザーなので、ほんとあいつが居ないと効率が悪い

ところが、WindowsUpdateしたら画面真っ黒でWindowsが死んだ
f:id:murasame-labo:20200208181000j:plain

原因として色々と思うところはある
まず、開発のためにプレビューバージョンのWindowsであること
また、RamDiskWindowsのTempファイルを作っていたため
最近はないといわれてはいるが、WindowsUpdateがTempにファイル置いて再起動した可能性もある

リカバリとか頑張ってみたが、そもそも起動画面がバグっているので
あきらめてクリーンインストールにした
f:id:murasame-labo:20200208181023j:plainf:id:murasame-labo:20200208181034j:plainf:id:murasame-labo:20200208181043j:plainf:id:murasame-labo:20200208181054j:plain

ファイルバックアップ

まず、私はこういう時のためにバックアップ環境を用意している
もちろんMacbookWindowsノートPCもあるのだが、いざという時のために
ほかのSSDディスクに、すぐに仕事できるバックアップ環境を準備している
当然、必要なデータはほとんどクラウドに保存している
具体的にはドライブは下記のようになっている
Cドライブ。NVMe めちゃ速いSSD 1GB。メイン環境 Dドライブ。4TB HDD。データのバックアップや、クラウドデータの同期用
Eドライブ。2.5SSD 512GB。6か月前の開発環境。いざという時のホットスタンバイ用

その他、SSDは外付けで4個ぐらいある
なので今回はEドライブのWindows10を起動させ必要データだけDドライブに落とした

といっても、ほとんどはクラウド上なので、Dドライブに落としたのは
仕事用のディレクトリ(全部クラウド同期しているが、コミット前のものもあるかもしれないので)
動画編集用ディレクトリ(サムネイルテンプレートや編集前動画ファイル)
.sshファイル
ほんとこれだけである。

インストーラ作成

インストール用のDVDは持っているのだが、USBからインストールするほうが現代風である
しかもDVDだと古いバージョンなのでインストール直後に大規模なWindowsUpdateが走る
そのため、最新バージョンのWindowsのインストールディスクをUSBに作るほうが良い
一応半年前のイメージは持っていたのだが、この際 起動USBを最新にしようと思う
当然UEFIブートにする
UEFIとレガシーの違いは私も完ぺきに理解していないけどMBRではなくGPTというものになり
どうやらレガシーではプライマリパーティションは4個までだったが、UEFIでは起動数の制限が緩和されているようだ

UEFIになるとBIOS画面もかっこいいんだぜ!!
f:id:murasame-labo:20200208181104j:plain
昔の黒画面に文字だけの、マウスも使えないBIOS
謎の中途半端にマウスが使えるAMI BIOSとか懐かしい

まずはブート用USBメモリパーティション確認
f:id:murasame-labo:20200208181210p:plain
ディスク3のところ。こいつはWindows10以外にも FreeBSDUbuntuの起動もできる
そしてMicrosoftからWindows10のイメージをダウンロードし、USBに焼きこむ
f:id:murasame-labo:20200208181214p:plainf:id:murasame-labo:20200208181218p:plainf:id:murasame-labo:20200208181222p:plainf:id:murasame-labo:20200208181226p:plain

これでインストールディスク完成

インストール

USBインストール(UEFI)

BIOSでブートシーケンスをUSBを1stにして再起動
インストーラーが起動する
f:id:murasame-labo:20200208181114j:plainf:id:murasame-labo:20200208181124j:plainf:id:murasame-labo:20200208181135j:plainf:id:murasame-labo:20200208181146j:plainf:id:murasame-labo:20200208181157j:plain

おなじみの画面が出て、壊れたSSDパーティションを全部削除し、そこにインストールする
一度再起動を挟み、Hello, Windows10
あとは、設定をしていく

Chromeインストール

OSを起動すると最初にEdgeが立ち上がりますよね
Edgeも良いブラウザと思いますよ
でも、ChromeGoogleアカウントに結び付いたパスワードやら設定が非常にNEEDなので
最初の作業はChromeをダウンロードし、デフォルトブラウザをChromeにすることなんですわ・・・
そして、ChromeGoogleアカウントにログイン。よし、これで安心した

ビデオドライバ

nVidiaよりビデオドライバ落とします
といっても、インストール直後でも解像度出てたんですけどね

Explorerの設定

プログラマにはイランお世話の設定になってるので
隠し属性ファイルの表示や拡張子の表示など行う
ほんと、なんでこれがデフォルトじゃないのか・・

バックアップファイルを戻す

Dドライブにバックアップしたデータを戻します

システムドライバ

マザーボード用の各種I/Oのドライバをインストールします
内臓Sound、内臓LAN、内臓ビデオカード、ストレージなどなど IntelのチップなのでIntelが多いです

ゲーム

ダウンロード量がとても大きいものをとりあえずダウンロードする
SteamとBattleNetをインストールし、必要ゲームをインストール
Discordもセットアップ

Cloudストレージ

共有先はDドライブにしているので
Googleドキュメント、OneDrive、Dropboxをインストールし設定する

itunes

音楽ファイルはDドライブなので、そこを共有
いつもitunesの設定はドキドキする

開発環境

SourceTree

いつも通りのやつ。

MicrosoftOffice

Office365なので余裕

Slack

チャンネルを登録するのがだるい

VSCode

Pluginは必要になったら都度入れよう

Docker、WSL

OSのバージョンにも依存するので保留

Jetbrains色々

VSCodeだけでいいけど、一応 PyCharm、Goland、CLion、ReSharperおよび.net各種、WebStorm
などを入れた

VisualStudio

UNITYで使うよね

UNITY

とりあえずHubだけ

OpenVPN

設定ファイルもバックアップから戻す

RamDisk

SoftPerfect一応入れる

動画環境その他

GimpWebカメラドライバ、DavinchResolve、DuetDisplay

開発環境

とりあえずテレカンが問題ない事を確認
Gitはファイルのバックアップあるので、そのままローカルの.gitあればクローンも不要
WSL2はまだPreviewなので、PreviewOS入れるか悩むところ。。
一応WSL1とDockerを入れて開発環境は整えた
Docker-composeと、レジストリからPullすればよい。Docker
DBのマイグレーションやデータの投入などを一通り行い、たぶん開発可能だろう
ただし、VSCodeプラグイン入れてないのでちゃんと入れなきゃ・・
PyCharm、Golandとどっち使うか決めてない

とりあえず、思いつく必要なソフトはこんぐらいかなあ?
メモリ64MBあるけど、Dockerがいないと、全然余裕ありすぎるなあ・・・RamDisk大きくしちゃおうかなあ・・・

会社で取り組みたい事

フルスタックと言われているエンジニアなので、会社の柱をどうするか悩むよねえ
それをまとめていく

大まかな方針

基本的に私はオープンソースが好きだ。なぜなら、技術を隠匿せず世界に公開すれば、人類の進化速度が増す
そうすれば、最終的に自分の幸せも増え、未解明の事柄が減りプラスでしかないからだ
ただし、現在は資本主義の豚の世界。いや、人間には共産主義は無理で豚でしかないのだろう
会社の利益というのは必要。それらを満たすために私の方針は

技術、フレームワークオープンソースで提供し、その上のビジネスロジックでお金をかせぐ
という、ありふれたモデルを行いたい
具体的にはWordPressなりフレームワーク作って、タダで使っていいよ、お金くれたらコンサルするよ
というモデルである

現在の会社の技術

私を含め4,5人いる
基本的にはゲームプログラマフルスタックだ
フルスタック2名、ゲームエンジニア1名、フロントエンジニア1名、サーバインフラ見習い1名
だいたいそんな構成だ
それに加え、フルスタックの友達が手伝ってくれている

注視したい技術

ゲーム開発

言語フレームワーク

サーバインフラ

サーバインフラではサーバレスを推していきたい
もちろんオンプレなりインスタンス開発は保守でお金を稼げるのだが
そういうアコギなビジネスは狙わず、新規開発を行いメンテはゼロにした方が人類のためだ
サーバレスだと言語はnodeがメインになってくるのだが
最初はnodeで行うとして、今後はC#にシフトしていきたいと思っている
nodeはどのFaaSでも対応しているし、慣れてていいのだが
やはり実行速度の面やセキュリティ 色々考えて難がある
C#やGo、Javaといった高速かつ書きやすい言語をメインにしていきたい
その中でC#を選んだのは下記の事柄とも関係が深い
ただしC#AWSとAzureぐらいでしか対応されておらず、またServerlessFrameworkではAzure C#が未対応
なので、まだC#だけで押し切れないのだが・・

一応他の言語との比較であるが

  • node
    やはりランタイムの速度などに問題がある。ただ 立ち上げ速度は速いのかもしれない
    サーバレスの基本言語なので、当然基礎知識としては使えるようにする

  • go
    最近Goの案件も多く、Go2も控えてて注目言語ではある。速度もとても速い
    goroutineがもてはやされるが、async/awaitも全然負けてない
    このあたりの比較もしてみたいなあ

  • Java
    古くからあり、ライブラリも沢山。大手メーカーなどの案件でも使えるため非常に悩んだ
    ただやはり、ライセンス問題などが大きくのしかかる

  • PythonRuby
    それら使うならnodeでいいよなーって感じ

Webフロント

JavaScript一択ではあるのだが、そうでもない事態になっている
ゲーム会社の利点をいかし、UNITYで作ったUIをWebに吐き出しをして使いたい
またBlazorを使い、C#で作ったSPAをWebに移植したり行ってみたい
SPAであればサーバ側もサーバレスにして、全部C#でサーバ監視いらず安い料金でのサービス運用が可能
夢のようである

ゲーム

UNITYとUnrealがありとっても難しい・・・
やはり仕事でいうとUNITYが必要だ、特に小さな会社では
だがUnrealの魅力もある
のでここは心が揺らぎ両方とした

もしUNITYのみに限定できれば、全部C#で完結する美しい世界が出来上がる

ビジネス的な注視

恐ろしい事に、これが全くないのだ・・
ゲームに専念するでもなく、AR/VRに注視するでもなく、ブロックチェイン、VTuber・・・
色々な新しい技術をかじってはいるが、集約できていない
ここは技術者だから仕方ないんだろうか
新しいものに飛びついて、その時に意気投合したら集約
という流れを行うのだろうか・・

とりあえずサーバレスの波に乗りたい

Youtuber王になる!

という夢を観ました

最近VTuberならびに動画関連の案件も増えたので
ちゃんと勉強すべくYoutuber始めました

www.youtube.com

どんなコンテンツが受け入れられるか不明ですが
とりあえずはアクアリウム、プログラムをメインで行っていきます

皆さんチャンネル登録よろしくお願いします!