設計思想

2018-06-03 15:00:00

Webシステムを作成するに当たって、フレームワークの有名どころを二点挙げます。


CakePHP
Ruby on Rails

車輪の再発明を旨とする私はどちらも使う気になれません。
そもそ私が理想とするモノと設計思想が違いすぎていて、
使いたくても使えないのです。

そもそも私がWebシステムを作る時、サーバの役割はデータ管理です。
ブラウザへの出力結果は管理させません。
見た目の部分に関しては、全てクライアントに丸投げします。

このサイトをソース表示すると分かると思うのですが、
<body>の中は空っぽです。
全てをJavaScriptで生成するからです。 

F12を押してブラウザの開発者コンソールを出すと確認できますが、
画像などのバイナリを除けば、その後のサーバとのやりとりはJson形式のデータのみです。

Webシステムの構築において、MVCモデルという言葉が出てきます。
M モデル(データを取り扱う部分)
V ビュー(表示部分)
C コントローラ(ユーザの入力や操作部分)

一般的なシステムだとCはJavaScriptが担当します。
ところがVは8割方サーバ側で出力し、補助的な部分のみJavaScriptという構成です。
これはユーザの体験を大きく損なっています。

ユーザ入力を担当するCと、ユーザに見せる部分を担当するVが離れた階層にいると、
レスポンスの遅延や、ページ遷移などによる作業の中断が起こります。
ネイティブアプリだったら絶対にやらないような構造が、
Webシステムというだけで、未だこの時代にまかり通っているのです。

ということで、私が組むWebシステムにはページ遷移が存在しません。
唯一例外があるとすると、OAuthのような外部認証サービスを利用する時ぐらいです。
GoogleとかMicrosoftのサービスを使う時に、さんざん抜け道を探しましたが、
残念ながら無理でした。

よくよく考えてみると、昔から同じようなことをしています。
初期にはアセンブラでFM音源ドライバやMIDIプレイヤーを作ったり、
Direct3DやOpenGL用の3DライブラリをSIMD演算部分まで自作して書いたり、
3DSMax用のモデルデータのエクスポータを作ったり。

問題があるとすると、それが金儲けに結びついていないことぐらいです。