Avalonia スケジューラー、Gantt、Kanban をネイティブコントロールで

sgcPlanner は、カレンダースケジューラー、Gantt チャート、Kanban ボードをネイティブコントロールとして Avalonia 12 に提供します。TsgcAvaloniaScheduler、TsgcAvaloniaGantt、TsgcAvaloniaKanban です。Windows、Linux、macOS で動作し、XAML でビューモデルにバインドでき、1 つのタスクリストを共有します。そのため、ボードにドロップしたカードが Gantt のバーとカレンダーのイベントも動かします。間に WPF ランタイムはなく、同じコントロールは WinForms、WPF、Delphi にもあります。

Avalonia アプリの中の計画スイート

1 つの TsgcPlannerData オブジェクトに 3 つのコントロール。ウィンドウに 1 つ、2 つ、または 3 つすべてを配置できます。

ProjectPlanner デモ: 同じタスクを Kanban ボード、Gantt チャート、スケジューラーで表示
ProjectPlanner デモ: 1 つのプロジェクトを Kanban ボード、Gantt チャート、スケジューラーで表示します。ProjectPlannerAvalonia は同じプロジェクトを Avalonia ウィンドウに表示します。

カレンダービュー

View は TsgcAvaloniaScheduler を、日、稼働週、週、月、アジェンダ、リソースタイムライン、年の間で切り替えます。年ビューは 12 か月のミニカレンダーで、日をダブルクリックするとその日が日ビューで開きます。Options.GroupByResource を使うと、日ビューで担当者ごとに列のグループが作られます。

ドラッグで作成と編集

時間グリッドの空き部分をドラッグすると、Options.SlotMinutes に合わせたイベントが作成され、開始、終了、リソースとともに OnItemCreate が発生します。イベントはマウスで移動とサイズ変更ができ、InplaceEdit を使うと F2 でタイトルをその場で編集できます。

繰り返し

アイテムは FREQ=WEEKLY;BYDAY=TU のような iCalendar ルールを RecurrenceRule に保持し、データは表示期間のシリーズを個々の回に展開します。ある回をドラッグすると OnRecurrenceEdit が発生し、そこで prsOccurrence、prsSeries、prsCancel を選びます。既定では、ドラッグはその回だけを移動します。

リマインダーとタイムゾーン

TsgcPlannerReminders は ReminderMinutes の時刻が来たアイテムを通知し、Dismiss と Snooze を備えています。各アイテムは固有の TimeZone を持てます。Data.DisplayTimeZone を使うと、カレンダー全体をユーザーが選んだタイムゾーンで表示します。

Gantt チャート

TsgcAvaloniaGantt には、列、サマリー、マイルストーン、進捗、自動スケジューリング付きの依存関係、クリティカルパス、ベースラインを備えたタスクグリッドがあります。TimeScale.TierCount で 3 段のタイムスケールになり、ShowHistogram を使うと、過剰割り当てをクリティカル色で塗るリソース負荷ペインが追加されます。

Kanban ボード

TsgcAvaloniaKanban は、アイテムをステータスごとの列にカードとして表示します。ドロップするとデータの MoveItem が呼ばれ、すべてのビューに 1 回通知されるので、Gantt とスケジューラーが新しいステータスで再描画されます。スイムレーンと WIP 制限は Registered エディションにあります。

リソースとキャパシティ

リソースには名前、色、イニシャルがあります。sgcUI 2026.11 の新機能として、TsgcPlannerResource.Capacity がヒストグラムの負荷を拡縮し、キャパシティラインを動かし、その上の過剰割り当てを示します。値は JSON に保存され、Microsoft Project ファイルでは MaxUnits として保存されます。

元に戻す / やり直し

Data.Undo は、ドラッグや編集を Undo と Redo で 1 ステップで取り消せます。CanUndo、CanRedo、UndoCaption、RedoCaption で、ボタンとそのツールチップを制御できます。

インポート、エクスポート、印刷

データは JSON の読み込みと保存ができ、DataTable も読み込めます。Registered エディションでは、iCalendar と MS Project XML (MSPDI) のインポートとエクスポートが加わります。プレビュー付きの印刷と、ウィンドウなしの PNG と SVG 出力はすべてのエディションに含まれます。

