2015年以降
2015年以降では、大きな技術キーワードとして「ブロックチェーン(または暗号通貨)」と「AI」があります。しかし、これらはWebシステムの視点から見れば、Webシステムの内側ではなく外側の技術だと思います。しかしながら、そういった技術もWebシステムとは必ずしも無関係ではいられなくなってしまいました。その背景について説明します。
多様性と分散化へ
SaaSの普及により、必要な機能を部分的に購入して利用できるようになりました。これにより、同じ機能を自サービス内で開発する必要も、インストールする必要すらなくなりました。これにより、多様な機能を自サービス内に導入しやすくなったうえ、機能が分散していく流れが生まれていくことになります。
また、これにより機能がどのように実現されているのかについて気にする必要もなくなり、実現が難しい技術を利用する際の障壁が大きく下がりました。
つまり「ブロックチェーン」や「AI」という技術自体を理解する必要はなくなり、理論上、どのような技術であってもWeb側に接続できるということになったのです。
一方で、同じような機能であっても、サービス事業者によって微妙に機能や制限が異なります。開発者の関心は、技術そのものの知識・経験からPaaSなどの外部サービスへの知識・経験へと移っていきました。
つまり、技術そのものの実現性よりも、ほしい技術を利用するためのSaaS知識や経験が優位になってきます。このような流れは、素早く、そして、他社と同じような機能を提供するという目的のためには非常に有益です。
こうした傾向は、外部からシステム機能が調達しやすく、また、組み込みやすいメリットが大きい一方、機能の拡張性や独自性を作る技術難易度がより上がってしまったという面もあります。実際、より自社特有の機能を作りたいというニーズが生じても、以前よりも実現性が難しく感じてしまうケースも増えています。「技術そのものの実現」に関するノウハウがたまっていないことによる問題です。
クラスから関数へ
ビジネスルール(機能)とデータを集中管理したい場合には、その概念をそのまま実現するクラスという概念が非常に優れていました。しかし、現在はクラスから関数型へ移行が促進しています。特にこういった考え方はクライアント技術において顕著に表れていますが、これには以下の理由が考えられると思います。
- UI/UXシステムによる制限
- 処理とデータの分散化
時間がかかる処理を画面がフリーズしないように行うために、どうしても非同期処理が必要になります。そのためには関数型のほうがプログラミング手法として都合がよい場合があります。しかし、実現したい処理は変わらずクラス型のほうが管理しやすいケースも多く、ハードの制約に沿って関数型を選択するか、人の管理上の効率を優先してクラス型を選択するか、といった判断になっていました。
この流れが大きく変わったのが、先述した「多様性と分散化」です。これにより、機能とデータが外部化していきます。つまり、各処理とデータの入出力のコントロールがより重要になる一方、処理の単位が自分たちではコントロールできなくなってしまいました。
このようになると、クラスとして管理すべきビジネスルールとデータが外部化していますので、クラス型のプログラムから関数型への移行していくことは自然な流れです。
技術キーワードの再整理
ここまでのおおよその年代別の技術トレンドの変化とその背景について説明してきましたが、これらを踏まえて最初の図を書き換えたものが図5です。
![図5:技術トレンドの流れと背景](http://cz-cdn.shoeisha.jp/static/images/article/20834/20834_005.png)
図の赤枠部分は、これらの技術や環境が活発的にブラッシュアップされた時期を示しています。そして、それらはニーズから影響を受けたものがある一方、過去の技術基盤がそろったために次の動きが生じたものもあります。
その中で筆者があえて「Web開発前期」と「Web開発後期」に分けるとしたら「HTML5」の前か後かといった切り分け方が最もWebシステムの把握、そして課題について理解しやすいと思っています。
次回からはこのHTML5の前と後の時期に分けて、今回紹介した概要をより深掘りして説明したいと思います。
最後に
筆者は25年ほどWebシステムに携わっていますが、このように振り返って見ると技術の変化よりも市場の変化、もしくは価値観の変化の方が影響が強く表れていると感じました。
例えばアーキテクチャで言えば、クラウド環境とメインフレーム環境は、技術的には非常に似ている部分があると感じます。また、スマートフォンの開発とPCの開発は画面サイズ以外では技術的な差がどんどんなくなり、違いはスペックなどに限定されます。
本来であれば、こうした流れは連続性がある技術の発展が最も望まれ、また、そのように成長するはずと思う方も多いでしょう。
しかし、Webシステムはコンシューマ市場もメインターゲットに含めることによりニーズが多様化しました。そのため、これまで蓄積した効率化のノウハウの前提条件をも変える必要が出てきたとも言えます。そのために表面的には技術の分断とも思えるものもありました。
一方で業務系のWebシステムでは、コンシューマ市場で求められるサービスの「価値の創造」よりも「効率性」や「安定性」「継続性」が変わらず重視されます。つまり、10~20年の期間において「変わらない」ことも重要な要件の一つでもあります。
このように変わるニーズや目的にも対応しつつ、一方で変わらないニーズや前提もあるため、技術選定や評価の判断が難しくなっていると感じます。