2024年1月からの電子取引データ保存方法がどうなるか? 財務省令(施行規則)を読んでみる

電子帳簿保存法の第7条で、電子取引を行なったとき、電子取引データをデジタルで保存しなければならないことになっています。その保存方法については財務省令で定めることになっており、2024年1月以降の保存方法は、2024年1月1日より施行される財務省令によります。

この財務省令(「電子計算機を使用して作成する国税関係帳簿書類の保存方法等の特例に関する法律施行規則」)(以下、施行規則)を読んで、電子取引データ保存方法について整理してみます。

電子取引データ保存については施行規則の第4条に規定されています。第4条には1~3の3項があります。

2項は用語の意義を規定しているものなので省略すると、第4条の主な内容は1項と3項になります。このうち、1項が電子取引データの保存要件に関する規定で、いわば本筋と言えます。これに対して、3項は本筋の要件を満たせないときのこと(猶予措置)を規定しているという枠組みのようです。

それぞれについてできるだけ簡単にまとめてみます。なお、以下の説明は分かりやすくするためかなり大雑把にまとめていることに注意してください。

1項 保存の要件について

原則として、次の(1)~(6)が保存の要件とされています。
※例えば、「電子帳簿保存法第7条 詳細」にも具体的な解説がありますのでご参照ください。
(1) 保存場所:取引情報の授受が書面で行われたとした場合に保存するべき場所
(2) 保存期間:取引情報の授受が書面で行われたとした場合に保存するべき期間
(3) 保存のための措置:次のa~dのいずれかを行う。
a. 電子取引データにタイムスタンプを打ってから取引データを授受する
b. 取引データを授受してから速やかにタイムスタンプを打つか、業務処理規程で定めた期間を経過した後速やかにタイムスタンプを打つ
c. 訂正削除できないか、訂正削除の事実・内容を確認できるシステムを使用して授受及び保存を行う
d. 電子取引データの訂正・削除を防止する事務処理規程を定めて運用する
(4) コンピュータシステムと説明書を備え付けて、画面と書面に整然と速やかに出力できるようにする
(5) 検索要件:次の検索要件を満たすことができるようにすること
a. 取引年月日その他の日付、取引金額、取引先を検索条件として設定できること
b. 日付または金額の範囲指定で検索できること
c. 二つ以上の任意の項目を組み合わせて検索できること
(6) (システム開発を他者に委託しているとき)システムの概要を記載した書類を備える

検索要件については例外があります。
例外1:税務調査の際に電子取引データの提示・提出要求に応じるようにしているなら、(5) 検索要件のb. c は不要。
例外2:さらに基準期間の売上高が5,000万円以下、または電子取引データを日付けと取引先毎に出力した書面を提示・提出に応じて、かつデジタルデータの提示に応じることができるなら、(5) 検索要件は不要。

保存要件の緩和措置
2023年12月までの施行規則では、タイムスタンプを打つときの電子取引データを保存する者や直接監督する者の情報を確認できる必要がありましたが、2024年1月からは不要になります。また、例外2の基準期間売上高は2023年までは1000万円以下ですが、2024年1月から5000万円となります。例外2の「または」以降は2024年1月から新設されます。

3項 保存の要件を満たせないとき(猶予措置)

3項(猶予措置)の全文を引用すると次のようになります。

法第七条に規定する保存義務者が、電子取引を行った場合において、災害その他やむを得ない事情により、同条に規定する財務省令で定めるところに従って当該電子取引の取引情報に係る電磁的記録の保存をすることができなかったことを証明したとき、又は納税地等の所轄税務署長が当該財務省令で定めるところに従って当該電磁的記録の保存をすることができなかったことについて相当の理由があると認め、かつ、当該保存義務者が国税に関する法律の規定による当該電磁的記録及び当該電磁的記録を出力することにより作成した書面(整然とした形式及び明瞭な状態で出力されたものに限る。)の提示若しくは提出の要求に応じることができるようにしているときは、第一項の規定にかかわらず、当該電磁的記録の保存をすることができる。ただし、当該事情が生じなかったとした場合又は当該理由がなかったとした場合において、当該財務省令で定めるところに従って当該電磁的記録の保存をすることができなかったと認められるときは、この限りでない。

猶予措置の引用文中アンダーラインを施した箇所は2024年1月1日からの施行規則で追加されたものです。本筋で電子取引データの保存要件について規程しているにも関わらず、猶予措置では規程に関わらずに保存できるということなので、矛盾しているように見えます。猶予措置の前提として税務署長が相応の理由があると認めることも、恣意的な印象があります。このあたりはもう少し調べてみたいところです。

なお、第3項でも電子取引データの提示・提出が必要とされているので、電子取引データの保存が不要になるということはありません。

