カテゴリー: IT

Microsoft Word 2013でWordPressに投稿する

無職ばんざい

色々と思うところがあり3月で仕事を辞めて晴れて無職の身となりました。エブリディがホリディ。それならば長期の旅行へ出かけたくなる。せっかくなので旅行の記録をこのサイトへ残したいものです。カブでちょっと出かけたなら家に帰ってきてから記録を書けば良いものの、長期となると旅行しながら記録していかなければきっと忘れてしまう。時は残酷です。

では、旅行先からこのサイトへの投稿をどのように行うか。このサイトはCMSとしてWordPressを利用しているので、普段は組み込みのエディタを利用して書いていますが、組み込みのエディタはオンラインでなければ書けないので常にネットワークを利用できるとは限らない旅行中に利用するには不適切です。

そこで思い出したのがMicrosoft Wordのブログ投稿機能です。前職でWordに関係する仕事をしていたため、新しいバージョンのWordがリリースされるたびにざっと新機能を追いかけていました。Word 2007か2010あたりでMovable TypeとかWordPressに記事を投稿する機能が追加されたことは知っていたものの、お客さんや自身の業務で使うことは無いため詳細な調査や動作検証は行っていませんでした。

Wordならばオフラインで書けますので、検証する価値がありそうです。

要件

Wordの利用により下記の要件が実現できることを検証します。

  1. オフラインで編集できること
  2. コンテンツとして画像を含められること
  3. Wordのスタイルを同じ意味を持つHTML要素へマッピングできること(例: Wordの見出しスタイル→HTMLのh1, h2…要素、Wordの箇条書きスタイル→ul要素)
  4. 下書きとしてWordPressに投稿(保存)できること

なお、上記の要件のうちオフライン編集以外は、WordPressの組み込みエディタで軽微な手修正を行う等の運用回避ができれば良いものとします。

検証

(準備)アカウントの追加手順

  1. Word起動
  2. ファイル > 共有 > ブログに投稿をクリック
    wd2013-blog-01
  3. ブログアカウントの登録画面で、今すぐ登録をクリック
    wd2013-blog-02
  4. 新しいブログアカウント画面で、ドロップダウンリストからWordPressを選択し、次へをクリック
    wd2013-blog-03
  5. 新しいWordPressアカウント画面で、画面項目の指示通りURL, ユーザー名、パスワードを入力
    wd2013-blog-04
  6. 画像のオプションは変更せずデフォルトのままとしてOKボタンをクリック
  7. アカウントが登録されました…というメッセージボックスが表示されるのでOKクリック
    wd2013-blog-05
  8. Wordがブログ編集用の画面となる
    wd2013-blog-06

あっけない。アカウント追加しようとすると撥ねられるとか、何かしら嵌ると思っていたのにつまらん。

オフライン編集

  1. ブログ編集用の画面で適当に入力
    wd2013-blog-07
  2. docx形式で保存後にWordを終了。ネットワークを切断しオフラインとしてから保存したdocxファイルを開く
    wd2013-blog-08

まあこれくらいはね。保存して開きなおして全部消えてたら洒落にならんですたい。

投稿

  1. 発行 > 下書きとして発行をクリック
    wd2013-blog-09
  2. 本文に「発行されました…」と表示される
    wd2013-blog-10
  3. WordPress側のエディタで表示されることを確認
    wd2013-blog-11
  4. プレビューでも問題ないことを確認
    wd2013-blog-12

営団の「マナーを守って楽しい地下鉄」という標語もちゃんと読め、WordスタイルとHTML要素のマッピングも完璧です。段落番号スタイルのネストができるのは予想していましたが、強調斜体スタイルをem要素に置き換えたのは驚きました。そこまでやるか。

検証結果

上記の検証により、Word 2013の利用により要件が実現できることが明らかとなりました。

もちろん、サンプルデータはとても簡単なものでしたので、実際にWord 2013で書き始めると多少の不具合は出てくるかと思います。不具合が出たとしてもWordPress組み込みのエディタで修正してやれば運用回避できるでしょう。

こうなると欲が出てきます。もうちょっと調べてみましょう。

