Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

文章の校正支援サーバーRedPenにPullRequestを送りました

文章の校正をするオープンソースのサーバーRedPenにPullRequestを送りました。

先日レビュー・マージされたようです。ありがとうございます。 まだ問題はあるかもしれないので、気づいた人はテストの追加やさらなる修正をお願いします。

github.com

RedPenは日本語や英語の文章の校正ができるサーバーです。 RedPenはJavaで作られているのでPullRequestの作成時に久々にJavaを書きました。 実用と言う意味でJavaを書いたのはたぶん僕の初体験だと思います。

社内で校正サーバーを運用して多人数で使いたい場合はRedPenは良さそうですね。 textlintは手元でのツールという感じなので、サーバーを立てて社内向けに運用するぞというレベルであればRedPenのほうが向いていそうです。

なぜRedPenに?

記事の執筆プラットフォームの Shodo を開発するための調査としてRedPenを調べていました。

Shodoではブラウザー上で記事の自動校正を実行していますが、現在、サーバーサイドで高速かつ低負荷に校正をするよう開発中です。 そのために、既存のRedPenというサーバーとしても動作する校正ツールを調査していました。

結論としてShodoのバックエンドでRedPenの採用をすることはなさそうですが、RedPenというプロジェクト自体は面白いので何か協力できないかと思ったのが理由です。 RedPenのプログラムも読ませてもらいましたが、とても良くできていて勉強になりました。

VRChatでRedPenを教えてくれたぷろろーさん、ありがとうございます!

PullRequestで何をしたの?

RedPenにある日本語のら抜き言葉をチェックする機能に誤検知があったので修正しました。 「〜れない・られない」場合の検知はうまくいくものの、「〜られる」の表現を誤検知してしまう問題があったので修正しました。

すぐにレビューいただいて、ありがとうございます。 何かの役に立てたのも嬉しく思っています。

今後のShodoでは?

Shodoでは現在UXの改善に取り組んでいます。 単にデザインの修正だけでなく、動作速度や読み込みの速度、動作時の「引っ掛かり」をなくすよう工夫しています。 そういった手触りは気づかないところで降り積もったストレスとなるので、なるべく早く取り除きたいと思っています。

サーバーサイドでの文章校正をするオープンソースはRedPen以外になさそうです。 ですので、textlint構文木の作成に使いつつ、校正チェックやWebサーバーの部分はShodo独自の実装となりそうです。 textlintは良いツールですが、あくまでローカル環境で手軽に実行されることを想定しているものです。サーバーサイドで高負荷に耐えようとすると、どうしても形態素解析の遅さなどが問題になります。そこでShodoでは独自で実装していこうとなりました。

今後、Shodoで開発した知見やノウハウをまたRedPenやtextlintといったオープンソースに還元していければと思います。

shodo.ink

この記事はShodo (https://shodo.ink) で執筆されました。