どうも、いからしです。

私は今年で32歳になるのですが、30歳に差し掛かったあたりから新しい技術の学習を怠るクセがついてしまっていて、最近ちょっと浦島太郎化している感覚があります。昔の上司が「マジで30過ぎると新しいことが頭に入らん、俺は20代で学んだ知識で食い繋いでる(ドヤァ」と言っていて、そのときは「うわっ、こういうオッサンにならないように頑張ろ」と思ったものですが、普通にそんなオッサンになってしまいました。歴史は繰り返すものですね。

その一方でDX投資促進税制の導入など、国を挙げたデジタル改革の流れもあって、ソフトウェアのスクラッチ開発案件が日に日に増えてきています。システム導入を望むお客様方の多くは当然ながら「できるだけ低コストで高品質なものをスピーディーに作ってほしい」と思っていて、この要望にサーバーレスやノーコード・ローコードといった技術を用いて対応できるベンダーやエンジニアの価値がどんどん高まっていくのだろうと現場でも感じています。実際コンペでもそういう提案ができるベンダーはやはり強いです。

このまま日々の退勤後と週末にひたすら酒を飲むだけの生活を続けていると、ある日それすらできなくなるほど仕事にありつけない人間になってしまいそうです。なのでここらでちょいと気合を入れて、2021年を生きる私のようなレガシーWebエンジニアが、いま学ぶべきだろうと思うことを整理しました。整理しただけなのでこれから勉強は必要なのですが。ということで現時点ではそれぞれの内容については「触り」だけ書きます。というかそれしか書けませんので悪しからず。

前提

今回っていつもの投稿より対象読者が絞られるので、一応「こんな感じのことはできる前提ね♡」というやつを書いておきます。この辺がまだだという人は、この投稿の内容より前にいろいろと勉強が必要な気がします。

  • SOLIDなどの各種原則に従い、クラス・オブジェクト設計や実装がきちんとできる。
  • リレーショナルDBのテーブル設計がきちんとできる。
  • どんな規格であれWeb APIのIF設計がきちんとできる。
  • 基本情報技術者試験レベルのWebとネットワーク知識がある。

フロントエンドアーキテクチャ

JavaScriptフレームワーク・ライブラリを使ったフロントエンド開発は、もはやWebエンジニア必須のスキルと言ってしまっていいです。React(Next.js)Vue.js(Nuxt.js)、Angularあたりが大御所で、最近だとSvelteとかAlpine.jsあたりも勢いがありますね。日本だとVue.jsが人気で、弊社でもかなりの数のプロジェクトで使っています。とはいえ世界的に見ればやはりReactが最大勢力。npm trendsのダウンロード数が実情を物語っています。

私はVue.jsが好きで、かつReact食わず嫌いマンなもので、恥ずかしながらReactとNext.jsはほぼ触ったことがありません。2021年を生きるWebエンジニアとしては失格です。勉強します。

またここ数年、インフラ環境といえばAWSな環境で生きてきた私ですが、フロントモジュールのホスティングはそういったIaaSではない、JavaScriptフレームワークに最適化されたサービスがいくつかあるようです。いまだとVercelというサービスが人気の模様。これも勉強しよう。

サーバーレスアーキテクチャ

初めてサーバーレスという言葉を聞いてからもう5年くらい経ちますかね。出てきた当初は理想論的なものだと思っていたのですが、今では採用している企業がかなり多くなってきています。弊社担当案件にもちょいちょいサーバーレスが出てきました。

サーバーレスアーキテクチャから受けられる恩恵はいくつかありますが、「セキュリティの向上」と「コストの抑制」が特に大きいメリットです。理由は本筋じゃないので割愛しますが。予算が限られた小規模案件で、Webアプリケーション開発担当者がインフラ構築までやらなきゃいけないような案件だとサーバーレスはかなり心強いです。これは本当に推測なのでソースも何もないんですが、今後スクラッチ開発案件はRailsやSpringBootのようなフルスタックフレームワークから、サーバーレスでの開発に置き換わっていくと思います。もちろん全部とは言いませんが。

メジャーどころのGoogle FirebaseAWS Amplify + AppSyncFaunaDBは抑えておきたいと思います。ちょっと注意したい点というかオッサンの小言ですが、コレ系の勉強をするときは「実際の開発案件に採用するために必要な情報」を意識すべきです。ググってヒットする情報だと「やってみた」系が多く、それに沿って同じことをするとそれっぽいことができたような気になるのですが、当然そのレベルでは実際の開発案件で使える知識は身に付きません。

  • ローカルで開発するときはどうするの?
  • 複数人で開発するときはどうするの?
  • 安全なリリース作業はどうやって行うの?
  • ランニングコストはどの程度なの?
  • etc..

挙げればキリがないですが、こういった観点から調査・実践を試みることが大切です。

またサーバーレスアーキテクチャ自体に依存するものではありませんが、GraphQLの知識はもはや必須なようです。RESTの思想大好きおじさんとしてはサーバーレスだろうがなんだろうがRESTで頑張りたいのですが、フロントサイドの簡潔化やサーバーサイドの開発工数削減など、REST寄りに贔屓目で見てもGraphQLのメリットは誤魔化しきれません。諦めて勉強します。

JAMStack

ぶっちゃけコレは概念をなんとなく知っているだけで、ほぼ無知です。なのでJAMStackがなんだかわからんという人は各自ググってください。Qiitaのこの記事がわかりやすかったです。

Jamstackって何なの?何がいいの?

この記事にもありますが、JAMStackの構築には静的サイトジェネレーターというものが必要です。Gatsbyというやつが有名らしいのですが、Next.jsやNuxt.jsにも同等の機能があるそうです。もう3年くらいNuxt.js使ってるけど全然意識したことなかった。死にたい。

JAMStackはあくまでWebアプリケーションの構成方法の1つであり、「JAMStackがすべての問題を解決する!今後全てのWebアプリケーションがJAMStackになっていく!」みたいな銀の弾丸ではありません。サービス提供側から一方的に情報を配信するようなサービスに向きますが、SNSのようにユーザーが頻繁にコンテンツを更新するサービスには向かないと思います。

ま・と・め

数自体はそう多くないんですが、ガチって学習すると1つ1つにかなり時間かかると思います。でもガチらないとあんまり意味もないので、当面は酒量を半分に減らして勉強頑張ります。今年の健康診断、肝臓の数値がちょっとアレだったからちょうどいいかも。ではまた。