昔のやり方に戻れない理由
Adobe PhotoshopやGoogleドキュメントのような複雑なUI/UXをもった機能をもったWebシステムまでは求めていないというケースも実際には多いでしょう。例えば、図11は、弊社で開発した年末調整用の申請書を作成するための画面例です。
単純なWebフォームを用いた入力ではなく、PDF上の各入力エリア毎に入力しやすいようにカスタマイズしたフォームが開き、その入力結果が即時にPDFプレビュー上に反映されます。こういった(若干ながら)特殊な入力画面になると、クライアント側でやるべきことも増えます。
しかし、この画面のためだけに、ReactやVue.jsなどのフレームワークを導入する必要はなく、多少面倒かもしれませんがjQueryやプレーンなJavaScriptだけでも十分に対応可能です。
現実のプロジェクトでは、図12のようなシンプルな入力画面が大部分を占めていることがほとんどです。
このケースでは、無理に新しい技術を採用せずにオールドスタイルで開発してしまった方が効率的です。
しかし、現状ではそのようにうまくはいかない要因もあると筆者は考えています。それが、人のトレンドによる影響です。新しくIT業界に入ってくるエンジニアは、「既に知識と経験が豊富にあり、それを保持する人材がたくさん存在する」ような領域を新たに始めたいと思いません。
先ほどの例で言えば、既存技術でできる90%の部分で活躍するよりも、難しい10%に興味を持つでしょう。また、そこまで野心的な人でなくても、現在活発にやりとりされている情報側を選択します。
つまり、野心的な人であっても保守的な人であっても、今からIT業界に入る開発者は、代替する新しい技術がある中で、既存の技術を採用することが難しいのです。
そして、今後は新しい技術スキルを身につけた人材が豊富になる一方、大きな発展が見込めない分野の技術者は少なくなる一方です。結果、現時点での開発難易度や効率性から見たベストな手法が、将来的にも採用できるとは限りません。
これからのWebシステムはどうすべきか
実は、こういった課題は2000年ごろから生じ始めた、COBOLシステムからWebシステムへの移行時にも存在しました。
当時、COBOLでできることはCOBOLでやるほうが、Webシステムよりも圧倒的に効率的でした。しかし、当時の最適を選んだ会社が現在困っていて、果敢に非効率に挑んだ企業が今のIT業界において、圧倒的な効率化の力を得ています。
現在はまだ、フロントエンド技術を中心にした開発は過渡期と言えます。そのため、どこでも通用する解決方法があるわけではありません。各開発者やチームに応じて新しい方法を導入したり、一方でこれまでの技術を別の使い方をするなどの工夫が必要になるでしょう。
「つながる技術」という方向性
工夫が必要になるといってもどういった方向で工夫すべきかという指針がないと「あとは各々で頑張ってね」と言っているに過ぎません。
そこで筆者なりの方向性を挙げるとすれば、Reactiveというキーワードが非常にポイントになります。Reactiveになるためには、独立した2つ以上のものが接続している必要があります。そして、この「接続」は常時接続ではなく、必要になったタイミングで必要な時間だけつながるという流れが強くなっています。つまり、単純につながるということではなく、そこに少し違った技術や考え方の追加が必要になります。
特にサーバサイド側の技術は、現在では、クライアント技術で代替可能になった部分と、クラウドなどに対してサービス化される部分があります。特にクラウドサービスでは機能の重要性も必要ですが、クライアント技術との親和性も重要です。
例えば、マイクロサービスという言葉もそのような前提ですし、Webhookも、メインとなるWebシステム側に処理のライフサイクル制御をまかせず、簡単につながるための技術の一例です。
次回は、このようなキーワードを参考にしつつ、具体的にどのような技術や仕組みを使って既存の技術資産も生かしながら、新しい技術を取り入れていくか、もしくは共存していくかについて弊社が行っている事例などをもとに紹介します。
最後に
かつて、COBOLで行っていたシステムからWebシステムへ乗り換える際に、お客様から「同じシステムをCOBOLで作れば3倍安く、3倍性能が高いものを作れる」と言われたことがありました。
つまり、古い技術を使えば約10倍効率的に作れると言われたのです。当時は、そう言われて悔しく、また反感も持ちました。あれから20年以上経って、ほぼ同じようなことを言う側になったのだと実感します。
しかし、そのように言われたことがきっかけで、改めて汎用機時代の技術や設計思想などを勉強するきっかけができました。そして、コンピュータ資源の分散管理や仮想化技術、大規模システムにおけるデータ管理などにつながっていることを学び、クラウド時代でそれらの知識が役に立ちました。
知識や経験が次の世代にはあまり活かせず、むしろ、その次の世代で活かせ、隔世遺伝のようになっていて面白いと思いました。サーバサイド技術の考え方も、今後別の技術トレンドが生じる中で再度活かせるようになるのではと思っています。
