PowerCMS X ブログ

2025-12-25

災害情報をやさしく、すばやく共有する

「やさしい朝日新聞」は、朝日新聞社が提供するニュース記事をやさしい日本語にして伝えるメディアサイトです。

気象庁地震情報「長期(地震火山)」という気象庁が公開している XMLがあります。

「やさしい朝日新聞」では、12月からこの情報を利用して大きな地震があった時に自動で情報を発信する運用を始めました。

PowerCMS Xの災害情報の編集画面

このしくみは、PowerCMS Xのプラグインとして作成し、5分おきのバッチ処理として動かしています。

自動で発信する震度についてはプラグイン設定で指定できるようにしています。現在の設定は「4(以上)」です。

地震情報自動取り込みプラグインの設定画面

以下の処理はすべて自動化されています。

パターンごとにやさしく言い換える

この記事は技術情報ではないので、コードの紹介というよりも、どのように情報を整えているかについてを主題とします (といいつつ、コードもちょっと混ぜるという...)。

$detail = $this->simplexml_load_string( $xml );
$head = $detail->Head;
$body = $detail->Body;

 震度の情報

$level = (string) $body->Intensity->Observation->Pref->MaxInt;

数字を変数にセットしつつ、頭に「震度」を付けて、ラベルを作ります。「+」や「-」がついていたら「震度5強」「震度5弱」などとします。

地域名

$areaName = (string) $body->Earthquake->Hypocenter->Area->Name;

地域名に都道府県名が含まれない場合は、都道府県を冒頭に追加します。

例 : 「トカラ列島近海」は「鹿児島県トカラ列島近海」にする

テキスト・タイトル・概要

$text = (string) $head->Headline->text;

21日10時29分ころ、地震がありました。

全角英数字を半角英数字に揃えてから、なぜか「ころ」になっているので、「ごろ」に修正します。日付に月を追加して、曜日も追加します。時間には午前、午後を付けて12時間表記に揃えます。タイトルには時間は入れず、テキストと概要欄に入れます。

12月21日(日曜日)午前10時29分ごろ、青森県東方沖で地震がありました。

ForecastCommentという項目があり、ここに津波の心配があるかどうかが書かれています。

$comment = (text) $body->Comments->ForecastComment->Text;

津波警報等(大津波警報・津波警報あるいは津波注意報)を発表中です。

コメントには「この地震による津波の心配はありません。」などと入っている場合と、大津波警報、津波警報、津波注意報などのテキストが入っている場合があります。解除の場合もあり得るので「を発表中です。」という文字列が含まれるかどうかで地震の後の津波の有無を判別します。

別途、WarningComment という項目が入ることがありますが、おそらくここについては人の手が入っていると思われ、定型化できないので、その後の人による確認を経て必要に応じて追記します。

震度の情報と、地域名、テキストからタイトルを生成します。タイトルには日付、時間は含めず、日付、時間は概要とテキストに含めます。
コメントが「この地震による津波の心配はありません。」の時のタイトルは次のようにします。

青森県東方沖で、震度4の地震がありました  この地震で、津波の心配はありません

「 」を明示的に入れているのは、og:image生成時に、そこで改行されるようにテンプレートを設定しているためです。

自動生成されたOG画像「青森県東方沖で強い地震がありました  津波がきます! 今すぐ逃げてください!」(ふりがな付き)

続いて概要です。

12月21日(日曜日)午前10時29分ごろ、青森県東方沖で地震がありました。この地震で、津波の心配はありません。

タイトルにふりがなを付けて画像化したものを og:image にセットします。そして、タイトル+この概要に URLを添えて「X」に投稿します。多少のタイムラグはありますが、音声ファイルも同時に生成されるようになっています。

本文には、各地の震度など、さらに情報を加えます。震度1や震度2を加えると、テキスト量が多くなり、音声ファイル生成などに時間がかかるため、設定値(現状は「4」)マイナス1、震度3までの地域を本文に加えます。

12月21日(日曜日)午前10時29分ごろ、青森県東方沖で地震がありました。この地震で、津波の心配はありません。このあとの情報に注意してください。

震度3以上の地域は次のとおりです。

震度4

青森県
八戸市・五戸町・階上町
岩手県
軽米町

震度3

青森県
三沢市・野辺地町・七戸町・六戸町・東北町・おいらせ町・三戸町・青森南部町・平内町・むつ市・東通村
岩手県
盛岡市・二戸市・八幡平市・久慈市・岩手洋野町
北海道
函館市

津波の情報があった時