MVVM、テーマ、言語、カレンダー同期

プランナーは、独自の流儀を押し付けるのではなく、Avalonia アプリケーションの慣習に従います。

XAML での MVVM バインディング

ItemsSource、ResourcesSource、DependenciesSource には独自のコレクションを渡せます。TsgcAvaloniaPlannerItemFields がクラスのメンバー名を対応付け、SelectedItem は双方向にバインドされます。どのビューでのドラッグも、新しい日付やステータスをオブジェクトに書き戻します。xmlns:sgc="https://www.esegece.com/sgcui" というプレフィックス 1 つで、すべての sgcUI コントロールを使えます。

Fluent を含むテーマ

コントロールは、アプリのライトまたはダークの Avalonia テーマバリアントに従います。sgcUI 2026.11 の新機能として、Fluent プリセットでは、ホストに従いながら Avalonia FluentTheme の色を採用し、Windows 11 の角丸とフォーカスリングを備えます。

右から左の表示とアクセシビリティ

コントロールは右から左の FlowDirection に対応し、Gantt は MirrorTimeline でタイムラインを反転することも、左から右のままにすることもできます。各コントロールには Avalonia のオートメーションピアとキーボード操作があるため、スクリーンリーダーがビュー、アイテム、スロットを読み上げます。アクセシビリティはすべてのエディションで既定で有効です。

12 言語

sgcUI 2026.11 の新機能として、エンドユーザー向けの文字列は、英語、スペイン語、ドイツ語、フランス語、イタリア語、オランダ語、ポーランド語、ポルトガル語 (ブラジル)、トルコ語、日本語、韓国語、中国語の組み込み言語パックから取得されます。sgcUILang.SetLanguage には、ロケール、または現在の UI カルチャを表す "auto" を指定します。

Outlook、Google、CalDAV の同期

Registered エディションのオプションの esegece.sgcPlanner.sgcWebSockets ブリッジは、Microsoft Graph 経由の Microsoft 365 と Outlook.com の Outlook カレンダー (TsgcPlannerGraphSync)、Google Calendar (TsgcPlannerGoogleSync)、Nextcloud、iCloud、Fastmail、Radicale などの CalDAV サーバー (TsgcPlannerCalDAVSync) とデータを双方向に同期します。TsgcPlannerICalSubscription は読み取り専用の iCalendar URL をマージします。ブリッジは sgcWebSockets を使用します。

Smart Paste

スケジューラーで Ctrl+Shift+V を押すと、貼り付けたテキストが会議になります。「名前: 値」のような行は組み込みパーサーが読み取り、AIProvider には、メールのような自由形式のテキストのために任意の LLM を呼び出す TsgcUIAIEventProvider を指定できます。Smart Paste は Community エディションにも含まれます。

1 つのビューモデルにバインドしたスケジューラーと Gantt

FluentTheme とコンパイル済みバインディングを使う net8.0 の小さな Avalonia 12 アプリからコピーしたもので、using 行と名前空間は省いています。このアプリは、sgcPlanner の Registered ビルドと Community ビルドの両方に対して、警告 0 件、エラー 0 件でコンパイルできます。

ビューモデル: 単純なクラス

独自の型をそのまま使えます。継承するものはありません。毎日のスタンドアップは、繰り返しルールを持つ 1 つのアイテムです。

TTeamViewModel.cs
public class TMeeting
{
    public string Key { get; set; }
    public string Subject { get; set; }
    public DateTime Begin { get; set; }
    public DateTime End { get; set; }
    public string Owner { get; set; }
    public string Rule { get; set; }
}

public class TPerson
{
    public string Code { get; set; }
    public string Label { get; set; }
}

public class TTeamViewModel
{
    public ObservableCollection<TMeeting> Meetings { get; } = new ObservableCollection<TMeeting>();
    public ObservableCollection<TPerson> People { get; } = new ObservableCollection<TPerson>();

