C#で行うWebアプリ開発入門!ASP.NET Coreの初心者向けベストプラクティス集
生徒
「C#を使ってホームページやWebシステムのような、Webアプリケーションを作ってみたいのですが、初心者は何から始めれば良いですか?」
先生
「C#でWebアプリを作るなら、ASP.NET Coreという仕組みを使うのが最も一般的です。今回は、初心者の方が迷わずに開発を進められるような、もっとも効率的で安全な作り方、つまりベストプラクティスを分かりやすく解説しますね。」
生徒
「ベストプラクティスってなんだか難しそうですが、パソコンをあまり触ったことがない私でも理解できますか?」
先生
「大丈夫です。プログラミングの経験が全くない方でも、身近な例えを使いながら一歩ずつ説明していきます。まずは基本の仕組みから順番に見ていきましょう!」
1. C#によるWebアプリ開発とASP.NET Coreの基本
C#(シーシャープ)は、マイクロソフトという大きな会社が開発したプログラミング言語です。このC#を使ってパソコンの画面の中で動く仕組みだけでなく、インターネットを通じて世界中で見ることができるWebアプリケーションを作ることができます。Webアプリケーションとは、皆さんが普段スマートフォンやパソコンで見ている、通販サイトやSNS、動画配信サイトなどのことです。
そして、C#でWebアプリケーションを効率よく開発するために用意されている土台のことを、ASP.NET Core(エーエスピーネットコア)と呼びます。この土台には、Webアプリを作るために必要な部品が最初からたくさん詰め込まれているため、一からすべてのプログラムを書く必要がありません。初心者でもこの土台のルールに従うことで、安全でしっかりとしたWebアプリを作ることができます。
2. Webアプリが動く仕組みとサーバーの役割
プログラミングの学習を始める前に、まずはインターネットでページが表示される仕組みを理解しましょう。私たちがスマートフォンやパソコンのブラウザ(インターネットを見るためのアプリ)でウェブサイトにアクセスしたとき、画面の裏側では情報のやり取りが行われています。
情報を欲しがっているあなたのパソコンを「クライアント」、そして情報を保管して提供する役割を持つ大きなパソコンを「サーバー」と呼びます。あなたがボタンをクリックすることは、サーバーに対して「このページを見せてください」とお願いする行為です。これをリクエスト(要求)と言います。それに対して、サーバーが「はい、どうぞ」と画面のデータを返してくれることをレスポンス(応答)と言います。C#のASP.NET Coreは、このサーバー側で動くプログラムを作成するための仕組みです。
3. 開発を始めるための準備とツールの導入
C#でプログラムを書くためには、専用の道具箱のようなソフトウェアが必要です。これを統合開発環境(IDE)と呼びます。もっともおすすめなのは、マイクロソフトが提供しているVisual Studio(ビジュアルスタジオ)という無料のソフトです。このソフトを使うことで、プログラムの文字を入力したり、間違いを教えてくれたり、プログラムを実際に動かしてテストしたりすることができます。
パソコンを初めて触る方にとってはインストール作業が難しく感じるかもしれませんが、画面の案内通りに進めていけば問題ありません。「ASP.NET と Web 開発」という項目にチェックを入れてインストールするだけで、必要な道具がすべて揃います。これで、あなたのパソコンがWebアプリを開発するための工房に生まれ変わります。
4. 画面に文字を表示する最初のプログラム
まずは、もっとも簡単なWebアプリのプログラムを書いてみましょう。ブラウザに文字を表示させるだけのシンプルな仕組みです。ASP.NET Coreでは、どのように画面に文字を返すかを指定します。下記のコードは、アクセスしてきた人に対して「ウェブアプリへようこそ」というお返事を返すプログラムです。
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "ウェブアプリへようこそ!");
app.Run();
このプログラムを動かすと、サーバーが起動します。そして、ブラウザを開いてそのサーバーの住所にアクセスすると、画面にメッセージが表示されます。実行結果は以下のようになります。
ウェブアプリへようこそ!
ここでは、MapGetという命令を使って、特定の場所(今回はトップページを表す斜線)にアクセスがあったときに、どのような文字を返すかを決めています。これが全てのWebアプリの基本となる形です。
5. データを計算して画面に表示するプログラム
次に、Webアプリの中で簡単な計算を行って、その結果を画面に表示してみましょう。例えば、買い物をしたときの消費税を計算するような仕組みです。プログラムの中では、データを入れておくための箱を使います。この箱のことを変数(へんすう)と呼びます。箱には名前をつけて、数字や文字を保管することができます。
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/tax", () => {
int price = 1000;
double taxRate = 0.1;
double tax = price * taxRate;
return "商品の価格は" + price + "円、消費税は" + tax + "円です。";
});
app.Run();
このプログラムでは、intという種類の箱に「1000」という数字を入れ、doubleという小数点に対応した箱に「0.1」という税率を入れています。そして、それらを掛け算した結果を文字と合体させて画面に返しています。実行結果は以下の通りです。
商品の価格は1000円、消費税は100円です。
6. 条件によって表示を変えるプログラム
Webアプリでは、アクセスしてきた時間や、利用者の入力した内容によって画面の表示を変えることがよくあります。これを条件分岐(じょうけんぶんき)と呼び、C#ではifという言葉を使って表現します。今回は、現在の時間によって「おはよう」か「こんにちは」かを自動で切り替えるプログラムを作ってみましょう。
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/greet", () => {
int hour = DateTime.Now.Hour;
string message = "";
if (hour < 12)
{
message = "午前中のアクセスですね。おはようございます!";
}
else
{
message = "午後のアクセスですね。こんにちは!";
}
return message;
});
app.Run();
DateTime.Now.Hourというのは、パソコンの現在の時刻から「時」の数字だけを取り出す命令です。もしその数字が12より小さければ午前中のメッセージを選び、そうでなければ午後のメッセージを選びます。このように条件によって動く道筋を変えることで、賢いWebアプリを作ることができます。お昼の15時にアクセスした場合の実行結果は以下のようになります。
午後のアクセスですね。こんにちは!
7. 安全なWebアプリを作るためのセキュリティ対策
インターネットの世界には、他人のWebアプリを壊そうとしたり、保存されている情報を盗もうとしたりする悪い人がいます。そのため、Webアプリを作るときは、安全性を高めるための対策が絶対に欠かせません。これをセキュリティ対策と呼びます。ASP.NET Coreには、最初からこの安全性を保つための強力な防壁が備わっています。
初心者が特に気をつけるべきベストプラクティスは、利用者が文字を入力する欄に、おかしなプログラムの命令を紛れ込ませて送信してきたときに、それをそのまま実行しないようにすることです。これをクロスサイトスクリプティング(XSS)対策と言います。ASP.NET Coreの標準的な画面表示の仕組みを使っていれば、入力された危険な文字を自動的に無害な文字に変換(エスケープ処理)してくれるため、初心者でも安全なアプリを維持することができます。常にこの土台の標準機能を使うことが最大の防御になります。
8. 読みやすいプログラムを書くための整理整頓
プログラムは、一度書いたら終わりではありません。後から機能を追加したり、間違いを見つけて直したりすることが何度も繰り返されます。そのときに、散らかった部屋のようなどこに何があるかわからないプログラムだと、直すのがとても大変になります。誰が見てもすぐに理解できる、綺麗なプログラムを書くことも重要なベストプラクティスです。
綺麗に書くためのコツは、プログラムの行の先頭に適切な隙間を空けることです。これをインデント(字下げ)と言います。また、何のために書いたプログラムなのかを日本語でメモ書きとして残しておく機能もあります。これをコメントと言います。C#では、斜線を2本続けて書くことで、その行をメモ書きにすることができます。次のコードは、コメントを活用して整理されたプログラムの例です。
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/status", () => {
// サーバーの状態を表す文字を変数に保存
string currentStatus = "正常に動作中";
// 利用者に状態を報告する
return "現在のシステム状況: " + currentStatus;
});
app.Run();
コメントとして書かれた部分は、プログラムの実行時には完全に無視されるため、自由に日本語で説明を書き込むことができます。このように整理されたプログラムの実行結果は以下のようになります。
現在のシステム状況: 正常に動作中
9. エラーが起きたときの対処法とログの記録
プログラムを作っていると、必ず思った通りに動かない場面に遭遇します。これをエラー(またはバグ)と呼びます。エラーが発生したときに、どこが間違っているのかを見つけ出す作業をデバッグと言います。プログラミングの初心者から上級者まで、開発時間の多くはこのデバッグ作業に費やされます。
ASP.NET Coreのベストプラクティスでは、エラーが発生したときの状況を記録しておく仕組みを利用します。この記録のことをログと呼びます。ログには、何時何分にどのような問題が発生したのかが詳しく文字で書き残されます。Visual Studioの画面には、このログがリアルタイムで表示されるため、エラーの原因となったプログラムの行数を特定し、素早く修正することができます。トラブルが起きても焦らず、ログの文字をじっくり読むことが解決への近道です。