段落書式および文字書式の反映

  1. 段落書式、文字書式を設定し下書きとして発行
    wd2013-blog-13
  2. WordPress上で確認
    wd2013-blog-14 wd2013-blog-15

やりおる。文字書式でstrong要素を入れてきたあたり、MSは多くのWordユーザーがスタイルを利用せず書式により文の意味付けを行っている現状をよく理解していると言えます。

さらに調べてみましょう。

通常のWord文書として作成した文書を投稿

これまでは、ブログに投稿機能で表示された画面で入力・編集し検証してきましたが、ブログ用ではなく普通のWord文書からも投稿できるのか検証します。

  1. 適当にWord文書を作成。ここではマイクロソフトが提供しているオンラインテンプレートから「論文」を選択して作成しました。
    wd2013-blog-16
  2. ファイル > 共有 > ブログに投稿をクリック
    wd2013-blog-17
  3. 編集中のファイルをもとに新規文書が作成され、ブログ用画面で表示された
    wd2013-blog-18

必ずブログ編集用の画面を経由するということか。これならば最初からブログ編集画面で書いたほうが良さそうです。

Wordなんてクソと思っていましたが意外とできる子でした。これで旅行も楽しめそうです。

実際に投稿してみる

上記の検証結果を受けて投稿したのが大堀川から手賀沼へ。実際に投稿してみて気づいた点は次のとおり。

  • オリジナルの画像が挿入されるので、解像度が高い画像だとページのロード時間が長くなる。対策としてはアップロード前に画像を縮小しておくか、画像だけはWordPressの機能でアップロード・挿入する。大堀川から手賀沼へではWordPressの機能を利用したが、大した手間ではなかった。
  • Wordのオートフォーマット機能で余計な文字書式が設定され、不要なspan要素が挿入された。大堀川から手賀沼へではWordPressでspan要素を削除した。Wordのオートフォーマットを無効にすれば以後は未然に防げるはず。
  • Wordの校正機能により表記ゆれや言葉遣いの誤りを検出してくれるのでtypoを見つけやすい

完璧というわけではありませんが、下書き用ならば十分に満足できます。

Asteriskで050 Freeに留守電を付ける

やりたいこと

ブラステル社のIP電話サービス050 Freeに留守番電話を付けたい。この050 Free、IP電話にありがちな遅延が少なく、さらに通話料もお安く、さらにさらに月額料金は0円という客の側から見ると大変ありがたいサービスです。しかしながら留守電がついていないのが残念なところ。

この手のIP電話サービスと言えば、NTTコム社の050 plusフュージョン・コミュニケーションズ社のIP-Phone SMARTが有名どころです。どちらも標準で留守電サービスが提供されているものの、050 plusは月額料金が発生するため私のような貧乏人には抵抗があり、IP-Phone SMARTは月額料金は無料であるものの通話料が高い。というか、そもそもフュージョンのやつは料金云々以前に遅延が大きくて使えない。

用事があればかけ直してくるだろうから留守電なんていらないという考えもありますが、何度も何度もかけ直していただくのも小心者の私は心苦しい。留守電にメッセージを残していただき、こちらからお電話差し上げるのが大人というものでしょう。

そこで、Ateriskを使い050 Freeで留守電を実現することにしました。

環境

手順

debianのインストール

普通にインストールします。

APTによるAsteriskのインストール

素直にパッケージでAsteriskを入れます。途中、国番号を訊いてくるので日本の番号である81を入力します。

# apt-get install asterisk

これだけでほしいソフトが入ってくれるんだからパッケージ管理システムってすばらしい。

confファイルの編集

/etc/asterisk/asterisk.conf

languageprefix = yesのコメントアウトを外すだけ。

[directories](!)
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astdbdir => /var/lib/asterisk
astkeydir => /var/lib/asterisk
astdatadir => /usr/share/asterisk
astagidir => /usr/share/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk

[options]
;verbose = 3
;debug = 3
;alwaysfork = yes               ; Same as -F at startup.
;nofork = yes                   ; Same as -f at startup.
;quiet = yes                    ; Same as -q at startup.
;timestamp = yes                ; Same as -T at startup.
;execincludes = yes             ; Support #exec in config files.
;console = yes                  ; Run as console (same as -c at startup).
;highpriority = yes             ; Run realtime priority (same as -p at
                                ; startup).
