mk2

May 15, 2023

規約重視なフロントエンドフレームワークにはまっている

元: https://lycaon.hatenablog.com/entry/2020/11/09/011927

-----

以下日曜の夜に書いたポエムです。

最近、Ember.jsという Rails 的なフロントエンドフレームワークにはまっている。(Rails 的、ということは設定より規約が重視され、アプリケーションの構造が決められたものになる、ということである)

かなり前から存在しているフレームワークで、英語版 Wikipedia の Ember.js の記事によると、2011 年の暮れに最初のバージョンがリリースされたようだ。

さらに同じ記事の歴史の項目を見てみると、

History In December 2011, the SproutCore 2.0 framework was renamed to Ember.js, to reduce confusion between the application framework and the widget library of SproutCore 1.0.[59][60] The framework was created by Yehuda Katz, a member of the jQuery, Ruby on Rails and SproutCore core teams. Like many of Katz's other projects, it advocates convention over configuration.

とあり、SproutCore という前身があってそれが Ember.js にリネームされたのだという。さらに豆知識で、その SproutCore というのは Apple も開発にかかわっていたようだ。

Apple は今も Ember.js を利用しているようで、Apple Music のブラウザ版は Ember.js で作られている。

あと有名どころとしては、NASAのトップページも Ember.js である。まぁアメリカ/ヨーロッパ圏では色んなところで使われているようだ。

日本で流行っていない
アメリカ/ヨーロッパ圏はそこそこ使われていそうな Ember.js であるが、私が住む日本ではほぼ聞かない。Qiita の Ember.js タグも、最近の私の投稿を除けば、2018 年が最後である。2 年ほど記事が投稿されていなかったということになる。

なぜこれほど流行らなかったのだろうか?

実を言うと弊社が提供しているidobataというサービスでは Ember.js を使っている。だから全く使われていない、ということではない、と思う。ただあまり盛り上がることなく React/Vue が開発者をかっさらっていった、ということなのだろう。理由になっていないような気がするが、ウェブ技術は水物であり流行ったものが基本的には勝ちである。

ではなぜ今更そんな流行らなそうなフレームワークに興味を持ってしまったのか?

それは私がもっとフロントエンドフレームワークの開発者生産性の部分に焦点を当てたいと思ったからである。

今仕事では ReactNative/React をずっと触っているが、なんというか生産性が悪い。確かにエコシステムは巨大だし情報も腐るほど広がっている。ただ、新規(初学者)の人やフロントエンドフレームワークにそれほど熱意がない人が入ってきたときに説明が面倒くさいのである。React は View しか面倒を見ないので、当然 Redux/React-Router-Dom などなど色んなライブラリを突っ込んで肥やしていく。それぞれにドキュメントがあり、こういうやり方でやれば良いよね、という思想がある。

それを全部見てもらうというのは当然不可能なので、こちらがかいつまんで説明する。もしくはコードを見様見まねでコピペして使ってもらう。

これで良いんだっけ?と思ってしまったのだ。

よくカスタマイズ出来るということはアプリケーションごとに最適なものを探そうとしてしまう。もちろん Next.js などを使えば少し規約が入ると思うので、カスタマイズの幅も狭まるだろう。が、そもそも SSR/SSG なんて必要としてない案件も多い。そんな CDN にファイルを置いて爆速でやる必要がない案件では当然 create-react-app でアプリを作ってしまうわけだがそうするとカスタマイズしないといけなくなる。(ちなみに create-react-app すら使わずに Parcel でやってしまったこともあります、テヘペロ)

ほえええ

俺が思う最強の React アプリの構造を作ったとして、それを誰かにメンテさせるのか。長期的にアプリをメンテしていく状況で、Class/Hook が混在し、テストは Enzyme/React-Testing-Library が混じり合った混とんを誰かに任せるのか。(それはちゃんと統一しないのが悪い)

ほえええ

俺たちはどれだけ学び、人に学ばせれば満足するのだ。(ウェブエンジニアは学ぶことを忘れたら死ぬかもしれない)

ほえええ

というわけで、Ember.js ならオールインワンで楽チンだなと思ったわけです。ただ多分これから先も日本で流行ることはないでしょう。でも好きなんだ、この ember コマンドの使い勝手が、アプリケーションの規約が、Handlebars というテンプレートシステムの柔軟さの塩梅が(Angular のテンプレートは複雑すぎて諦めた)、Octane コンポーネントの書き味が、日本語の訳を PR 出しただけで Contributors に入れて紹介してくれるコミュニティのスモールさが、そしてTomster と Zoey という謎ハムスターたちが。

About mk2

Web Technology Engineer in Japan

About: mk2.red