メインコンテンツへスキップ

[Brazil調査] HTMLエディタの text patterns:プロパティの値で「# 」の変換が決まる


    ナレッジ記事を HTML エディタで書くとき、「# 」と打てば見出しになる、と期待する人がいます。Brazil では、この入力の変換を glide.ui.html.editor.textpatterns というプロパティで制御できると公式に書かれています。

    実機では、この PDI の値である false で何も変換されませんでした。JSON の配列を入れると、見出し・リスト・太字への変換が効き始めます。

    検証環境:Brazil PDI(Australia からメジャーアップグレード)/ OOTB / 2026-10-09 確認

    押さえておくこと

    • この PDI の値は false(公式に既定値の記載はありません)。入力した記号はそのまま文字として残ります

    • 値には TinyMCE の text patterns 設定を JSON 配列で渡します。値は真偽値ではなく、使うパターンを列挙した JSON 配列です

    • エディタは TinyMCE 8.3.0 で動いていることをページ内のスクリプトで確認しました

    • 試した4パターンは、見出し・番号リスト・箇条書き・太字です

    公式の説明

    Australia から Brazil への差分ノート(Core Platform)に、次の2項目があります。

    Text patterns in the HTML editor can now be turned on or off using the glide.ui.html.editor.textpatterns system property.

    (訳:HTML エディタの text patterns を、glide.ui.html.editor.textpatterns プロパティでON/OFFできるようになった)

    The HTML editor in Core UI and configurable workspaces is upgraded from TinyMCE version 6.8.2 to version 8.3.0.

    (訳:Core UI と Configurable Workspace の HTML エディタが TinyMCE 6.8.2 から 8.3.0 に更新された)

    引用元:Combined ServiceNow AI Platform core feature release notes for upgrades from Australia to Brazil

    プロパティ表では、型は String で、書式設定・文字の置き換え・コマンド実行のための text patterns を有効または無効にするプロパティと説明されています。引用元:Configuring system properties for TinyMCE HTML editor

    text patterns は、行頭の記号や囲み記号を打つと書式に変わる TinyMCE の機能です。公式ページの記述はここまでで、既定値や入力する JSON の例は載っていません。TinyMCE 側の仕様は、プロパティの説明欄にある TinyMCE の text_patterns のドキュメントで確認します。

    対象になる HTML エディタ

    HTML field editors のページには、使えるエディタの一覧があります。

    • TinyMCE version 8.3.0:Core UI と configurable workspace が対象

    • htmlArea(legacy):Core UI で基本的なサポート

    同じページに、ナレッジ記事・サービスカタログのアイテム説明・リリース文書・メールクライアント・HTML コンテンツブロックが、HTML フィールドエディタを使う典型例として挙がっています。ナレッジ執筆で text patterns の設定が影響する、ということです。

    引用元:HTML field editors

    ページ内の注記には、TinyMCE v8.3.0 が Microsoft Word の図形や、独自アイコン付きの入れ子リストの HTML 変換に対応しない、とも書かれています。Word からの貼り付けが多い職場では、エディタの更新も合わせて確認する対象です。

    実機で使われているエディタ

    新規の Knowledge 記事を開いて Article body(Article type は HTML)を表示し、ページ内の JavaScript で TinyMCE のバージョンを読みました。メジャー 8、マイナー 3.0 で、公式の 8.3.0 と一致しました。

    プロパティ glide.ui.html.editor の値は tinymce でした。Brazil に更新したインスタンスでも、旧エディタの設定名(v4・v5 のプロパティ)が一覧に残っています。名前から、どの世代の設定かを区別できます。

    値が false のときの入力

    値が false のとき、記号は変換されず文字として残りました。新規の Knowledge 記事で Article body を開き、次の行を順に打ちました。

    • # Heading text

    • 1. first と second

    • * bullet a と bullet b

    • plain bold word

    プロパティが false のとき、すべて通常の段落のまま、記号も文字として残りました。TinyMCE の text_patterns 設定は空の配列でした。


    画像

    ①の本文欄は、記号が書式に変わらず、文字のまま並んでいます。Markdown に慣れた人が打つと、記号が残った状態で記事が保存されます。

    値が JSON のときの入力

    値に次の JSON を入れると、見出し・リスト・太字に変換されました。同じ入力を繰り返して確かめました。

    [{"start":"#","format":"h1"},{"start":"1.","cmd":"InsertOrderedList","trigger":"space"},{"start":"*","cmd":"InsertUnorderedList","trigger":"space"},{"start":"**","end":"**","format":"bold"}]

    結果は次のとおりです。

    • # で見出し(h1)になった

    • 1. で番号リストになり、Enter で2項目目が続いた

    • * で箇条書きになった

    • bold が太字になった


    画像

    ①の本文欄では、見出し・番号リスト・箇条書き・太字が反映されています。同じ入力でも、プロパティの値だけで結果が変わります。

    false と JSON の比較

    2回の入力結果を、パターンごとに並べます。


    画像

    表の内容を文字でも書き出します。

    • # Heading text:false は段落のまま、JSON は見出し(h1)

    • 1. first と Enter:false は段落のまま、JSON は番号リスト

    • * bullet a と Enter:false は段落のまま、JSON は箇条書き

    • plain bold word:false は記号つきの文字、JSON は太字(strong)

    値が TinyMCE に届く流れ

    この流れは、false のときと JSON のときで TinyMCE に渡る設定がどう違うかを示したものです。

    プロパティの説明欄には、値の渡し方が書かれています。値はそのままエディタに渡らず、文字列として包まれ、バックエンドで JSON として解析されます。解析が通るように、キーと値は二重引用符で囲む決まりです。


    画像

    起点はプロパティ、青は内部の変換、緑は変換が効く経路、灰色は変換されない経路です。実機で TinyMCE の設定を読むと、渡した4件が block-format・block-command・inline-format の3種類に展開されていました。

    見出しの変換(# )

    # のパターンには、trigger を指定していません。それでも # Heading text を打った結果は見出し(h1)に変換されていました。ナレッジ記事の見出しを素早く入れたい執筆者には、手の動きが少なくて済む入力です。

    リストの変換と Enter

    1. と * は、説明欄の例と同じ形で、cmd にコマンド名を渡します。リストが始まったあと、Enter を押すと次の項目が続きました。リストの終わり方は、今回は試していません。

    太字の変換(**)

    は start と end を持つインラインの書式です。開始の と閉じの で文字を囲んだ bold** が、太字(strong)に変換されました。

    同じ系列のプロパティ

    glide.ui.html.editor で始まるプロパティは、HTML エディタの挙動を決める一式です。この PDI で sys_properties から読んだ主な値を並べます。

    • glide.ui.html.editor:tinymce

    • glide.ui.html.editor.newline_behavior:default

    • glide.ui.html.editor.convert_urls:false

    • glide.ui.html.editor.relative_urls:true

    • glide.ui.html.editor.contextmenu:false

    • glide.ui.html.editor.paste.filtered_inline_elements:strong, b

    • glide.ui.html.editor.toolbar:bold italic underline など、ツールバーのボタン名を並べた値

    一覧には glide.ui.html.editor.v4.* と glide.ui.html.editor.v5.* の旧世代のプロパティも残っています。TinyMCE 8.3.0 を使う現在の設定は、v4・v5 の接頭辞がない名前を見て判断します。変更前に、どの世代のプロパティを触るのかを名前で確認してください。

    ツールバーとプラグインを変える手順は、公式の別ページにあります。Configure the HTML toolbarとConfiguring plugins for the TinyMCE HTML editorです。text patterns は、これらとは別の1件のプロパティで制御します。ボタンを増やす作業とは分けて検討できます。

    プロパティ全体の一覧は、Available system propertiesにあります。

    Australia ではどうだったか

    Australia の画面は、アップグレード前の確認を残していないため、この記事では比較していません。公式の差分ノートでは、Brazil の変更として text patterns のプロパティと TinyMCE 8.3.0 の2項目が挙がっています。Australia でも同様の入力を試していた人は、Brazil に上げたあとで同じ入力を打ち、結果が変わっていないかを確認します。

    保存される HTML の違い

    エディタの本文を HTML で読むと、変換の有無が違いとして残ります。ON のときの本文は次のとおりでした。

    <h1>Heading text</h1>
    <ol style="list-style-position: inside;"><li>first</li><li>second</li></ol>
    <ul style="list-style-position: inside;"><li>bullet a</li><li>bullet b</li></ul>
    <p>plain <strong>bold</strong> word</p>

    番号リストと箇条書きには、list-style-position: inside のスタイルが付いていました。この PDI の HTML エディタが付けるもので、今回の JSON には書いていません。見た目では、番号や黒丸が文字の内側に入ります。ナレッジの表示側のスタイルでリストの余白を調整している場合は、変換後の記事を実際に表示して確認します。

    OFF のときは、すべての行が p 要素で、# Heading text や bold の記号がそのまま本文に入っていました。記事の公開後に記号が見えている場合は、保存された HTML に記号が残っている状態です。

    今回は、すでに保存してある記事を開く操作までは試していません。変換は入力する操作に対して動く設定のため、既存記事の記号が自動で直るかどうかは、導入前に1件で確かめます。

    実務での使い方

    ナレッジ執筆者が Markdown に慣れているなら、使うパターンだけを JSON で渡せば入力が速くなります。使うパターンを絞ると、意図しない変換を避けられます。たとえば * で始まる行を普通の文字として書きたい運用では、そのパターンを入れません。

    導入の手順は次のとおりです。

    1. 現在の値(false)を控える

    2. 新規の Knowledge を開き、保存せずに入力を試す

    3. 使うパターンだけを JSON にして、プロパティに入れる

    4. 同じ入力を再度試し、変換される行と、されない行を確認する

    5. 問題があれば、控えた値に戻す

    パターンを追加する前に、執筆者へ「どの記号が書式に変わるか」を一覧で伝えておきます。変換が突然起きると、記号を文字として書いていた人が戸惑うためです。

    導入前に決めておく4点

    パターンを有効にする前に、運用の側で決めておくことがあります。この記事で確かめた範囲から、次の4点を挙げます。

    • 使う記号の範囲:見出し、リスト、太字のうち、どれを有効にするか。JSON に書いたパターンだけが変換される

    • 見出しのレベル:# に割り当てるのは h1 か、記事タイトルとの兼ね合いで h2 以下にするか

    • 記号を文字として書く場面:行頭に * や 1. を置く記事があるかどうか

    • 設定を触れる人:プロパティの read/write roles には form_admin が設定されている(admin も変更可)

    とくに2番目は、記事の表示側のスタイルと関わります。今回の # は h1 に変換しました。ナレッジの表示画面で、記事タイトルと本文の h1 が同じ大きさに見えないか、実機の表示で確かめてから決めます。

    プロパティ画面の書き方の例

    プロパティは System Properties から開けます。説明欄に、値の書き方が書いてあります。

    • 値は JSON の配列で渡す

    • キーと値は二重引用符で囲む

    • 説明欄の例は、1. と * の2パターン


    画像

    ①の Value が false、②の Description に書き方の例が載っています。read/write roles には form_admin が設定されています(admin も変更可)。変更前の値は false で、検証後に false へ戻しました。

    実機で気づいたこと

    名前は ON/OFF、値は JSON 配列

    公式の説明は「ON/OFFできる」ですが、実際の値は JSON の配列です。false は無効、配列は有効、という使い分けです。「true」と入れても書式は決まらないので、使うパターンを自分で書く前提で運用します。

    値を戻した直後の挙動

    ON のあと値を false に戻して再検証したところ、しばらく変換が続きました。数分後、cache.do にアクセスしてから再実行すると、空の配列に戻りました。どちらが効いたかは切り分けていません。設定を戻した直後は、エディタの挙動を鵜呑みにせず、もう一度確認してください。

    公式ページの入力例

    公式ページには、JSON の例がありません。例はプロパティの説明欄にあり、1. と * だけです。見出しと太字は、TinyMCE の text_patterns の書式を見て自分で組み立てました。

    JSON の項目

    今回の JSON で使った項目は、start・end・format・cmd・trigger の5つです。実機で見えた範囲を整理します。

    • start:変換のきっかけになる記号。#、1.、*、** を渡した

    • end:閉じの記号。太字の ** だけに付けた

    • format:適用する書式の名前。見出しは h1、太字は bold を渡した

    • cmd:実行するエディタのコマンド名。リストは InsertOrderedList と InsertUnorderedList を渡した

    • trigger:変換を起こす操作。リストの2件に space を渡した

    format と cmd は、どちらか一方を使う形でした。書式を当てるなら format、リストのようなコマンド実行なら cmd、という使い分けです。TinyMCE が展開した結果は、format が block-format か inline-format に、cmd が block-command になっていました。

    見出しの大きさを変えたいとき

    今回は # に h1 だけを割り当てました。## のようにレベルを分けるパターンは、試していません。ナレッジの見出し構成を決めている組織は、使うレベルを事前に決めてから JSON を作ります。

    記号を文字として書く行

    変換を有効にすると、行頭の * は箇条書きに変わります。コードの断片やコマンド例を書く記事では、行頭の記号が意図せず変換される場面があります。変換を戻したい場合の操作は、今回は試していません。

    付録:自分の環境で確認する URL

    この記事の確認は、次の2つの画面で再現できます。インスタンスのホスト名の後ろに付けて開きます。

    • プロパティの一覧(該当の1件):/sys_properties_list.do?sysparm_query=name=glide.ui.html.editor.textpatterns

    • HTML エディタの試し入力(新規の Knowledge。保存しなければ残りません):/kb_knowledge.do?sys_id=-1

    プロパティを変更する場合は、先に現在の値を控えます。form_admin(または admin)ロールが必要です。

    付録:調査で使った URL

    公式ドキュメントのうち、この記事の根拠にしたページは次のとおりです。

    付録:用語

    • text patterns:行頭や文中の記号を打つと、書式やコマンドに変わる TinyMCE の機能

    • TinyMCE:ServiceNow の HTML フィールドが使うリッチテキストエディタ

    • trigger:変換を起こす操作。今回は space を使った

    • block-format:行全体に書式を当てる種類。見出しがこれに展開された

    • block-command:行全体にコマンドを実行する種類。リストがこれに展開された

    • inline-format:文中の一部に書式を当てる種類。太字がこれに展開された

    • format:書式の名前を渡す項目。見出しの h1 や太字の bold を指定した

    • cmd:エディタのコマンド名を渡す項目。リストの挿入に使った

    検証範囲とおことわり

    • 検証したのは Knowledge の新規レコード(Article type HTML)の Article body だけです。ほかの HTML フィールドと Configurable Workspace は確認していません

    • 試した JSON は、見出し・番号リスト・箇条書き・太字の4パターンのみです

    • TinyMCE 6.8.2 から 8.3.0 への更新による、独自スクリプトへの影響は検証していません

    • 入力は Playwright(自動操作のブラウザ)から1文字ずつ打つ形で、画面の表示言語は英語です。ON の入力は1回、OFF は初回と値を戻したあとの再確認で打ちました。正確な試行回数の記録は残していません。回数が少ないため、傾向の確認にとどまります

    • プロパティは検証後に元の値(false)へ戻しています。検証用のレコードは保存していません

     
     
    ServiceNowのPDI(Personal Developer Instance)を実機で観察して、Noteに記事を書いています 実装・運用・教育の現場視点で淡々と記録中です リクエストがあればその記事も書きます 個人の観察日記です

    あなたへのおすすめ