Lino 入門
Lino は、明確に定義されたアーキテクチャを持つプロフェッショナルな .NET アプリケーションを作成、進化、標準化するためのコマンドラインツールです。 反復的な scaffolding タスクを自動化しますが、その目的はファイル生成にとどまりません。Lino は、責任の分離、明示的なレイヤー、ドメインモデリング、ユースケース、APIs、統合、イベント、永続化、Web アプリケーション、横断的機能を備えた一貫した技術構造へ開発者を導きます。 目的は、品質、追跡性、アーキテクチャの明確さを損なうことなく、実システムの開始と進化を加速することです。
前提条件
Lino をインストールする前に、環境が適切に準備されていることを確認してください。
- ✅ .NET 10.0 SDK 以上がインストール済み。.NET をダウンロード
- ✅ .NET CLI がターミナルで利用可能。
dotnet --versionで確認します。 - ✅ バージョン管理のために Git がインストール済み。Git をダウンロード
- ✅ migrations サポートのために Entity Framework Core CLI がインストール済み:
dotnet tool install --global dotnet-ef - ✅ Docker Desktop または Podman など、OCI 互換のコンテナー環境。
プラットフォーム互換性
Lino はクロスプラットフォームで、主要なオペレーティングシステムで使用できます。
- ✅ Windows
- ✅ macOS
- ✅ Linux
インストール
Lino はグローバル .NET ツールとして配布されます。続行する前に、.NET 10 SDK 以上がインストールされていることを確認してください。
最新バージョンをインストールするには、次を実行します。
dotnet tool install --global Tolitech.Lino
インストール後、次を実行して Lino の動作を確認します。
lino --version
インストールが成功すると、インストールされたバージョンがターミナルに表示されます。
認証
Lino をインストールした後、すべての機能にアクセスするには認証が必要です。
すでにアカウントを持っている場合は、次のコマンドでログインします。
lino auth login
次の情報の入力を求められます。
- ユーザー: 事前に登録済みのメールアドレス。
- パスワード: アカウントに関連付けられたパスワード。
まだアカウントがない場合は、CLI から直接登録します。
lino user register
登録時には次の情報を入力します。
- 名前: ユーザーの名。
- 姓: ユーザーの姓。
- メール: ログインにも使用されるメールアドレス。
- パスワード: 6 文字以上の安全なパスワード。
- パスワード確認: 検証のためにパスワードをもう一度入力します。
登録が完了すると、ユーザーは自動的に認証されます。
言語設定
既定では Lino CLI は英語 en で表示されますが、利用可能なオプションから好みに応じて言語を変更できます。
en | pt | es | de | fr | it | ja | ko | ru | zh
新しい言語を設定するには、次のコマンドを実行します。
lino preferences culture set --name <culture>
<culture> をサポートされている culture のいずれかに置き換えます。たとえば、ポルトガル語には pt、英語には en、スペイン語には es を使用します。
または、次のコマンドで対話型リストから言語を選択できます。
lino preferences culture set
UTF-8 エンコーディングの調整(任意)
日本語、韓国語、ロシア語、中国語など特殊文字を含む言語を正しく表示するには、ターミナルが UTF-8 エンコーディングを使用するように設定されていることを確認してください。
Windows PowerShell では、次のコマンドを実行してエンコーディングを調整します。
[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
注: Linux、macOS、Windows Terminal では通常 UTF-8 が標準でサポートされています。それでも、文字表示に問題が発生した場合は設定を確認することを推奨します。
利用可能なコマンド
Lino は自動化をコマンドグループに整理します。各グループは、solution の作成、サービスの追加、ドメインのモデリング、APIs の公開、ページの生成、統合の設定、migrations の制御、成果物のバージョン管理、builds の準備といったアーキテクチャ上の意図を表します。
使用中の環境で最も信頼できる参照は、インストール済み CLI 自体のヘルプです。lino --help を使用して完全なコマンドツリーを表示し、任意のグループで --help を使用してオプション、aliases、必須パラメーター、例を確認します。
Lino は継続的に進化しているため、バージョン間で新しいコマンドやオプションが追加されることがあります。このドキュメントは利用ガイドとして扱い、ワークフローを自動化する場合やチームの誰かに説明する場合は、必ずターミナルで正確な構文を確認してください。
利用可能なコマンド一覧を表示するには、ルートコマンドを実行するか、明示的にヘルプを要求します。
lino lino --help
lino --help lino project --help lino database migrations --help lino integration operation --help
任意のグループのサブコマンドやオプションを確認するには、コマンド名だけを使用するか、--help と組み合わせて使用します。
lino <command> lino <command> --help
たとえば、project グループを確認すると、CLI はグループの説明、一般的な例、利用可能なサブコマンドを表示します。
lino project --help
説明:
Lino プロジェクトを管理します。
例:
lino project new --name MyProject
lino project list
コマンド:
new 新しいプロジェクトを作成します。
list 作成済みプロジェクトを一覧表示します。
delete 既存のプロジェクトを削除します。例を読むとき、<...> で囲まれた値は、プロジェクトの実際の値に置き換える必要がある引数を示します。たとえば、<ProjectName> は solution 名に、<ServiceName> はサービス名に、<culture> は pt や en などのサポートされる culture に置き換えます。
主なコマンドグループ:
| グループ | 主なコマンド | 用途 |
|---|---|---|
project |
new, list, delete |
Lino プロジェクトを作成、一覧表示、削除します。 |
service |
new, list, delete |
backend サービスを追加、一覧表示、削除します。 |
module |
new, list, delete |
モジュラーサービス内のモジュールを追加、一覧表示、削除します。 |
entity |
new, edit, list, delete |
ドメインエンティティを作成、編集、一覧表示、削除します。 |
shadow-entity (shadow) |
new |
別のモジュールまたはサービスのデータの制御されたローカルコピーを作成します。 |
enumeration (enum) |
new, edit, list, delete |
ドメイン列挙型を作成、編集、一覧表示、削除します。 |
value-object (vo) |
new, edit, list, delete |
Value Object を作成、編集、一覧表示、削除します。 |
property (prop) |
delete |
ドメインエンティティのプロパティを削除します。 |
command |
new, list |
通常は状態変更、トランザクションルール、意図の検証に関連する書き込みユースケースを生成します。 |
query |
new, list |
通常は状態を変更せず、照会、投影、データ返却に重点を置く読み取りユースケースを生成します。 |
api |
new, list |
ユースケース向けの API endpoints を生成し、一覧表示します。 |
web-app (webapp) |
new |
Web アプリケーションを追加します。 |
page |
new, edit, list |
Blazor ページを生成、編集、一覧表示します。 |
event |
new, edit, list |
ドメインイベントまたは統合イベントを作成し、保守します。 |
event-handler (handler) |
new, list |
イベント handlers を作成し、一覧表示します。 |
error-definition (error) |
new, list |
標準化されたエラー定義を作成します。 |
integration |
new, list, resource (new/list), operation (new/list), consume |
統合、resources、操作、コンシューマーをモデル化します。 |
feature |
background-job add, auth add, tenant add |
バックグラウンドジョブ、認証、テナント機能などの横断的機能を追加します。 |
database migrations |
add, remove, list, apply, revert |
Entity Framework Core migrations を管理します。 |
secret |
list, set, remove, clear |
プロジェクトのローカル secrets を管理します。 |
plan |
add |
AI 支援の実行計画を登録します。 |
version |
show, list, bump |
サービスと web apps のバージョンを確認し、増分します。 |
build |
- | 成果物と container images を生成します。 |
user |
register |
Lino の認証済み機能にアクセスするユーザーを登録します。 |
auth |
login, logout |
認証とログアウトを含む CLI のローカルセッションを管理します。 |
preferences |
culture set |
対話型コマンドで表示される言語など、CLI のローカル設定を構成します。 |
一部のコマンドは、利便性のために短い alias を括弧内に表示します。元の名前は、読み取り、ドキュメント、トレーニング、自動化、サポートの主要な参照として残ります。
クイックスタート
次のコマンドで、継続的な進化に備えたモダンでスケーラブルな .NET アプリケーションを素早く作成します。
lino project new --name <ProjectName>
<ProjectName> を solution の実際の名前に置き換えます。たとえば MyApp というプロジェクトを作成するには、lino project new --name MyApp を実行します。
このコマンドは、ドメイン、アプリケーション、インフラストラクチャ、永続化、API、オーケストレーション、テストを明確に分離した .NET solution を生成します。初期構造により、最初の commit からアーキテクチャ上の判断を見える状態に保ち、ビジネスルール、データアクセス、endpoints、運用上の詳細が同じ場所に混在することを防ぎます。
視覚的には、MyApp という初期 solution は次のように理解できます。
MyApp/ ├── MyApp.slnx ├── src/ │ ├── Aspire/ │ │ ├── AppHost/ │ │ │ └── MyApp.AppHost.csproj │ │ └── ServiceDefaults/ │ │ └── MyApp.ServiceDefaults.csproj │ └── Services/ │ └── Shared/ │ ├── Api/ │ │ └── MyApp.Shared.Api.csproj │ ├── Application/ │ │ └── MyApp.Shared.Application.csproj │ ├── Domain/ │ │ └── MyApp.Shared.Domain.csproj │ ├── Infrastructure/ │ │ └── MyApp.Shared.Infrastructure.csproj │ └── Infrastructure.Persistence/ │ └── MyApp.Shared.Infrastructure.Persistence.csproj └── tests/
このツリーは、ユーザーのプロジェクトに生成される構造の学習用の例です。solution が最初からローカル実行、サービス、技術レイヤー、テストを分離する方法を示しています。
初期プロジェクトが提供するもの
Lino が作成する初期 solution は、最初から技術的責任ごとに整理されています。CLI は空のプロジェクトだけを提供するのではなく、エンタープライズアプリケーションに適したレイヤーとコンポーネントを備えた基盤を準備します。
| 領域 | 責任 |
|---|---|
| Domain | エンティティ、Value Objects、enumerations、ドメインイベント、リポジトリ契約、ビジネスに属するルールを集約します。 |
| Application | use cases、commands、queries、検証、handlers、アプリケーションの入力および出力契約をオーケストレーションします。 |
| Infrastructure | 補助サービス、統合、providers、認証、メッセージング、横断的機能などの外部詳細を分離します。 |
| Persistence | mappings、データベースコンテキスト、migrations、具体的なリポジトリ、unit of work を一元化します。 |
| Api | 外部コンシューマー向けに endpoints、HTTP 契約、フィルター、認証、認可、入力ドキュメントを公開します。 |
| オーケストレーション | 開発中のコンポーネントのローカル実行、基本的な observability、サービス間統合を準備します。 |
| Tests | 責任ごとにテストを整理し、ドメイン、アプリケーション、APIs、統合を段階的に検証できるようにします。 |
<ProjectName> に指定した名前は、solution の技術的アイデンティティの一部になります。namespaces、assemblies、成果物、設定、コンポーネント間の参照で使用されるため、短く安定し、代表的な名前を選んでください。
主な利点:
- 明示的なアーキテクチャ: ビジネスルール、use cases、インフラストラクチャ、永続化、入力契約を分離します。
- モジュラーな進化: コンテキストが必要とする場合に、従来型サービス、モジュラーモノリス、マイクロサービス、SaaS アプリケーションに対応できる基盤です。
- 一貫した技術パターン: DDD、Clean Architecture、CQRS、イベント、統合、migrations、テスト、observability をサポートします。
- 機械的な作業の削減: 反復的な構造を生成し、開発者がドメイン、ルール、契約、製品判断に集中できるようにします。
- より予測しやすいコード: 命名規則、フォルダー構成、責任の整理により、チームメンバー間の曖昧さを減らします。
Lino を使用すると、開発者は空のフォルダーや generic template から始めるのではありません。エンタープライズシステム向けに設計された opinionated な基盤から始め、生成される各成果物には明確な技術的役割があり、段階的に進化させることができます。