    public TTeamViewModel()
    {
        People.Add(new TPerson { Code = "ann", Label = "Ann" });
        People.Add(new TPerson { Code = "bob", Label = "Bob" });
        DateTime vMonday = DateTime.Today.AddDays(-(((int)DateTime.Today.DayOfWeek + 6) % 7));
        Meetings.Add(new TMeeting { Key = "m1", Subject = "Stand-up", Owner = "ann",
            Begin = vMonday.AddHours(9), End = vMonday.AddHours(9.25),
            Rule = "FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR" });
        Meetings.Add(new TMeeting { Key = "m2", Subject = "Design review", Owner = "bob",
            Begin = vMonday.AddDays(2).AddHours(14), End = vMonday.AddDays(2).AddHours(15) });
    }
}

ウィンドウ: 同じコレクションに対する 2 つのビュー

フィールドマップで、ID、タイトル、日付、担当者、ルールをどのメンバーが保持しているかをコントロールに伝えます。

MainWindow.axaml
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sgc="https://www.esegece.com/sgcui"
        xmlns:local="using:TeamCalendar"
        x:Class="TeamCalendar.MainWindow"
        x:DataType="local:TTeamViewModel"
        Title="Team calendar" Width="1100" Height="720">
  <TabControl>
    <TabItem Header="Calendar">
      <sgc:TsgcAvaloniaScheduler x:Name="scheduler" View="psvWorkWeek" InplaceEdit="True"
                                 ItemsSource="{Binding Meetings}" ResourcesSource="{Binding People}">
        <sgc:TsgcAvaloniaScheduler.ItemFields>
          <sgc:TsgcAvaloniaPlannerItemFields IdField="Key" TitleField="Subject" StartField="Begin"
                                             FinishField="End" ResourcesField="Owner"
                                             RecurrenceField="Rule"/>
        </sgc:TsgcAvaloniaScheduler.ItemFields>
        <sgc:TsgcAvaloniaScheduler.ResourceFields>
          <sgc:TsgcAvaloniaPlannerResourceFields IdField="Code" NameField="Label"/>
        </sgc:TsgcAvaloniaScheduler.ResourceFields>
      </sgc:TsgcAvaloniaScheduler>
    </TabItem>
    <TabItem Header="Gantt">
      <sgc:TsgcAvaloniaGantt x:Name="gantt" ShowHistogram="True" ShowToday="True"
                             ItemsSource="{Binding Meetings}" ResourcesSource="{Binding People}">
        <sgc:TsgcAvaloniaGantt.ItemFields>
          <sgc:TsgcAvaloniaPlannerItemFields IdField="Key" TitleField="Subject" StartField="Begin"
                                             FinishField="End" ResourcesField="Owner"/>
        </sgc:TsgcAvaloniaGantt.ItemFields>
        <sgc:TsgcAvaloniaGantt.ResourceFields>
          <sgc:TsgcAvaloniaPlannerResourceFields IdField="Code" NameField="Label"/>
        </sgc:TsgcAvaloniaGantt.ResourceFields>
      </sgc:TsgcAvaloniaGantt>
    </TabItem>
  </TabControl>
</Window>

コードビハインド: オプションと作成イベント

稼働週を担当者ごとにグループ化し、新しいイベントを 15 分に合わせ、ドラッグで作成されるイベントに名前を付け、Gantt に 3 段のタイムスケールを設定します。

MainWindow.axaml.cs
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        scheduler.Options.GroupByResource = true;
        scheduler.Options.SlotMinutes = 15;
        // a drag on an empty slot creates a meeting: name it here
        scheduler.OnItemCreate = DoItemCreate;
        // three tier timescale over the Gantt bars
        gantt.TimeScale.TierCount = 3;
    }

    private void DoItemCreate(object aSender, DateTime aStart, DateTime aFinish,
        string aResourceId, ref string aTitle, ref bool aAccept)
    {
        aTitle = "New meeting";
    }
}

このプロジェクトは Avalonia.Desktop と Avalonia.Themes.Fluent 12.1.4、および esegece.sgcPlanner.Avalonia を参照します。無料エディションでは esegece.sgcPlanner.Avalonia.Community を参照し、繰り返しは Registered の機能なので、スタンドアップは 1 回だけ表示されます。アプリケーションはスタイルに new FluentTheme() を追加し、ウィンドウに DataContext = new TTeamViewModel() を設定します。

動作環境

1 つのプランナーモデル、どのホストでも同じビュー。

