僕のフロントエンド技術に対するスタンス | note

文句言いたいわけじゃなくて、補足というか。多分、そんなに深くないところの人をターゲットに書いただろうからしょうがないとも思う。だから深いところをサワサワしてみる。

ってのと、「TypeScript対応に時間がかかりすぎているため、スタート地点に立つことが厳しい」ってのを読んで、Vueで開発してないんやなと思ったから書いとく。というかそれを書きたかった。あとはおまけ。

◆Vueの補足

メリットについて語っておく。というかデメリットらしいデメリットが見当たらないのが強みなんだけども。

まず、エコシステムの結託具合。Reactは企業(Facebook)が主体であるというのにメリット/デメリットがあると思わんかね。

ユーザーベースで言えばReactのほうが強いんだが、Vueは「探して見つけて選んだ人」が多勢を占める印象だ。というのも、「Reactにしときゃ間違いねぇだろ」という甘えを許さなかったタイプの人が基本的に集まるわけだから。

Vueはコミュニティもちょっと野生的っつーか草の根的っつーかバザール的で、自主性が強い。世話焼きが多い。デメリットにもなりうるが、Vueの開発してるEvan兄貴が賢いから安心してみていられる。特にclass baseの記法をRFCで弾いたのは痺れたね。需要に迎合せず、正しい判断力を持っている。が、大量にいるclass base民を見捨てることもせずにプラグイン開発もちゃんと進める。

本家で支えてるプラグインが存在しているのも良いな。なんか作るときにいちいち迷わずに済むし、品質高い。

開発の現場に対する寄り添い方も丁寧。後方互換性に対して潔癖だし、IEを捨てないというウェットなとこも持ち合わせてるな。Reactは先発である以上メジャーバージョンをガシガシ上げざるを得ないんだが、Vueは後出しジャンケンであるからイイトコ取りしてて旨い。ズルいっちゃズルいが。

Reactのイイとこを吸い上げて駄目だったことをオミットして、狡猾かつ貪欲に安定性と機能追加のバランスを取ってると思うぜ。

あと、TypeScript弱いって言ってもVue 3.0で開発ベースすらTypeScriptになるわけだし、Vue CLI使えばクッソお手軽にTypeScriptな開発環境構築やらなにやら(重要)の面倒も見てくれる。
Reactは先に進んでいたが故にFlowで作られてしまったわけだが、そこ(FlowType)をまたスキップしてTypeScriptを選択できたのもそうだろう。あと、O.oをしっかりスルーしてからProxyを選択できたのも。3っていうメジャーバージョンアップデートにここまで盛り込んだのも凄い。

あと、WebComponentsにより近いのはVueだよね。VueのCLIから出力できちまうわけだし。

そのうえで、Reactのほうが漸進性で優位に立つ。Prepackとかありがたい。Romeも(いまんとこ関わりたくないけど)楽しげ。しかしRomeだのBlenderだの名前を既存のものにかぶせてくるのは何なんだろうな。GoogleもTsunamiで荒れてたし。Hadoopみたいに被りようのない名前でいいじゃん。

◆UIフレームワーク

Reactのハナシばっかになっちゃうから自重したのかもしれんが、今後どういうUIフレームワークが来るかってのは話してあげたほうが良かったと思う。

コンポーネント集なのかStyle集なのか、BootstrapなのかMaterial Design系なのかTailwindなのかstyled-componentsなのかEmotionなのか。どう折り合いをつけていくのか。もはやWebComponentsでUIフレームワークが作られてしまうのか。それってどうやって依存関係を解決するのだ?

ってかそもそもプレーンCSSなのかSCSSなのかLessなのかStylusなのか。それにしたってBEMなのかCSS Modulesなのか。

追記:CSSの見通しのよさでいうとReactより断然Vueのほうが良くないか?って思い直した。scope基本でみんな幸せだし、いざってときはstyle moduleあるし。deepも使えるし。コンポーネントの設計が狂ってなかったら基本scopeなcssで全部済む。親子衝突はありうるけども。
そもそもCSSをゴリゴリ書くのがイケてないんだがな。っていうかShadow DOMならお漏らしとかないしはやくWebComponentsにビルドされる世界こないかな。

