見出し画像

ローコード開発はエンジニアじゃなくてもできる?


この記事はUbieCorporateアドベントカレンダー
https://adventar.org/calendars/7774 の14日目(12/14)にエントリーしています!

こんにちは。Ubie Corporate Middleofficeのmizukinです。


Ubieでは営業管理の他、販売管理にもSalesforceを利用しています。
日々の見積書・発注書・請求書作成、売上データの管理まで集約しており、そこで必要となる機能は、ローコードでの開発を非エンジニアを含め行っています。

今回はローコード開発について思ってることを書いていきたいと思います。
(※ローコード開発は、プログラムコードを記述せず、GUIツールを使い開発を行うことを指しています)


Salesforceでのローコード開発はエンジニアじゃなくても出来る?

ローコードは高度なプログラミングスキルが不要で、開発未経験者でも充分に開発できるという話もありますが、実際はどうでしょうか?
私は『充分可能ではあるが、スキルが不要とはいえない』と考えています。

ここでSalesforceのflowで作った処理とPythonによる処理を見比べてみたいと思います。

処理の内容とflowの作成方法は以下のSalesforceのチュートリアルをご確認ください。

(私はPython入門レベルなのでエンジニアに監修してもらいました)


# flowの「Contact Info」
# ユーザから入力された責任者の情報を取得し取得した取引先責任者情報は変数contactに格納
# 以下のようなデータになっている想定
# {'FirstName': 'yamada', 'LastName': 'taro', 'update_toggle': True, }
contact = contact_info()
# flowの「Find a Match」
# ユーザが入力したFirstNameとLastNameが一致するレコードを取得して変数recordに格納
record = find_a_match(contact['FirstName'], contact['LastName'])
# flowの「Update or Create?」
# ユーザが入力したupdate_toggleのフラグが真、
# frind_a_matchで取得したレコードがNull(pythonではNone)であるかどうかが偽であるならレコード>をユーザが入力した値で更新する
if contact['update_toggle'] == True and is_null(record) != False:
    # flowの「Set Contact ID」
    # ユーザの入力した値にMatch a Recordで取得した既存のcontactのIDを付与
    contact['Id'] = record.Id
    # flowの「Update Contact」
    # 既存のcontactのIDを付与したユーザの入力した情報で既存のcontactを更新
    update_contact(contact)
else:
    # flowの「Create Contact」
    # ユーザの入力した情報でcontactを新規で登録
    create_contact(contact)

コメントの説明とflowによる開発の手順を見比べていただけるとお分かりと思いますが、作業が異なっているだけでローコード開発もプログラミングもほとんど同じです。

そうなってくると、ローコードによる開発は高度なスキルが求められることはないものの、プログラミングと共通するスキルはある程度必要となるため、全くの未経験者がいきなり開発するのはやはり難しいとも思えます。

プログラミングの経験がないとローコード開発は無理なの?

『じゃあやっぱりプログラミングの経験が必須なのか?』というと、そうではないと思ってます。私を含め、Middleofficeのメンバーはプログラミング言語で開発するスキルは持っていませんが、flowによる実装はある程度可能です。
それがなぜ可能かというと、『プロセスを分解し、順序だてて組み立てる』という『プログラミングと共通するスキル』を習得したからだと考えています。
具体的には、『実現したい機能を作るために必要な手順をひとつひとつ分解して定義する』ということです。

先ほどの例で挙げたSalesforceのチュートリアルは『ユーザが入力した取引先責任者の情報と更新するかどうかのフラグの設定に応じて、既存の情報を更新または新規作成を実行する機能』でした。

これを分解すると以下のような手順になります。

  1. ユーザが取引先責任者の情報等を入力できるフォームを表示する

  2. フォームで入力された情報を持っておく

  3. フォームで入力された名前の情報を使ってデータベースから既存の取引先責任者情報を取得する

  4. 取引先責任者情報がデータベースから取得できなかった、または、ユーザが更新のフラグを設定していなかったらフォームの情報でデータベースに新しい取引先責任者情報を登録する

  5. 取引先責任者情報がデータベースから取得出来て、かつ、ユーザが更新のフラグを設定していたならデータベースから取得した情報をフォームの内容で更新する

ここまで手順を細分化できたなら、あとはflowの機能に従って画面をぽちぽちすれば実装完了です。

上記の【プロセスをバラバラにし、組み立てる(プロセスを設計する)】という考え方が身についていない全くの開発未経験者には、ローコード開発は正直難しいでしょう。ですが、逆に言えば、考え方さえきちんと取得できればSalesforceはプログラミング言語が書けない非エンジニアに非常に心強い武器になります。

ローコードのメリット

ビジネス要件を知り尽くしているが、自分で実装することができない非エンジニアにとって【自分の手で機能を実装できる】というローコード武器は非常に強いです。可能性は無限大です。

プログラミング言語の複雑な文法を覚えてなくても、たいていの機能を実装が可能

プログラミング言語は最初に覚えないといけないことが非常に多いです。私自身、何度も勉強しようとしていますが、文法の規則や概念が細かすぎて頭に全く入らず何度も挫折しています。。。
これに対して、ローコード(flow)による開発はほとんど直感的なGUI操作のみでできるため、そんな私でも挫折せず楽しく実装しまくれています。

