グレープシティ ECHO Tokyo 2019に行ってきた

SPA開発を知りたいだけの人生だった

Microsoft 井上章さんのセッションも含め、Angular,Reactの事例紹介を聞きに行ってまいりました。 grapecity-dev-tools.connpass.com

レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?

Microsoft井上章さんのセッション。 レガシーの定義は人それぞれだと思います。

Technologyの古さ(言語、Framework等)や、運用の古さ、アーキテクチャ構造の古さ等々があげられますが、今回はモノリスなアプリケーションについてと、運用面の辛みというカットで説明をされていました。

モノリスだと、デプロイ辛い。

モノリスでは、

  • デプロイ辛い。
  • 言語、Frameworkのバージョンアップ辛い。
  • Container化しにくい。

っていう、保守開発&運用に問題を抱えます。

他にもレガシーあるあるだと

  • テストコードがない。
  • CI / CDがない。

とかですかね。よくあることだし、この辺は後半にレガシー脱却のためのチャレンジとして話題に出ていました。うんうんというお気持ち。

井上章さんのセッションでは、UXとしてのSPAFrameworkにも焦点を当てていましたが、DXとしてのSPAFrameworkにも十分焦点が当たっていたように思います。

SPAは、オーバーエンジニアリングになりがちな領域なので、UXだけじゃなく、DXの面、とりわけ、チームのスケールにも焦点が当たってるのは非常に良いことですね。

Angularは大規模開発向け

Angularは日本国内だと大規模向けというのは改めて聞くとなるほどというお気持ち。

確かに、他の2つの代表的なSPAFrameworkに比べて重厚なので、大規模じゃないとコストが合わない感じはします。

個人的にはReactを選定することが多いものの、SPAFrameworkは本当に適材適所で使い分けという印象。

VSCodeでもVS2019と同じReactプロジェクトテンプレート利用可能

Create React Appを自動で叩いてくれるTemplateが利用可能。 この辺は、WebPack力がなくてもReact First Stepを踏み出せるのは良いことですね。

(本格的に開発するときはどのみちWebPack力必要だし、JavaScript力も必要なんですけど。)

Blazorデモ

WASM版のBlazorについては2020年5月予定。(この辺はMicrosoft Buildの兼ね合いっぽい。)

すべてC#で完結できるというのは、JavaScriptが苦手な子にもこの辺の開発を任せられるので、管理画面等のそれほどパフォーマンスを要求されない場面ではよいのかもなーというお気持ち。

とはいえ、来年の5月まではお預けなので、しばらくはSPAFrameworkはReact採用に舵を切るのが現実的な印象でした。

wasmのほうは、サンドボックスで駆動するのが最大のメリットだからブラウザの外でも使えるようにしようっていうのがMozillaさんとかFastlyさんとかで先日お話がありましたが、Blazorでもエッジコンピューティング等で使えるようになっていくのでしょうか?

C#使ってIoT出来るようになるのか、それとも、エッジコンピューティングはAzureにお任せなのか。

良くも悪くもドラクエの勇者的な言語なので、出来てほしい感はありつつ、ちょっとキメラすぎるかもなあという気持ちもありつつ。(個人的にはC#のなんでもできる感は割と好きなんですよね。)

マイクロサービスアーキテクチャの文脈でのgRPC

この辺は、セッションの後に井上章さんに

マイクロサービスアーキテクチャの文脈だと、まだまだREST優勢なんだけど、.NET Core 3.0でgRPCがサポートされた。 gRPC For Webも存在しているが、Microsoftとして、gRPCはServer間通信を主目的としているのか?それともclientからのRequestもgRPCの利用を想定しているのか?

という、なんともめんどくさいお話をさせて頂いたのですが、嫌な顔ひとつせずお話を聞かせて頂いた井上章さんには感謝しかありません。

お話を聞いていて、改めて理解したのは、

  • やはりまだまだREST優勢

  • gRPCはServer間通信での利用が主用途(MSが公開しているSampleCodeもServer間通信がメイン)で、clientのほうは事例ベースでも、ゲーム等のApplication等がほとんどで、純粋なWebアプリでの事例があまり出てきていない

ということでした。

HTTP 2は1回のRequest本数めっちゃ多いと1.1より遅くなるかもっていう話がちょうど職場で出ていたタイミングだったので、この辺、用途によりけりで武器にも弱点にもなるのかな?といったお気持ち。

先日LINE LIVEさんではgRPC For Webを利用しているという事例を聞いてきましたが、LINE LIVEさんだと、トラフィックの物量はめちゃ多いですが、アプリからの大量の並列Requestを一つに束ねるとかではないので、用途としてはマッチしているので問題にはならない可能性があるのかなーとふと思いました。

この辺は予測よりも計測が超大事なので後日改めて計測が必要ですね。

Angular関連

AngularJS、2021年7月EOS

https://blog.angular.io/stable-angularjs-and-long-term-support-7e077635ee9c

JBSさんのセッションで超大事な連絡をしていただいたの本当に好感度高いです。

また、AngularがフルスタックのSPAFramework(個人的にはClientSide MVC Frameworkという印象がすごい強い)だよ!っていう話が強調されていたのもよかったです。

重厚さは特徴なので、知らずに使って大変じゃん!ってならないように啓蒙していくのはとても大事。

React関連

プロテック 疋田さんのセッション Reactの選定理由からReactの基礎の説明になだれ込みましたが、このReactの説明が非常にお上手でした。 初学者は是非一度聞いたほうがいいという内容。

そして、Reactは大規模だとやっぱりまだまだRedux使うんだなあという感想。

React Hooksがきて、Redux使わなくてもStateは関数チェインの時に伝播させていくノリだと思ってたんですが、やっぱりHooksでもReducer使うし、チーム開発だとそうじゃなきゃ状態管理に辛みがあるっていうのがすごい伝わってきてよかったです。

全体通して感じたこと

チーム戦だとコード解析必須!静的型付最高!っていうのがすごい伝わってきました。

実際の開発だと、SPAと一緒にTypeScript使いたい欲が強いというのはチーム戦が主流な現代開発ならではだなーといったお気持ち。

UX目的にせよDX目的にせよ、オーバーエンジニアリングにならないよう、適材適所に投入していきたいところです。(小並感)