SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

小説執筆をプログラムで支援する(後編)~小説推敲補助ソフト開発編

  • X ポスト
  • このエントリーをはてなブックマークに追加

文章警告

 句読点の重複などの凡ミスを防いだり、他人に指摘されたまずい言い回しや癖を弾いたりするツールです。小説を書く度に、少しずつ確認項目が増えています。

 この手のノウハウは、自分の頭だけで覚えておくことは困難なので、ルールとして用意しておき、機械的に判定するのがよいです。そうしてチェックを繰り返しているうちに、執筆の段階でもそうした表現が減るようになります。

文章警告

 凡ミスの確認として、デフォルトの設定に用意している確認項目は、執筆時点で以下があります。あとは表現的なものが多いです。

  • カギ括弧の対応漏れ
  • 行頭字下げがない
  • カギ括弧なのに行頭字下げ
  • 半角スペースの混在
  • 行末に句読点もカギ括弧も記号もない
  • 種類の違う句読点(。.、,)の混在
  • !?後の空白不在
  • 「―…」が一文字だけ登場
  • ダッシュや三点リーダーに似た別の文字
  • 句読点の連続

画数ヒートマップ

 画数が多い箇所を赤く、少ない場所を青く表示します。文章の読解難易度を可視化する方法の1つです。

画数ヒートマップ

 画面が真っ赤になっていると、かなり読みにくい文章になります。個人的には、画数の多い文字が6文字以上連続している場合は、一見して何が書いているのか分かりにくいので、単語や表現を見直した方がよいと思っています。

 各文字の画数は、画数のリストを持ち、それで判定しています。昔、姓名判断アプリを作る際に整備したものです。

文長ヒートマップ

 一文が長い箇所を赤く、短い箇所を青く表示します。長すぎる文章を書いてしまうのを避けるための確認ツールです。

文長ヒートマップ

 処理としては単純で、区切りとなる場所で文章を分割して配列化し、各要素の文字列長を見ているだけです。そして、文字列長に合わせて、グラデーションになるように背景を色付けしています。

指定文字数改行

 『小説推敲補助ソフト「Novel Supporter」』は「Electron」で作成しています。UIは、WebKitを利用してHTMLによって実現しています。HTMLでは、指定文字数で改行して、なおかつ複雑な禁則処理を行なうことは手軽にできません。

 そこで、禁則処理などをした上で、文章を指定文字数で改行するためのツールを用意しています。また、ページ辺りの行数を指定して、ページ数を示す分割線を入れることもできるようにしています。

指定文字数改行

音声読み上げ(SAPI5)

 Microsoftの「SAPI」(Speech Application Programming Interface)を利用して、テキストを音声読み上げします。耳で文章を確認できます。

音声読み上げ(SAPI5)

 本原稿の前編でも、SAPI5を利用した簡単なプログラムのサンプルを掲載しました。以下を、「speech.wsf」というファイル名にして、Windowsで実行すると、音声を読み上げてくれます。

speech.wsf - SAPI5を利用した音声読み上げ
<job id="main">
  <script language="JavaScript">
    // SAPIの初期化
    var sp = WScript.CreateObject('SAPI.SpVoice');
    sp.Rate   = 0;      // 数字を大きくすると早くなる
    sp.Volume = 100;    // ボリューム0~100
    var pitch = 0;      // 数字を大きくすると声が高くなる
    var txt = '音声読み上げのテストです。';

    // SAPIの実行
    try {
        if (pitch == 0) {
            sp.Speak(txt);
        } else {
            sp.Speak(
                '<pitch absmiddle="' + pitch + '">' + txt + '</pitch>',
                0x08
            );
        }
    } catch(e) {
        WScript.Quit(1);    // 読み上げエラー
    }
    WScript.Quit(0);    // 正常終了
  </script>
</job>

 WSHのファイルは、外部ファイルのプログラムを、scriptタグで読み込めます。そのため、読み上げ設定を外部ファイル化して、読み込むことも可能です。下記のようなプログラムにして、「opt.js」に読み上げ設定を書き込み「speech.wsf」を実行すれば、「Electron」から音声読み上げを利用することができます。

speech.wsf - SAPI5を利用した音声読み上げ
<job id="main">
  <script language="JavaScript" src="opt.js"></script>
  <script language="JavaScript">
  // ~
  </script>
</job>

次のページ
センチメント分析

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10308 2017/08/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング