見出し画像

No Codeはソフトウェアエンジニアという職業を終わらせるか

以前ソフトウェアエンジニアを目指す学生の方に次のような質問を受けた。

No Code(ノーコード)が流行っていますが、No Codeによってソフトウェアエンジニアという職業そのものがなくなってしまう可能性はないのでしょうか?

※ノーコード…プログラミング不要でアプリやサービスを作れるSaaSを指すことが多い

将来のことは誰にも分からないが、かつてチューリング賞を受賞した計算機科学者アラン・ケイが "The best way to predict the future is to invent it.(未来を予測する最善の方法はそれを発明することだ。)" と言った故事に倣い、「すべてのソフトウェアエンジニアを廃業させるようなNo Codeの作り方」を考えることで、この問いに答えることができるように思う。Spoiler: 先に結論を述べるとこの答えはNoだ。そのようなものを作ることはできない。ソフトウェアエンジニアという職業はどんなに少なく見積もってもあと30年はなくならないとここに予言しておく。

No Codeとは何なのか

「No Codeはソフトウェアエンジニアを終わらせるか」という質問は面白いと思ったので、僕は逆に質問してみた。「No Codeがどのようなものか説明できますか?No Codeサービスを何か使ったことがありますか?それはソフトウェアエンジニアを絶滅させると思いましたか?」と。

現状「No Code(ノーコード)」とは、プログラミングが(ほとんど)まったく不要でアプリやサービスを作ることのできるSaaSを指すことが多い。例えば「Yappli(ヤプリ)」などはその代表格だ。

先に断っておくが、Yappli(ヤプリ)は素晴らしいサービスである。ウェブサイトを見てもらえば分かるように、ユーザはテンプレートの中から自分のイメージに近い部品を選び、配置し、画面タップなどのイベントに応じて動きをカスタマイズしていくだけで簡単にiOS/Androidアプリを作ることができる。さながらネイティブアプリのRPGツクールのようだ。

ではNo Codeはどうやって作られているか?これは言うまでもなく、No Codeの会社のソフトウェアエンジニアがプログラミングして作っているのである。iOSもAndroidも絶えずAPIが変更・追加されていくので、No Codeも絶えずその変化に追従しなければならない。顧客からの要望も常に増え続ける。これらをすべて、RPGツクールのように簡単に使えるようなサービスとして提供するために、おそらく何百人ものソフトウェアエンジニアがプログラミングをし続けねばならない。

じゃあ、No Codeを作る何百人以外の何十万・何百万人のソフトウェアエンジニアは絶滅する運命にあるのか?答えはNoだ。No Codeがカバーしているのは、ごく限られた特定のプラットフォームの、ごく限られた特定のユースケースに過ぎない。
MicrosoftのCEOサティア・ナデラが "Every company is now a software company(今やすべての企業はソフトウェア企業だ)" と語ったように、今となっては業種・業態にかかわらずソフトウェア・テクノロジーを利用しない会社はありえない。ソフトウェアが主力製品ではないにせよ、それが顧客管理であれ、マーケティングであれ、業務自動化であれ、すべての会社は何らかの形でソフトウェアに依存している。そしてこの傾向は強まることはあれど減少するなど考えられない。この状況下で、すべての状況に対応するNo Codeを作れるはずがないのだ。逆に、もし誰かが "One-size-fits-all(ワンサイズで全員にフィット)" なNo Codeを作ったとしよう。そんな何でもできる、すべての業種・業態に対応し、すべてのプラットフォームをサポートし、すべての機能全部入りのNo Codeを想像して欲しい。そんなものを誰が簡単に使える?それはもう、プログラミングより難しい。

ソフトウェアエンジニアとは何なのか

「No Codeはソフトウェアエンジニアを終わらせるか」は、「AIはソフトウェアエンジニアから仕事を奪うか」の亜種であることが分かる。ここでは"AI"の定義は何なのかといった議論は一旦置いておいて、実際のところ、No CodeやAIによってある種のソフトウェアエンジニアの仕事の一部はなくなってしまうだろう。

ここで根源的な問いが生まれてくる。ある種のソフトウェアエンジニアって誰?ソフトウェアエンジニアって何なんだろうか?
僕は、ソフトウェアエンジニアとは、ソフトウェア技術を使って問題を解決する人たちだと考えている。まず何か目的があって、それをソフトウェアの力で叶えることができれば、あなたは立派なソフトウェアエンジニアだ。ここで重要なのは、別にプログラミングはそのための必要条件ではないのだ。それにこの話をすると、プログラミングとは何なのか?という話もしなければならなくなる。

だって考えても見てよ。昔はソフトウェアに仕事をさせるためにはアセンブリでCPU命令を逐一書く必要があった。その頃からすると、C言語のような"高度に抽象化された"言語はNo Codeのようなものだろう。時代は流れ、僕はPerlで初めてプログラミングをした。Cすら知らない世代だ。その後仕事でハードウェアを直接制御するC++も書いていたけど、メモリの所有権はとても扱いが難しかった。僕からすると、C++に比べたらPythonなんてNo Codeみたいなもんだ。扱いやすいコンポーネントを並べ替えるだけで、難しいことは全部実現できる。

恐竜は鳥へ、プログラミングはNo Codeへ

僕は冒頭で「ソフトウェアエンジニアという職業はどんなに少なく見積もってもあと30年はなくならない」と大見得を切った。あれはある意味では釣りだったことを謝罪しなければならない。より正確に伝えるならば、扱う道具が変わるだけで「ソフトウェアを使って物事を解決する」人たちが職を失うことは当分ない、と考えている。これはちょうど、恐竜が鳥に進化したようなものだ。恐竜(ソフトウェアエンジニア)はある日を堺にすべて死んでしまったのではない。恐竜の中で環境の変化に対応できたものが生き残り、長い年月をかけて鳥に姿を変えただけなのだ。現在の時間軸から見ると、No CodeやAIの登場によって今あるプログラミングの一部は形を変えるかもしれない。しかしソフトウェアによって世界をより良い場所にするというソフトウェアエンジニアの本質は変わらない。ソフトウェアエンジニアが死ぬことはない。みんな安心してソフトウェアエンジニアを目指すとよい。


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