今回は .NET の C# や Visual Basic でプログラムを作成するときに出てくるソリューションとプロジェクトについて、実際に Small Basic オンライン (SBO) 1.0 でどうなっているのかを見ながら解説しようと思います。
Visual Studio にソリューション エクスプローラーというウィンドウがあります。これは smallbasic-editor リポジトリのルートにある SmallBasic.sln というファイルの中身を表しています。ソリューションは SBO 1.0 のように、システム全体を表しています。
ソリューションの中は9つのプロジェクトに分かれています。例えば SmallBasic.Editor というプロジェクトの中をマウス右ボタンの「エクスプローラーでフォルダを開く」メニューで開いてみると、bin\Debug\netstandard2.0 というフォルダに SmallBasic.Editor.dll というダイナミックリンクライブラリ(実行形式のクラス ライブラリ)ができていることがわかります。プロジェクトは通常このように exe や dll などのビルド単位に作られます。
SBO 1.0 の場合、SmallBasic.Analyzers.dll, SmallBasic.Compiler.dll, SmallBasic.Client.dll, SmallBasic.Editor.dll, SmallBasic.Utilities.dll の5つの dll が作られていました。
SBO 1.0 の REAME.md によると、8つのプロジェクトについて説明があります。和訳すると、
- SmallBasic.Compiler: プログラムを実行するために使われるコンパイラ/エンジン
- SmallBasic.Utilities: 異なるプロジェクト間で共有されるヘルパーユーティリティ
- SmallBasic.Analyzers: コードベースの品質管理を助ける C# アナライザー群
- SmallBasic.Generators: コードベース全体で利用される C# や TypeScript のスニペットを自動生成するスクリプトのコレクション
- SmallBasic.Client: クライアントの TypeScript, SASS や画像リソースをバンドルしたウェブパックプロジェクト
- SmallBasic.Editor: エディターUIコンポーネントをレンダリングする Blazor アプリ
- SmallBasic.Server: エディターのサービスを提供/デプロイ(展開)するのに使われる ASP サーバー
- SmallBasic.Tests: コンパイラ/エンジンをテストする C# 単体テスト
となります。順番はソリューション エクスプローラーにある順に並べ替えました。
ソリューション エクスプローラーで見るとそれぞれのプロジェクトはフォルダが分けられていて、Backend, Build, Frontend, Tests の4つのフォルダのいずれかに格納されています。Backend はサーバー側のみで実行されるプロジェクト、Build は SBO 1.0 自体をビルドするときに使用されるプロジェクト、Frontend はクライアント側とやりとりしながら実行されるプロジェクト、Tests は(ビルド直後の)自動単体テストのためのプロジェクトと考えられます。
SmallBasic.Bridge というプロジェクトに関しては SBO 1.0 の README.md に説明がありませんでした。このプロジェクトは Small Basic デスクトップ (SBD) をこのソリューションで作成するときに使われるのではないかと思います。
以上のように、ソリューションはシステム全体、プロジェクトはビルド単位と覚えておくと理解しやすいと思います。
関連項目