ホスト コントロール ターゲット
Avalonia 12TsgcAvaloniaScheduler, TsgcAvaloniaGantt, TsgcAvaloniaKanbanWindows、Linux、macOS 上の net8.0、net9.0、net10.0
WinForms と WPFTsgcWinFormsScheduler、Gantt と Kanban、および WPF の対応コントロールAvalonia と同じライセンスの .NET
Delphi と C++BuilderTsgcVCLScheduler、TsgcFMXScheduler と、その Gantt と Kanban の対応コントロールsgcPlanner Delphi エディションの VCL と FireMonkey
ヘッドレスTsgcPlannerRendererウィンドウなしの PNG と SVG 出力 (Windows、Linux、macOS)

Avalonia コントロールは、sgcUICore の Avalonia コントロール基盤の上に SkiaSharp で描画されます。デモの TeamSchedulerAvalonia と ProjectPlannerAvalonia には .NET SDK 8.0 以降が必要で、Windows、Linux、macOS で動作します。

Avalonia でスケジューラーを手に入れる 3 つの方法

2026-10-20 時点の情報です。出典については Avalonia Pro と WinForms と WPF から Avalonia へのガイドをご覧ください。

  Avalonia XPF 上の WPF スイート Avalonia Pro sgcPlanner for Avalonia
概要XPF 上で動く WPF スケジューラー。ベンダーは XPF を "a binary-compatible WPF runtime" と呼んでいますプレミアムな Avalonia コンポーネントネイティブな Avalonia 12 コントロール
スケジューラー、Gantt、KanbanWPF スイートのもの。XPF のサードパーティライブラリに関する注記の条件付きで、たとえば DevExpress コントロール向けの Win32 API シムがありますAvalonia Pro のページには記載なしTsgcAvaloniaScheduler, TsgcAvaloniaGantt, TsgcAvaloniaKanban
ライセンスアプリケーションごとの XPF は EUR 9,500 (Internal) と EUR 29,500 (Business) から、これに加えて WPF スイートのライセンスが必要1 席あたり年間 EUR 899開発者ごと: sgcPlanner .NET €249、または sgcUI .NET Enterprise €699。アプリケーションごとの料金はありません
ソースコード プレミアムコントロールの完全なソースは Enterprise に含まれますすべての Registered ライセンスに完全な C# ソースコードが付属
無料ティア Community。2026-04-07 以降の新規登録では非商用に限定Community NuGet パッケージ。売上 EUR 1,000,000 未満で開発者 5 人までなら商用利用も可能

他の選択肢のために公平に述べると、XPF は既存の WPF アプリケーションをほぼそのまま macOS と Linux で動かすことを目指していますが、sgcPlanner はそれを行いません。Avalonia Pro はプレミアムコンポーネントと、Hot Reload や DevTools といったベンダーのツールを提供しますが、sgcUI にはそれらは含まれません。sgcPlanner は、Avalonia Pro のコントロールと同じウィンドウ内で並べて使えます。

Community と Registered

どちらのエディションにも同じ 3 つのコントロールがあります。Registered エディションでは、高度な計画機能とソースコードが加わります。

Community (無料)

NuGet の esegece.sgcPlanner.Avalonia.Community は、年間総売上が EUR 1,000,000 未満で開発者が 5 人以下の個人と組織であれば、商用と非商用のどちらのプロジェクトでも無料です。日、稼働週、週、月、アジェンダの各ビュー、ドラッグ操作に対応した Gantt と Kanban、サマリー、マイルストーン、進捗、リソース別グループ化、DataTable と JSON のデータ、Smart Paste、印刷、ウィンドウなしの PNG と SVG 出力を含みます。

Registered

esegece.sgcPlanner.Avalonia は、sgcPlanner .NET の単体パッケージ €249 と、開発者ごとの sgcUI .NET Enterprise €699 に含まれます。繰り返し、リソースタイムライン、自動スケジューリング付きの依存関係、クリティカルパス、ベースライン、Kanban のスイムレーンと WIP 制限、iCalendar と MS Project XML、カレンダー同期ブリッジ、完全な C# ソースコード、バイナリの無償再配布が加わります。

セルフチェック付きの Avalonia デモ 2 つ

