現実的になってきたコードレス開発
私の好みの技術として、Microsoft が提供していた .Net Workflow Foundation、Azure 上で動作する LogicFlow があります。どちらもコードを書かずに、パーツをくみ上げてやりたいことを実現するための仕組みです。そのため純粋な開発者からはあまり注目を浴びておらず、記事で取り上げられることもほとんど無いものですが、それでも自分の中で目指す方向と一致しているのもあり、登場以来ずっと追い続けています。
もちろんプログラムを書いてものを作り上げることも好きではあるのですが、今では手段を問わずにものを作り上げることを重要視しており、その手段がプログラミングなのかパーツを組み合わせていくかの違いだけ、と考えています。実現したいことがコードを書かなければできないのであればコードを書きますし、コードを書かなくともできるのであれば何も書かずに実現できるのが、私の中で目指しているところです。
LogicFlow については、非常に簡単に多くの外部サービスと連携をとることができるのが特徴の一つです。システムでカバーしなくてはならない領域がますます拡大している今、利用すれば有益なのは間違いないのですが、それでもなかなか広まる気配が見えません。
プログラムを書かない開発、と言われると大したことができそうにないと思われるかも知れません。ですが現在では、下手にプログラムを書いて開発するよりも品質高く安定したものを用意することも不可能ではありません。また、プログラムを作って対応する時よりも、少ない時間で提供開始することも十分に対応できたりします。動作環境を用意するにしても、一から自分たちで環境を考えて構築することもありますが、クラウド上でリソースを自由に調整できる環境を利用する方が早く安く安定している、そういうケースも多々あります。
現在では、機能単位で API として外部へ機能を提供するマイクロサービス的思想も浸透しており、アーキテクチャの一つとして認識されていることと思います。マイクロサービスでなくとも、何かしらの外部サービス API を呼び出すことのあるシステムは、世の中に多数存在しているでしょう。むしろ、外部と連携しないシステムの方が少数派とも言えます。
その場合、API を呼び出して連携する箇所が、随所に散らばってしまうことになり、その数だけ自分たちで用意しなくてはならない量も増えていきます。流石にサービス自体をすべて作り上げることと比較すればまだまだ小さな負荷ですが、それでも一定数以上発生すると、なかなかな負荷となり作成する時間、試験する時間、管理する時間、と多くの負荷がのしかかってきます。ある程度までは対応できていたとしても、どこかで限界を超える時期が来ないとは言い切れません。
例えは違うかもしれませんが、外部のデータセンターに社内で抱えていたサーバーをホスティングしてもらうことというのは、社内で管理することにより発生する負荷を外部に委託することで緩和させる方法です。今ではクラウド環境にシフトしていき、サーバー単位ではなくシステム単位や、API 単位ということもあるでしょう。どちらにしても、発生している負荷を外部に任せることで減らすのを目的としている点はあります。これと同じことが、システム構築においても同様に、ある機能を外部に委託する手法はもっと広く浸透していってもよいのではないか、と私は考えています。
データを受信したタイミングで何かしらの処理を行う、定期的にファイルを送信する、呼び出されたらデータを更新する、などなど、システムを構成する機能は詳細は異なっていますが、大きい流れとしては似たようなものに落ち着きやすいものです。大枠の流れの部分についてはコードを書かずに構築し、細かい部分に絞ってプログラムを書いて開発する、そうすることで今よりも品質高く安定させることも、決して不可能ではありません。
行きつくところは、システムという物に対する考え方、になるのかと思います。昔はフルスクラッチで作り上げることがシステム開発だ、というのは確かにありました。ですがその思想を今も継承している方は、恐らく少数派なのではないかと思います。作る必要がある箇所は作る、利用できる個所は利用する、そのようにしてシステムを構築することが非常にベターな手法だというのは、多くの方々がすでに気づいているところだと思います。
コードを書く開発にこだわりを見せるのは、間違いなく開発者にとって大事な要素の一つです。ですが、システムを作り上げるという点においては、コードを書かないで開発するという視点も、同じくらいに重要な要素なのではないか、そう私は思います。