.NET MAUI 画像切り抜きサンプル。
前回の記事で WinUI3
を使った画像切り抜きサンプルコードを紹介した。どうせなら .NET MAUI
バージョンも作って公開しようと思い作り始めたのだが、かなり手こずった😭
追記:Blazor版も作った。
続きを読むAlpine Linux on WSL2 と nodenv と Node.js
nodenvを使ってAlpine Linux on WSL2にnodeをインストールする方法。
バイナリでは動かない
事前にanyenvのインストールと、anyenv経由でnodenvをインストールしておく。
上記コマンドを実行してnodeをインストールしnode -vを実行してみるものの
このようなエラーになってしまって動かない・・・。
glibcではなくmusl libcを使う
Alpine Linuxはmusl libcを使っているので、glibcでコンパイルされたnodeのバイナリは動かないのだった。Alpine Linuxを常用したことがなかったので、今まで気にしたことがなかった。
知見が得られたことはよかったが、ちょっと恥ずかしい。
ソースからコンパイルする
nodenvはソースコードをダウンロードしてコンパイルすることも可能なようだ。ただコンパイルに必要なコンパイラやパッケージがなにも入っていないので、それらを事前にインストールしてからコンパイルを行う。
およそ30分ほどかかってコンパイルとインストールが完了する。
今度は無事に動く。
ARMアーキテクチャ搭載PCを求めて・・・
Apple M2 Proチップ搭載MacBook Proのあまりの発熱の少なさに驚愕した影響で、開発向けのArm搭載WindowsノートPCを探し求めた。
- Snapdragon 8cx Gen 3搭載機に興味があるが、実用的な機種はほとんどなし
- x64からArm64に切り替えることへの不安を解消する
- Chocolateyを捨て、Ubuntuを捨て、新たな環境にチャレンジ
- 終わりに
Snapdragon 8cx Gen 3搭載機に興味があるが、実用的な機種はほとんどなし
Windows11ノートPCでArm搭載機種となると選択肢が狭い。自分が調べた範囲だと、『ThinkPad X13s』しかないのではないかと思う。
タブレットPCまで範囲を広げると『Surface Pro 9』が選択肢にあがってくるが、メモリ8GBでSSD256GBとちょっと心もとない。それにタブレットPCはキーボードをつけてもノートPCっぽく作業できない点がつらい*1。
こうなると選択肢としてはThinkPad X13s一択だが、メモリ16GBという点が気になる。コンテナ起動して、Adobe XD起動して、Visual Studio 2022起動して、その他いくつかアプリ起動してといった状況では、CPU側がもたずメモリ関係なしに性能低下しそうな気もしている*2*3が、ひとまず開発向けとして役目を果たせそうである。
メモリより気になるのは、ThinkPad X13sに搭載されているSnapdragon 8cx Gen 3の発熱。性能よりも発熱が気になってしまう。Core i7-1185G7とSSD1TBを組み合わせたThinkPad X1 Carbon Gen 9は(室温33度の部屋において)恐ろしく熱い。ググった限りだと、Snapdragon 8cx Gen 3の発熱問題に関する記事はなさそうなので、ちょっと欲しくなってきた。
x64からArm64に切り替えることへの不安を解消する
ThinkPad X13sの仕様すべてに満足しているわけではないが、発熱と引き換えで妥協できそうな点は多い。しかし次の気になる点としてあがるのはアプリケーションや開発言語、各種ミドルウェアのArm64対応状況である。
最近、メジャーなアプリケーションや開発言語およびそれに関連するミドルウェアのArm64対応は進んでいるようだが、それでも自分が普段から利用しているものに関しては未知な部分がある点は否めない。
ThinkPad X13sを買ってはみたものの必要なものが動作せず、結局お金の無駄づかいになってしまっては困る。もっと選択肢が広がるまで待つべきか、Arm版Windowsが一般的になるまで待つか、そんなことを考えているときに見つけたのがMicrosoftから販売されている『Windows 開発キット 2023』。
スペックは
と開発向けとしては十分。
これならx64からArm64へ乗り換えるにあたって、以下の検証を実施できそうだ。
- 各種ソフトウェアのArm64対応状況
- 開発環境としての性能
- 開発時の発熱
即購入した。また今後登場が期待されるSnapdragon 8cx Gen 4に向けての準備もできそうだ。
Chocolateyを捨て、Ubuntuを捨て、新たな環境にチャレンジ
Windows 開発キット 2023が届いたので、最低限これがあれば問題ないだろうという開発環境を作った。
- リポジトリをcloneできる(Git関連)
- .NET開発ができる(Visual Studio 2022や.NET 7.0、.NET 6.0)
- nodeアプリ開発ができる(nodeやnpm)
- PHPアプリ開発ができる(PHP 8やLaravelといったフレームワーク関連)
- dockerが動く
winget
まず必要なソフトウェアのインストールはwingetを使うようにした。
これまでChocolateyを利用していたが、商用色が出てきたのとパッケージ検索への導線が少しずつトップページから遠ざかっていくことにいら立ちを感じていたので、これを機に利用をやめた。
wingetだとストアアプリまで対象とできるので便利だ。
Alpine Linux on WSL2
これまでなんとなく使っていたUbuntu。ディスク容量節約にならないかと思い、Alpine Linuxを使ってみることにした*4。
作り方としては
- Alpine Linuxのダウンロードサイトにある『MINI ROOT FILESYSTEM』からaarch64版をダウンロードする
- ダウンロードしたファイルはtarファイル化しておく
- wsl --import <DistroName> <InstallLocation> <InstallTarFile>書式を使ってインポートする
という手順になる。
なおルートユーザーしかいないので、デフォルトユーザーの変更は/etc/wsl.confを作ってその中に定義しておく。sudoなんかもないので、先にルートユーザーで必要な環境を整えてから、デフォルトユーザーの変更を行うとよい。
ちなみに/etc/profileにexport PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"がある影響で本来のPATHが上書きされている。これだとWindows側のPathを参照できず相互運用に支障をきたすので、これをコメントアウトしてwsl --shutdownする。
Oh My Posh
ターミナル見た目変更のため。PowerShellとWSL2、両方にインストール。
Visual Studio 2022など
Visual Studio 2022や.NETはArm64対応しているので問題なくインストールできる。WPFアプリをプラットフォームx86でビルドしてみたが問題はなさそうだ。ビルドしたアプリも起動する。
惜しむらくはInstaller Projects 2022がArm64非対応\(^o^)/オワタ
https://developercommunity.visualstudio.com/t/Microsoft-Visual-Studio-Installer-Projec/1381244
こちらで対応を求める声があがっているが、2年経過しても対応していないところを見ると期待できないか・・・。
docker関連
上のドキュメントを参考にして、以下の設定を行う。
そしてdocker起動を試みるがすでに起動しているという警告が発生。
ステータスを確認すると停止済み。謎。
/etc/wsl.confに設定が足りていなかったようなので、sudoedit /etc/wsl.confで以下を追加。
再度、起動を試みるがネットワークエラーのため起動できず。
どうやらネットワーク設定が足りていなかったらしくsudoedit /etc/network/interfacesでファイルを作成して以下を追加。
作成後にsudo rc-service networking restartしてネットワークを再起動した後にdockerを起動したら無事に起動した。
それでこのあと、Docker composeを利用している適当なリポジトリでdocker compose up -dを実行するもCannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?が発生し途方に暮れていたが、Windowsを再起動したら解決した。
終わりに
dockerが一番苦労した。
ちなみに解決していない問題としてanyenv&nodenvによるnpmコマンド実行が残っている。
上記のエラーが発生してしまい、yarnがインストールできずに進められない。
追記:解決
単純にコンパイラの違いからくるエラーだったようだ。Alpine Linuxはmusl libcを使ってコンパイルするが、ダウンロードしてくるバイナリはglibcを使ってコンパイルしたもの。
nodenvを利用したコンパイル手順を記事にしたので、同じ境遇の方は参考にしてほしい。
ちなみにコンパイル中のWindows 開発キット 2023は熱かった。ファンレスだからしょうがないのかもしれない。ファンが備われば温かいぐらいに熱は下がるのかもしれない。
【FF11】プロマシアミッションを改めて遊んでみた感想
2010年6月19日にプロマシアミッション をクリアしてから13年、倉庫キャラで改めてプロマシアミッションを進めてクリアした。
星唄ミッション進行ついでに始めたプロマシアミッションだったが、せっかくなので最後まで進めてみようと思った。13年前にクリアしたときは、ただただミッションクリアに主眼を置き、ミッションそのものを楽しむ余裕がなかったからだ。
全体を通して、ストーリー自体に難解さはあるものの、ジラートミッションに比べて世界観が壮大でストーリーに魅力があり、とてもやりがいのあるミッションに感じた。ちなみにプロマシアミッションを進める前にジラートミッションを進めてクリアしたのだが、ジラートミッションはあっという間に全編が終わり、ストーリーに物足りなさを感じた。ただジラートミッションは三国ミッションから続いていると思えば*1、それなりにストーリーは長いのかもしれない。
今回、ジョブは赤99/黒49、IL装備なしで星唄の煌めき【三奏】まで所持した状態で進めた。道中、絡まれる敵のいる箇所やノートリアスモンスターはフェイスの援助付きで進行した。フェイスを出さずに不用意に???にふれてノートリアスモンスターが出現、そのままあえなくやられる場面がいくつかあった。
いまではレベル制限エリアがなくなり、フェイスを同伴すればソロでも進行は容易になったが、やはり面倒に感じる箇所はいくつかあった。
13年前に比べたら、準備時間がなくほぼストーリーを進めていくことに集中できるため、進行にかかる時間が大幅に減った点は良かった。でも、ストーリーが複雑なので(時間を開けずに進行したとしても)前後関係の記憶があやふやになり、ストーリー全体をうまく把握しきれなかった。
13年前時点でもっとも難度が高く、お手伝いすることすら嫌がられたプロマシアミッション。改めて遊んでみると、ヴァナ・ディール全土そして、そこに暮らすいろいろな人々が絡むストーリーがとてもよく、進行とともに新エリアが開放される達成感、行く手を阻むやっかいなモンスター、後日談的なクエスト、最後の最後はジラートミッションを含めたプロマシアミッションの総決算である世界に在りて君は何を想うのか?で、両ミッションに出演したキャラクターたちが集まって最高に盛り上がりとても良かった。これまでにリリースされたすべてのコンテンツの中で自分は1番よかったように思う。
今現在で遊びやすくなったものの、難度がかなり下がってしまったので、レベル制限エリアを復活させた上で、フェイスとともにソロでも進行できるようにすればほどよい緊張感あふれる難易度に変化して楽しいかもしれない。