RedPenを使って技術文書を手軽に校正しよう

第4回RedPenの利用方法

本連載を執筆している伊藤@takahi_iです。今回はRedPenの多様な利用方法について解説します。前半ではLaTeXなど様々なフォーマットで書かれた文書にRedPenを適用する方法について解説します。後半ではRedPenをコマンド以外から利用する方法など、現在のRedPenをとりまく状況について解説します。

多様なフォーマットで書かれた文書への対応

技術文書のフォーマットはRedPenがサポートするMarkdownやWiki記法以外にもたくさんあります。たとえば、多くの論文はLaTeXを利用して記述されます。マニュアルであればSphinxを利用しているグループもあるかもしれません。

以下、例としてLaTeXフォーマットで書かれた文書にRedPenを適用する方法について解説します。

LaTeX文書にRedPenを適用

残念ながら現状のRedPenはLaTeX文書に対応していません。そこで私がLaTeXで文書を書くときにはPandocというフォーマット変換ツールを利用します。

PandocはLaTeXやRST等の多くのデータフォーマットをサポートしています。Pandocのインストール方法についてはPandocのホームページを参照してください。

では実際にLaTeX文書にたいしてRedPenを適用しましょう[1]⁠。今回利用するLaTeXのサンプル文書プロジェクトをGitHub上に作りました。サンプル文書はmain.texという名前で保存されています。

このプロジェクトを次のコマンドでダウンロードします。

$git clone [email protected]:takahi-i/gihyo-redpen-latex.git

ではLaTeX文書(main.tex)に次のようにPandocを適用します。

$pandoc -s main.tex -o main.md

その結果、main.mdというMarkdownフォーマットに変換された文書が生成されます。生成されたMarkdownフォーマット文書(main.md)にRedPenを適用します。

$redpen -c redpen-conf.xml -f markdown main.md

すると、次のような検査結果が出力されます。

$redpen --conf redpen-conf.xml -f markdown main.md
17:02:43.052 [main] INFO  cc.redpen.ConfigurationLoader - Loading config from specified config file: "/Users/ito/work/gihyo-redpen-latex/redpen-conf.xml"
17:02:43.132 [main] INFO  cc.redpen.ConfigurationLoader - Succeeded to load configuration file
17:02:43.132 [main] INFO  cc.redpen.ConfigurationLoader - Language is set to "ja"
17:02:43.133 [main] INFO  cc.redpen.ConfigurationLoader - More than one "symbol " blocks in the configuration
17:02:43.852 [main] INFO  cc.redpen.parser.SentenceExtractor - "[., ?, !]" are added as a end of sentence characters
...
main.md:1: ValidationError[InvalidSymbol], 不正なシンボル ":" がみつかりました at line: authors: 伊藤 敬彦 title: 自動文書検査ツール RedPen
main.md:1: ValidationError[DoubledWord], 一文に二回以上利用されている単語 ":" がみつかりました at line: authors: 伊藤 敬彦 title: 自動文書検査ツール RedPen
main.md:4: ValidationError[InvalidSymbol], 不正なシンボル "\" がみつかりました at line: 規約にしたがった文書記述をサポートするツールとして RedPen \cite{redpen} を作成した.

入力文書(main.tex)の校正は終わっているにもかかわらず、いつくかエラーが出力されてしまっています。これらのエラーはPandocがLaTeX文書をMarkdownに適用した際に混入してしまったものです。残念ながら現在のところPandocに由来するエラーをとりのぞく簡単な方法は存在しません。とはいえ一部のエラーに目をつぶれば、問題なく利用できるでしょう。

LaTeX以外の文書にRedPenを適用

ここではLaTeX文書にRedPenを適用しました。Panndocにサポートされていれば、LaTeX以外のフォーマットでもMarkdownに変換してRedPenを適用できます。

多様な利用環境

前節ではRedPenを多様なフォーマットの文書に適用する方法について述べました。本節ではRedPenをコマンドライン以外で簡単に利用する方法について解説します。

サーバ

RedPenはコマンド以外にもサンプルサーバを提供しています。残念ながら現状のサンプルサーバは半構造化データに対応していないなど、機能が十分提供されていません。コマンドに比べ機能は十分ではありませんが、RedPenが行う処理をUIをとおして体験できるようになっています。

RedPenサーバはリリースページに存在するwarファイルをダウンロードして使用します。warファイルは次のコマンドで実行できます。

$java -jar redpen-server-1.0.1.war

上記のコマンドを実行すると、RedPenサーバが立ち上がります。サーバが立ち上がった後ウェブブラウザで"localhost:8080"にアクセスしてください。すると、次のUIページが表示されます。

RedPenサーバ
画像

ではUIページの入力フォームに、次の文章を入力してみましょう。

最近利用されているソフトウェアの中には複数の計算機上で動作(分散)するものが多く存在し、このような分散ソフトウェアは複数の計算機で動作することで大量のデータを扱えたり、高負荷な状況に対処できたりします。
本稿では,複数の計算機(クラスタ)でで動作する各サーバーを「インスタンス」と呼びまます。
たとえば検索エンジンやデータベースではインデックスを複数のインスタンスで分割して保持します。
このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。

そして"Validate Japanese"をクリックすると、次図のようにエラーがフォームの下に列挙されます。

RedPenサーバのエラー出力
画像

Herokuボタン

さらにRedPenサーバはHerokuボタンから立ち上げられます。Heroku上にRedPenが立ち上がることで、ユーザ環境でサーバを管理する手間がなくなります。

Herokuボタン
画像

Herokuボタンをクリックすると、次の画面に遷移します。

Herokuデプロイ
画像

画面内の"Deploy for Free"と書かれたボタンをクリックすると、Heroku環境でRedPenサーバの配備がはじまります。

Atomからの利用

AtomはGitHubが公開したエディタです。Atomの特徴のひとつに豊富なパッケージ(機能拡張)群があります。

パッケージの中には他のエディタを利用する人が乗り換えやすいようにキーバインドをシミュレートするものが存在します。私は長年Emacsで文書を書いていたのですが、Emacsのキーバインドをシミュレートするパッケージを利用することで比較的簡単に乗り換えられました。

先日@griffin_stewieさんがAtomのRedPenパッケージを作成しました。詳しい使い方は@griffin_stewieさんのRedPen パッケージについてのブログ記事に説明があるのでそちらを参照してください。

実はこの原稿をAtom Editorで書きRedPenパッケージでチェックしています。コマンドラインと違って、リアルタイムに検査結果が表示されるので大変便利です。次図はAtom Editorでの作業の様子です。

Atom Editor での執筆
画像

Homebrew対応

@kozo2さんがRedPenのHombebrew用のforumlaを記述してプルリクエストを送っています。もうしばらくするとマージされるのではないかと思います。HomeBrew対応によりRedPenをインストールするコストがさらに低減されることが期待できます。

Rubyバインディング

RedPen自体はJavaで記述されていますが、RubyからRedPenを簡単に呼び出すためのGem@akinomurasameさんが公開しました。普段Rubyを利用される方は、文書執筆する際に是非いちど試してみてください。

まとめ

今回はRedPenを多様な状況で利用する方法について解説しました。前半ではRedPenがサポートしていない多様なフォーマットで書かれた文書にRedPenを適用する方法について述べました。後半では、RedPenが提供するコマンド以外での利用方法について解説しました。

おすすめ記事

記事・ニュース一覧