;initcrypto = yes               ; Initialize crypto keys (same as -i at
                                ; startup).
;nocolor = yes                  ; Disable console colors.
;dontwarn = yes                 ; Disable some warnings.
;dumpcore = yes                 ; Dump core on crash (same as -g at startup).
languageprefix = yes            ; Use the new sound prefix path syntax.
;internal_timing = yes
;systemname = my_system_name    ; Prefix uniqueid with a system name for
                                ; Global uniqueness issues.
;autosystemname = yes           ; Automatically set systemname to hostname,
                                ; uses 'localhost' on failure, or systemname if
                                ; set.
;maxcalls = 10                  ; Maximum amount of calls allowed.
;maxload = 0.9                  ; Asterisk stops accepting new calls if the
                                ; load average exceed this limit.
;maxfiles = 1000                ; Maximum amount of openfiles.
;minmemfree = 1                 ; In MBs, Asterisk stops accepting new calls if
                                ; the amount of free memory falls below this
                                ; watermark.
;cache_record_files = yes       ; Cache recorded sound files to another
                                ; directory during recording.
;record_cache_dir = /tmp        ; Specify cache directory (used in conjunction
                                ; with cache_record_files).
;transmit_silence = yes         ; Transmit silence while a channel is in a
                                ; waiting state, a recording only state, or
                                ; when DTMF is being generated.  Note that the
                                ; silence internally is generated in raw signed
                                ; linear format. This means that it must be
                                ; transcoded into the native format of the
                                ; channel before it can be sent to the device.
                                ; It is for this reason that this is optional,
                                ; as it may result in requiring a temporary
                                ; codec translation path for a channel that may
                                ; not otherwise require one.
;transcode_via_sln = yes        ; Build transcode paths via SLINEAR, instead of
                                ; directly.
;runuser = asterisk             ; The user to run as.
;rungroup = asterisk            ; The group to run as.
;lightbackground = yes          ; If your terminal is set for a light-colored
                                ; background.
;forceblackbackground = yes     ; Force the background of the terminal to be
                                ; black, in order for terminal colors to show
                                ; up properly.
;defaultlanguage = en           ; Default language
documentation_language = en_US  ; Set the language you want documentation
                                ; displayed in. Value is in the same format as
                                ; locale names.
;hideconnect = yes              ; Hide messages displayed when a remote console
                                ; connects and disconnects.
;lockconfdir = no               ; Protect the directory containing the
                                ; configuration files (/etc/asterisk) with a
                                ; lock.

; Changing the following lines may compromise your security.
;[files]
;astctlpermissions = 0660
;astctlowner = root
;astctlgroup = apache
;astctl = asterisk.ctl

[compat]
pbx_realtime=1.6
res_agi=1.6
app_set=1.6

/etc/asterisk/sip.conf

sip.confは男らしく中身をまるっと消して以下の具合にする。内容はもうちょっと削れそうな気がする。

[general]
language=ja

; Register
register => ユーザー名:パスワード@softphone.spc.brastel.ne.jp/200

[brastel]
type=peer
username=ユーザー名
fromuser=ユーザー名
secret=パスワード
fromdomain=softphone.spc.brastel.ne.jp
host=softphone.spc.brastel.ne.jp
context=brastel
insecure=invite
canreinvite=no
disallow=all
allow=ulaw
allow=gsm

/etc/asterisk/extensions.conf

10秒待って留守電を呼ぶようにすべく、extensions.confを書く。”Wait(10)”が見てのとおり10秒待つという意味なので、好みで短くでも長くでもします。

“exten => 200″の”200″という数字がsip.confのregisterで指定した”/200″に対応するみたい。

[brastel]
exten => 200,1,Ringing
exten => 200,n,Wait(10)
exten => 200,n,Voicemail(200)
exten => 200,n,Hangup

/etc/asterisk/voicemail.conf

