4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu で Blazor するなら "sudo apt install dotnet-sdk-8.0" すれば準備 OK

Last updated at Posted at 2024-12-14

Blazor アプリケーションの実行、開発はマルチプラットフォーム

"Blazor" とは、JavaScript や TypeScript ではなく、C# でリッチクライアント Web アプリケーションを開発・実行することのできる、.NET およびその上の ASP.NET Core を基盤としたフレームワーク、ツールチェイン、ランタイムです。Angular や React、Vue、Svelte といったコンポーネント指向のライブラリ、フレームワークの、C# 版に相当します。

その Blazor を含む .NET アプリケーションの実行、および開発は、macOS、Windows、それに Linux の主立ったディストリビューション上で可能です。

本記事では、Linux ディストリビューションのひとつ、Ubuntu 上で Blazor アプリケーションの開発を始める手順を解説します。本記事で対象とする Ubuntu のエディションとバージョンは、Ubuntu Desktpo のバージョン 24.04 LTS、x64 アーキテクチャとします。

Ubuntu 上では sudo apt install dotnet-sdk-8.0 すれば準備完了

解説、といっても、もっとも簡便な方法は、.NET 8 SDK の apt パッケージをインストールするだけです。つまり、以下のコマンドをターミナルで実行するだけで、それで準備完了です。

$ sudo apt install dotnet-sdk-8.0

以上でターミナル上で dotnet CLI が使えるようになります。ちなみに自分は試していませんが、apt ではなく、snap でもインストールすることが可能なようです。

せっかくなので 1 つ Blazor WebAssembly アプリを作ってみる

折角ですので、このままひとつ、Blazor WebAssembly プロジェクトを作ってみましょう。ターミナル上で、どこか適当な作業フォルダに移動し、以下のコマンドを実行します。

$ dotnet new blazorwasm -n MyBlazorApp

コマンドライン引数のうち、blazorwasm は、Blazor WebAssembly の開発プロジェクトを作って下さい、という意味になります。および、続くコマンドラインスイッチ -n は、そのプロジェクトの名前を続く引数で指定します、という意味になります。つまり上記例では、これから作る Blazor WebAssembly の開発プロジェクトの名前を "MyBlazorApp" とします、ということです。

無事コマンドが実行されると、作業フォルダ内に "MyBlazorApp" というサブフォルダが作成され、その "MyBlazorApp" フォルダ内に、プロジェクトファイル MyBlazorApp.csproj をはじめ、Blazor WebAssembly アプリケーションのためのソースコード類一式が生成されています。

$ ls -l ./MyBlazorApp/
total 40
-rw-r--r-- 1 jsakamoto jsakamoto  465 App.razor
drwxr-xr-x 2 jsakamoto jsakamoto 4096 Layout
-rw-r--r-- 1 jsakamoto jsakamoto  476 MyBlazorApp.csproj
drwxr-xr-x 2 jsakamoto jsakamoto 4096 Pages
-rw-r--r-- 1 jsakamoto jsakamoto  425 Program.cs
drwxr-xr-x 2 jsakamoto jsakamoto 4096 Properties
-rw-r--r-- 1 jsakamoto jsakamoto  375 _Imports.razor
drwxr-xr-x 3 jsakamoto jsakamoto 4096 bin
drwxr-xr-x 3 jsakamoto jsakamoto 4096 obj
drwxr-xr-x 4 jsakamoto jsakamoto 4096 wwwroot
$

プロジェクトファイル (.csproj) があるフォルダに移動し、dotnet watch コマンドを実行すれば、プロジェクトがビルドされ、開発用サーバでホストされる Blazor WebAssembly アプリケーションが既定のブラウザで開かれます。

$ cd ./MyBlazorApp/
$ dotnet watch
dotnet watch 🔥 Hot reload enabled. For a list of supported edits, see https://aka.ms/dotnet/hot-reload.
  💡 Press "Ctrl + R" to restart.
dotnet watch 🔧 Building...
  Determining projects to restore...
  All projects are up-to-date for restore.
  MyBlazorApp -> ~/MyBlazorApp/bin/Debug/net8.0/MyBlazorApp.dll
  MyBlazorApp (Blazor output) -> ~/MyBlazorApp/bin/Debug/net8.0/wwwroot
dotnet watch 🚀 Started
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5086
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: ~/MyBlazorApp

image.png

さらに Blazor について学習を進めたい場合は、Microsoft 公式のドキュメントの他にも、以下の無償の自習書なども活用できます。

.NET 8 以外のバージョンを使いたい場合、あるいは Ubuntu 以外のディストリビューションの場合

先日 2024年11月12日に、.NET 9 がリリースされましたが、あいにくと 2024年12月現在、.NET 8 以外のバージョンを apt コマンド一発でインストールする方法はないようです。

また、この dotnet-sdk-8.0 パッケージは、Ubuntu の開発元である Canonical のリポジトリで配布されているようです。つまり、同じ apt コマンドを使用する Debian 系の他の Linux ディストリビューションであっても、Ubuntu 以外のディストリビューションでは、単に sudo apt install dotnet-sdk-8.0 などと実行しても、そのようなパッケージは見つからないというエラーになってしまいます。

他のバージョンの .NET SDK をインストールして使用したい、あるいは Ubuntu ではない他の Linux ディストリビューションを使いたい場合は、以下の Micorosft 公式のドキュメントに手順が記載されています。

多くの場合は、Microsoft 提供のパッケージリポジトリを登録追加することで対応可能になります。また、パッケージシステムに依らず、Shell スクリプトで手動インストールすることも可能です。

おわりに: どんな人が、Ubuntu、あるいは各種 Linux ディストリビューション上で Blazor アプリケーションを開発するの?

実を言いますと、どんな人が、Ubuntu、あるいは各種 Linux ディストリビューション上で Blazor アプリケーションを開発するのか、よくわかっていません。知っていたら教えてもらえると嬉しいです!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?