小説一覧

|

Amazon echo dot 購入

Amazon echo dot を

 Amazon echo dotを購入しました。2018年3月20頃では招待制が続いていてリクエストから数日を経ての購入です。

 少し前にニュースが流れました。
「Amazon echoでKindlle本を読み上げられるようになった」
というニュースです。このニュースで購入意欲が生まれました。英語圏のKindleはごく初期の端末には音声読み上げ機能があったのですが、イヤホン端子のない新モデルとともにその機能が削がれてしまったのです。車社会のアメリカではKindleの音声読み上げ機能は運転の友として好評であったと聞きます。
 その一度は廃止された電子書籍の読み上げ機能がAmazon echoで復活したと知りました。しかも日本語でも。
 これは欲しい!
と購入を決めました。

echoの設定

 Amazon echo dotの導入は簡単でした。本体を電源に接続し、スマートフォンにAlexaをインストールし、WiFiとAmazonアカウントの設定をしておしまい。WiFi設定の手間があるのでどのみち「電源を入れるだけ」にならないこともあってKindleみたいにAmazonIDが入力済みで届いてもメリットは薄いのかもしれません。

Amazon echo の Kindle書籍読み上げ

 思ったよりスマートです。印象をまとめると、

  • 発声は割と自然。ボーカロイドのテキスト読み上げより滑らか。一太郎の詠太と同じくらいの滑らかさ。
  • 漢字の読みが文脈に合わないことがある。
  • 漢字の固有名詞の読みにルビが振られていてもルビは無視される。
  • ある程度の長さごとに読み上げが一時停止する。サーバの応答待ち?
  • 読み上げる書籍を音声コマンドから指定するのは困難。スマホアプリから指定する方が楽。
  • 所有しているはずの書籍が一覧に表示されないこともある。

 また書籍の朗読には向き不向きがあって

向く向かない
一文の短い文章一文の長い文章
読み方が一通りしかないような用字の文章漢語、難読漢字、専門用語
キャラクター少なめ複数キャラの会話シーン

という感じでAlexaの出来不出来に関わらず「朗読」という形式の問題や慣れがあるようです。ラジオ番組や朗読商品は素材の選択や読み上げスキルがかなり洗練されていることを改めて思い知らされます。

スマートスピーカーとして

 スマートホーム対応機器がないこともあってあまり役に立っていません。実用しているのは、

  • キッチンタイマー
  • ニュースや天気予報の読み上げ

くらいです。ラトックシステム スマート家電コントローラリモコンあたりを導入してスマートホーム化を試してみたい気はします。

|

艦これ 2018年冬イベント・捷号決戦!邀撃、レイテ沖海戦(後篇)クリア

 艦これ第一期の最終イベントであるらしい『捷号決戦!邀撃、レイテ沖海戦(後篇)』作戦をクリアしました。前回の(前篇)は扶桑姉妹が主役ということで意地で難易度・甲で挑みましたが今回は準備した資源も少なく丙での参加。

艦これ2018冬イベ

 最終海域E-7撃破のシーンです。イベ前に用意できた資源が各6万弱で難易度・丙でのクリア時点できれいに使い切っていました。

 続いて資源の回復を待ちながら細々と探した未着任艦娘(画像リスト中Lv1)はこんな感じで集まりました。

未所持艦

未所持艦

 今イベでドロップする艦娘分は全員集められた……かな?

|

DM200アウトライン記号&青空文庫ルビの一太郎変換マクロ

DM200と一太郎

 小説創作ではpomera DM200で小説を書き、一太郎で組版という手順で作業しています。その際、DM200上では