留守電(ボイスメール)を設定。留守電が録音されたら内容をメールに添付して送るようにします。maxmsgが留守電に記録できる最大件数、maxsecsが1件あたりの最大録音時間、maxsilenceが最大無音時間(この時間を超えて電話をかけた人が何も話さないと電話を切る)なので適宜調整します。

[general]
format=wav49
serveremail=asterisk
attach=yes
maxmsg=9999
maxsecs=300
maxsilence=10
silencethreshold=128

[default]
200 => 1234,送信先の人の名前,メール送信先,,tz=japan

Asteriskサービスの再起動

ここまで設定したらAsteriskサービスを再起動します。

# service asterisk restart

さらにasteriskコマンドでコンソールに入り、ブラステル社のSIPサーバーにRegisterできたことを確認します。

# asterisk -r
Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on asterisk2 (pid = 8847)
asterisk2*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time
softphone.spc.brastel.ne.jp:5060        N      ユーザー名            25 Registered           Sat, 15 Nov 2014 22:26:14
1 SIP registrations.
asterisk2*CLI> quit

Registeredと表示されればOK.

動作テスト

電話をかけて、10秒ほど待つと英語のメッセージが聞こえることを確認します。

日本語音声の格納

日本人に電話をかけたのに英語のメッセージが聞こえてきたら、電話をかけた人はびっくりするでしょう。間違えたかな??と思い電話を切ってしまうかもしれません。そこで日本語で応答メッセージが流れるよう、日本語音声をVoIP-Info.jpからダウンロードし格納します。

# cd /tmp
# wget http://ftp.voip-info.jp/asterisk/sounds/1_6/asterisk-sound-jp_16_pre.tar.gz
--2014-11-15 22:43:00--  http://ftp.voip-info.jp/asterisk/sounds/1_6/asterisk-sound-jp_16_pre.tar.gz
ftp.voip-info.jp (ftp.voip-info.jp) をDNSに問いあわせています... 36.3.112.226
ftp.voip-info.jp (ftp.voip-info.jp)|36.3.112.226|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 945968 (924K) [application/x-gzip]
`asterisk-sound-jp_16_pre.tar.gz' に保存中

100%[======================================>] 945,968     5.70M/s 時間 0.2s

2014-11-15 22:43:00 (5.70 MB/s) - `asterisk-sound-jp_16_pre.tar.gz' へ保存完了 [945968/945968]

