メインコンテンツまでスキップ

v1.0 (2025-11-07)

v1.0は、アーリーアクセス期間を経て正式版として初めて公開するリリースです。 本バージョンでは、帳票テンプレートに多くの破壊的変更が含まれています

2025年初頭から急速に普及したCoding AIにより、開発手法は大きな転換期を迎えています。 yagisan-reportsでは、この変化に対応することを最優先課題と考えています。

そのため、「AI開発を前提とした帳票テンプレート」となるよう、仕様を大幅に見直しました。 また、数年にわたる開発の中で蓄積していた「構文の一貫性欠如」「不明確な挙動」「過剰な機能」なども整理し、より明確な仕様となるように改善しました。

変更内容

主要な変更点

  • npmパッケージ名の変更
  • 帳票テンプレートの大幅な仕様変更
    • レイアウトXMLを複数定義する方式に変更
    • スタイルXMLの導入
    • 属性の衝突解決を明確化
    • 制御構造を logic 属性に統合
  • <Frame> 要素の追加
  • XML Schemaの提供
  • ユーザーフォント機能の追加
  • 異体字サポートの追加

npmパッケージ名の変更

npmパッケージ名を以下のように変更しました。

  • yagisan-reports -> @yagisan-reports/sdk
  • yagisan-reports-enterprise -> @yagisan-reports/sdk-enterprise

レイアウトXMLの複数定義

従来仕様では「単一のレイアウトXMLファイルに複数のレイアウトを定義する方式」でしたが、以下の方式に変更しました。

  • 1つのレイアウトXMLファイルには、1つのレイアウトのみを定義
  • 複数のレイアウトXMLファイルをyrtファイルに内包する

この変更により、従来のルート要素である <LayoutXml> 要素は廃止となりました。 代わりに、各レイアウトXMLのルート要素として <LinearLayout> または <StackLayout> のどちらかの要素を指定してください。

スタイルXMLの導入

HTMLにおけるCSSのように、各要素の属性を別ファイルに分離して定義できる「スタイルXML」機能を導入しました。

これにより、<Text> のフォントを一括で明朝体に変更したり、重複する定義の共通化・再利用が容易になりました。 また、スタイルXML専用の <CellRange> 要素を新たに導入し、セル範囲に対して一括でスタイルを適用できるようになりました。

<Style>
<!-- key属性を指定しない場合: LayoutXML側の同名要素すべてに自動適用 -->
<Text fontFamily="mincho" />

<!-- key属性を指定した場合: LayoutXML側の同名要素のstyle属性で指定することで適用 -->
<Text key="text-bold" size="20" />

<!-- 特殊要素 CellRangeList: LayoutXML側のGrid系コンポーネント要素のrangeStyle属性でkeyを指定することで適用 -->
<CellRangeList key="grid-style-1">
<CellRange col="0" row="0" borderThickness="regular" />
</CellRangeList>
</Style>

スタイルXMLと機能が重複しており、構文もわかりづらかった以下の要素は廃止となりました。

  • <GridStyle>, <TableStyle>, <ColumnTextStyle>
  • <TextContent>, <VTextContent>, <LinkContent>, <RichTextContent>, <ColumnTextContent>

スタイルXMLの詳細については、開発ガイド > 帳票テンプレート > スタイルXML を参照してください。

属性の衝突解決を明確化

隣接する <GridCell> 要素間の罫線定義が異なっている場合など、属性の衝突解決の仕様を明確化し、帳票エンジンの挙動もこれに合わせて変更しました。 詳しくは 開発ガイド > 帳票テンプレート > 帳票エンジンの仕組み を参照してください。

制御構造を logic 属性に統合

従来の hidden foreach 属性を廃止し、代わりに logic 属性に統合しました。 詳しくは、開発ガイド > 帳票テンプレート > レイアウトXML #制御構造 を参照してください。

<Frame> 要素の追加

従来の <TableFrame> 要素を廃止し、代わりに <Frame> 要素を追加しました。 <Table> 要素だけではなく、<Grid> 要素も対象にできるようになりました。

詳しくは、 テンプレートリファレンス > XML要素 > Frame を参照してください。

XML Schemaの提供

本バージョンから、XML Schema (XSD 1.0) の提供を開始しました。 対応するエディターを使うことで、入力補完や構文チェックが可能になります。

XML Schemaを使用するには、各XMLのルート要素に以下のように属性を追加してください。

レイアウトXML
<LinearLayout
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schemas.yagisan.app/2025.1/layout.xsd"
>
スタイルXML
<Style
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schemas.yagisan.app/2025.1/style.xsd"
>