◆Babel

Babel

散々お世話になっておいて見向きもしないのは可愛そうだと思いました。酸いも甘いも噛み分けてきたじゃないですか。まぁ寿命が見えてしまっているのは否めないが。

ってかcore-jsのzloirock兄貴は大丈夫だったんだろうか。と思ったらリリースもあるね。よかったね。

core-jsがメンテされていない理由→プロジェクトは継続する

◆Wasm

WebAssembly

触れて無いのはなんで?これは解せない。

RustやらC#でアプリ書く世界来ると思うんだけども。Wasmの実行環境がポータブル(ブラウザと疎結合)になるのも、やばい。PWAと組合わさっちゃったらあぁやっばぁい///

NW.jsはいいとしてElectronやらMeteorがどう出るかも注目ですよね。悪くすると即死する。

◆PWA

PWA

これも解せない。ネイティブアプリというものをどう殺そうか蠢いているステキな技術なのに。

◆PNPM

pnpm

npmでまぁ間違いないかも知れないんだが、yarnに触れておいてpnpmに触れないのはどうだろ。おれはpnpmを続けるよ

◆通信

HTTPについて触れてない。QUICとかのUDPでつながるやつ。キャッシュ戦略とかっていうか開発全般に割と掛かってくることだと思う。

あと、そもそもRESTでOpenAPIなのか、GraphQLなのか。もはやgRPCなのか!???!?!?!!!!?!?まぁOpenAPIなんだろうが、そのへんのインターフェース記述(IDL)界隈。(ただ、OpenAPIもイケてないとこ多い。雑。)

◆Pika

Pika

denoとかsnowpackに触れていたけども、Pikaについても色々話さなきゃいけないことあるんでないかい。

◆サイトのでっち上げ技術

性的静的サイトジェネレータ(SSG)のはなし。WordPressやめよう。いやこのサイトも(2020/8現在)WordPressだけど。あとそれでいったらJITを引っさげたPHP 8.0も来ますね。Ruby?Pyhon?知らんな。

SSGの向きで言えばNetlifyやらGitHub Pagesの話も必要でしょう。

あとバックエンドをヘッドレスCMSにしてみるとか。あとfirebaseとかfastlyの話とか。Azure…うむ。Static Web AppsがまだPreviewだからね。そいで、なにがしかをちゃんと作るんならAzureでもAWSでもGCPでも。

Azure民としてはStatic Web Appsを推しておく。簡単無料で分かりやすいし、このハンズオンを遊んでみてもいいのでは。でもGatsbyなぁ。GraphQLくんのこと、個人的にわりと死ねって思ってる。

このブログを静的サイトに置き換えるのは、期を見計らってる感じ。GoogleAnalyticsを使わないクリーンなアクセス解析とか、あとコメントの仕組み。プレビュー機能も。あとsitemapとかRSSフィード(使ってくれてる人いる?)とかぼんやりしていることがどう固まるのかを眺めている。ギリギリのとこで決定版(俺の趣味に刺さるか否か)がないんだなこれが。ただ、これからブログをホストしてぇとかホームページ作るゾって香具師(死語)がWordPress使うのは筋悪いよ。クッソたるいよ。AMPとか不可能に近…あ、できるの?そう…(無関心)

◆認証

FIDO2っつーかWebAuthn。うんこ漏らすほど重要。

◆TLS

Let’s EncryptっつーかACMEプロトコルっつーかバックエンドの話になってきたな。

◆DoH

D’oh!

いや、DNS over HTTPS。うん。だからバックエンドの話になってるって。

◆画像とか動画とか

コンテンツをどうするか。

H.265AV1HLSなのかMPEG-DASHなのか。画像で言えばWebPとかAVIFとかJPEG系とかSVG2とか。

◆結論

思いついたのがそんな感じ。なんか思い出したら先頭に追記する。

取り敢えずお前らInfoQPublickeymizchi、見よう!