ルビ|親字《ルビ》
傍点[#「○○」に傍点]

といった青空文庫記法のマークアップとDM200用のアウトライン記号を併用しています。「.(ピリオド)」の数で階層深さを指定する形です。以下にサンプルを示します。

.タイトル
..第一部
...第一章
あああああ親字《ルビ》
|あああああ親字《ルビ》
ここに傍点[#「傍点」に傍点]を振る
[#ここから4字下げ]いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい。[#ここで字下げ終わり]
...第二章
....第一節
...第三章
..第二部
...第四章
...第五章
..あとがき

 一太郎2018ではマークアップルビの読み込みがある程度サポートされたのですが今ひとつ痒いところに手が届きません。というわけで、自前の記法混在環境に合わせたマクロを作ることにしました。ブログ『All season with my Dear』様の「一太郎で青空文庫ルビ」という記事で公開されていたマクロを元に少しだけ改造したものです。

DM200アウトライン記号と青空ルビの一太郎用変換マクロ

 以下のGIFアニメのように動作するマクロです。上のサンプルテキストで試してみました。

Aozora_macro

  • 青空文庫ルビ、傍点、字下げ記号の一太郎形式化
  • DM200のアウトライン記号の一太郎見出し形式化
    ※階層ひとつめはタイトル、見出しはふたつめ以降に使用

以下にマクロのコードを貼っておきます。


!! --- 青空文庫のテキストにルビを振る ---
!! ---        for 一太郎2018          ---
!! ---          ver1.31b               ---
!! ---   2010/4/25 Copyright Tsukasa   ---
!! ---   2018/3/3 Modified Tou Asaya   ---
!!
!! 青空文庫形式のルビを振ります。
!!ver 1.20 傍点の処理を追加・NS画面用のスタイルに変更
!!ver 1.30 ルビの処理を訂正。長いルビにも対応した。まだエラーを起こすことがある。
!!         字下げの処理を追加した。
!!ver 1.32b DM200タイプ見出し処理追加。PDF出力削除。
!!     地付き、地上げ、縦中横処理追加。
!!↓↓ルビの処理↓↓
!!↓↓長い単語のルビの処理↓↓
 declare variable %ページ(2) 
 declare variable %行(2) 
 declare variable %字(2) 
文書頭()
 %ret(1) =1
 %i = 1
 do until %ret(1) =0
  %ret(1) = 正規表現検索("|",1)
  if(%ret(1)>0 and %i >0) then 
   %ページ(1)= GetPage()
   %行(1) = GetRow()
   %字(1) = GetColumn()
   挿入("★") 
   %ret(2) = 正規表現検索("《[^》]+》",1)
   if(%ret(2)>0) then
    %ページ(2)= GetPage()
    %行(2) = GetRow()
    %字(2) = GetColumn()
    %ルビ = GetString()
    try
   !!エラー発生時はこのルビ処理は飛ばす
     if(MaxSize(%ルビ)>1)then
      %ルビ(1) = %ルビ(1) & %ルビ(2)
     end if
     削除()
     %字数=Len(%ルビ(1))
     %ルビ(1) = Mid(%ルビ(1),2,%字数-2)
     範囲モード(1)
     ジャンプ(%ページ(1),%行(1),%字(1))
     範囲始点()
     ジャンプ(%ページ(2),%行(2),%字(2))
     範囲終点()
     ルビ( 1, %ルビ(1),1)
    exception
     case else
      挿入("★")
    end try
   end if
  end if 
  %i = %i+1
 loop
!!↑↑長い単語のルビの処理↑↑
!!↓↓短い単語のルビの処理↓↓
文書頭( )
%ret = 1
do until %ret = 0
 %ret = 正規表現検索( "《.+?》",1 )
 if(%ret<>"")then
  %ルビ = GetString(  )
  !!エラー発生時はこのルビ処理は飛ばす  try
  try
   if(MaxSize(%ルビ)>1) then 
    %ルビ(1) = %ルビ(1) & %ルビ(2)
   end if
   %字数 = Len(%ルビ(1))
   %ルビ(1) = Mid(%ルビ(1),2,%字数-2)
   挿入("★")
   LeftWord( 2 )
   範囲モード( 6 )
   範囲始点( )
   範囲終点()
   ルビ( 1,%ルビ(1) ,1)
  exception
   case else
    挿入("★")
  end try
 end if
loop
文字全置換("★",,3,0,0)
!!↑↑ルビの処理↑↑
!!↓↓傍点の処理↓↓
文書頭( )
%ret = 1
do until %ret = 0
 %ret = 正規表現検索( "[#「[^」]+」に傍点]",1 )
 if(%ret<>"")then
  %ルビ = GetString(  )
  if(MaxSize(%ルビ)>1) then 
   %ルビ(1) = %ルビ(1) & %ルビ(2)
  end if
  %字数 = Len(%ルビ(1))-8
  カット()  
  範囲モード(1)
  範囲始点( )
  前文字(%字数)
  範囲終点()
  傍点(2)
 end if
loop
!!↑↑傍点の処理↑↑
!!↓↓縦中横の処理↓↓
文書頭( )
%ret = 1
do until %ret = 0
 %ret = 正規表現検索( "[#「[^」]+」は縦中横]",1 )
 if(%ret<>"")then
  %ルビ = GetString(  )
  if(MaxSize(%ルビ)>1) then 
   %ルビ(1) = %ルビ(1) & %ルビ(2)
  end if
  %字数 = Len(%ルビ(1))-9
  カット()  
  範囲モード(1)
  範囲始点( )
  前文字(%字数)
  範囲終点()
  縦中横( )
 end if
loop
!!↑↑縦中横の処理↑↑
!!↓↓字下げの処理↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("[#ここから.字下げ]",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %数 = han(Mid(%文字(1),7,1))*2
  if(%数>0)then
   削除()
  else
   continue do
  end if
  %ページ(1)= GetPage()
  %行(1) = GetRow()   
  %ret = 正規表現検索("[#ここで字下げ終わり]",1)
  %ページ(2)=GetPage()
  %行(2) = GetRow()
  削除
  ジャンプ(%ページ(1),%行(1),1)
  範囲モード(2)
  範囲始点()
  ジャンプ(%ページ(2),%行(2),1)
  範囲終点()
  インデント(1,%数)
 end if
loop
!!↑↑字下げの処理↑↑
!!↓↓一行だけの字下げの処理↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("[#.字下げ]",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %数 = han(Mid(%文字(1),3,1))*2
  if(%数>0)then
   削除()
  else
   continue do
  end if
  インデント(1,%数)  
 end if
loop
!!↑↑一行だけの字下げの処理↑↑
!!↓↓地付きの処理↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("[#地付き]",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %数 = Len(%文字(1))*2
  if(%数>0)then
   削除()
  else
   continue do
  end if
  %ページ(1)= GetPage()
  %行(1) = GetRow()
  行頭()
  %ページ(2)=GetPage()
  %行(2) = GetRow()
  ジャンプ(%ページ(1),%行(1),1)
  範囲モード(2)
  範囲始点()
  ジャンプ(%ページ(2),%行(2),1)
  範囲終点()
  右寄せ( )
 end if
loop
!!↑↑字付きの処理↑↑
!!↓↓地から*字上げの処理↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("[#地から.字上げ]",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %数 = han(Mid(%文字(1),6,1))*2
  if(%数>0)then
   削除()
  else
   continue do
  end if
  %ページ(1)= GetPage()
  %行(1) = GetRow()
  行頭()
  %ページ(2)=GetPage()
  %行(2) = GetRow()
  ジャンプ(%ページ(1),%行(1),1)
  範囲モード(2)
  範囲始点()
  ジャンプ(%ページ(2),%行(2),1)
  範囲終点()
  右寄せ( )
  インデント(1,0,%数)  
 end if
loop
!!↑↑一行だけの字下げの処理↑↑
!!↓↓改丁の処理↓↓
!!↓↓※改丁は一太郎では改ページと判別せず↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("[#改丁]",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %数 = Len(%文字(1))*2
  if(%数>0)then
   削除()
  else
   continue do
  end if
  改ページ(1)
 end if
loop
!!↑↑改丁の処理↑↑
!!↓↓改ページの処理↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("[#改ページ]",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %数 = Len(%文字(1))*2
  if(%数>0)then
   削除()
  else
   continue do
  end if
  改ページ( 1 )
 end if
loop
!!↑↑改ページの処理↑↑
!!↓↓改段の処理↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("[#改段]",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %数 = Len(%文字(1))*2
  if(%数>0)then
   削除()
  else
   continue do
  end if
  改段( 1 )
 end if
loop
!!↑↑改段の処理↑↑
!!↓↓見出しの処理↓↓
文書頭()
%ret=1
do until %ret = 0
 %ret = 正規表現検索("^\.+?",1)
 if(%ret > 0 ) then
  %文字 = GetString()
  %階層数 = len(%文字(1))
  if(%階層数>0)then
   削除()
  else
   continue do
  end if
  %ページ(1)= GetPage()
  %行(1) = GetRow()
  if(%階層数 = 2 ) then
    SetParagraphStyle( 1, "大見出し(オートスタイル)" )
  else if(%階層数 = 3 ) then
    SetParagraphStyle( 1, "中見出し(オートスタイル)" )
  else if(%階層数 = 4 ) then
    SetParagraphStyle( 1, "小見出し(オートスタイル)" )
  else if(%階層数 = 5 ) then
    SetParagraphStyle( 1, "小見出し2(オートスタイル)" )
  else if(%階層数 = 6 ) then
    SetParagraphStyle( 1, "小見出し3(オートスタイル)" )
  else if(%階層数 = 7 ) then
    SetParagraphStyle( 1, "小見出し4(オートスタイル)" )  
  else if(%階層数 = 8 ) then
    SetParagraphStyle( 1, "小見出し5(オートスタイル)" )
  end if
 end if
loop
!!↑↑見出しの処理↑↑

*マクロ機能は一太郎をクラシックメニューにしないと表示されません。

|

«小説創作のための一太郎2018プレミアム