# tar xzvf asterisk-sound-jp_16_pre.tar.gz
ja/
ja/jp-tadashii.gsm
ja/jp-ha.gsm
ja/vm-extension.gsm
ja/vm-nomore.gsm
ja/agent-incorrect.gsm
ja/jp-gozaimasu.gsm
ja/conf-unmuted.gsm
ja/vm-Cust5.gsm
ja/vm-newpassword.gsm
ja/vm-login.gsm
ja/vm-incorrect.gsm
ja/vm-Cust4.gsm
ja/README.txt
ja/digits/
ja/digits/mon-6.gsm
ja/digits/40.gsm
ja/digits/h-11.gsm
ja/digits/day-4.gsm
ja/digits/today.gsm
ja/digits/h-7.gsm
ja/digits/3.gsm
ja/digits/mon-1.gsm
ja/digits/11.gsm
ja/digits/oh.gsm
ja/digits/mon-10.gsm
ja/digits/mon-0.gsm
ja/digits/day-1.gsm
ja/digits/h-30.gsm
ja/digits/12.gsm
ja/digits/h-19.gsm
ja/digits/byou.gsm
ja/digits/14.gsm
ja/digits/h-9.gsm
ja/digits/a-m.gsm
ja/digits/10.gsm
ja/digits/h-3.gsm
ja/digits/h-14.gsm
ja/digits/nichi.gsm
ja/digits/fun.gsm
ja/digits/p-m.gsm
ja/digits/5.gsm
ja/digits/h-16.gsm
ja/digits/hundred.gsm
ja/digits/h-15.gsm
ja/digits/dollars.gsm
ja/digits/h-17.gsm
ja/digits/h-6.gsm
ja/digits/7.gsm
ja/digits/thousand.gsm
ja/digits/9.gsm
ja/digits/h-10.gsm
ja/digits/50.gsm
ja/digits/17.gsm
ja/digits/tomorrow.gsm
ja/digits/20.gsm
ja/digits/19.gsm
ja/digits/80.gsm
ja/digits/30.gsm
ja/digits/0.gsm
ja/digits/yesterday.gsm
ja/digits/day-6.gsm
ja/digits/70.gsm
ja/digits/nen.gsm
ja/digits/4.gsm
ja/digits/h-5.gsm
ja/digits/h-13.gsm
ja/digits/at.gsm
ja/digits/h-8.gsm
ja/digits/6.gsm
ja/digits/h-20.gsm
ja/digits/h-4.gsm
ja/digits/h-12.gsm
ja/digits/90.gsm
ja/digits/mon-4.gsm
ja/digits/h-18.gsm
ja/digits/million.gsm
ja/digits/mon-8.gsm
ja/digits/day-0.gsm
ja/digits/h-1.gsm
ja/digits/15.gsm
ja/digits/60.gsm
ja/digits/h-2.gsm
ja/digits/ji.gsm
ja/digits/day-3.gsm
ja/digits/16.gsm
ja/digits/gatsu.gsm
ja/digits/13.gsm
ja/digits/mon-7.gsm
ja/digits/18.gsm
ja/digits/8.gsm
ja/digits/mon-9.gsm
ja/digits/mon-3.gsm
ja/digits/mon-2.gsm
ja/digits/mon-5.gsm
ja/digits/day-5.gsm
ja/digits/2.gsm
ja/digits/1.gsm
ja/digits/oclock.gsm
ja/digits/day-2.gsm
ja/digits/mon-11.gsm
ja/privacy-unident.gsm
ja/vm-press.gsm
ja/vm-Work.gsm
ja/invalid.gsm
ja/vm-reachoper.gsm
ja/conf-onlyperson.gsm
ja/jp-no.gsm
ja/hours.gsm
ja/conf-kicked.gsm
ja/jp-oshitekudasai.gsm
ja/agent-loginok.gsm
ja/vm-and.gsm
ja/vm-no.gsm
ja/vm-youhave.gsm
ja/ss-noservice.gsm
ja/vm-goodbye.gsm
ja/vm-toreply.gsm
ja/vm-password-eririn.gsm
ja/vm-Cust3.gsm
ja/tt-allbusy.gsm
ja/q-default.gsm
ja/vm-INBOX.gsm
ja/vm-mailbox-full.gsm
ja/vm-from-phonenumber.gsm
ja/vm-theperson.gsm
ja/wakeup-call-cancelled.gsm
ja/auth-incorrect.gsm
ja/jp-saisho.gsm
ja/conf-otherinparty.gsm
ja/vm-isunavail.gsm
ja/vm-password.gsm
ja/vm-undelete.gsm
ja/1-for-am-2-for-pm.gsm
ja/wakeup.gsm
ja/jp-masu.gsm
ja/vm-advopts.gsm
ja/vm-savemessage.gsm
ja/vm-savedto.gsm
ja/vm-first.gsm
ja/conf-errormenu.gsm
ja/vm-savefolder.gsm
ja/jp-arimasen.gsm
ja/rqsted-wakeup-for.gsm
ja/vm-whichbox.gsm
ja/wakeup-call.gsm
ja/vm-passchanged.gsm
ja/conf-enteringno.gsm
ja/tt-monkeysintro.gsm
ja/privacy-prompt.gsm
ja/vm-Cust2.gsm
ja/jp-desu.gsm
ja/vm-message.gsm
ja/transfer.gsm
ja/conf-onlyone.gsm
ja/vm-forwardoptions.gsm
ja/conf-usermenu.gsm
ja/jp-wa.gsm
ja/vm-options.gsm
ja/not-rqsted-wakeup.gsm
ja/conf-muted.gsm
ja/jp-dekimasu.gsm
ja/jp-baai.gsm
ja/vm-instructions.gsm
ja/vm-saved.gsm
ja/vm-intro.gsm
ja/conf-invalidpin.gsm
ja/vm-Friends.gsm
ja/dir-nomatch.gsm
ja/vm-Old.gsm
ja/dir-intro.gsm
ja/vm-changeto.gsm
ja/vm-nobodyavail.gsm
ja/conf-unlockednow.gsm
ja/agent-loggedoff.gsm
ja/vm-toforward.gsm
ja/wakeup-menu.gsm
ja/conf-locked.gsm
ja/tt-somethingwrong.gsm
ja/vm-sorry.gsm
ja/vm-leavemsg.gsm
ja/vm-Family.gsm
ja/vm-Cust1.gsm
ja/jp-arimasu.gsm
ja/vm-incorrect-mailbox.gsm
ja/wakeup-menu2.gsm
ja/jp-machigai.gsm
ja/privacy-thankyou.gsm
ja/enter-a-time.gsm
ja/vm-reenterpassword.gsm
ja/dir-nomore.gsm
ja/vm-rec-busy.gsm
ja/vm-tocancel.gsm
ja/vm-mismatch.gsm
ja/vm-messages.gsm
ja/conf-thereare.gsm
ja/vm-starmain.gsm
ja/conf-noempty.gsm
ja/vm-next.gsm
ja/jp-ga.gsm
ja/conf-getconfno.gsm
ja/conf-adminmenu.gsm
ja/jp-kara.gsm
ja/vm-repeat.gsm
ja/pbx-invalid.gsm
ja/auth-thankyou.gsm
ja/vm-last.gsm
ja/vm-enter-num-to-call.gsm
ja/vm-onefor.gsm
ja/vm-deleted.gsm
ja/vm-rec-unv.gsm
ja/dir-instr.gsm
ja/agent-newlocation.gsm
ja/jp-saigo.gsm
ja/vm-delete.gsm
ja/jp-chigaimasu.gsm
ja/conf-getchannel.gsm
ja/vm-tohearenv.gsm
ja/vm-received.gsm
ja/jp-wo.gsm
ja/agent-user.gsm
ja/agent-alreadyon.gsm
ja/vm-undeleted.gsm
ja/conf-getpin.gsm
ja/jp-ni.gsm
ja/conf-invalid.gsm
ja/vm-helpexit.gsm
ja/vm-opts.gsm
ja/agent-pass.gsm
ja/pbx-invalidpark.gsm
ja/conf-lockednow.gsm
ja/vm-msgsaved.gsm
ja/tt-weasels.gsm
ja/vm-msginstruct.gsm
ja/pbx-transfer.gsm
ja/vm-for.gsm
ja/vm-rec-name.gsm
ja/privacy-incorrect.gsm
ja/minutes.gsm
ja/vm-prev.gsm
ja/demo-echotest.gsm
ja/jp-dekimasen.gsm
ja/vm-isonphone.gsm
# mv ja/ /usr/share/asterisk/sounds/

