vue.js
Vue.js #4Day 20

Vue.js日本語サイトを支える仕組み

このエントリはVue.js #4 Advent Calendar 2017の20日目です。

:point_up: はじめに

Vue.js の良いところを聞くと、日本語サイト:flag_jp:が充実しているといった点がよく挙げられます。
私も2017年2月からVue.js 日本語サイトのメンテナに加わり1、継続的にドキュメントの翻訳などをしてきたので、嬉しく感じます:blush:

今エントリでは自分がメンテナになってから、
フロー改善について取り組んできたことを紹介していきます:sparkles:

:bulb: 気付き

  • lintのエラーがちらほらあるな?
  • これ本当に人間がやらなきゃいけない更新?

:eyes: lintのエラーがちらほらあるな?

npm run lintすることで、lintエラー1に引っかからないか確認できるのですが、
それが強制されておらず、ユーザー任せとなってしまっていたので、mergeのタイミングでlintエラーに気付くということがありました。

そのため、

  • precommitでlintを強制
  • pull request作成時にtopicブランチでもCircle CIでlintを行う

ように改善しました。

:eyes: これ本当に人間がやらなきゃいけない更新?

本家の更新を見ていると、CSSのスタイル変更など翻訳とは関係ない更新も多くあることに気付きました。
こういった更新はcherry-pickして取り込んでいたのですが、このへんを自動化できないかな?と思うようになりました。

そこで、作ったのがche-tsumiです。2
https://github.com/re-fort/che-tsumi

che-tsumiでは、
vue-translation.png
1. 本家ドキュメントの更新を検知
2. 日本語サイトのGitHub repoにissueをたてる
3. cherry-pickしてみて、conflictが発生しないかチェック
4. conflictが発生しなければ、pushしてpull requestを作成する

といったようなことをやってくれます。
実際に投げられているissue/pull requestはこんな感じです。

Screen Shot 0029-12-19 at 2.02.32 PM.png

Screen Shot 0029-12-19 at 1.52.35 PM.png

che-tsumiを導入したことにより、conflictが発生しない更新は、
pull requestをマージするだけでよくなり、人間の負荷が軽減しました。

また、翻訳文をみていると、このドキュメントはどこまで最新の内容が反映されているんだろう?と思うことがありますが、
本家との差分はissueで確認できる3ため、より見る方にとって親切になったと思いますし、より貢献しやすくなったかなーと思います!

所感

今年はVue.js サーバサイドレンダリングガイドelectron-vue4などの翻訳などもやっていたりしました。
しかし、翻訳がない状態から翻訳するのと、差分を定期的にメンテしていくのは、また別の熱意が必要だなーというのを強く感じました。

以上です:yum:


  1. スタイルガイドとして、JTF日本語標準スタイルガイドをカスタマイズしたものを使用しています 

  2. cherry-pickと茶摘みをかけています 

  3. この運用をしているのはVue.jsのドキュメントだけであり、vue-routerなどの周辺ツールは現状あてはまりません 

  4. ひとりでやったのでめちゃ大変だった