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検査の結果、私は速筋がなく長距離しか駄目のようだ
健康のために長距離やりたい
そのために体の負担の低い、水泳と自転車をやっていきたい
以上なので、もう少し出来ること増やしたい
WindowsUpdateかけたら起動しなくなったので再インストール
今日は長いぞ!!
昨晩、Windows10が検索バーが何も出ないという不具合に遭遇し
緊急WindowsUpdateした
私は、検索バーのヘビーユーザーなので、ほんとあいつが居ないと効率が悪い
ところが、WindowsUpdateしたら画面真っ黒でWindowsが死んだ
原因として色々と思うところはある
まず、開発のためにプレビューバージョンのWindowsであること
また、RamDiskにWindowsのTempファイルを作っていたため
最近はないといわれてはいるが、WindowsUpdateがTempにファイル置いて再起動した可能性もある
リカバリとか頑張ってみたが、そもそも起動画面がバグっているので
あきらめてクリーンインストールにした
ファイルバックアップ
まず、私はこういう時のためにバックアップ環境を用意している
もちろんMacbookやWindowsノート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画面もかっこいいんだぜ!!
昔の黒画面に文字だけの、マウスも使えないBIOS
謎の中途半端にマウスが使えるAMI BIOSとか懐かしい
まずはブート用USBメモリのパーティション確認
ディスク3のところ。こいつはWindows10以外にも FreeBSDとUbuntuの起動もできる
そしてMicrosoftからWindows10のイメージをダウンロードし、USBに焼きこむ
これでインストールディスク完成
インストール
USBインストール(UEFI)
BIOSでブートシーケンスをUSBを1stにして再起動
インストーラーが起動する
おなじみの画面が出て、壊れたSSDのパーティションを全部削除し、そこにインストールする
一度再起動を挟み、Hello, Windows10
あとは、設定をしていく
Chromeインストール
OSを起動すると最初にEdgeが立ち上がりますよね
Edgeも良いブラウザと思いますよ
でも、ChromeでGoogleアカウントに結び付いたパスワードやら設定が非常にNEEDなので
最初の作業はChromeをダウンロードし、デフォルトブラウザをChromeにすることなんですわ・・・
そして、ChromeでGoogleアカウントにログイン。よし、これで安心した
ビデオドライバ
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一応入れる
動画環境その他
Gimp、Webカメラドライバ、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
古くからあり、ライブラリも沢山。大手メーカーなどの案件でも使えるため非常に悩んだ
ただやはり、ライセンス問題などが大きくのしかかる
Webフロント
JavaScript一択ではあるのだが、そうでもない事態になっている
ゲーム会社の利点をいかし、UNITYで作ったUIをWebに吐き出しをして使いたい
またBlazorを使い、C#で作ったSPAをWebに移植したり行ってみたい
SPAであればサーバ側もサーバレスにして、全部C#でサーバ監視いらず安い料金でのサービス運用が可能
夢のようである
ゲーム
UNITYとUnrealがありとっても難しい・・・
やはり仕事でいうとUNITYが必要だ、特に小さな会社では
だがUnrealの魅力もある
のでここは心が揺らぎ両方とした
もしUNITYのみに限定できれば、全部C#で完結する美しい世界が出来上がる
ビジネス的な注視
恐ろしい事に、これが全くないのだ・・
ゲームに専念するでもなく、AR/VRに注視するでもなく、ブロックチェイン、VTuber・・・
色々な新しい技術をかじってはいるが、集約できていない
ここは技術者だから仕方ないんだろうか
新しいものに飛びついて、その時に意気投合したら集約
という流れを行うのだろうか・・
とりあえずサーバレスの波に乗りたい