Webを検索すると2024年1月から「電磁的記録の電子保存義務化の経過措置として整備されていた「宥恕措置」が、恒久的なものとして制度化された」といった解説も見られます。しかし、この理解は誤りと思われます。つまり、宥恕措置では書面による保存を認めていたのに対し、2024年1月からの猶予措置では「電磁的記録及び当該電磁的記録を出力することにより作成した書面」の提示となっているので、デジタルデータと書面の両方を提示する必要があります。つまり書面の保存のみでは認められなくなります。

最後の「ただし」以降は何を意味しているのか理解しにくい文で不気味です。いまのところ、これに関する解釈を見つけることができていません。

前回:電子取引データの保存、宥恕措置終了後の2024年(令和6年)1月1日からはどうなる?
次回:2024年1月からの電子取引データ保存をどのように進めたら良いかを考える(1)

関連記事


電子取引データの保存、宥恕措置終了後の2024年(令和6年)1月1日からはどうなる?

前回は、「電子帳簿保存法・電子取引データ保存で目にあまる迷走を続ける財務省」として、法律で2022年1月から電子取引データをすべてデジタル保存することが法律で義務付けられたのにも関わらず、実際には2022年1月から2023年12月まで宥恕措置として書面保存ができるようになったことを説明しました。

この宥恕措置は2023年12月で終了します。では、2024年1月からはどうなるでしょうか?

これについては、2022年(令和4年)12月23日に閣議決定された2023年度(令和5年)税制改正大綱に次のような方針が出されています。

令和5年度税制改正の大綱(pp.82-83)

(3)電子取引(取引情報の授受を電磁的方式により行う取引をいう。以下同じ。)の取引情報に係る電磁的記録の保存制度について、次の見直しを行う。
① 電子取引の取引情報に係る電磁的記録の保存要件について、次の措置を講ずる。
イ 保存義務者が国税庁等の当該職員の質問検査権に基づく電磁的記録のダウンロードの求めに応じることができるようにしている場合には検索要件の全てを不要とする措置について、対象者を次のとおりとする。
(イ)その判定期間における売上高が 5,000 万円以下(現行:1,000 万円以下)である保存義務者
(ロ)その電磁的記録の出力書面(整然とした形式及び明瞭な状態で出力され、取引年月日その他の日付及び取引先ごとに整理されたものに限る。)の提示又は提出の求めに応じることができるようにしている保存義務者
ロ 電磁的記録の保存を行う者等に関する情報の確認要件を廃止する。
② 電子取引の取引情報に係る電磁的記録を保存要件に従って保存をすることができなかったことについて相当の理由がある保存義務者に対する猶予措置として、申告所得税及び法人税に係る保存義務者が行う電子取引につき、納税地等の所轄税務署長が当該電子取引の取引情報に係る電磁的記録を保存要件に従って保存をすることができなかったことについて相当の理由があると認め、かつ、当該保存義務者が質問検査権に基づく当該電磁的記録のダウンロードの求め及び当該電磁的記録の出力書面(整然とした形式及び明瞭な状態で出力されたものに限る。)の提示又は提出の求めに応じることができるようにしている場合には、その保存要件にかかわらず、その電磁的記録の保存をすることができることとする。
③ 電子取引の取引情報に係る電磁的記録の保存への円滑な移行のための宥恕措置は、適用期限の到来をもって廃止する。
(注)上記の改正は、令和6年1月1日以後に行う電子取引の取引情報に係る電磁的記録について適用する。
(4)その他所要の措置を講ずる。

この方針に基づいて、財務省令が改正されて2023年(令和5年)3月31日に、新しい財務省令が公布されています。

電子計算機を使用して作成する国税関係帳簿書類の保存方法等の特例に関する法律施行規則の一部を改正する省令
新旧対照表(PDF)
新財務省令(Web)

このように手続きは粛々と進められています。新財務省令は2024年(令和6年)1月1日より施行になるので、来年からの電子取引データ保存は新財務省令に沿って行うことになります。

新財務省令に沿う電子取引データ保存の要件については、別途整理する予定ですが、このように短期間で、分かりにくい方針転換が行われるため、納税者である民間企業の立場から見るとシステム投資の計画を立てにくい状態となっています。

前回:電子帳簿保存法・電子取引データ保存で目にあまる迷走を続ける財務省
次回:2024年1月からの電子取引データ保存方法がどうなるか? 財務省令(施行規則)を読んでみる

関連記事


電子帳簿保存法・電子取引データ保存で目にあまる迷走を続ける財務省

先日は、「DX時代に逆行する電子帳簿保存法は、そろそろ、いさぎよく廃止するべきではないでしょうか?」と主張しました。この記事をお読みになっても、なぜ廃止するべきと主張するのか理解できないかもしれません。

そこで、今回は電子取引データ保存を例として、財務省の迷走をご紹介します。

例えば、アマゾンや楽天などのECサイトで、会社で使う物品を購入したとします。そうすると請求書または領収書をPDF形式で入手して、それによって経理処理をすることになるでしょう。

