2022年06月08日

SSRアプリではMVCが主流で、SPAではMVVMが主流、だとしてそれは何故だろうか?

先ず初めに→ 私はSSRアプリ作成経験はほとんど無いです。ど素人です。
その上で感想と言うか、思ったことのメモです。

※タイトル内の「SSRアプリでは〜」という表現は、「MPAでのWebアプリでは〜」(MPA=Multi Page Application)とか「従来のサーバーサイドでのWebアプリケーションでは〜」と呼称する方がたぶんが適切ですね。なぜなら「SSRは、SPAを実現するフレームワークにおいて一部をサーバー側に処理を移すためのオプション」と捉えるべきだから。もしくは「サーバーサイドでWeb画面を生成してブラウザに返します(ブラウザ側でWeb画面を変更したりしません、ページ遷移しない限りは)」という手法であって、Webアプリの種別を表現するものではないだろう。ただ、語感的に私が「MAPアプリ」と言うより「SSRアプリ」と言った方がピンと来たので、そのままこの表現で残す(素人なので、一般的ではない可能性大)。


閑話休題。
Webアプリ(Webブラウザアプリ)での話だけど、
サーバーアプリだとMVCが主流で、クライアントアプリだとMVVMが主流のように感じている。「そこの差は何故だろう?」と言うふとした疑問に対して、ふと「理由は、こういうことか?」を思えたのでメモ。
間違っていたらごめんなさい。

前提として、私は以下のように考えている。

  • 「UIの実装」ってのは基本的に「データのUIへのマッパー」であるのが望ましい

  • 「データをどう処理するか?」はUIとは全く別に考えるのが良い



それを踏まえるとあるべき姿は「MVVM=Model , View ViewModel」ではないか?と思うのだ。
Viewで「データのUI表現(Mappingの仕方)」を担当して、Modelが「データ処理」を独立して扱う。そして「UI側のアクションとデータへの反映とそれに伴うUIの変化」を担当するVMはFrameworkにお任せして、実装者は触れたくない。そういう分担が分かり易いと思うのだ。

※ここでModelはCRUDを含むが、SPAの場合はその部分だけサーバー側へWeb APIで(多くの場合はREST APIで)渡して処理する、と捉えている。(したがって、Modelはクライアント側と、サーバー側にまたがっての実装、と言える)。

さて、改めて。
SPA(=Single Page App)では、MVVMが主流だと思う。
しかし、SSRではMVVMよりMVC(=Model, View, Controller)が主流に感じている。

この違いは、SPAがViewとVMを同じ言語というか動作プラットフォームであるJavaScriptで実装するからこそなのかな?、と思った。
SSRの場合、Viewの発火をVMが監視する手段、Model変更をリアルタイムでView反映する手段が、たぶん容易ではない。なぜならSSRの場合は、Viewとそれ以外の部分で言語/動作PFが異なるから(ViewはHTMLとJavaScriptであり、それ以外はJavaとかPython、もしくはRubyなど)。
なのでブラウザ側で「Viewが自身の発火をControllerに伝える」ことを起点として、そこに境界をおいて、サーバーサイドのControllerがViewとModelに対して処理を行うMVCが主流となる、、、のかな?(Controllerに制御が移ったときブラウザはサーバーからの応答待ちであって、その応答として返す画面として次のView反映され、その応答が境界となる)、
と思えてきた。

まぁ歴史的には「UIをリッチにしたいんだけど、MVCだと複雑になっていく。MVVMという概念に移行したんだが、SSRだと厳しい。・・・CSR(=Client Side Rendering)だったらMVVMを実現できるんでは?」としてSPAが生まれた、、、とかかも知らん。

さて、実際のところはどうなんだろう? 教えて、詳しい人?
(前提の「主流」からして誤っている可能性はあるw)


※なお、SSR=Server Side Renderingであって、Super Special Rareの意図では無いですw
※あと「マッパー」は「Mapper」「Mappingをするモノ」の意図です。・・・何故かFGOのローランが脳裏に浮かぶけど、だいたい6.5部のせいだ!

posted by ほしまど at 01:11| Comment(0) | メモ書き

2020年02月21日

Windows10マシンのCドライブの容量空け

概要

Windows10マシンのCドライブの容量不足に陥って、不要ファイルを消した話。 「私の環境では、xxxあたりを削除することで空き容量を確保できた」 ってだけなので、汎用性のほどは不明だが、誰かの参考に成れば幸い、と思って記す。

発端

OSさんが「Cドライブの残り空き容量が300MB切ったよ」と言ってきた。(正確な値は覚えてない)

んなバカな?と見に行ったら、確かに空きがほとんどなかった。。。

やったこと

以下では、Cドライブに対して「システムのクリーンアップ」を実施済みとする。Windowsアップデート関連のシステムファイルもクリーンアップ済みとする。

ChromeとFireFoxのキャッシュクリア

これで、1.2GBくらい、空き容量が増えた。

主な削減フォルダは C:\Users 配下。

まだ空き足りないので、フォルダが容量食ってるのか?をリストアップ

