Pull Requestに潜むタイポを自動的に検出し、修正を代行するBot

  • 319
    いいね
  • 0
    コメント

いざPull Requestのレビュー!と挑んだ瞬間、「ここタイポな」という先制パンチをくらうのはとても残念なことです。
また、これは指摘しているほうにとってもチェックが負担で、気が重いものです。

人間は人間にしかできないチェックに集中すべきですし、貴重なレビュー時間を誤字脱字の修正に使うのはもったいないです。そこで開発したのが、タイポの自動検知と修正を代行するBot。その名もtypotです。

chakki-works/typot
image.png

こちらは先日公開がアナウンスされたGitHub Marketplaceと共に公開された、新しいGitHubアプリの形態であるGitHub Appsで作成しています(それまではWebhookかOAuthだった)。
GitHub AppsはOAuthのようにユーザーではなく、リポジトリにひもつく形態になります。そのため、管理者ユーザーがいなくなった(あるいは権限を失った)からアプリが使えなくなるというような事態を防ぐことができます。この辺り+開発の方法についてはいろいろと知見が積めたので、別途記事にて公開しています
何はともあれ、端的には使ってみようと思ったら対象のリポジトリにだけインストールが可能ということです。

Feature

百聞は一見に如かずということで、実際にtypotがどのような動きをするかご覧ください。

typot.gif

  • タイポがあった場合レビューコメントで指摘が行われる
  • 指摘と共に提示される修正候補を選択するだけで、修正が自動的に行われる

この点が動作デモから確認できると思います。

How it works

typotは、インストールされたリポジトリでPull Requestがオープンされると、そこに対しタイポのチェックを実行します(※現在サポートしているのは英語のみで、チェックにはPyEnchantを利用しています)。タイポが発見された場合、修正候補と共にレビューコメントとして指摘を行います

typo_comment.png

そして、修正候補の中に適切なものがあれば、それを選択するだけで自動的にファイルの修正が実行されます。

typo_fix1.png
typo_fix2.png

これで、タイポのチェックは自動化され、さらにその修正に煩わされることもなくなります。
これらの操作はすべてGitHubのAPIで実装しています。そういう意味では、GitHubのAPIの充実ぶりがわかろうかというものです。

現在はタイポのチェックだけですが、私のチームは自然言語処理/機械学習を生業としているので、もう少し高度な、人のレビュー負荷を軽くするようなチェックができればなとは考えています(チームの活動についてはチームブログをぜひお読みいただければと思います)。

皆様のレビューのお役に立てば幸いです!(Starを頂ければ作った甲斐がありますm(_ _)m)

chakki-works/typot