具体的な話をしましょう。
僕の仕事の内容は基本的にはWebショップのブラッシュアップです。ですが、シンプルに「ショッピングカートをカスタマイズして商品情報をアップデートすればOK」みたいなことではなくて、より業務システムと結合した形での管理システムです。しかも自社開発。以前在籍していたのは5年前、それから新システムへの移行があり、その後のバグおよび仕様不足多発による会社倒産寸前の時期があり、そのシステムを開発した人間と手を切って前任者が片っ端から修正した時期があり、今なんとかシステムとして大きな穴が塞がって安定してきたと言ったところです。
社長としてはまだまだ「本来要求されていたけど新システムの開発が遅れて泣く泣く諦めざるを得なかった仕様」があり、新システムリリースから3年経った今も言わばβ版。そんな仕様の一つ「スマートフォン対応」をようやく今、取り組んでいるわけです。3年前でもスマホ対応は喫緊の課題だっただろと思うんですけど、フロントエンドを設計した人間がそれを切ったんで仕方ない。
現行システムのフロントエンドはこんな感じで設計されていますが、
- PHP+Smarty
- Bootstrap3(限定的)
- jQuery
スマホ対応完了後はこうなる予定。
- Nuxt.js
- Bootstrap4(BootstrapVue)
確かにコードとしてスマートになるし、こうなったらベストだよねとは思うけれど、今現在フレームワークのViewModelに依存している機能をVue.jsに移行させつつ、サイトデザインも今と全く違う形に作り直して、全ページそれに対応させて……ってもうね、ほぼ「フロントエンドのリニューアル」と言っても差し支えない感じ。変える部分が多すぎる。
しかも音楽系オンラインショップとして必須である「試聴プレイヤー」のあり方を変更しスマホ準拠にするために(フルスクラッチで書くんだって!!)、SPAが採用される予定になっています。わかるけど、そうなってくるとほんとに全部Vueで処理しなくてはいけなくてごまかしが利かないんですよね。せめてまず、外装をBootstrap4でデザインし直して見た目だけでもスマホ対応、してからの機能の移植みたいなプロセスにしてくれたら、確かに中途半端ではあるけどでもより短い時間で成果は出せたはず。どうしてここまで風呂敷広げた……
加えて、開発環境にもいろいろと新しいことを入れてます。
今まで使ってなかったけど使ってることと言えば、
- S3環境での動作確認(stagingよりもっと前、モック程度)
- CircleCIによる同期
- yarn
その他細かいことをいろいろと。興味を引かれた新しめの技術を全部突っ込んでいった感じ。そしてこれらの決定事項を残したまま、Aさんは退職していったのでした……
残されたのは検討事項の山。Aさんが「いける」と踏んだけどいざ実装してみたらゴールまでの間にでかい山があって相当迂回しないといけないみたいなこともちらほらあり、いやあ大変っすよ。Nuxt.jsでの状態管理、というかログイン情報をページ遷移しても共有するってのが上手く出来なくてさあ。何が悪いのよ。昔から僕は「泥縄エンジニア」ですけど、いやあ今回もひどい。触ったこともないJavaプロダクトのリバースエンジニアリングを強要された時や、文法一つ知らないAccessベースの基幹システムをPHPに移植しろっていわれた時の次の次くらいにひどい。その頃に比べればプレッシャーが薄いから精神的負荷は全然軽いけれども。めんどくせー
エンジニアとして大した給料は出ないけど、コーディングや簡単なプログラミングしてくれたらいいからっていうんで来たんだけど、いつの間にかガチで開発してるじゃねーか笑
どうしてこうなった。
まとめ:最新技術の導入はほどほどに
エンジニアとしては便利で安全で開発しやすくメンテナンスしやすい、より良い方法があるのであれば、多少のコストを払ってでも採用すべきだとは思いますよ。それは正論であろうとは思います。でも経済的合理性を考えると、何でもかんでも取っ替えれば良いってもんでもないわけでね……最終的な絵図として全取っ替えした形がベストだったとしても、そこまで段階を踏んで移行する、その移行の方法を設計することもこういう場面に置いては大事だろうと思うわけですよ。マジで。もちろん、段階的に移行出来るためにはある程度疎結合でなくてはいけないわけで、そう考えるとニワトリと卵の話にもなるわけですけど。今やっておけば将来楽になる……のか?
というわけで最近の気晴らしは、BootstrapVueでのコーディングです。よろしくお願いします。