このPDF形式の証憑は電子帳簿保存法で保存義務が課せられます。該当する条文は、当初は第10条でしたが、2021年3月に電子帳簿保存法が改定されてからは第7条となります。

第10条は次のようになっていました。

第十条 所得税(源泉徴収に係る所得税を除く。)及び法人税に係る保存義務者は、電子取引を行った場合には、財務省令で定めるところにより、当該電子取引の取引情報に係る電磁的記録を保存しなければならない。ただし、財務省令で定めるところにより、当該電磁的記録を出力することにより作成した書面又は電子計算機出力マイクロフィルムを保存する場合は、この限りでない。

つまり、PDFを出力した書面を保存すればよく、デジタルデータは保存する必要はなかったのです。ところが、2021年3月改正の第7条では次のようになりました。

第七条 所得税(源泉徴収に係る所得税を除く。)及び法人税に係る保存義務者は、電子取引を行った場合には、財務省令で定めるところにより、当該電子取引の取引情報に係る電磁的記録を保存しなければならない。

そして、財務省令で保存のための要件が定められ、2022年1月より施行するとされていました。つまり、2022年1月からは書面にプリントして保存するのではなく、財務省令の要件を満たした上で、デジタルデータのまま保存しなければならないことになったわけです。

こうした状況を予想して、アンテナハウスは、2021年春から財務省令で定める要件を満たす電子取引データ保存専用の製品開発に急いで取り組みました。これは『電子取引Save』という製品名で2021年秋から発売するとともに、2022年1月から『電子取引Save』を用いて、自社でも電子取引データ保存を運用することとしました。

『電子取引Save』のWebページ
『電子取引Save』発売のお知らせ

ところが、2021年秋の税制改正大綱策定で雲行きが怪しくなりはじめました。そして最終的には2021年12月27日に財務省令が改定され、2022年1月から2024年12月31日まで次のような宥恕措置が施行されることとなりました。

電子取引データの出力書面等による保存措置の廃止(令和3年度税制改正)に関する宥恕措置について(財務省のWebページへのリンク)

一言でいえば、間に合わない事業者が多いので引き続き書面による保存を可能にするということです。

こうして、折角、新製品を開発してリリースしたにも関わらず、肝心かなめの財務省が腰砕け、真面目に取り組んだ国民は梯子を外されたということになりました。でも間に合わないというのは言い訳に過ぎないのです。実際に弊社は2022年1月より『電子取引Save』を使って電子取引データを保存しているわけですから。

こうして財務省の方針が一転してから約2年、2023年12月で宥恕措置の期限が切れることになります。さて次回は2022年から2023年の経過で迷走の第2幕、2024年1月からの保存がどうなるかをみたいと考えています。

参考資料)
見積書、注文書、請求書、領収書をPDFとして作成し、Webダウンロード配信や電子メールによる送受信をしたときの保存義務について(更新日: 2021/11/3)

前回:DX時代に逆行する電子帳簿保存法は、そろそろ、いさぎよく廃止するべきではないでしょうか?
次回:電子取引データの保存、宥恕措置終了後の2024年(令和6年)1月1日からはどうなる?

関連記事


DX時代に逆行する電子帳簿保存法は、そろそろ、いさぎよく廃止するべきではないでしょうか? 

法人税法などの国税関連法では、企業は決算に影響を与える証憑書類を、決算申告時点から7年(必要に応じて10年)保存することが義務付けられています。これは、会社を経営する人や、税理士なら皆知っていることなので、いまさら話題にもなりません。

取引の証憑が書面(紙)である場合は、会社から取引相手に発行した請求書や、取引相手から送られてきて支払いに使った請求書や領収書などは決算処理を行った後、整理して段ボールなどに入れて倉庫保存しておくのが普通です。一旦、倉庫にいれてしまえば、後日、取り出してみることはほとんどありません。何年かに一回、『税務署から調査にいくので用意しておいてください。』といった連絡があると、倉庫から送ってもらい、税務調査に備えるくらいです。

ところが、これらの証憑書類をPDFなどのデジタルデータにしたとたんに、「電子帳簿保存法」という法律の対象となってきます。そのため保存のための要件がいきなり厳しくなってしまうのですね。

電子帳簿保存法は1998年(平成10年)に初めて制定された法律で「電子計算機を使用して作成する国税関係帳簿書類の保存方法等の特例に関する法律」というタイトルが付いています。

電子帳簿保存法では、①始めからコンピュータを使ってデジタルで作成した証憑のデータの保存、②書面(紙)で作成された証憑をスキャナなどでデジタル化したデータを書面に代えてデジタルで保存する、③インターネットなどでデジタルでやり取りした取引データをデジタルで保存するための要件を定めています。

詳しい内容は省きますが、電子帳簿保存法があるために、弊社のような中小企業では書面で作成してやり取りした証憑よりも、デジタルデータとしてやりとりしたデータを(要件を満たすように)保存する方が、保存に手間とコストがかかってしまうことになっています。