動作テスト

電話し、メッセージが日本語に変わったことを確認します。

メール送信

メールまわりを設定していないのでメールが送信されません。dpkg-reconfigure exim4-configしたり、/etc/exim4/passwd.client編集などして設定し、一応mailコマンドでメールが送信されることを確認。

動作テスト

電話し、適当に何か話してメッセージを録音し、メールで送られていることを確認します。

おわりに

留守電が使えるようになり、小心者の私も安心してIP電話の電話番号を人にお伝えできるようになりました。とはいえ、まだVM上で動かしておりホストを落とすと留守電も使えなくなってしまうので、Raspberry Piで動作させて実稼働とするつもりです。

それにしてもAteriskの便利さには驚きました。

今回の目的は留守電だけだったので手順は上記のように簡素なものとなりましたが、手順確立前の検証時にはご多分に漏れず内線をやってみたり、色々といじりました。その結果、設定方法に多少癖はあるもののドキュメントやサンプルも充実しており、構築のハードルは低めであることから、個人用途はもとより、社員数が数十名程度の零細企業ならば社内電話をAsteriskによって構築するという選択肢は現実的と考えるに至りました。ビジネス用途なので冗長化は必須ですし、保守の問題もありますが、IT系の会社ならば社内の要員でなんとかなりそう。

これはかなりの潜在力を秘めたソフトウェアだと思うのですが、導入事例を聞いたことがないのが不思議。