ツールのコーディングスタイル統一に挑んだが問題は山積み
穴井氏は、KAIZENアワーで実施した取り組みの中から「1時間でコツコツできる改善例」を紹介した。そして、「これから自分の職場で改善活動にチャレンジする人には、最低限の時間でできることから始めるのを勧めます」と話す。
「改善に取り組んでみたいけれど、『工数が3人日かかる』などと最初から切り出しては上司も納得してくれません。でも『1時間でできますから』と言えば、説得しやすいのではないでしょうか」
今回紹介されたのは、穴井氏がコーディングスタイルの統一を試みた際の事例だ。リッチラボでは現在2つのB2Bツールを使用しているが、それぞれ開発時期が違うため、コーディングスタイルが異なっているのが問題だった。具体的には、JavaScriptの構文チェックツール「ESLint」のルールセットが新旧2つ存在するため、一方ではチェックを通るコードがもう一方では通らない問題が生じていた。新しいルールセットに統一しようと考えたが、単純に古い方を切り替えるだけでは大量のエラーが出てしまう。
「最初2000件くらいあった問題を、かなり頑張って777まで減らしましたが、これでも1時間ではとても解決できません。また、単純にプルリクエストとして投げると、差分が膨大になってしまう。レビュアーの手間も考えて、手作業での移行をいったん断念しました」
段階的な修正とツールを使った効率化&自動化で問題を解決
そこで穴井氏は、段階的に修正していくことと、その過程を効率化できるツールを利用することを考えた。ステップとしては主に3段階。最初に行ったのが「Prettier」というコードフォーマッターの導入だ。このツールはESLintが修正できないルールでも直すことが可能だという。
「最初に設定する項目は少なく、あとは自動でやってくれるので導入も速い。約2000件のエラーの2割くらいは、このツールが自動的にフォーマットしてくれました」
次に、Prettierでも直せなかったルールをいったん全て無効にした。その上で、KAIZENアワーやその他の開発のついでに修正する。作業を1時間ごとに区切って、コツコツと直していくのだ。
「無効にした中から、修正したいルールを有効にしてESLintを実行し、エラーになったら直すというサイクルを、エラーがなくなるまで繰り返します。その過程で、機械的に直せそうな部分を見つけた場合は、『JSCodeshift』を利用します」
JSCodeshiftはFacebook製のリファクタリングツールキットで、変換処理をJavaScriptで記述し、機械的にリファクタリングすることが可能だ。こうして手作業と自動処理ツールを併用しながら、根気よく作業を進めていく。
穴井氏はセッションの後半、さらに詳しいツールの利用法や改善におけるアプローチなどを、具体的なコードをふんだんに引用しながら紹介していった。
問題の解決にとどまらない成長の場として、今後も継続を目指す
セッションの結びとして穴井氏は、KAIZENアワーを通じたこれまでの改善の取り組みを振り返り、「楽しかった」と話した。担当案件の進捗が悪く、今週は何もできなかったと感じているときも、自分の関心のあることをアウトプットして、週末にすっきりとした気持ちで帰宅できる環境は貴重だという。
また「改善」というと、「技術負債の解消=マイナスをゼロに転じるためのリカバリー的な活動」と思われがちだが、納期の都合などで一度そのままにした問題に改めて向き合い解決することで、次に似た問題が出てきた場合でもすぐに対応できるようになる。
「これは自分たちにとっての成長だと思っています。つまりKAIZENアワーは、問題の解決だけでなく成長の場としても機能しているということです。今後も継続し、リッチラボの開発組織をより強くしていけたらと願っています」
穴井氏は抱負を語り、セッションを締めくくった。
お問い合わせ
Yahoo! JAPAN