ForecastCommentに津波の情報が入っている時、残念ながらテキストからは大津波警報なのか、津波警報なのか、津波注意報なのか分からないケースがあります。「を発表中です。」文字列を含むときは、津波の危険があります。

各所で散々話していることですが、「津波が来るかもしれません。高台へ避難しましょう。」などのようなテキストは、やさしくないので、やさしい日本語の原則「ハッキリ言う」ことにします。

強く呼びかけるため、タイトルの「地震」を「強い地震」に言い換え、震度5以上の場合は「津波がきます!今すぐ逃げてください!」、震度4以下の場合は「津波がくるかもしれません!」をタイトルに追記します。

青森県東方沖で強い地震がありました  津波がきます! 今すぐ逃げてください!

津波の可能性と震度の関係がイコールなわけではありませんが、過度になりすぎないようにしつつ、最後に「!」を付けるように工夫しています。

本文にも、強い呼びかけを追加します。strongタグを付けて、以下のようなテキストが冒頭に追加されます。

青森県東方沖で強い地震がありました。

津波がきます。今すぐ海からはなれたところ、高いところへ逃げてください!

画像の関連付け

緊急時に画像の必要性が高いわけではありませんが、「やさしい朝日新聞」では記事に対して画像を一点以上付けています。このとき、都道府県が1つのときは、その都道府県のイメージ画像 (代替テキストは「青森県のニュースです」など)、都道府県が複数にわたっているときは、地震のイメージ画像 (代替テキストは「地震のニュースです」) が記事に表示されるようにします。

管理画面の画像の一覧画面

メタデータの付与

画像の他に、カテゴリ、タグは自動でセットされます。日付は XMLの地震発生時点にセットされるようになっています。

人の手で情報の確認ができるようにする仕組み

記事が自動生成されると、Slackの #やさしい朝日新聞 チャンネルにメールを通して自動投稿されます。管理画面はスマートフォンでも操作できるため、すばやく対応できるようにしています。ソース情報への参照を簡単にするため、冒頭のスクリーンショットにあるのでお分かりいただけると思いますが、管理画面をプラグインでカスタマイズして元データのXMLへのリンクを追加しています。

正しいふりがなと、正しい音声読み上げを保証するしくみ

試験的に運用している段階では、自動投稿ではなく、下書きの記事が生成された後に Slackで知らせるようにしていました (おかげで青森の大きな地震の発信が遅れたことが残念です)。

試験運用の時点でわかったことは、地域名の読み方やふりがなが間違っていることが往々にしてあることです。自動で作っているので仕方ない部分もあるのですが、そこは何とかしたいと考えました。

行ったことは、正しい地名の読み方を辞書に登録して、辞書に登録しているテキストには明示的にふりがなを付けることです。

住所の読み方の情報源はいくつかありますが、国土地理院のものではなく、気象庁のものを使いました。情報ソースが気象庁のXMLですから、当然ですね。

辞書に登録されているものは、ふりがな生成時に適用されますが、音声を生成する時にも、MeCabによる分ち書きを行い、辞書に登録された固有名詞については、それを適用してから音声を作成するようにしました。

<ruby>八戸市<rt>はちのへし</rt></ruby>

Amazon Pollyに渡すものは、以下のように変換してから音声化します。

<phoneme type="ruby" ph="はちのへし">八戸市</phoneme>

「やさしい朝日新聞」をぜひフォローいただき、災害情報を見かけたときはぜひ拡散をお願いします。

今後は、大雨などの情報やJアラートの情報などを自動化することを検討中です。

カテゴリー:コラム・その他 | サイト制作全般

投稿者:Junnama Noda

2025-12-25

開発中のTOTP認証プラグインとパスキー認証プラグインのご紹介

現在、PowerCMS X管理画面の認証を強化するために2つのプラグインをリリースに向けて鋭意準備中です。

TOTP認証プラグイン

1つ目はTOTP(Time-based One-Time Password)認証機能を提供する「TOTP Authenticator」プラグインです。お客様から対応してほしいとの声を頂き開発したものです。下記画面キャプチャのようにスマートフォンにインストールした認証アプリに6桁の数字が表示され、アプリケーションへのログイン時にその数字を入力すると認証完了となるものです。

画面キャプチャ:Okta Verifyに認証コードが表示された画面

PowerCMS Xでは各ユーザーのプロフィール設定画面から二要素認証(TOTP)の設定画面に遷移するとQRコードが表示されたセットアップ画面が表示されます。

画面キャプチャ:二要素認証(TOTP)の設定画面の様子。説明やQRコードが表示されている。