これは取引先が多岐にわたるため、書面とデータが混在してしまっていることもかなり大きな原因です。

最近では、電子帳簿保存法を最初に制定するときに、コンピュータを使って作成した国税関係帳簿書類の保存を「特例」として扱ってしまったことが根本的に誤っていたのではないかと考えています。つまり、書面とデジタルデータを、記載された内容が同じであれば同等のものとして扱うとしないで、書面とデジタルという内容を表現する媒体によって保存時の扱いが別になる・区別したということが問題ではないかということです。

振り返ってみると、1998年といえば、コンピュータがビジネスインフラとして欠かせなくなっていて、コンピュータで証憑の為のデータを作成するのが当たり前となり、インターネットもPDFも使われ始めていた時期です。そういう時に、コンピュータのデジタルデータを特例扱いする法律として制定された、というあたり、電子帳簿保存法は、未来が見えていない、どうしようもなく行き詰っているという印象を禁じえません。

次回:電子帳簿保存法・電子取引データ保存で目にあまる迷走を続ける財務省

関連記事


[CSS組版]ページ番号のリセット

今回紹介するのは「表紙を同一のHTMLから生成するとき、
表紙のページ番号はカウントしたくない」という要望の実現についてです。誤りがあれば、ご指摘いただければ幸いです。

組版にはAntenna House CSS Formatter V7.3MR1を利用しています。スクリーンショット画像の、ページ番号以外の本文内容について画像によって差異がありますが、記事を作りながら都度組版をしていたためで、本題には支障ありません。

CSSページ組版でページ番号を参照するには、content: counter(page)と指定します。

リセット未指定でのページ番号カウントを見てみましょう。

@page {
    size: JIS-B5 portrait;
    margin: 2cm;
    @bottom-center {
        content: counter(page);
        font-size: 24pt;
        font-variant: oldstyle-nums;
    }
}

@pageルールで全体のページレイアウトを設定しています。@bottom-centerでページ番号を表示するように指定していますね。

1枚目のページに「1」、2枚目のページに「2」が振られています。

pageカウンタをリセット

1枚目を表紙ページとして、2枚目のページに「1」が振られるようにしてみましょう。

ところでCSSのカウンタはページ組版に限らない汎用的な仕組みです。pageはページ組版のとき、定義済みのカウンタ名として存在している状態です。
つまり、カウンタリセットの仕組みを使うことで、ページ番号についてもリセットが可能です。

... {
      counter-reset: page 1;
     }

できることが分かったところで、次の問題、すなわち「どのセレクタ(要素・ルール)にリセットを記述するか」に移ります。

今回は「表紙ページ」と「それ以外のページ」という分け方ができます。「表紙用のページレイアウト」、
「本文用のページレイアウト」が用意できると嬉しいわけです。@pageルールでは、そういう処理が書けます。

@page {...}
@page mainmatter {
  counter-reset: page 1;     
}
#cover {
    break-after: always;  
}
div#mainmatter {
    page: mainmatter;
}
<div id="cover">
    <h1>[CSS組版]ページ番号のリセット</h1>
    <p>今回紹介するのは...</p>
</div>
<div id="mainmatter">
    <p>CSSページ組版でページ番号を参照するには、...</p>
</div>

上手くいった……と油断するのはまだ早いです。このままでは、@page mainmatterの対象ページが切り換わる度にpageは1にリセットされるのです。

リセット対象のページを追加で条件付けすることで解決できます。@page mainmatter:firstを追加することで、「mainamtterページレイアウトが使用される最初のページでpageを1にリセットする」という処理になります。

 @page mainmatter:first {
    counter-reset: page 1;     
}

期待する出力になりました。

表紙のページレイアウトからページ番号を削除する

ついでに、表紙ページからはページ番号表示を外しておきます。

@page cover {
    @bottom-center {
        /*bottom-centerのコンテンツを上書き*/
        content:"";
    }
}
#cover {
    /*coverページレイアウトを適用*/
    page: cover;
    break-after:always;
}

参考


目次 vs しおり vs アウトラインの微妙な関係

ここでは、「目次」と「しおり」と「アウトライン」という長文文書のパブリッシングに重要な機能について考えてみます。

目次」とは、冊子本などの最初の方にある、あのページです。「目次」といえば、だれでもイメージが湧くのではないかという位ポピュラーな存在。冊子本で目次のないものは少ないのではないでしょうか。

しおり」という言葉で思い浮かべるものは人によって違うかもしれません。ここでは、PDFファイルのしおりのことを示します。しおりとはどんなものかを知らない人は、次の解説文を読んでみてください。

PDF資料室: PDFのしおりってなに? どうやって作るの?

アウトライン」いう言葉では、人によって思い浮かべる内容は、「しおり」よりもさらに多様かもしれません。ここでは、Microsoft Wordのアウトライン機能を指し示します。アウトラインとは何か、は次のWebページをご参照いただくと良いでしょう。