難しいセキュリティやデータベースの保守などはプラットフォーム側がやってくれる

ローコードはSalesforceなどのプラットフォームの機能として提供されているため、エンジニアでないと難しいセキュリティやデータベース等の保守はプラットフォーム側の基本機能として提供されています。そのため機能の実装に集中することが出来ます。
(実際の運用開始にあたっては、社内の情報システム部門との連携も必要になってきますが、基本機能がプラットフォームから提供されるメリットは大きいです)

プログラミング言語を習得していなくても、基礎的な考え方が身につく?(プロセス設計)

これは鶏が先か卵が先か的なところもありますが、先述の『プロセス分解と組み立てるスキル』がプログラミングをせずとも磨かれていくのではないかという気がします。
私自身がプログラミングを未だ出来るようになっていないため、言い切ることはできません。
ですが、少なくとも、言語の習得が大きなハードルとなって全く次のステップに進めない…ということがないため、ローコード開発によって基礎力をあげた上でプログラミング言語に挑戦すれば、プログラミング言語での開発スキルの取得も夢じゃない…かもしれません。

ローコードのデメリットとその対策


ローコード開発はプログラミング言語に比べ、制約が緩くなってます。
例えば、変数の宣言が処理を分離していたり、宣言した変数は複数の処理で簡単に使いまわすことが可能です。
そのため、変数だけ見ても用途が分からなくなったり保守が難しくなってしまったりします。

私自身がやらかした実際の事例は、プロセスの設計をするまではよかったのですが、その次の実装にあたって『命名規則』という概念が染み付いておらずおかしな変数名をたくさん生み出してしまったことです。
どう実装したいかは明確にあり、どういう処理が必要かは具体化できていたものの、そこに名前を付けるという準備を全くせずに実装を開始してしまいました。
GUIでぽちぽち実装できるがゆえ、その場で変数名を考えることで実装をストップさせたくない、そんな気持ちで、適当にローマ字でつけてみたり、同じような処理で名前に困ったら、1とか2とか数字つけてみたり、後でどころかその場で自分がつけた変数名が読み解けない…自分ですら保守できないというかしたくない…そんなことが多発しました。

そんな時、幸運なことに、コーポレートのエンジニアに壁打ちしてもらって疑問点を解消したり、ロジックの整理の仕方だったり、基本的な開発お作法を教えてもらうことが出来ました。これによって、Salesforceをとっかかりにシステム開発というものの理解を大幅に深めることが出来たと認識しています。

ということで、私の考える非エンジニア(開発未経験者)がローコード開発をするときに気を付けるべきは事項は以下3点です。

  • 全体設計をしよう(プロセスを定義しよう)

  • ルールを決めよう(API名には命名規則を設けよう)

  • エンジニアの力(知見)を借りよう

ローコードはプログラミング言語による開発に比べ、設計しなくても作れると錯覚してしまいがちなところがあります。
しかしローコード開発においても、通常のソフトウェアと同じような開発プロセスを構築することがとても大切だと考えます。

Middleofficeへのお誘い

ローコード開発は開発の知見が全く不要なわけでなありませんが、プログラミングと共通する『プロセスを分解し、順序だてて組み立てる』さえあれば、システムを実装し、業務オペレーションを劇的に変化させることが出来ます。

Ubieでは販売管理業務プロセスの見直し、設計・実装を、corporate内のMiddleoffice(販売管理・業務推進)というポジションで担っています。

Middleofficeって何?には 営業事務のネクストキャリアに「ミドルオフィス」を推したい話|asamix|note をぜひご覧ください。


  • 内部統制に考慮しつつ、売上促進を妨げない『攻め』と『守り』のバランスを取った、販売管理に関する業務オペレーションを構築する人

  • 業務オペレーションに適したシステム設計&実装をする人

といった役割です。
業務上の課題を実務ベースで抽出し、ASIS分析、TOBE検討、システム設計・実装・浸透・運用保守と、社内メンバーと一緒に小さなBPRを繰り返していく感じですね。
業務改善に携わっていたことがある人なら、とてもやりがいがあるな!と共感してもらえるのではないかと思います。
そしてUbieはスタートアップということもあり、業務がかっちり固まっていないところもまだまだ多いです。どんどん新しい取り組みが生まれます。

  • 変化していくビジネス側の要件をキャッチアップしていける

  • 管理部門としての要件を理解している

  • 『プロセスを分解し、順序だてて組み立てる』ことでシステムの実装を言語化したい

  • Salesforceの実装をしたい

そういった業務・役割に興味をお持ちの方、変化していく事業に寄り添って業務を改革・設計していきたい想いのある方を大募集しています。

興味を持っていただけた方は、ぜひこちらの採用サイトから『Salesforce管理者』をご覧ください!
https://recruit.ubie.life/ubie_corporate

 #UbieCorporateアドベントカレンダー 
https://adventar.org/calendars/7774


この記事が気に入ったらサポートをしてみませんか?