Seiichi Yonezawa — How creativity is helped by failure

Webpackerはまだ早いかもしれない

Rails 5.1から追加された機能として、webpackerがありますが、現在これを採用したサイトのデプロイに関してトラブルを抱えています。

鳴り物入りで登場したwebpackerですが、ruby畑に居すぎたせいで使い方がわからずにしばらく放置せざるを得なかったのですが、GoRailsのチュートリアル動画を見たおかげでLiveReload的な機能が使えるようになってJavaScriptの開発がますます便利になるかもしれないという期待のもと、私もようやく重い腰を上げ、採用してみました。

といっても、採用したとはいえ恥ずかしながらRailsがjQueryを採用している間は安泰だと思い込んでいたせいでまだReactやVue.jsを使ったことはなく、RailsがついにjQueryの依存を断ち切ったところでついに私もこの問題を真剣に取り扱わなければならないような局所を迎えているのかもしれません。そんな状況なのでまだまともにwebpackerへ移行できる準備も整っていないので、使い方は把握したけれど、いつでも使えるようにしておくことで(私の脳内会議で)合意しました。

そこで、従来のAssetPipelineとWebpackerがどちらも混在している状況で、Yarnはすんなり取り入れることに成功したのですが、昨日ステージング環境にデプロイしようとした時にcapistranoがエラーを放ちました。内容的にはたしかnodejsの4系のバージョンがUbuntuで提供してあるパッケージの状況よりも古いとかで失敗しました。なので、Nodejsのバージョンをひとまず上げることでなんとか解決するかと思いきや、しませんでした。

WebpackerのPrerequireでは必須とされているNode.jsのバージョンはなんと6系でした。ちょっと前まで0.11とかだった記憶があるのですが、Node.jsのリリースサイクルが固まったようで、現状のLTSでは既にメンテナンスフェーズに到達していてv6に移行するにはちょうどいい時期なのかなとも思いました。ただ、現行のサイト(といってもここくらいですが)はまだv4で運用しているので、それはそれで影響が(たぶん出ないでしょうけど)出そうでうかつにバージョンを上げられません。nvmも検討しようかと思いましたが、エラーが出てしまい、すぐにいい方法が見つからなかったので見送りました。

このブログでも現在バージョンの見送りはMarkdownパーサが原因でありますが、こうして段々サイトを運用するごとにひとつひとつ厄介ごとができて切り離していくことも増えていくのかなぁとも思いました。ある種そのためにもテストを書いているわけですが、現状はまだ時期的に採用を急ぐ必要もないかもしれません。

もちろん、ローカルでは今後バリバリに採用していく方針ですが、とはいえ現状ここまで周回遅れしているのにそこまで挫折できずにできるだろうかという不安もあります。まあ、チーム開発ではない分こういった決断は自分の意向のみで決められるのでその点は自由だし、もともとこういうのも最新のトレンドを常に追い続けていられるだけの体力があればいいんですけど、やっぱり人のやってることばっかり追っかけてても自分のプロダクトを作る時間はなくなってしまうわけですし、railsのコントリビューターになれるほど詳しくもありません。

そして、現状控えてるお披露目会に思わぬ形で足をすくわれてしまったので、安易にwebpackerを採用してしまった自分に反省しました。その意味をこめて、これからどうやって綺麗に取り除こうかなぁと思うわけですが、幸いyarnは別個の機能としてrails 5にあるのでそこまで悩むことはないと思うのですが、今後の方針的にも、ubuntu 17.10や18.04が来るまでどうやって運用していこうかなぁと考えてみたいと思います。