プログラミング教育が必要なのは間違いないですが、それと同時にコーディングせずにアプリケーションを開発できる人材を育てることも非常に大切だと思うようになりました。
つい先日のMicrosoftのコンフェレンスでサティアCEOがキーノートでプレゼンしていた内容で興味深いと感じたものが
「ビジネスアプリの急増」
「市民開発者(Citizen developer)」
この二つです。
今後4年間でビジネスアプリの数は7倍以上増える見込み
プレゼンの中のスクショを見てください。なんと2023年ごろには5億以上のビジネスアプリが開発されているだろうと予想しているのです。
Microsoftのノーコード(ローコード)開発環境を使う市民開発者の数は250万人
これは今現在の数です。Microsoftのパワープラットフォーム(Power Apps, Power BI, Flow 改め Power Automate など)はノーコード(ローコード)開発環境です。それを利用してビジネスアプリを開発している人の数が今現在でもそれだけいるということです。
Microsoft以外のノーコード開発環境も含めての話だと、どうなるかは分かりませんが、その数は増えることはあっても減ることは無いと思います。ビジネスアプリの増加率を単純に当てはめても4,5年後には市民開発者の数は(Microsoftのパワープラットフォームだけでも)1700万人という計算になります。
なぜプログラミングが出来ない市民開発者が活躍できる(すべき)なのか
ソフトウェア開発を長くやっている人はすぐに分かると思うのですが、ある問題に対するソリューションは、その問題のドメイン知識があるかないかでその結果は天と地ほどの差が出てきます。ドメイン知識がほとんどないプロの開発者が作ったサービスが現場で使い物にならなかった、といったエピソードは枚挙にいとまがありません。
市民開発者は通常、ドメイン知識が豊富なビジネスの現場の人間が、いわゆる典型的なコーディングスキルを使わずして、現場の問題を実際に解決していくことが出来るソフトウェアやサービスを開発するひとを指します。簡単に言えば「ビジネスアプリはビジネスを知っている人が作るのが一番!」ということです。
PythonやJavaを知らなくてもいいのです。メモリーやスレッドを知らなくてもいいし、HTMLやCSSを知らなくてもだいたい大丈夫です。プラットフォームが提供する「デザイナー」を使って、マウスで選んだり配置したり、キーボードでは主にコンポーネントの属性や設定を入力する、そういう作業の結果として、外からみたらまるでプロが作ったようなビジネスアプリが作れるのです(しかもタブレットやスマフォにも対応しているものもです)
市民開発者を育てるにはどうしたらよいか
これは私も考え始めたばかりでまだ模索中ですが、おそらく以下のようなスキルを持つ人が市民開発者になっていくのではないかと思います。
コンピュータリテラシー
具体的にはデバイスとしてのコンピュータに親しみを持っていて、ごく一般的なデバイスの保守が出来る人。OSのアップデートやブラウザの種類、ソフトのインストール、PCだけでなくタブレットやスマフォなどの端末に関して、その種類や性能に関して親しみを持っている
ネットワークのおおまかな仕組み
デバイスどうしがどのように連係しているか、どのようにしてメッセージを送受信しているか、インターネットの基本的な理解(TCPの仕組みを知る必要はないがIPアドレスとドメインの違い程度は分かっている)HTTPのリクエスト・レスポンスのモデル、Pushスタイルのデータ送信
オンラインサービスの原理
オンラインサービスへの登録などから始まり、サービスが連携できること、オンラインサービスと利用する上でのセキュリティの理解(パスワード、クレデンシャル、シングルサインオン、2ファクター認証、などの本質的理解)。データがどこにあるか、データセンターがどのようなもので、どのような場所にあるか、オンプレとの違い(利点・弱点)
数学
今の日本の中学と高校でならう数学で十分!それよりレベルの高い数学はドメイン知識としてビジネスの現場で学べばいいと思う。その時のための「基礎」としての数学は当然あった方がいい
コンピュータサイエンス
ノーコード開発では「式(expression)」がたくさん出てきます。これは具体的にはExcelやGoogle Spredsheetでセルに関数を使った式を使えれば十分というレベルです。「式」を上手に使う上でロジック(論理)は重要です。ビジネスアプリは一言でいうと「データ処理」ですから、データベースの概念を抽象レベルである程度理解していると市民開発者としてはかなり有能でしょう。具体的にはデータを集合として扱えることEntityを別のEntityと関連付けて取り扱えること。もしかしたら「コンピュータサイエンス」ではなく「データサイエンス」というくくりの方がしっくりくるかもしれません
コーディング
これはノーコード開発をする上では要らないんじゃないの?って思いますし、おそらくほとんどのケースではそうだとは思いますが、Microsoftのパワープラットフォームを例にしていうと、「No clif (崖がない)」という言い方で表すんですが、ノーコードで開発していると、ある地点で「プラットフォームには出来ないこと」が必ず出現します。プラットフォームは8割9割の「よくある問題」を簡単にすばやく解決してくれますが、100%全てのビジネス問題に対応しているわけではありません。その時、カスタムメイドのコンポーネントやプラグインを作る必要性が生まれます。コーディングの出番です。
ここで、コーディングが必要なのでプロの人に来てもらう、でまったく問題ありません。ただ、コーディングが必要なシチュエーションで「ごく初歩的なレベルのコーディング」であれば「市民開発者でほんのちょっとだけコーディングが出来る人」がそれをやってのけることが出来るかもしれません。ちょっとだけJavaScriptとCSSを知っているだけで、「在庫=0」のセルを「赤で表示する」というカスタマイズが出来るかもしれないのです。
No coding ではなく Low coding のプラットフォームとはそういうことです。
まとめ
というわけで、2020でプログラミング教育が熱を帯びていて、それはそれで素晴らしいことですが、本質的に来るべき時代に備えるためにはプログラミングとコーディング教育を補完するようなノーコード開発が出来る市民開発者をどう育てるかという視点も同時に持つことが大切だとおもうのです。