どちらも dotnet run で動作し、dotnet run -- --test result.txt を実行すると、チェックごとに PASS または FAIL の行を 1 行書き出し、失敗したチェックの数を終了コードとして終了します。

TeamSchedulerAvalonia

5 人のチームの 3 週間分の会議: すべてのビュー、タイトルのその場編集、元に戻すとやり直し、Dismiss と Snooze 付きのリマインダー、アイテムごとのタイムゾーン、繰り返しのスタンドアップと同期、ドラッグで作成、リソース別グループ化、Smart Paste。

ProjectPlannerAvalonia

Web サイト再公開プロジェクトを Gantt チャート、Kanban ボード、週ビューに同時に表示し、すべて同じデータにバインドしています。To do から Done にカードをドラッグすると、Gantt のバーとカレンダーのイベントが緑に変わります。3 段のタイムスケール、リソースヒストグラム、元に戻す機能付きです。

sgcUI のデモを見るか、sgcPlanner の製品ページですべての機能をご覧ください。

Avalonia スケジューラーに関する質問

このスケジューラーは、ネイティブな Avalonia コントロールですか、それとも互換レイヤー上の WPF コントロールですか。

ネイティブな Avalonia コントロールです。TsgcAvaloniaScheduler、TsgcAvaloniaGantt、TsgcAvaloniaKanban は Avalonia と Avalonia.Skia 12 の上に構築され、SkiaSharp で描画されます。net8.0、net9.0、net10.0 向けの esegece.sgcPlanner.Avalonia パッケージに含まれています。間に WPF ランタイムはなく、コントロールは Windows、Linux、macOS で動作します。

XAML で自分のビューモデルにスケジューラーをバインドできますか。

はい。ItemsSource、ResourcesSource、DependenciesSource は任意の IEnumerable を受け取ります。たとえば、独自クラスの ObservableCollection です。TsgcAvaloniaPlannerItemFields が、メンバー名を ID、タイトル、開始、終了、リソース、ステータス、繰り返し、その他のアイテムフィールドに対応付けます。SelectedItem は双方向にバインドされ、コントロール上でのドラッグや編集は新しい値をオブジェクトに書き戻します。x:DataType によるコンパイル済みバインディングも使えます。

Avalonia スケジューラーの無料エディションはありますか。

はい。esegece.sgcPlanner.Avalonia.Community は、年間総売上が EUR 1,000,000 未満で開発者が 5 人以下の個人と組織であれば無料です。日、稼働週、週、月、アジェンダの各ビュー、Gantt、Kanban ボードを備えています。繰り返し、リソースタイムライン、自動スケジューリング付きの依存関係、クリティカルパス、ベースライン、Kanban のスイムレーンと WIP 制限、iCalendar と MS Project XML の交換には Registered エディションが必要です。

Avalonia スケジューラーは Outlook、Google Calendar、CalDAV と同期できますか。

はい。sgcWebSockets を使用する、Registered エディションのオプションの esegece.sgcPlanner.sgcWebSockets ブリッジパッケージを通じて可能です。TsgcPlannerGraphSync は Microsoft Graph 経由で Microsoft 365 または Outlook.com の Outlook カレンダーと、TsgcPlannerGoogleSync は Google カレンダーと、TsgcPlannerCalDAVSync は Nextcloud、iCloud、Fastmail、Radicale などの CalDAV カレンダーと、データを双方向に同期します。TsgcPlannerICalSubscription は読み取り専用の iCalendar URL をマージします。ブリッジはデータオブジェクト上で動作するため、WinForms と WPF のコントロールだけでなく Avalonia のコントロールにも対応します。

Avalonia 向けの sgcPlanner は、どの sgcUI エディションに含まれますか。

sgcPlanner .NET は sgcUI .NET Enterprise エディションに含まれ、単体パッケージとしても販売されています。どちらのライセンスも WinForms、WPF、Avalonia を対象とし、完全な C# ソースコードとバイナリの無償再配布が付属します。

最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

Avalonia アプリにスケジューラーを追加しましょう

NuGet の無料の Community パッケージ、または繰り返し、タイムライン、カレンダー同期、完全なソースコードを備えた Registered パッケージから始め、アプリの隣で TeamSchedulerAvalonia デモを開いてみてください。