二要素認証設定済みのユーザーがユーザー名とパスワードを利用してログインする際、認証コード入力画面が表示されることでより強力に本人確認ができるようになります。

画面キャプチャ:ログイン時に表示される認証コード入力画面の様子

動作確認済の認証アプリケーションは下記です。

  • Google Authenticator
  • Microsoft Authenticator
  • Okta Verify
  • Twilio Authy
  • 1Password

二要素認証を設定していないユーザーには管理画面の操作を許可しない設定等も用意しております。

パスキー認証プラグイン

2つ目はパスキー(WebAuthn)での認証機能を提供する「Passkey Authentication」プラグインです。以前から私がパスワードレス認証に興味を持ち、ずっと実現してみたいと考えていたものです。今年、多数の証券会社で口座の乗っ取り事件が発生したことにより急速に導入が進んでいる認証方式です。

パスキー認証はパスワードを使わず、生体情報(指紋や顔認証)やデバイスのPINなどで本人確認を行います。秘密鍵は端末内に、そしてサーバーには公開鍵のみが登録されるため、パスワード漏洩やフィッシング攻撃のリスクを大幅に軽減できます。また、ユーザーは複雑なパスワードの作成・管理・入力が不要になり、利便性が向上します。

例えばMacだと下記のように「Touch IDを使用してサインインしますか?」というメッセージが出てきて、指紋認証を行うとログインが完了します。

画面キャプチャ:ログイン画面にパスキーを利用するか確認するダイアログが表示された画面

生体認証が用意されていない端末では「YubiKey」のようなセキュリティキーを利用することも可能です。興味があり個人で購入してみました。

写真:YubiKey 5C NFC USB-C

YubiKeyをWindows PCに挿してみると、PowerCMS Xログイン画面で認証ダイアログが表示され認証処理が行われました。

画面キャプチャ:WindowsでYubiKeyを用いたログイン認証を行おうとしている画面

まとめにかえて

ご紹介した2つのプラグインで管理画面の認証が強化され、より安心してコンテンツの管理ができるようになればと願っております。

最後になりましたが、社外のみなさまにも「PowerCMS X Advent Calendar 2025」にご参加いただきましてありがとうございました。2026年もお客様の声に耳を傾けながらよりよいPowerCMS Xが提供できるよう努めてまいりますので、何卒よろしくお願いいたします。

カテゴリー:プラグイン

投稿者:安倍

2025-12-24

目的から選ぶ、モデルのオプション設定 (逆引き早見表)

はじめに

PowerCMS X のモデルは、さまざまなオプション設定を選択することで、コンテンツの管理方法を調整できます。
モデルのオプションは、管理する内容や使う機能に合わせて選択します。

この記事では、「どのように使いたいか」から、必要なオプションを選べるように、目的別にまとめました
モデルのオプション設定の、逆引きの早見表です。

(各種機能の詳細は、ドキュメントをご覧ください。)

モデルのオプションとは

モデルの「オプション」 (プロパティ) は、コンテンツの管理方法を調整する設定項目です。

オプションは、モデルの作成画面・編集画面の「オプション」部分で設定できます。ほとんどのオプションは、チェックボックス形式です。
有効化するオプションにチェックを入れて、モデルを保存します。
オプションは、標準で表示される項目と、特定の操作をしてから表示される項目があります。 (操作の例:モデルの保存、ほかのオプションの有効化、環境変数の追加、プラグインの有効化など。)

「モデル」は、コンテンツの構造を定義するための仕組みです。
「コンテンツ」は、公開ページを作成・管理するための内容 (テキスト・画像・PDFなど) です。

モデルのオプション一覧

PowerCMS X のモデルのオプション一覧は、ドキュメント「モデルの基本 (モデルの作成とプロパティ)」の、「モデルのオプション(プロパティ)の設定」部分をご覧ください。
「オプション名」「説明」「生成されるカラム」について、表形式で確認できます。

モデルのオプション設定の逆引き早見表

管理するコンテンツの内容で選ぶ

表1:管理するコンテンツの内容で選ぶ、モデルのオプション
目的 有効化するオプション
コンテンツを公開ページ側へ表示したい テンプレート・タグ
階層構造のコンテンツを管理したい (例:カテゴリ、フォルダ) 階層
関連するバイナリファイルを、分けて管理したい (例:画像、PDF) アセット (または、添付ファイル)
「ディレクトリ・パス」を入力したい (例:URLのディレクトリ名) ディレクトリ・パス
「ベースネーム」を入力したい (例:URLのファイル名) ベースネーム
同じ名前のベースネームも入力できるようにしたい (例:index) ベースネームの重複を許可
関連する「タグ」を入力・選択したい タグ付け
関連する「フォーム」を選択したい フォーム

