Blazor01

BlazorでのWebアプリケーション開発手法1【C#】A03_プロジェクトの作成

それでは、実際にBlazorのプロジェクトを作成していきましょう。Visual Studioがすでに起動している場合は、「ファイル」メニューから「新規作成」→「プロジェクト」を選択してください。まだ起動していない場合は、Visual Studio 2022を立ち上げ、スタート画面に表示される「新しいプロジェクトの作成」から始めます。

図1 Visual Studio 2022 起動直後の画面

「新しいプロジェクトの作成」画面が開いたら、右上のテンプレート検索ボックスに「Blazor」と入力して絞り込みます。

図2 新しいプロジェクトの作成画面

「Blazor」で検索すると、「Blazor Web App」「Blazor Server アプリ」「Blazor WebAssembly スタンドアロン アプリ」など、似たような名前のテンプレートがいくつも表示されます。ここで選び間違えないように注意してください。

図3 「blazor」で絞り込んだテンプレート一覧

今回使用するのは、一番上に表示されている「Blazor Web App」です。こちらを選択して「次へ」をクリックします。

図4 「Blazor Web App」テンプレートを選択

続いて「新しいプロジェクトを構成します」画面が表示されます。プロジェクト名はそのままで構いません。保存先の「場所」は、お好きなフォルダーを指定してください。ソリューション名も自動的にプロジェクト名と同じものが設定されます。入力できたら「次へ」をクリックします。

図5 プロジェクト名と保存先の指定

次に「追加情報」画面が表示されます。ここではいくつか重要な設定を行います。まず「フレームワーク」は、現在.NET 9.0が利用できるようになっているので、「.NET 9.0」を選択します。

次に「Interactive render mode」という項目があります。これは、アプリをServer側で動かすか、WebAssemblyとしてクライアント側で動かすか、あるいはその両方を使うかを選択する設定です。ここでは「Server」を選んでください。Serverを使うと、データベースなどに接続する際に、通常のデスクトップアプリケーションでSQL Serverなどに接続するのと同じような感覚で開発できるため、扱いやすいという特徴があります。

続いて「Interactivity location」という項目があります。これは、画面をページ単位で更新するか、アプリ全体でまとめて更新するかを決める設定で、レンダリングモードに関わるものです。「Per page/component」を選ぶと、更新が必要なページだけを個別に設定できるため、通信の負荷を抑えることができます。一方「Global」を選ぶと、アプリ全体が常時接続された状態になります。負荷を軽減したい場合は、ページ単位で設定できる「Per page/component」を選んでおくのがおすすめです。なお、この設定によって実際のコードにどのような違いが生まれるかについては、後のレクチャーで詳しく解説します。今回は「Per page/component」を選択してください。

「Include sample pages」はチェックを入れたままにしておきます。最後に「Do not use top-level statements」という項目がありますが、これはC# 9から使えるようになった、Mainメソッドを書かずに直接コードを記述できる書き方を使うかどうかの設定です。チェックを入れないままにしておくと、この簡略化された書き方(トップレベルステートメント)が使われます。逆にMainメソッドをきちんと書きたい場合は、ここにチェックを入れます。どちらでも問題はありませんが、今回はチェックを入れずに進めます。

図6 追加情報画面(フレームワーク・レンダリングモードの設定)

すべての設定ができたら、「作成」ボタンをクリックします。しばらく待つと、プロジェクトが作成されます。ソリューションエクスプローラーに、Componentsフォルダーやappsettings.json、Program.csなどのファイルが表示されていれば成功です。

図7 作成されたBlazorプロジェクト

BlazorでのWebアプリケーション開発手法1【C#】

A01_はじめに
A02_バージョンの確認
A03_プロジェクトの作成
A04_アプリの実行
A05_サンプルプログラムの構成
A06_Razorコンポーネント
A07_Razor構文
A08_@pageでURLを指定する
A09_@rendermode
A10_PageTitle
A11_HTMLの見出し
A12_pタグ
A13_単方向データバインド
A14_単方向データバインドの詳細
A15_Bootstrap
A16_ボタンクリックイベント
A17_イベント引数の受け取り方
A18_ここまでのまとめ
B01_新しいWebページを追加する方法
B02_サイドバーから画面を表示する
B03_サイドバーのアイコンを変更する方法
B04_計測値を表示する
B05_変数に置き換える
B06_最新の値でデータを更新する
B07_@usingで通常のC#コードを呼び出す
B08_画面遷移_aタグ
B09_画面遷移_aタグの見た目をボタンにする
B10_画面遷移_NavigationManagerでの遷移
B11_画面間のパラメータの受け渡し方法
B12_EscapeDataStringでエスケープする
B13_複数のパラメータを渡す
B14_任意のパラメータにする
B15_string以外の型をパラメータで使う方法
B16_DateTime型をパラメータで渡す方法
B17_引数2個のURLも型指定に変更する
B18_パラメータ属性をつけるときの注意点
B19_OnParametersSet
B20_OnInitialized
B21_OnInitializedが2回通る問題の対応
B22_ブラウザが開いている間の値を記憶する方法
B23_値の受け渡しとしてのProtectedSessionStorage
B24_非同期を想定したUIの制御
C01_一覧表示
C02_非同期での一覧表示
C03_table-striped
D01_入力エリア
D02_双方向データバインド
D03_入力データをリアルタイムで通知する方法
D04_placeholder
D05_入力エリアの横幅の調整
D06_テキストチェンジイベントを拾う方法
D07_プルダウン
D08_プルダウンのbootstrap
D09_プルダウンの選択している値をデータバインドで操作する
D10_プルダウンにリストの値を表示する
D11_プルダウンに未選択行を入れる
D12_プルダウンの入力を禁止する
D13_プルダウンのチェンジイベントを取得する
D14_チェックボックス
D15_チェックボックスにラベルを付ける
D16_複数のチェックボックスを並べる
D17_ラジオボタン
D18_ラジオボタンのデータバインド
D19_ラジオボタンのチェンジイベント
D20_ラジオボタンにbootstrapを適応する