esm アジャイル事業部 開発者ブログ

永和システムマネジメント アジャイル事業部の開発者ブログです。

スペルチェッカーによる自動化のすすめ

さて、ひとめで以下のおかしな点がわかるでしょうか?

Fix a false positive for Layout/ClosingParenthesisIndentation when using keyword arguemnts.

正解例を少し先送りして、これは typo が含まれているテキストでした。私自身の typo 実例からでしたが、世の中には typo が溢れており、普段開発している膨大な量のテキストからひとつひとつの typo を見つけるのはそれなりに困難です。

それでは、正解例を見てみるのにツールを使ってみましょう。

% misspell a.txt
a.txt:1:83: "arguemnts" is a misspelling of "arguments"

このように typo 検出に役立つツールとしてスペルチェッカーがあります。私がリポジトリに対して度々使うスペルチェッカーはふたつあります。

ひとつめは正解例で使った Go 製の misspell です。Go のインストールが必要です。

github.com

そしてふたつめは Python 製の codespell です。Python のインストールが必要です。

github.com

こちらの codespell を使うと以下のような結果になります。

% codespell a.txt
a.txt:1: arguemnts ==> arguments

詳しくはそれぞれの公式サイトを参照となるのですが、テキスト規模が大きくなると検出できる対象が違ったりするので、重ね掛けをして typo のあぶり出しをすることでより効果的な typo 検出をすることができます。

Rails アプリケーションでの例を挙げると、スペルチェッカーの実行で以下の typo 起因のバグが検出されて、before_action が実行されていないアクションがあったことが判明したケースがあります。

-before_action :do_something, only: %i(edit confirm updae)
+before_action :do_something, only: %i(edit confirm update)

静的解析で見つけられれば良いですが、そのような検出機構がない場合にスペルチェッカーの方で検出できたという興味深い (?) ケースでした。

スペルチェッカーの良いところは、個人の開発環境から導入を開始することができる点にもあります。その先のアドバンスドとしては、Rails が GitHub Actions で行っているように CI での typo 検出をしておくと、リポジトリの master (main) ブランチに含まれる前に typo 検出をすることができるのでチーム開発としても便利です。

github.com

そのほかにも Git Hooks に引っ掛けたりと、コマンドラインツールということで自動化に向けたいろいろな応用が効くでしょう。

今回取り上げたスペルチェッカーは英文に対するチェックになりますが、仮にお仕事の開発が日本語でのコミュニケーションだとしても、プログラムの変数名やメソッド名などは英単語主体になります。実プロジェクトの開発に組み込むことで、きっと typo を減らせるきっかけになるでしょう。

今日はここまでです。では、Happy Hacking!


「情報化技術を通じて社会と共生する」株式会社永和システムマネジメント アジャイル事業部では、エンジニアを絶賛募集しています。応募エントリお待ちしております!

agile.esm.co.jp