ノーコード開発は、信頼できるシステムを高速に開発するための鍵
良くも悪くも、新型コロナウイルスを契機に日常のあらゆる場面に変化が訪れた。セールスフォース・ドットコム 田中宏樹氏は料理、特にパンを自宅で焼くようになったのだとか。パンを焼く工程は焼成と呼ばれ、うまくいくかどうか緊張する場面でもある。大学でコンパイラ理論を研究した田中氏にとって、「焼成はまさにコンパイル」と話す。
開発の世界に目を向ければ、ビジネスが複雑化し、構築するシステムには、多機能、高機能、高品質、さらに高速開発に高度なセキュリティまでも求められてきている。加えて、IT人材不足という課題も深刻だ。これまでも開発速度と品質のトレードオフが課題となっていたが、今後はそれが加速していくかもしれない。そこで、これらを両立する大きな鍵となるのがノーコード開発だ。
ノーコード開発とはコーディングをすることなく、決められたUIから機能や動きなどを選択しながら開発を進めていくもの。とはいえ、内部的にはコードができあがるため、開発を自動化するテクノロジーとも言え、先進的なデザインを求められることの少ない業務アプリケーションとは相性がいい。
3ステップで実現できる、Salesforceのノーコード開発
Salesforceにおけるノーコード開発は主に開発環境作成、データテーブルや画面の作成、業務への最適化の3ステップで進めていく。
まず、開発環境となるのがサンドボックスと呼ばれる開発とテストのための環境だ。本番環境の複製のようなもので、本番環境から切り離し、安全に開発が進められるようになっている。Salesforceの本番画面の[設定]メニューから作ることができ、設定情報だけを引き継ぐDeveloperサンドボックスや、全ての本番データを取り込むFullサンドボックスなど4種類から選ぶことができる。
もし本番環境に新機能が追加されたら、サンドボックスの一覧画面から[更新]すれば最新版に更新できる。一般的に開発環境を構築するには何かと手間がかかるが、Salesforceなら環境構築からデータの複製、さらに最新版への更新も手軽にできる。
続いてデータテーブルと画面の作成。Salesforceのオブジェクト・クリエーターを使えば、ExcelやCSV、Google Sheetsからデータを直接読み込んで、オブジェクトと呼ばれるデータテーブルを作成できる。
データは自動的に読み込まれ、同時にデータを追加、参照、変更するための画面も自動的に作成される。内部的には分析のための画面やデータにアクセスするためのREST APIも同時に作られるため、開発者の作業量を減らすことができる。
あとは業務への最適化だ。ここではアプリケーション・ビルダーを使う。自動的に生成された画面だけでは業務を行う上で最適なUIを提供できない場合があるので、表示順や表示方法など細やかな調整をしていく。例えばイベント管理のアプリケーションなら、ステータスが「開催済み」になってから「参加者」を表示および入力可能とできる。これで、ステータスが「集客中」に誤って参加者数を入力してしまうようなミスを防ぐことができる。
基本的にはこのようなステップでノーコード開発が進む。高度なスキルがなくても、品質を保ちつつアプリケーション開発を高速化できる。開発者が基本的な部分を作り、あとの微調整はノーコード開発で現場のユーザーに委ねてもいい。開発者にとっては手離れがよく、空いた時間をスキルアップや別の案件に費やすことができるのもノーコード開発の魅力だ。
快適で効率的な開発のために、適材適所のコーディング開発を支える
ノーコード開発が便利とはいえ、コーディング開発がなくなるわけではない。ノーコード開発で済む場面も多いが、きめ細やかな要件に対応していこうとすると、やはりコーディングが不可欠となる。SalesforceではSalesforce DXと呼ばれる取り組みの中でモダンな開発ツールを提供しており、開発者は快適かつ効率的に開発を進めていくことができる。
Salesforceのアプリケーションをテクノロジー的に見ると、Webコンポーネントベースのシングルページアプリケーションとなっている。このアプリケーションはLightningフレームワーク上で稼働しており、画面表示をGUIで調整できるだけではなく、高いセキュリティや効率的なデータアクセスも実現している。
Salesforceでコーディング開発を効率化するために知っておきたいのがLightning Web Components(LWC)とVS Code向け拡張の2つだ。
まずはLWC。これはLightningフレームワークを活用しながら、Webコンポーネントを開発するためのプログラミングモデルだ。開発者が独自に作成したWebコンポーネントをアプリケーションビルダーからアプリケーションに組み入れる時のことを考えてみよう。
例として、田中氏は先ほどファイルからデータを読み込んだアプリケーションに新しいWebコンポーネントを追加してみせた。「開催地」(住所データがある項目)で地図のコンポーネントを使い、開催地の場所を地図で表示するように変更した。何気なくやっているように見えるが、一般的なアプリケーションなら同一ページにあるコンポーネントが干渉しないか確認する必要がある。時には自分が開発したコンポーネント以外のコンポーネントのソースコードを確認したりすることもあるだろう。ところがSalesforceではそのような心配は一切不要。Salesforceのフレームワークはコンポーネント同士が干渉しないように制御しているためだ。そのため開発者は自分が担当するコンポーネントだけ確認すればよく、ビジネスロジックに集中できるようになっている。
続いてVS Code向け拡張。Salesforceでは開発者がエディタを自由に選ぶことができる。もし普段からVS Codeを使っているなら、Salesforce向けの拡張「Salesforce Extension Pack」を追加しておこう。田中氏は「VS CodeでSalesforceを開発するならマストアイテム」と推す。
追加でもう1つ。現時点ではオープンベータとして提供されているローカル開発だ。従来のSalesforce開発では、ローカル環境で開発しても、開発環境にアップロードしないと動作確認ができなかった。しかし、アップロード、テスト、修正を繰り返すのは効率的とは言えなかった。このローカル開発はローカルサーバー(ローカルホスト)上でLWCをビルド、テスト、実行できるため、開発の高速化につなげることができる。
なおSalesforceというとGUIのイメージがあるかもしれないが、コマンドラインもある。それが、Salesforce CLI。一連の作業をスクリプトで実行したい時に他ツールと組み合わせると便利だ。例えばテスト実行を自動化したり、データやメタデータを移動させたりできる。
またSalesforceのようにノーコードとコーディングを組み合わせて開発を行うアプリケーションでは、従来のコーディングを中心としたアプリケーション開発に比べるとバージョン管理が難しい。そこで全てのソースコードとメタデータの変更を「パッケージ」という形でモジュール化すると、バージョン管理がしやすくなる。VCSと同期したアプリケーションリリースを可能とし、CI/CDと連携することができるため、DevOpsの実現につながる。このパッケージは、サンドボックスにおいても利用可能だ。
最後に田中氏はあらためてこれからの開発体制において大切な考え方について述べた。ノーコード開発とコーディング開発の両方が選べる時、コーディングに慣れた開発者だと些細な機能でもコーディングで作ってしまいがちだ。しかしそこはぐっと抑え、ノーコードという選択肢があるのであればノーコードで開発を選ぶことを田中氏は推奨する。
アプリケーションはいずれ誰か別の人が引き継いで保守するかもしれない。ビジネスで使うユーザーのために品質の担保や安全性も忘れてはならない。田中氏は「Salesforceでの開発はノーコードファーストで。ノーコードで実現できないものだけをコーディングで補完していくというのが、Salesforce開発における成功の鍵となります」と話す。またノーコード開発とコーディング開発を適材適所で進めるなら、開発に携わった人たちの評価も適切に行えるように人事評価を見直す必要があると指摘した。開発のスタイルも考え方も、ニューノーマルへと向かっている。