Antenna House Office Servers資料室: Microsoft Wordのアウトラインと見出しスタイルを活用する方法(概要)

「目次」と「しおり」と「アウトライン」はかなり似通った存在ですが、しかし、微妙に違う点もあります。

そこでざっくりとした比較表を作ってみました。3者が微妙に異なるのは、たぶん、素性が異なるためではないかと思うのですがどうでしょう。特に、アウトラインは、アウトライン編集機能から由来することで、編集操作を伴っています。

PDFのしおりはなんとなく、後から取ってつけたような印象もあります。

比較項目 目次 しおり アウトライン
主な対象 冊子本。冊子本のPDF版(デジタル冊子本) PDF Word文書
英語 TOC (Table of Contents) Book Mark(ISO 32000では、document outlineとなっている) Outline Level
場所 冊子の本文の手前(前付け)に配置する しおりのWindow アウトラインWindow内
役割 本の内容構成を章・節レベルで把握できる PDFファイルのナビゲーション Word文書の編集機能の一部。ツリー編集操作が付随する。
指し示す先 本の内部(分冊のとき、例えば上巻に下巻の目次が配置されることもある。 指し示す先はPDFファイルの内部、別のPDFファイルの内部、Webページなど自由度が高い Word文書の内部
行き方 冊子本ではノンブルで行先を示す。デジタル冊子本ではリンクがあると便利。双方向リンクがあると特に便利。 リンク アウトラインは編集用途なので行き方は二の次。
本文との関係 取り外しはできない PDF編集ツールがあれば、脱着可能、本文から参照しない。PDFリーダー依存。 脱着できない。本文に設定する。表示を別ウィンドウ

冊子本のナビゲーションはページ番号(ノンブル)を使用する。一方、デジタル冊子本や、PDFではナビゲーションにはノンブルよりもリンクを使うのは便利である。ノンブルはページ数の増減に弱いが、リンクはページ数の増減があっても問題が生じないという自由さがある。


第39期決算終了。決算公告を更新しました。

お陰様で、弊社は2022年12月末をもちまして、第39期を無事終了しました。

この2月27日に定時株主総会を開催し、第39期決算報告等が承認されました。そこで、Webページの会社案内中の貸借対照表を更新しましたので、お知らせいたします。

会社概要の「決算公告」の項

現在は第40期に入っております。40年と言いますと長いようですが、会社設立以来、あっという間に過ぎ去ったという印象があります。

コンピュータのソフトウェア業界は、この40年間でまったく変わってしまいましたが、この間、なんとか会社を継続することができましたのは、一重にお客様に支えていただいたお陰です。

ここに深く深く御礼申し上げます。

2023年2月28日

アンテナハウス株式会社
代表取締役 小林 徳滋

XSL-FO 試行錯誤 SVG 2.0 inline-sizeのTips

2023年01月19日に『Antenna House Formatter V7.3』がリリースされました!
関連して、2023年01月31日(火)16:00-17:00 にZoomウェビナーとして『Antenna House Formatter V7.3 リリース!  新機能と利用シーン紹介』を開催します。


https://us06web.zoom.us/webinar/register/4716717860524/WN_ElB-ZrzFQzShzKGqWZMHqg

新機能紹介ということで、XSL-FOやCSSページ組版の基礎知識があることを前提としています。しかし、特に知識の無い方でも「自動組版でこんな細かいレイアウト調整が効くのか」と楽しめることを目指していますので、お時間が合いましたら是非参加登録いただければ幸いです。

ウェビナースライドはFormatter V7.3で組版しています。スライドはCSSで組んでいるのですが、話題がSVGについてなので、暫くぶりとなる「XSL-FO 試行錯誤」シリーズを題に含めました。
(前回のXSL-FO試行錯誤のカレンダー作成の続きについてはまた時間があるときにさせていただければ……)

さて、本記事ではウェビナーで割愛する部分について、先行して補足します。
ということで、見た目が地味なのであまり深く掘り下げない予定のinline-sizeによるテキストの折り返しについてです。

発表スライドの見出し部分にはSVG 2.0を使っています。

テキストを配置するとき、SVG 1.xでは折り返しを扱えませんでした。
よって、複数行のテキストを配置するときは次の手順(これ以外にもなくはないですが)です。

右揃えで3行でテキストを描画するとします。座標は適当です。

  1. 改行位置でテキストを分割し、別のtspanに分ける
  2. それぞれのtspanにx,yの座標を指定する。2行目であれば1行目から1文字分以上離れた位置にyを設定する
<!-- SVG 1.x -->
<text x="0" y="0">
<tspan text-anchor="end" x="250" y="0">Formatter V7.3</tspan>
<tpsan text-anchor="end"  x="250" y="10">リリース!</tspan>
<tspan text-anchor="end"  x="250" y="20">新機能と利用シーン</tspan>
<text>

text-anchor=”end”によって、xの位置がテキストの終端になっています。

x,yはSVG内の座標系なので、font-size:18ptのように絶対単位で指定されていると対応する高さを調整するのはちょっと手間ですね。
他にも拡大縮小の際などにこれを忘れずに変更しなければなりません。

メリット、といえるかは分かりませんが、あらかじめ分割しているので、意図しない行分割が発生するということはないでしょう。

SVG 2.0のテキスト折り返し機能を使えば、折り返しを自動化可能です。Formatter V7.3ではinline-sizeによる折り返しをサポートしています。
Scalable Vector Graphics (SVG) 2 11.4.1. The ‘inline-size’ property



<text x="0" y="0" inline-size="1000">Formatter V7.3リリース! 新機能と利用シーン</text>

inline-sizeにはテキストの行長を指定します。

  • 両端揃えができない
  • 日本語は行頭・行末禁則以外では基本的に改行可能と判断される

また、見出しのような箇所で使う場合、次のことを意識しておくとよいでしょう。

今まで手動でやっていた行分割を自動処理にする都合上、特に、本文でない箇所での行分割規則は意識しておかなければなりません。
言語処理が日本語になっていれば(xml:lang=”ja”が適用されるような箇所であれば)
意図してそうしない限り「ー」は先頭に来ませんが、「リ」はそうではないので、

Formatter V7.3 リ
リース!

となるかもしれません。

特定単語の行分割を防ぐため、その箇所のマークアップをtspanにして、分割禁止のプロパティを付けることにします。
「tspanを使うなら結局SVG 1.xとあまり変わらない?」と思われるかもしれませんが、座標の明示がなくなるので処理はかなり単純化します。
「この単語で行分割されるのは困るが、ここ以外であれば別に構わない」というケースが多いとみているのですが、どうでしょうか。

<!-- <heading>Formatter V7.3<keep>リリース!</keep><keep>新機能</keep>と<keep>利用シーン</keep></heading> -->
...
<xsl:template match="heading">
  <svg:svg viewBox="0 0 1920 1080" >
  ...
    <svg:style>
      svg|tspan.keep {
        word-break: keep-all;
      }
    </svg:style>

    <svg:text x="1800" y="100" text-anchor="end"><xsl:apply-templates mode="#current"/></svg:text>
  </svg:svg>
</xsl:template>
...

<xsl:template match="keep">
  <svg:tspan class="keep"><xsl:apply-templates mode="#current"/></svg:tspan>
</xsl:template>

上記は実際に使用したコードではないため、参考程度にお考えください。
inline-sizeが対応するalign調整はtext-anchorによるものになるため、両端揃えの自動配置はできません。

その他、SVGのテキストを使う場合の注意点として、FOのブロックやHTMLのテキストと異なり、
「viewBoxは伸長しないため、想定よりテキストが長くなると表示が見切れる」という点があります。
つまり、「ページ単位で表示領域を確保できる」など、特に高さ・テキスト長があらかじめ想定できる
範囲で使うようにするとよいでしょう。

そして、Formatter V7.3で対応したSVGフィルタ・マスク機能と組み合わせることで文字列に効果を付加できます!

SVGテキストとマスク

画像に対し、テキストをマスクとして被せたものになります。このSVGではtext-anchor=”middle”です。
実のところ、SVGマスク以外の方法もあります、ただ、SVGマスクやフィルタは汎用的ですし、追加の独自仕様無しでXSL-FOでも使えるというメリットがあります。


Wordの見出しスタイルがPDFのしおりに出力されるかどうか

本日(9月27日)のちょっと一息アンテナハウスウエビナーは「ゼロから学ぼう! Microsoft Wordのスタイル機能・シリーズ -主に見出しスタイルの使いこなし術について解説-」というタイトルでお話しました。

Wordで編集中の文書に見出しスタイルを設定すると、ナビゲーションウィンドウに見出しが階層化(ツリー)表示されるようになります。ウェビナーではこれがPDFのしおりと似たような機能です、と紹介しました。

そうしましたら、終了後の質疑応答で「Wordの見出しによるナビゲーションは、Word文書をPDFにしたとき、PDFのしおりとして設定されるのでしょうか?」という質問をいただきました。

記憶に確信がもてなかったため、質疑応答ではWordからPDFに出力する方法はいろいろあるので調べてみますと回答いたしました。ウェビナー終了後に調べてみましたので、以下に、簡単に整理します。

1.Wordのナビゲーションウィンドウの表示
次の図はWordで編集中の文書に段落のアウトラインレベルと見出しスタイルを設定した例です。この例では「はじめに」と「参考資料」はアウトラインレベルを設定しています。また、章番号のついた段落は見出し1、節番号のついた段落は見出し2、項番号のついた段落は見出し3のスタイルが設定されています。

Wordのナビゲーションウィンドウ

2.Antenna House PDF Driver V8でWordからPDFを作成する
(1) Wordの印刷メニューからPDFを出力すると、でき上ったPDFにはしおりは設定されません。

(2) Antenna House PDF Driver V8は、Wordのアドインとしてリボンに組み込むことができます。アドインを使ってPDFを作成するときは、オプションでしおりを作成するかどうかを指定できます。

PDF Driver V8のアドインーオプション設定ダイアログ

ここで「しおりを出力する」にチェックを入れると、出力されたPDFでは、見出しスタイルを設定した段落がしおりとして作成されます。(アウトラインレベルを設定した段落はしおりになりません)。

PDF Driver V8で作成したPDFのしおり

3.Wordの「名前をつけて保存」でPDFを作成する
(1) Wordの「名前をつけて保存」でPDFを作成するとき、オプション設定をデフォルトのままとしてPDFを作成するとしおりは作成されません。

(2) Wordの「名前をつけて保存」にはオプション設定を変更するダイアログを表示して、しおりを作成する方法を指定できます。オプションの「次を使用してブックマークを作成」で「見出し」にチェックしてみます。

Wordの名前を付けて保存のオプション設定

できあがったPDFを見ると、一応、しおりが設定されています。しかし、しおりは不完全です。

Wordの名前を付けて保存で、PDFにしおりを作成する

問題点は①しおり項目が2重になっている箇所がある。②見出しの中でしおりに出力されていない箇所がある。

こうしてみると、Wordの名前を付けて保存のしおり作成は不完全なできのようです。なお、Micorosft Wordにもいろいろなバージョンがありますので、あくまでも手元のWordで調べた限りではありますが。

〇チェックに使ったツールなどのバージョンは次のとおりです。
① Microsoft Word 2019 バージョン2208(ビルド15601)
② Antenna House PDF Driver V8.0MR1 (8.0.1) 『瞬簡PDF編集9』同梱のもの

2022年11月15日追記
アンテナハウスでは、PDF Driverを使わないで、Wordファイルを直接PDFに変換する「Office Server Document Converter(OSDC)」という製品も提供しています。

OSDCのWebページ:
https://www.antenna.co.jp/sbc/

OSDCでは、WordファイルをPDFに変換するさい、しおりを出力することができます。例えば、コマンドラインでは次のように指定します。

C:\>sbccmd -d 変換元.docx -o 変換先.pdf -p @PDF -docpdfbookmarklevel n
(n: Wordの見出しのレベル)


【動画公開】XSLT超入門3, CSS組版スライドと補足

ちょっと一息アンテナハウスウェビナー「XSLT超入門 3 XPathについて」を終えました。ご視聴いただいた方、ありがとうございます。お時間の合わなかった方、動画が公開されたので、ぜひご覧ください。


Zoomの注釈機能

発表直前に気付いたのですが、Zoomの「画面の共有」ボタンの横に、いつの間にやら「注釈」というボタンが増えていたので早速使ってみました。いかがでしたでしょうか。

PowerPointスライドと違い(おそらくほとんどの)PDFビューアにはレーザポインタ機能がないので、助かりますね。(他機能として、テキストも表示できます。スライド表示中に「これ補足した方がいいかな」といった思いつきでテキストを追加したりはPDF注釈でも実現できますが、操作の切り換えの手間があるため、Zoomにあるに越したことはない、くらいの感想です。)

CSS組版スライド

担当したここ数回のウェビナーではPowerPointでスライドを作成していました。今回も途中まではそうだったのですが、内容の大幅な修正を行うついでにAH FormatterでHTML+CSS組版によるPDFスライドに移行しました。

以前XSL-FOでスライドを組版したことを紹介しました。スライド発表程度の長さであれば単一HTMLでもあまりテキスト分量はかさみません。今回、HTMLが650行弱、CSSは240行程度でした。実作業としてはSCSSで記述して変換していたので……240行程度でした。まあ、セレクタ部分は簡潔になりますが、改行・インデントとしてはあまり変わらないんですね。CSSについてはAH CSS Formatterの既定のCSSを読み込んだ上でなので、0から組むのであればもう少し嵩むでしょう。

VS CodeでSCSSを編集 with AH CSS Extension

SCSSの編集はVS Codeで行いました。VS CodeでのCSSの補完・サジェストについては、@media printなども最初からある程度対応しています。
加えて先日、AH CSS Formatterの豊富な拡張仕様を入力補助してくれるAH CSS Formatter Extensionが公開されたので早速使っています。SCSSファイル編集でも有効なようです。

https://github.com/AntennaHouse/ahformatter-vscode-css-ja

「HTMLソースでスライドを作成する」というと、気になるのは「発表スライドとWebページを同時作成できるか?」という点ではないでしょうか。結論としては「内容次第」ということに落ち着いてしまうのですが、「ある程度まで同一ソースで作成する」ことを目標とすると、方針として押さえるべき点は次のことでしょう。

  • HTMLソースはWebページ向けが主、スライドは従
    • スライド組版時はdisplay:noneにする情報を決めておく
    • スライド向けCSSを先行する場合、とくに注意するのはfloat配置とheightの100%

もちろん、広告を目的とするWebページなどで一度に入る情報量を絞ることなどはよくあります。ここではある程度技術的内容のプレゼンとそのWebページ化を前提としています。

スマホ向けとPC・タブレット向けのページを同じソースで作成する場合にスマホ向けをメインにレイアウトすることを「モバイル・ファースト」といったりしますが、Webページとプレゼンテーションの関係はもう一捻りあります。
モバイルとそれ以外で異なるのは、主に画面サイズです(より正しくは前提とする通信環境によるリソースの出し分けなどもあります)。
一方、Webページとプレゼンにおいて、Webページはそれのみですが、プレゼンは(通常)「スライド+発表者+発表」で構成されます。この違いは「読者側が受動的か能動的か」「発表者による注意対象・情報量のコントロール」といった差異を生みます。

HTMLソースの話に戻ると、ある変換を行うとき、情報量は落とす方が楽で、足すのはかなり困難です。
つまり「より情報量を必要とする方を主とし、そうでないものを従とする」ということになります。
プレゼンは発表という追加情報を前提とするため、スライドにWebページと同じ情報量を与えると情報量が過多になりがちです。

CSSでは手軽に表示を隠蔽する方法としてdisplay:noneがあります。これは、プレゼンでは口頭で与える情報を、Webページではテキストで表示する、という目的にも使えます。

@media print {
.web-page-only {
  display:none;
  }
}

前提として、「スライド上隠蔽されても前後の話は分かるようにする」というライティングが必要です。なので、パラグラフライティングの基本や、DITAにおけるshortdescのように、「これは最低限最初に伝える」という文章から書いていくよいでしょう。

ページ向け媒体ではフロートはページの上端、下端を前提に書けます。これはpositionについても同様です。

XSLT超入門3の補足

さて、発表の補足です。

何度か述べましたが、XPathの特長は、簡単には「ある文書で、目的の箇所を簡便な記法で指定できる」「取り出した値の加工が行える」ことにあります。ただ「hoge/fuga/…」と書きつらねるだけでなく、軸や述部といった機能・概念を使うことで、他の言語、というかDOMインターフェイスでは難しいこともスマートに行える、ということをXSLT超入門3ではフューチャーしたのですが、いかがでしたでしょうか。
「ここが分からないのでここをじっくりやってほしい」などの要望を、メール・SNS・動画へのコメントなどでいただけると幸いです。

さて、発表について、事前の予定から大きく削った箇所としては2箇所です。データモデルと、XPath 1.0のコードを3.1でリライトするという内容です。

データモデルについては、XPath 2.0でいかに整理されたか、3.0(3.1)で何が拡充されたか、の詳細を削りました。このあたりについてはW3CのXDMのページに図示があるので内部処理モデルに興味のある方はご参照ください。

XPath 3.1でのリライトについては、題材として丁度良いバランスのものを見つけるのはかなり難しかったため、構成から削除しました。「XPath 1.0でまともに処理できるように記述した上で、XPath 3.1で明らかに改善されるように書き直す」ということの難しさは、「そもそも1.0で書けなかった処理を拡充したものがほとんど」「1.0では(XSLT上では)独自functionの定義もできないので、XSLTも多分に含むことになる」といった点にあると感じます。XSLT 1.0のコードでの超絶技巧についてはfunctXライブラリが有名でしょうか。

超絶技巧はおいておいて、もう少し簡単なものはあります。

XPath 1.0(XSLT 1.0)
<xsl:template match="*[contains(@class, ' topic/ph ')]"> 
  ...
</xsl:template>
XPath 3.0(3.1) (XSLT 3.0)
<xsl:template match="*[contains-token(@class, 'topic/ph')]"> 
  ...
</xsl:template>

行っているのはDITAの@class処理で、スペース区切りで続く文字列の部分一致判定です。contains()では含まれてさえいれば真を返してしまうので、topic/ph前後にスペースは必須です。ないと「mytopic/ph」なども一致してしまいます。
contains-token()は、なんだったら名指しで「HTMLやDITAのclass処理に使えるよ」と書かれているのでさもありなん。

コア関数についてはかなり駆け足で紹介しました。コード例をバーッと載せていましたが、コードをしっかり読んでもらうことは意図していません。
これは構成上割と悩みどころで、関数名と処理内容を淡々と流すのであれば、ウェビナーよりもWebサイトや本などを参照するように誘導しても良いと考えています。あるいは数時間~数日のワークショップであれば、サンプル、基本、応用、基本、……といった進め方をしたと思います。

とくにXPath 1.0では、関数型言語らしい「関数を組み合わせて使う」ことはなかなか難しいため、その有用性のアピールを分かりやすく行うのは難しくなっています。

発表中、contains()が(2.0)となっていましたがこれは記述ミスで、XPath 1.0からあります。


Pages: Prev 1 2 3 4 5 6 7 8 9 10 ... 225 226 227 Next