フューチャー技術ブログ

技育CAMPアカデミアで「ウェブ技術のトレンド」というタイトルで発表しました

6/1に、技育CAMPアカデミアというイベントで発表をさせていただきました。勉強会で、手っ取り早く学んで役立ててもらえるものはなんだろうか、ということでウェブアプリケーションの構造について説明してきました。参加者の多くの方々に好評でした。あまり今までは一度発表した内容の再演をすることはなかったのですが、こういうベーシックな基礎知識系は、今後もアップデートを加えつつ何度かやると良いのかも?と思っています。

最近は、フロントの仕組みが難しすぎるとか特に言われることも多いので、特にフロントエンドの構造がどうなっているのか、というイメージと、ただ、実装するものはそこまで代わりはないので、一度身につけたらフレームワークとかが変わってもすぐにキャッチアップできますよ、という感じの内容になっています。

斬新な新しい開発技術というものが登場したとしても、その技術を作って広めたい人というのは、たいてい既存の技術に使い方を近づけて作るものです。既存の知識を活かせる方がすばやく使い方を学んで作りたいものが作れるからです。斬新すぎるとユーザーがついてこない。僕はデスクトップアプリケーション開発をかれこれ15年ぐらいやっていました。ウェブのフロントエンドのフレームワークも巡り巡ってデスクトップアプリケーションと近い考え方で開発するような時代がやってきたおかげで、デスクトップ畑を歩んでいた僕にはすごく学びやすいと感じました。ReactとかAngularでクラス形式でコンポーネントを書いていた時代ですね。

その後、より関数型かつリアクティブに、という変化をReactが行い、Vue.jsもreactive()で追従し、Angularも(Solid.jsも)signal()というものを導入し、パラダイムが変わりつつありますが、今はそこまで大きな変化ではないかなー、というのが僕の意見です。ただ、このリアクティブというものが、今はコンポーネントの内部に閉じた状態でしかないのですが、コンポーネントを跨いで隅々まで普及すると面白くなりそうだなと思っているところで、これは別のエントリーでまた書こうと思っています。

質疑応答

いくつか質疑をいただきました。自分の回答はメモしていなかったので、当日の回答とは変わってしまっているかもしれないのですが、回答した内容はこんな感じです。

渋川さんのドキュメントの読み方みたいなのがあったらお聞きしたいです

本家が出しているドキュメントを読む、というのはやっています。今はお客さんと勉強会をしていて、React, Jest, Next.js, Recoil.jsのドキュメントを上から下までじっくり読むというのを最近では行いました。あとはチュートリアルとかできちんと手を動かしてイメージを最初に持つ、というのも良いかと思います。

あと、当日は思い出さなくて言わなかったのですが、いっそのこと翻訳をしてしまう、というのもよくやっていました。今どきは機械翻訳が便利なので不要かもしれませんが。翻訳をすれば日本で第一人者になれます。

渋川さんはReal World HTTPなどでHTTPの仕様などについて分かりやすく解説されていますが、仕様などの知識がどのように業務に役立つかをお聞きしたいです。仕様などはどのようなきっかけで調べて、どのように学ばれましたか?

仕様を調べたりしたのは、コードを書いていて、「あれ?これどうやってやればどのブラウザでも動くようになるんだっけ?」みたいなことを調べているうちにたどり着いて仕様を読んだ、というのがきっかけとして多く、それをまとめたら本になった、という感じでした。やはり、正しい正解に最短距離で近づくことができるので、仕様を知っておくのは時間の節約になりますね。

渋川さんの考える、最も学習によるコストパフォーマンスが高い言語は何でしょうか?差し支えなければお答えいただけると幸いです

回りに教えてくれる人が多い言語が躓いたときにもすぐに抜け出せるので良いですね。Pythonユーザーが多ければPythonで。ただ、ウェブフロントエンドだとJavaScript/TypeScriptしか選択肢がない、とかはあります。

Next.jsのような特定企業にサーバを縛られそうなフレームワークに(料金などで)どことなく嫌な予感を感じてしまうのですが、技術選定等のうえではどのように判断されるでしょうか

Next.jsはVercelというプラットフォームでよく動くようにはなっていますが、別にその環境でしか動かないわけではなく、AWSのLambdaとかGoogleのFunctionsとかでも動きます。また、サーバー側の実装はCDNのエッジでも動くように幅広く動くように改良され続けていたりするので、Next.jsについては心配には及びません。

僕はポータビリティが高いのを使いたいな、と個人的には思っています。どこでも動く。Dockerとかもあるけど、ホストOSでダイレクトに動いてくれるとか。

LLMの出現でWeb開発はどのように変わっていくとお考えですか?

学習素材が多い言語ほどよく書いてくれるので、人気の言語やフレームワークがますます人気、ということはありえるかなって思っています。

サーバーサイドで設計とアーキテクチャのイメージを固めるのが少々少々苦手ですもし良ければ渋川さんの練習方法や参考資料を教えていただけたら幸いです。

例えば、FirebaseとかAmplifyとかありますが、あの手の簡単に作れるプラットフォームほど、きちんとデータ設計をしないとうまみがなくて、フロントエンドを動かすためにずっとサーバー側のコードを直さないといけない、ということがあるのかなって思っています。ここ最近はあまり本屋にも本がないのですが、データベース設計をきちんとできる、というが大事だな、というのは実感できます。データベースに欲しいデータがきちんすべて入っていて、それが取り出しやすいスキーマになっているのであれば、バックエンドがやる仕事ってだいぶ簡単になります。