TypoFixer というサービスを作ってみて感じたこと

初めに

こんにちは、 おれたま@AHA_oretamaです。 Software Engineer in Test(SET)として活動しているエンジニアです。

今回、GitHubのプルリクエストで、タイポ(打ち間違え)を指摘して自動で修正するアプリを作りました。 作ってみて多くのことがわかり、そして自分の想定の甘さと自分の経験のなさを痛感し、もっと開発だけではなく全てのことを改善していかなければならない、と強く感じました。 今回はそのことを書いていきたいと思います。

今回はほぼ技術的な話はありません。

TypoFixer

まずは作成したアプリを紹介します。TypoFixerです。

GitHub Appsとして作られているため、以下のような特徴を持ちます。

  • Repository単位で設定ができる。
  • 有償・無償の設定ができる。
  • GitHub Appsとしてインストールすればすぐに使うことができる。

現段階ではとくにオプションなどもなく、カスタマイズできないため、インストールすればそのまま使用できます。

TypoFixerは以下のような機能を持ちます。

  1. プルリクエストを作成したときに、タイポがあればTypoFixerがレビュコメントを追加する。
  2. そのコメントにはタイポの修正候補も表示されており、その中から適切なものを選択すれば、TypoFixerが自動でタイポを修正してコミットしてくれる。
  3. TypoFixerに指摘された単語がタイポではない場合、「Not Typo」を選択すれば、辞書に登録され、TypoFixerは以後、同じ指摘をしなくなる。

背景

このサービスと作る前に、同じようなサービスを探してみるとTypotが見つかりましたが、いくつかの点で自分の中で満足がいくとは言えませんでした。

  • (造語やサービスなどの固有名詞など)実はタイポではないがタイポとして指摘された単語は、その後も指摘され続けてしまう。
  • Typotで使用しているスペルチェックライブラリpyenchantがRepository上でメンテナンスしないことを公言している。
  • 上記の対処もなく、コミットログが止まっている点などからTypotというサービスがメンテされ続けているとは言いにくい状態である。

また、上記とは別にモチベーションの部分として、GitHub Appsを自分で作成した経験を得て、GitHubのプルリクエストやIssueなどに対して、何かしらの操作(ここではプルリクエストへのレビュ)ができるようになることは、今後、SETの活動を進めていく上で役に立つと思い、自分の勉強のために始めました。

そして、もしこのツールが普及したときに、運用・維持費(できれば儲けまで)を得ることができればよいという淡い期待もありました。

やってみた良かった点

以下にやってみてよかった点をあげますが、やっぱり自分の手で実装したことによって得られたものだと思いますので、手を動かして実装することはよいことだと思いました。

  • 自身で足りないと思っていた機能は実装でき、(当初)自分がほしかったサービスができた
  • Circle CI 2.0, Herokuなど今まで仕事などでは、あまり使ったことがないツールをしっかりドキュメント読みこんで、学びながら動かす機会ができた。

作ってみたあとに気づいた点

これらは実際に自分で作ってみて、試したあとに気づいた点です。

  • 実際に使ってみようとしたところ、自分が想定していたものとは以下の点で異なり、非常に使いにくかった
    • タイポの指摘の件数が多すぎる
    • タイポを自動修正したときに整合性が取れない(例えば、メソッド名を変更した場合にそれを呼び出している箇所までは修正しない)ことがある
    • 指摘する箇所に合わせて指摘内容を変更してほしい(例えば、ライブラリのimportする部分などは指摘しないでほしい)。

これらのことは作る前にプロトタイプを作ったり、サービスの動きを想定しなりなどをもっと事前に準備をしていれば、避けられた点かと思います。

また、現段階では、到底お金をもらうサービスには成り得てません。 このようにサービスを簡単に作ることは難しいことがわかりました…

今後の予定

反省点として、やはり自分がどういうものを作りたいか、そして実際にどのような動きになるかをプロトタイプなどを作って前段階で検証する、 つまり、要件定義の段階をもっと自分で行わなければならないと感じました。 そしてその力が自分には足りていないと実感することもできました。

あまりの使いにくさに一度このままサービスをクローズさせようかとも思いましたが、 とはいえ、このまま終わらせようとは思っていません。

せっかく作ろうと思ったサービスなので、もう少し形になるまで続けようとは思います。 そして、できればこのサービス開発で、自分なりの何かをつかめればよいと思っています。

これからやろうと思っている改善点

いまいまやろうと考えている改善点です。まだまだ構想段階です。

  • ファイル拡張子からタイポの指摘箇所を調整する。例えば、マークダウンなどのドキュメントであれば全てを対象として指摘する
  • 設定をカスタマイズ可能して、そのRepositoryにあった指摘を行うことができるようにする
  • 言語ごとの構文を把握して、構文にあった指摘に最適化する