フリーソフトの「DiskInfo」を用いて、Cドライブのどのフォルダが容量を食っているのか?を調査( https://forest.watch.impress.co.jp/library/software/diskinfo/ )。

  • Windows
    • 19GB
    • まぁ、これは仕方ない。
  • Users
    • 14GB
    • 減らすとしたら、ここか?
  • Program Files (x86)
    • 5GB まぁ、これは仕方ない。
  • w32tex
    • 4GB
    • あー、これなぁ。。。。

Usersフォルダで容量が大きいやつは?

  • C:\Users\ユーザー名\AppData が13GBで主因
    • AppData\Local が10GBで主因
      • AppData\Local\Packages が6GB主因
        • Packages\CanonicalGroupLimited.Ubuntu16.04onWindows(略) 4.2GBで主因
        • あー、WSLか。これは仕方ない罠
      • AppData\Local\SquirrelTemp 1.5GB
        • これ、消せない?(結論としては見送り)
    • AppData\Roaming が2GB
      • AppData\Roaming\Jane\Janetter2 が1.5GB犯人か?

SquirrelTempフォルダは、検討の結果「見送り」(必要になってから消す)とする

あまり情報が無いが、「窓アプリで、最近使われ始めたアップデート時に利用されるフレームワークSquirrelの一時フォルダ」っぽい。「clean up "SquirrelTemp"」でGoogle検索すると、少し情報が出る。

Squirrel (https://github.com/Squirrel/Squirrel.Windows) is a framework used for installing/updating windows apps. For example - Atom editor is using it.

ref. https://www.reddit.com/r/Windows10/comments/8bgsn1/what_is_squirreltemp/

開発リポジトリにて「(本来消えるべきTempだが、インスト失敗時などに残るものなので)消しても問題ないよ。残してゴメン」って回答があった。

This folder cleans itself up, but if you had a lot of failed installations / upgrades that might not happen. There are no repercussions to deleting this folder, sorry about the disk space

ref. https://github.com/Squirrel/Squirrel.Windows/issues/1195

Janeフォルダは、データベースを削除(して削減設定後に再構築)とする

AppData\Roaming\Jane\Janetter2\sqlite が1.5GB弱あって、ここが犯人。 このフォルダは、どうもツイート保存用。消しても問題なさ気。

listtweet,mention,message,search,tweet フォルダを手動で削除しても構わない ref. https://www.mazn.net/blog/2014/07/06/1365.html

Janetterを使うことは最近あまり無くなったのでJanetterごと削除しようかな、とも思わなくはないのだが、、、再インストでユーザー新規登録が「出来ない」状況を顧みるに、今すぐアンインストールは早計かな。

先ずは、このデータベースを削除する。

w32tex はLaTex関連。しばらく使ってないから、、、消すこととする

どうしてもLaTexはサイズが大きくならざるを得ない、ようだ。 ここ1年くらいLaTex単独のコンパイルはしてない。LaTexを全く使っていないわけでは無く、Re:VIEWコンパイルの過程で使ってはいるのだが、そちらはDocker経由でコンパイルしている。LaTexを直接使うことは今後は無さ気。

必要になったら、またインストールし直すことにしましょうか。幸い、過去と異なり今は、下記のインストーラーを使えば容易に(DL時間はかかるが)再導入可能となっているので。

https://www.ms.u-tokyo.ac.jp/~abenori/soft/abtexinst.html https://texwiki.texjp.org/?W32TeX

フルインストールで 2.8 GiB 程度の容量が必要です. ↑たぶん、これはだいぶ前の話。今はもっと増えて、おそらく4GBくらいになっている、のだろう。

(※自己メモ:Docker経由での利用がメインなので、もうないとは思うが、ピュアなRe:VIEWをインストールする必要が出たときは、こちらの記事に従って、実施する→ https://qiita.com/implicit_none/items/398c6e0bbedc8b160621

LaTex関連のアンインストール手順

  1. GPL Ghostscript
    • コンパネからアンインストール
  2. GSview
    • コンパネからアンインストール
  3. dviout for Windows
    • ツールを立ち上げて「Option>uninstall」からアンインストール
  4. W32Tex
    • C:\w32tex フォルダを削除

ref. https://did2memo.net/2012/04/27/tex-uninstall/

結果

9GBくらい空いた。 今回に限定した操作(使わなくなったアプリの削除、データベース削減)なので、汎用性はないが、まぁこういう事例メモが役に立つこともあるだろうから、記す。

以上ー。

posted by ほしまど at 21:22| Comment(3) | メモ書き

2019年10月24日

結局、ヘッドフォンは先代と同じブランドに行き着いた件

2年前に買った Bluetooth イヤホンが壊れたので、代わりを調達してきた。

ネットである程度調べてから向かった割に、店頭でだいぶ悩んだ。結局、原点回帰で「QCY-M1C」を選んだ。先代とおなじQCYブランド。判断基準がブレてぐるぐる彷徨っている時間が勿体なかったので、次回に備えて申し送り事項をメモしておく。

* 5000円未満の格安 Bluetooth イヤホン選ぶ時は、aptX コーデック対応選ぶ。

これが重要。選択肢がだいぶ絞り込まれるので、悩まなくて済むはずだ。格安クラスの Bluetooth ヘッドフォンのコーデックは大半がSBC。しかし、SBCは再生に遅延が発生する。事前にWebで調べた際にあちこち?のサイトでお勧めされてた格安「TT-BH026」は、SBCだった。。。実際に店頭で聞いてみたところ、遅延が耳について私にはダメ(高望みw


参考サイト:
SBCとaptx - http://qa.elecom.co.jp/sp/faq_detail.html?id=4702


posted by ほしまど at 08:20| Comment(0) | TrackBack(0) | メモ書き