使う管理機能で選ぶ

コンテンツを作成するための機能で選ぶ

表2:コンテンツを作成するための機能で選ぶ、モデルのオプション
目的 有効化するオプション
CSV 形式で、複数のコンテンツを一括で入力・出力したい (例:データ移行、バックアップ) インポート&エクスポート
コンテンツの変更履歴を管理したい リビジョン対応
コンテンツの変更履歴の保存する数を指定したい 最大リビジョン数
コンテンツの「作成者」「作成日」「更新者」「更新日」を自動記録したい 自動監査
一覧画面・編集画面で、コンテンツを複製したい 複製

コンテンツを公開するための機能で選ぶ

表3:コンテンツを公開するための機能で選ぶ、モデルのオプション
目的 有効化するオプション
段階的に確認してから公開したい [承認ワークフロー機能] (例:作成者、レビュアー、公開者) ユーザーをアサイン、ステータス対応、有効期限対応
CMSユーザー以外も見ることができる、一時的な共有URLを用意したい [外部プレビュー機能] ステータス対応、有効期限対応、UUID
公開しているコンテンツの、差し替え日時を指定したい [差し替え予約機能] ステータス対応、有効期限対応、リビジョン対応
コンテンツの、公開日時・公開終了日時を指定したい [公開予約機能] ステータス対応、有効期限対応
コンテンツの有効・無効を選択したい ステータス対応
ステータスの既定値を指定したい 既定値

コンテンツの要件で選ぶ

表4:コンテンツの要件で選ぶ、モデルのオプション
目的 有効化するオプション
PowerCMS X API を使って、コンテンツを入力・出力したい (例:外部システム連携) APIを有効化
公開ページ側で、コメント機能を使いたい コメントを許可
※環境変数でコメント機能を有効化している場合、表示される項目です。
use_comment: true

管理画面の表示の条件で選ぶ

表5:管理画面の表示の条件で選ぶ、モデルのオプション
目的 有効化するオプション
管理画面の「システム」側に、一覧画面へのリンクを表示したい システムに表示
管理画面のメニューの表示位置を指定したい メニュータイプ
管理画面の「スペース」側に、一覧画面へのリンクを表示したい スペースに表示
関連するスペースを削除したとき、モデルも削除したい スペースの子テーブル
スペースのダッシュボード画面に、一覧画面へのリンクを表示したい スペースに表示、ダッシュボードに表示
メニューの表示順序を指定したい 表示順
一覧画面の表示順の基準を設定したい ソート設定
※モデルを保存したあと、表示される項目です。
権限に関係なく、編集画面のダイアログで、一覧を表示したい (例:マスタ参照) ダイアログ・ビュー

資料

モデルのオプションの設定例

スクリーンショット:モデルの編集画面。内容は本文に記載。

よく使うオプション設定を選んだ一例です。
有効化しているオプションの内容は、次の通りです。

  • メニュータイプ:パネル
  • タンプレート・タグ
  • ベースネーム
  • ベースネームの重複を許可
  • リビジョン対応
  • 最大リビジョン数:20
  • 自動監査
  • ステータス対応
  • 有効期限対応
  • 既定値:下書き
  • アセット
  • UUID
  • インポート & エクスポート
  • 複製
  • スペースに表示
  • ダッシュボードに表示
  • ソート設定:ソート可 (更新日、降順)

個人的には、「コンテンツを作成するための機能で選ぶ」にあるオプションは、設定することが多いです。「コンテンツの要件で選ぶ」にあるオプションは、設定することが少ないです。

モデル設計関連の記事

おわりに

モデルのオプションは、コンテンツの管理方法を調整するための設定項目です。
管理する内容や使う機能に合わせて選択します。
コンテンツ管理の目的・運用方法などの要件を整理し、必要なオプションを設定することで、管理しやすい構成につながります。

PowerCMS X のモデル設計時の参考になりましたら幸いです。

アルファサードでは、無料で試用できる評価版のご提供の他、オンラインでのお打ち合わせ、製品説明のご希望もお受けしております。
ご不明の点がございましたら、お問い合わせフォームからお気軽にお問い合わせください。

お問い合わせ

カテゴリー:技術情報 | サイト制作全般

投稿者:kaida

ブログ内検索

アーカイブ


日本語
ふりがな付き
English
简体中文
繁體中文
한국어