砂漠の旅人(たびと)|新天地:たびとの旅路

電脳砂漠を旅する、ある旅人の日記。フロッピーを頼りに歩いた日から、クラウドの地平を見つめる今日まで。見つけたオアシスも、迷い込んだ砂の迷宮も、全てこの羊皮紙に。

魂は、大地を選ばず ~Windowsで創りし.NETの魂を、Linuxで呼び覚ます~

旅の途中、興味深いオアシスを見つけた。忘れないうちに、この羊皮紙に記しておくとしよう。

前回の旅で、我々はWindowsという文明化された大地に、NLogの魔法を宿した.NETのゴーレムを錬成した。しかし、.NET Coreの真価は、その魂が、特定の大地に縛られないことにある。ならば、その魂を、WSL2/Ubuntuという、より原生的な大地へ移植し、果たして同じように力強く鼓動するのか、確かめてみようではないか。

これは、Windowsで創り上げたプロジェクトを、Linuxの大地へコピーし、再び命を吹き込む、クロスプラットフォームという名の、驚くほど簡単な儀式の記録である。

この羊皮紙のあらまし

この羊皮紙が導く者

第一の儀式:魂の移植(プロジェクトのコピー)

儀式は、驚くほどシンプルだ。 Windowsエクスプローラに現れる「Linux」という名の異世界への扉を開き、前回創り上げたNLogSampleのプロジェクトフォルダを、Ubuntuの故郷(ホームディレクトリ)へと、ただドラッグ&ドロップするだけ。

Windows から Ubuntu へコピー&ペーストする画面
二つの世界を繋ぐ、最も簡単な魔法

第二の儀式:大地を整える(.NET SDKインストール)

もし、あんたのUbuntuの大地が、まだ.NETの魔法を知らないなら、まずはその力を授ける必要がある。Microsoftという名の神々の古文書庫から、署名とリポジトリを授かり、dotnet-sdkをインストールする。

# 神々の古文書庫と契約を結ぶ
$ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb ...
# .NETの魔法を、この大地に根付かせる
$ sudo apt update && sudo apt install -y dotnet-sdk-5.0

最終儀式:魂の再起動と、対話

さあ、いよいよ、Linuxの大地で、魂を再び呼び覚ます時だ。 移植したプロジェクトのディレクトリへ移動し、dotnet runという、万国共通の召喚呪文を唱える。

$ cd ./NLogSample/NLogSample
$ dotnet run
2021-11-06 19:34:13.4325 TRACE Trace ログです。
...
2021-11-06 19:34:13.4925 ERROR エラーが発生しました。

見よ。Windowsで見たのと全く同じ魂の声が、Linuxの大地にも響き渡ったではないか。

異世界からの声:Log2Consoleとの対話

さらに、我々は、Linuxの大地で叫ぶ魂の声を、Windowsの世界で聴くことさえできる。 ipconfigWindowsの座標を調べ、NLog.configに記された羅針盤の向きを、その座標へと修正する。

<!-- localhostを、WindowsのIPアドレスへ -->
<target name="tcpOutlet" xsi:type="NLogViewer" address="tcp4://172.18.175.105:4505"/>

そして再び、Linuxで魂を呼び覚ませば、Windows側で待ち構えるLog2Consoleという名の真実の鏡に、その声が、リアルタイムで映し出されるのだ。

Log2Console へのログ出力を確認する画面
Linuxからの魂の叫びが、Windowsの鏡に映し出される
この魔法こそ、Dockerコンテナのような、さらに深淵なる異世界でゴーレムを操る際の、最強のデバッグ術となるだろう。

羊皮紙を巻く前に

Windowsで創り上げた.NETの魂は、いとも簡単に、Linuxの大地で再びその目を開いた。 ソースコードの変更は、一切不要。これこそ、.NET Coreが持つ、クロスプラットフォームという名の、偉大なる力の証明だ。

今回は、Windowsで創ったプロジェクトをコピーしたが、本来の旅路は、Linux側でdotnet newから始め、VS Codeという魔法の窓から、二つの世界を自在に行き来するのが、より現代的な作法だろう。

この羊皮紙が、同じように、二つの大地を股にかける、自由な旅を夢見る、未来の冒険者の助けとなることを願う。

東の空が白んできた。次のオアシスへ向けて、そろそろ荷造りを始めるとしよう。

砂漠で見つけた魔法のランプ

ラクダの独り言

ご主人が、窓の世界で創ったゴーレムを、今度はペンギンの世界に連れて行って、自慢げに動かしている。俺に言わせりゃ、どっちの世界で動こうが、どうせ荷物は運んでくれねえんだ。そんなことより、そろそろ俺の餌の時間をだな…。まったく、やれやれだぜ。