もう3月も終わってしまう。
いろいろやってはいる。プラモ作ったりPeerCastStationをリリースしたり。
まあ変わりばえはしないわな。
DarkAdventのソフィアver 1.1を作るのに銀色が欲しかった。
水性塗料で金とか銀ってなかなかいいの無くて、アクリジョンとか水性ホビーカラーの金や銀はだいぶ粒子が粗くてギラついてしまう。 パールで金や銀を表現することもできなかないが、パールはどうしても透けるので金属顔料のやつが欲しいんよな。
金に関しては金の顔料を買ってアクリジョンのクリアーに混ぜて塗るってのでなかなかいい感じにできるのがわかった。 ただ金の顔料は実際は真鍮で、アクリジョンに混ぜておくと錆びちゃって大変なことになってしまう。 混ぜてすぐ塗れば大丈夫なんでそうしてるが、作りおきできないのはちょっと面倒ね。 水性ホビーカラーは試してないがだめそうな気もする。
銀に関しては細かい顔料が売ってないのでそんな方法も取れない。 アルミはあんまり細かくできないのかなんか問題あるのかわからんが、顔料でもだいぶ粗いのしか無いんだよねえ。
ということでいろいろ調べていたが、海外製塗料でいくらか良いのがありそうだ。 調べた感じだとファレホのメタルカラーは細かくてよさげ、あとMMPのゴールドがよさげ、というのがわかった。 他にKカラーズってのも実は水性みたいなのを後で知ったんだが、どうももう売ってなさそう。
試しにファレホのメタルカラーのシルバーとゴールド、MMPのシルバーを買ってみた。 のだがMMPのシルバーは失敗だった。
実はMMPのゴールドが良いって話は、MMPの中でもMMCというシリーズが良いという話で、それに対応する銀はMMC-001 ChromeでMMMのシルバーではなかったようだ。 MMMのシルバーは普通に粒子粗いやつだったのだ。けっこうお高かったのに……。 じゃあChromeを買ったんかというとそれはやってなくて、なんと1本1500円もするのと、公式の使い方動画を見ると使い方がだいぶ難しそうだったので躊躇している。 まあそのうち気が向いたら。
ファレホのメタルカラーも1本1000円近くするので高いっちゃあ高い。 最初はいつも通りに濃く吹いてみたら流れまくっちゃって上手くいかなかった。 これは薄く吹かないといけないもんなんだなと把握してやり直したら、だいぶいいじゃないですか。 他の水性塗料にはない細かさの銀色になってくれました。 隠蔽力も高いのでさっと吹くだけで銀色になってくれるし、ちょっと高くはあるけどそんなにすぐ無くなりはしなさそうだ。
ファレホのメタルカラーは金も買ったんだけど、これはだめっぽい。なんか緑色だった。緑っぽい金とかじゃなくて緑色だった。意味がわからん。 たぶん銀色のメタルカラーに黄緑っぽいのを混ぜて金にしてるつもりなんだろうけど、黄緑っていうより緑だからねこれ。 やるにしてももうちょいまともな色作れるだろ。
赤いメタリックカラーも欲しかったので銀の上にアクリジョンのクリアーレッドを吹いてみたんだが、若干弾かれてしまうようだ。 ただ薄く重ねれば問題無く乗ったのでその方法で対応できた。
下地は光沢黒にしろっていうことでファレホのグロスブラックプライマーも買ったんだが、これは値段が安くていいね。 黒っていうにはちょっと茶色っぽい気もするがまあ下地だし。グロスだけあって自己平滑性もあってよい。 アクリジョンの黒もけっこういっぱい使っちゃってたんだけど、下地にするならこっちの方が安くていいな。 最初はとりあえずで32mlのを買ったんだが、ほとんど値段変わらずで倍入ってる60mlのを買い足しておいた。
というわけでDarkAdvent ソフィア ver 1.1はメタリック仕上げに。 鎧っぽいところはファレホ メタルカラーのシルバーにアクリジョンのスモークグレーで暗めにし、赤いところはクリアーレッドで赤くした。 あとはピンポイントではガンダムマーカーの赤だのシルバーだののメタリックのやつで塗ったり。
ガンダムマーカーはアクリジョンの上から塗ったあとにアルコールで拭き取ろうとしたんだが、無水アルコールでは下のアクリジョンまで落ちることが発覚していくらか失敗してしまった。 拭き取りしなければ上に重ねることはできるけど、それだけだとあまりおいしくないなあ。 アクリジョンの上に水性ホビーカラー塗って拭き取るのはあんまりしつこくやらなければ大丈夫なのを確認したので、今後は水性ホビーカラーにしよう。 ガンダムマーカーのメタリックもなかなかいいんだけど残念。
ファレホのメタルカラーはお値段と入手性にちょっとだけ不満はあるけど性能は良くていいね。そんなに気を使わず使えるし。
PeerCastStation を.NET Coreに移行しようとしていたんだが、そう思っている間に.NET6が出てしまったので.NE6に移行した。
ランタイムをどうすべきかというのが一番の悩みだったんだが、Windowsに関してはランタイム同梱、それ以外に関してはランタイム無しで配布することにした。
Windowsはせいぜいx86とx64、今後ARM64くらい配布すればいいんだが、それ以外のバイナリも作ろうとすると大変面倒なことになる。
Linuxだとx86とx64とARM32とARM64があってそれぞれ普通の(glibc?)とmusl版で8種類だ。めんどくさすぎる。
macOSではx64とARM64だけだろうけど、公証とかいう署名をつけないと素直にバイナリが実行できないらしい。署名付けるには開発者アカウント(有料)が必要だし手順もかなりめんどくさそうだ。
ランタイム非同梱であればアーキテクチャ非依存のアセンブリだけ配布して、dotnet PeerCastStation.dll
で実行してもらえば済む。
macOSでもdotnetコマンドには公証が付いててくれるので俺が署名つける必要がない。
またFreeBSDとかでも.NET6ランタイムが動けばPeerCastStationを動かせるってわけだ。
一方で適切なバージョンのランタイムが入っててくれないといけなくて、こちらでコントロールできないのでアップデート時に困る。
そんなわけで、Windows以外でアップデートする時にランタイムをどうすればいいのか悩んでいて、アップデート時にシェルスクリプトでランタイムをインストールすればいいんではないかというのを思い付いた。 .NETはインストール用のシェルスクリプトがあって、それを使うとユーザーのホームディレクトリにランタイムをインストールしてくれる。いやそこに入れるのはあまりよくないが、動かねえよりはマシだよ!ということでそれをアップデート時に呼んでインストールしてしまうのだ。 インストール用のシェルスクリプトを呼ぶアップデートプログラムはC#とかで書ければいいが、それ動かすにはランタイムが必要になっちゃうから、アップデートプログラム自体もシェルスクリプトで書かないとな……。
アップデート用のシェルスクリプトを書き始めてみたんだが、意外とめんどくさい。既にインストールされてたり、ユーザー毎じゃなくシステムにちゃんとインストールされてる場合はそっちを使いたい。dotnet
コマンドが無かったり、あっても--list-runtimes
で期待したランタイムが無かった時だけインストールするようにしたりした。
あとこれで動くのかなって確認するためにdotnet PeerCastStation.dll
を実行してみてー……ってのまで書いた時に気付いたんだが、これべつにアップデートじゃなくて起動コマンドをこのシェルスクリプトにすれば良いのではなかろうか。それならアップデート時じゃなくて初期実行時にもランタイム入れてくれるし、わざわざアップデート専用のスクリプトにしてテストとかもいらねえわ。
これだとランタイムが勝手に入るので心配しなくていいし、起動コマンドもdotnet
から始めなくていいので楽チンだ。いろいろアップデートに気を使うことが減った。
.NETランタイムインストール用のシェルスクリプトはbash専用だったり、wgetかcurlが必須だったりするんだが、そのあたりはもうどうしようもないので入れといてくださいとしか言えない。 macOSなら問題ないんだけどLinuxは環境によってなんもなかったりするのが本当にしんどい。
ともかくこれでなんとか目処が立って、まだいろいろと気を使うところはあったもののなんとかリリースにこぎつけた。 以前のバージョンからのアップデートはまだ出来ないが、手元でできるところまで確認はできたので近いうちにアップデートできるバージョンをリリースできそうだ。
アップデート周りでほんと困ってたのがだいたい解決してリリースできたので、今後は.NET6でバリバリ開発して行けそうだ。