Webではレスポンシブなデザインが基本となっており、表示されるテキストはブラウザの幅によって影響を受けます。英語の場合単語がスペースで区切られるので良いのですが、日本語は連続しているためにブラウザの幅によっては変なところで改行してしまったりします。 改行しないようにする指定は難しくありませんがイチイチやるのは面倒です。そこで使ってみたいのがbudouです。

budouの使い方

budouはGoogleのCloud Natural Language APIを使ってテキストを分解します。例えば次のようなコードを書きます。

import budou
parser = budou.authenticate('/path/to/json')
result = parser.parse(u'こんにちは、MOONGIFTです。MOONGIFTではオープンソース・ソフトウェアを毎日紹介しています。', 'wordwrap')

print(result['html_code'])

結果は次のようになります。wordwrapというクラスが追加されています。

$ python test.py 
<span class="wordwrap">こんにちは、</span><span class="wordwrap">MOONGIFTです。</span><span class="wordwrap">MOONGIFT</span><span class="wordwrap">では</span><span class="wordwrap">オープン</span><span class="wordwrap">ソース・</span><span class="wordwrap">ソフトウェアを</span><span class="wordwrap">毎日</span><span class="wordwrap">紹介しています。</span>

このクラスに対して次のようなスタイル設定を与えます。こうすると画面幅に収まる場合はインラインで、収まらない場合は改行して表示されます。

.wordwrap {
  display: inline-block;
}

こうすることで意図しなかった場所で改行されるような事態が避けられるようになります。Cloud Natural Language APIの面白い使い方ではないでしょうか。より自然で、分かち書きでは難しそうな記号なども含めて処理されているのが特徴です。

budouはPython製のオープンソース・ソフトウェア(Apache Licnese 2.0)です。

google/budou: Automatic Japanese line breaking tool