ユーザーフォント機能

任意の TTF/OTF形式のフォントファイル が使用可能になりました。 詳しくは 開発ガイド > ユーザーフォント を参照してください。

異体字サポート

異体字の描画(異体字セレクター)に対応しました。 フォントが対応している場合、以下のように異体字セレクターを組み合わせた文字が正しく描画されます。

(U+9AD8) + VS18 (U+E0101) ->

破壊的変更

  • レイアウトXMLを複数定義する方式へ変更
    • <LayoutXml> 要素を廃止し、1つのレイアウトXMLファイルには1つのレイアウトのみを定義する形に変更
    • ルート要素には <LinearLayout> <StackLayout> 要素のどちらかを指定
  • スタイルXML機能の導入にともない、機能が重複する要素を廃止
    • <GridStyle>, <TableStyle>, <ColumnTextStyle>
    • <TextContent>, <VTextContent>, <LinkContent>, <RichTextContent>, <ColumnTextContent>
  • <LinearLayout> 要素の borderThickness borderColor borderStyle 属性を廃止
  • <StackLayout> 要素の borderThickness borderColor borderStyle padding 属性を廃止
  • <LinearLayout> 要素で <LayoutBody> 要素の指定を必須に変更
  • <LinearLayout> <StackLayout> 要素の orientation 属性のシステム定義値を変更
  • <LinearLayout> <StackLayout> 要素の size 属性でカスタムサイズ指定時の記法をスペース区切りに変更
  • <LayoutHeader> <LayoutBody> <LayoutFooter> 要素の罫線の描画方法を変更
    • 従来は境界線が1本に統合されていたが、各要素の罫線が独立して描画されるように変更
  • <LayoutHeader> <LayoutFooter> 要素の height 属性の値の解釈方法を変更
    • 従来は height 属性の値に罫線の太さを含めていなかったが、罫線の太さを含めるように変更
  • <StackBlock> 要素の padding 属性を廃止
  • <Span> 要素の全属性でテンプレート変数を使用できないように変更
  • <Image> 要素に width 属性を追加
  • <Rectangle> 要素の borderRadius 属性の4方向指定を廃止し、単一値のみを受け付けるように変更
  • <Grid> 要素の borderRadius 属性を outerBorderRadius に名称変更
  • <Grid> 要素の cols rows 属性を必須指定に変更
  • <Table> 要素の items 属性に指定できる値をテンプレート変数のみに制限
  • <Table> 要素の pageBreakCondition 属性を breakCondition 属性に名称変更し、指定できる値をテンプレート変数のみに制限
  • <TableFrame> 要素を <Frame> 要素に名称変更
    • あわせて子要素も名称変更
      • <TableHeader> -> <FrameHeader>
      • <TablePageHeader> -> <FramePageHeader>
      • <TablePageFooter> -> <FramePageFooter>
      • <TableFooter> -> <FrameFooter>
    • <Table> 要素だけではなく、<Grid> 要素も対象にできるようにした
  • 全ての要素の align valign 属性でテンプレート変数を使用できるように変更
  • 全ての属性のシステム定義値から unspecified を廃止
  • hidden foreach 属性を廃止し、 logic 属性に統合
  • color backgroundColor などの色を指定する属性で記法を変更
  • borderStyle outerBorderStyle 属性に指定できるカスタム値の記法を変更
  • 4値を指定する属性(borderThickness などが該当)の指定方法を見直し
    • (Top|Right|Bottom|Left) を属性を廃止
      • border(Top|Right|Bottom|Left)(Thickness|Color|Style)
      • outerBorder(Top|Right|Bottom|Left)(Thickness|Color|Style)
      • padding(Top|Right|Bottom|Left)
      • margin(Top|Right|Bottom|Left)
      • border(TopLeft|TopRight|BottomRight|BottomLeft)Radius
    • 未指定を表す値 _ を指定可能にした
  • 列幅を指定する属性において、auto および範囲指定(例: 10:20)を廃止
    • <ColumnText> 要素の cols 属性
    • <Grid> 要素の cols 属性
    • <TableColumn> 要素の width 属性
  • Boolean 型のテンプレート変数の挙動を変更

機能の追加・改善

  • スタイルXMLの導入
  • XML Schema (XSD 1.0) を使用可能に
  • ユーザーフォント機能の追加
    • 任意のTTF/OTF形式のフォントファイルを使用可能に
  • 異体字の描画(異体字セレクター)に対応
  • マルチラインテキストを記述しやすくなるようにテキストコンテンツの記法を拡張
  • テキスト系コンポーネントで空白文字の描画を改善
    • 連続する空白文字の途中で折り返し処理を行う場合、折り返し位置より後ろの「余りの空白文字」を次行に送らずに無視する(描画しない)ように変更
    • 行末の空白文字を削除せずにそのまま描画するように変更
  • <LayoutHeader>, <LayoutBody>, <LayoutFooter> 要素に valign 属性を追加
  • <LinearBlock> 要素に valign 属性を追加
  • テンプレート変数のトークン間の空白文字を許容するようにした(例: ${ foo . bar [ 0 ] }
  • レイアウトXMLに存在しない属性が記述されている場合、構文エラーとして扱うようにした

バグフィックス

  • <LinearBlock> <GridCell> 要素の改ページ処理が正しく行われない問題を修正
    • 要素下辺の余白から罫線の領域で改ページが必要になった場合、要素内のコンテンツ分割が行われず、要素全体が次ページに送られていた
  • 一部のJavaScript処理系で <VText> を使用すると異常終了する問題を修正
  • <RichText> <Span> 要素で fontFamily 属性と bold 属性を指定したとき、指定された書式通りに描画されないことがある問題を修正
  • <FrameHeader>, <FramePageHeader>, <FramePageFooter>, <FrameFooter> (旧 <TableHeader> 等)にて何らかの属性を指定した場合、シンタックスエラーではなく、システムエラーとして扱われていた問題を修正
  • <Table> 要素の breakCondition 属性でテンプレート変数を指定する際、items 属性で指定した配列の各行のデータを参照していなかった問題を修正

alpha13からの移行

yagisan-reports開発ツール群の更新

yagisan-reports開発ツール群をインストールします。

npm install @yagisan-reports/sdk
npm install -D https://github.com/DenkiYagi/yagisan-reports-devtool

XMLエディタの準備(推奨)

v1.0からXML Schema (XSD 1.0) を提供するようになったため、対応するXMLエディタの使用を推奨します。 Visual Studio Code では、次の拡張が動作することを確認しています。

レイアウトXMLのマイグレーション

alpha13のレイアウトXMLをv1.0の形式に変換するには、以下のようにマイグレーションツールを実行します。

npx github:DenkiYagi/yrt-migrate path/to/input.xml

基本的には自動的に変換されますが、以下のような警告が出て手動での修正や表示確認が必要になる場合があります。 メッセージに従い、レイアウトXMLを修正してください。

[WARNING] 30行13列目: <Image>
Image要素にwidth属性が導入されました。
必須属性であり、自動処理では値を設定できません。
レイアウトXMLを手動で修正し、width属性を追加してください。
sample04.xml:30:13

yrtファイルの作成

npx yagisan yrt pack コマンドを使用して、マイグレーション後のレイアウトXMLからyrtファイルを作成します。

npx yagisan yrt pack <xml...>

Create a YRT file from XML files and any assets

Positionals:
xml XML file (usage: `/path/to/xml` or `/path/to/xml@name`)
[array] [required] [default: []]

Options:
--help Show help [boolean]
--version Show version number [boolean]
-A, --asset Append asset file (usage: `--asset /path/to/asset@name`)[array]
-S, --style Append style xml file (usage: `--style /path/to/style`)[string]
-O, --out Set output file path [string] [required]

.glyphdata ファイルの差し替え

v1.0での異体字サポートの追加に伴い、 .glyphdata ファイルのフォーマットが変更されました。 自分で .glyphdata ファイルをホストしている場合は、npmパッケージに同梱されている .glyphdata ファイルに差し替えてください。

v1.0移行期間中におけるalpha13での開発

alpha13のサポート期間

v1.0のリリースに伴い、原則としてalpha13(およびそれ以前のバージョン)はサポート終了となります。

ただし、アーリーアクセス版を有償契約されているお客様に限り、2026年5月31日まで不具合修正に対応いたします。

alpha13のドキュメント

Webサイトのリニューアルに伴い、v1.0より前のバージョンの情報はWebサイト上で参照できなくなりました。 旧バージョンのドキュメントが必要な方は、以下からダウンロードしてください。

alpha13形式のyrtファイルの作成

最新バージョンの yagisan-reports-devtool でも、alpha13形式のyrtファイルを作成できます。

npx yagisan yrt pack-alpha コマンドを使用してください。

npx yagisan yrt pack-alpha <xml>

Create a YRT file from an XML file and any assets (legacy format for <= v1.0.0-alpha.13)

Positionals:
xml XML file path [string] [required]

Options:
--help Show help [boolean]
--version Show version number [boolean]
-A, --asset Append asset (usage: `--asset /path/to/aseet@id`) [array]
-O, --out Set output file path [string]