![見出し画像](https://assets.st-note.com/production/uploads/images/133301539/rectangle_large_type_2_a808148719094b7d7d00e38c16a3a972.png?width=1200)
ノーコードでは届かない場所へ
はじめに
巷には「ノーコードで生成AIがカスタマイズ出来る!」という事をアピールするようなサービスが沢山あります。アピールをするという事は、この言葉が響く人たちが沢山いるという事なのでしょう。
これは凄い!と思って、そのサービスに飛びつくものの…実際に使ってみて、こう感じた事はないですか?
「ノーコードのサービスに手を出してみたものの、なんだかしっくりこない。」
…そんな方々の助けになればと思い書きました。
この記事は、私の個人的な思いを語っているところが多くあります。このアプローチは私にとっては真実なのですが…誰もが同じアプローチで同じような結果が得られるような簡単なものではないと思います。そのため、当記事を読んでも響かない人もいるでしょう。
まずは、軽く読み始めてみて、しっくりくる感じでしたら、ぜひ、最後まで読み進めてみて下さい!
人間も生成AIも指示通りに動かない
阿吽の呼吸で言いたいことが伝わる…長年連れ添った夫婦のよう…なんて理想ですよね?
でも…意外と伝わっている気になっているだけで、伝わってない事も多いです。
最新の生成AIは非常に人間に近い振る舞いをします。人間と同じように間違い(ハルシネーション)もします。そして…総合的に見れば人間よりはまだ賢くありません。
つまり、人間ですら正しく伝える事が難しいのに、人間より劣るAIを相手にして簡単に正しく伝えられる訳がないのです。
それを期待してしまうから…
「生成AIは使い物にならない!」
…のような早計な結論を出してしまうのです。
では、どのように使って行くのが良いのでしょうか?
生成AIだけじゃ厳しい?
ノーコードのツールであるGPTsはとても素晴らしいのですが、例えばゲームを作ろうとした時、生成AIのみで実行・実装するのは難しいと感じます。何故かというと…ゲームには「必ずこう動いて欲しい!」というルールがハッキリ決まっている部分があるからです。
それをプロンプトを駆使して実現させようとしても…生成AIの挙動は不安定な部分が多く思った通りに動かないケースが多々あります。その不安定さを解消させようと、さらにプロンプトを頑張る訳ですが…ふと思ってしまうんですよね
「生成AIに任せるよりコーティングした方が早くね?」
…って。
そして、実際やってみると早いんですよね。
それは、プログラミングが出来る人の視点でしょ?と言われれば、それはそうなんですが…
ノーコードって何を意味するの?
ノーコードってそもそも何を意味しているのでしょうか?コーディングしないという表現だから「キーボードでプログラムの命令を入力しないで、マウスを使いアイコンを配置してプログラミングする」ぐらいの意味かとは思ったのですが…ネットとかで調べてみると、恐らく期待されているのはそこではない気がしました。ChatGPTに聞いてみると…
ノーコードとは、プログラミングを必要とせずにソフトウェアやアプリケーションを開発することを指します。
「プログラミングを必要とせず!!」
なんか、すごい事言われた気がしました。そんな事まで含んでいるとは…
「包丁を使わずに料理ができます…だと思ってたら、そもそも調理しなくても料理が出来ますだった!?」
みたいな印象です。私の感覚がおかしいのでしょうか?
最近では「子供のプログラミング教育」が盛んに行われています。プログラミング教育の目的について、私としてはこう考えています。
実際にプログラミングをする事により、プログラミング的思考を育て、問題解決が行える人材を育てる
…という感じですね。私はプログラミングとは問題解決を行うための思考であるという認識をもっていました。という事は…ノーコードという言葉が響く人たちと私の感覚がどうも違ってるっぽい気がしますね。このズレが、「ノーコードサービスがしっくりこない」の手がかりになりそうな予感がします。
優れたノーコードツールってどんなもの?
先程、料理の話をしました。料理に例えると、ノーコードツールに期待する人は「出来上がった弁当や惣菜を買ってくる」事が目的ではないと思います。そうじゃなくて…
「頭の中で思い描いた料理を作りたい」
…だと思います。つまり、そのように、自分の思い通りの物が作れるのが優れたノーコードツールと言えると考えられます。
名前は出しませんが…
「ノンプログラミング、ノーコードでシステムの構築が可能!アイコンを繋げるだけで完成!」
…というかなり完成度が高いツールがあります。このツールは素晴らしくプログラミングで実現可能な事が何でも出来るぐらい機能が充実しています。
どのような機能があるか見てみましょう。
変数がある(グローバル・ローカル共に)
条件分岐がある
ループやブレイクがある
エラー処理(try〜catch)もある
関数呼び出しがある
引数、戻り値なんかもある
正規表現が書ける
…そんな作りになってます。
このようなものが、ノンプログラミング、ノーコーディングで…という宣伝文句で販売されています。
いやいや、これ…
「テキストでの命令がアイコンになっただけでプログラミングだよね?」
って突っ込みたくなります。
プログラミングだとするなら「プログラミング的な思考」が出来ないと使いこなせません。
このツールがノンプログラミング、ノーコーディングと言えてしまうなら…
「プログラミング教育で使われるScratchもノンプログラミングになってしまうよね?」
って、言えてしまいます。
ああ…なんとなく分かってきました。
言い方が悪いですが「ダブルスタンダード」とかそういうやつですね?
ツールを開発している会社はツールを売らなくてはいけない。なので…
「プログラミングが出来ないけどシステム・アプリケーションを開発したい人に対して、”プログラミング的な思考”が必要なツールを売ってる」
そんな気がしてきました。
当然使いこなせない人が多くなるので、そのフォローとして勉強会とかを開催したりしています。その勉強会を有料で開催すれば、さらに儲かりますね!流石です!
でも、プログラミング的な思考があれば、勉強会に参加しなくても使いこなせたりするんですよね。
では「プログラミング的な思考」ってなんだろうってなりますよね?
プログラミング的な思考とは
プログラミング思考についてChatGPTに聞いてみました。このような回答でした。
プログラミング的な思考は、問題解決やタスク実行において論理的で体系的なアプローチを取ることです。これには問題を細かく分解し、パターンやアルゴリズムを見つけ出す能力が含まれます。
なるほど。意味は分かります。でもどうやって身につけるのかサッパリ分かりません。英語学習なら我々は日本語が分かるので、「日本語でどういう意味か?」みたいな取っ掛かりがあります。しかし、プログラミング的思考を身につけるには…まるで何も取っ掛かりがないのです。困りました。
困った時はChatGPTです。聞いてみました。
プログラミング的思考を身につけるための勉強には、まずプログラミング言語を学ぶことが基本です。その後、問題解決やアルゴリズムに関する書籍やオンラインコースを利用すると良いでしょう。また、実際にコーディングを通じて問題を解決する経験も重要です。競技プログラミングやコーディングチャレンジの参加もおすすめです。
ああ…そうきましたか。
つまり…
「プログラミング不要を謳っているノーコードツールを使いこなすためには、コーディングしてプログラミング的思考を身につけなくてはいけない」
…という結論なのです。
ああ…なんという矛盾。
もう、みなさん諦めましょう!
「プログラミング出来るようになりましょう!」
プログラミングって難しいの?
プログラミングって難しく感じますよね?
暗号のような訳のわからない命令を覚えなければいけないとか…入門書を読んでも分からない技術用語が出てきて嫌になるとか…何から勉強すれば良いか分からない…などなど。確かに…とは思います。
人間、理解不能なものは怖いと認識します。暗闇の中を進むのは怖いですよね?それと同じです。だから難しく感じてしまうのは仕方がないことなのかもしれません。
暗闇の中を進んでいくのは最悪命を落とす可能性があります。しかし…
「プログラミングの勉強で命を落とす事はありません!」
ならば、怖くても難しくても進むことに対するリスクは無いはずです。
プログラミングは初学者にとっては難しいと感じるのは当然だと思います。でも「難しい」が「行動出来ない原因」となってはいけないという事なのです。
座学では無理ということ
さて、結論から言いましょう…プログラミング初心者に最もオススメしないのは「座学」です!
「プログラミングを本を読んで覚えるような学び方はしてはいけません!」
…と私は思っています。
一部の例外を除き、真面目な人ほど落ちこぼれます。
でも「プログラミングは基礎から覚えた方が良いよ」って聞いたけど…という人もいるかもしれません。基礎とは座学での原理とかの話ですね。こういう話が出てくるのは何故か?自分なりに考えてみました。
プログラミングがある程度組めるようになった人は…プログラムが組めるようになった後に本を読み、その基礎原理や体系を理解出来るようになります。そこで、いい加減に覚えていた自分を恥ずかしく思う為…初学者に対して…
「基礎からやった方がいいよ!」という挫折しやすい方法を提案してしまう
…気がするのです。そして、自分がプログラミングを覚えた過程すら忘れて…他人には完璧に理論・原理を理解させてからコーティングさせようとしたりするのです。
そして、その方法は…学校教育で基礎を叩き込まれてきた真面目な人に響いてしまうのです。その結果、落ちこぼれてしまう。
私は思います。
「プログラミングなんて分かった気になってまずは作れ!」
…なのです。考えるより慣れろですね。
プロはそれでは困りますが、初学者の取っ掛かりはそこなのです!
楽な道ではないが、知らなくても出来る!
プログラミングについて…まずは作りたいものがなければ手を出さない方が無難です。強烈に実現したいものがないと「広く浅く」やろうとしてしまいます。これ、悪手です。まずは「狭く深く」です。まずは…
「自分が作りたいもの以外は無いものとする!」
…ぐらいの気持ちで行きましょう!
そして、ここでのプログラミングに生成AIが使えます。生成AIはあらゆるプログラミング言語を学習しており、知らない事は無いぐらいです。貴方が知らない事は生成AIが全て知っています。なので、わざわざ座学で勉強しなくても大丈夫と言えそうです!
生成AIがあれば、プログラミングなんか出来なくても良い…は本当?
例えばAIにプログラムを作ってもらったという話…
簡単なプロンプトでテトリスをつくってもらった!
お絵描きツールが簡単に出来た!
…なんて、巷では景気の良い話が飛び交っています!
おぉ、もう苦手なプログラミングなんて覚えくても良いんだ!なんて思いませんでしたか?
でも、自分が作りたいものを生成AIに作ってもらおうとして初めて分かる事があります。それは…
「簡単に望むものを作ってくれない!」
ということ。何となく良い感じのものは用意してくれますが…実際にプログラムを動かしてみると…なんか思い通りになってません。
正しく伝えるという苦行…でも知らなくても手を動かし続けられる
生成AIに自作プログラムを入力し、「ここが動かないから直して」とひたすら言い続ければ、何かしら修正します。うまく修正してくれる事もありますが、ほとんどが全然良くならない…ハッキリ言って苦行です。でも…自分が作りたいものなら頑張れるはずです。
これを100回ぐらい繰り返してみましょう。
そうすると、少しづつ見えてくるものがあります。
「AIに何を指示したら、より良く修正してくれるのか?」
この感覚は重要です。ただ漠然と勉強している訳はなく、目的を達成させるためのステップが身についているのです。これが何故出来るかというと、プログラミングには…
「生成AIに作ってもらったプログラムが正しいかを即時、動かして確認できる!」
という特性があるからです。
つまり、計画→実行→確認→改善というプロセスサイクルを爆速で回す事が可能なのです。これは、プログラミング学習で副次的に身につく最も有用なスキルだと私は思います。
新時代に必要となる新しい価値を生み出すための「プロトタイプ思考」というものがありますが、この思考にも非常にマッチします。なお、プロトタイプ思考については下記の記事を見てください!
https://www.global.toshiba/jp/co-creation/corporate/place/makers-space.html
プログラミングで生成AIを利用する事により、仕事を加速させる能力を得る
ホワイトカラーが仕事で扱うものは全てデータ化する事が出来ます。データ化出来るものは生成AIが爆速で作成する事が出来ます。
「でも、AIって人間より劣るんでしょ?仕事なんて任せられない」
という声が聞こえてきそうです。
でも、プログラミングに生成AIを使い、計画から改善まで爆速で何回もサイクルを回してきた人は分かってきたはずです。
「出来上がりのイメージがあるなら、間違った答えが生成されたら生成しなおして貰えばいいじゃん!」
…って事なんです。
このように仕事を加速するような能力を伸ばすことは、生成AIが出来たから実現したのか?というと、確かにそのような面もあります。しかし、生成AI以前でもプログラミングを行うという事で、この能力を身につける事が出来ていたのです。世界の億万長者の多くがプログラミングが出来ていたという事実が物語っているでしょう。そして、生成AIが、それをさらに加速させるという事なのです。
そんなプログラミングが出来る…プログラマーってどんな人なのでしょう?考えてみたいと思います。
プログラマーの3大美徳というのをご存知でしょうか?
・怠惰(Laziness)
・短気(Impatience)
・傲慢(Hubris)
これですね。
こんな考えを持つ人達が優秀なプログラマーなのです。
プログラマーを知らない人たちは…
「プログラマーって生成AIに仕事を奪われて失業しちゃうね!可哀想…」
なんて思っているかもしれません。でも…3大美徳を兼ね備えた優秀なプログラマーならこう思うはずです。
「早く俺たちから面倒な仕事を奪ってくれよ!」
…なんてね。
もともとプログラミングは生成AI以前から、OSやGUIが作られたり、コンパイラやインタプリタが作られたり、共通処理のライブラリが作られたり、統合環境でのコーディングアシスタント機能がつけられたりと、古い技術の淘汰と作業効率化の塊で、常にその分野では時代の最先端を進み、ついて行けない人たちを振い落としていたと言えます。AIもそんな技術のひとつに過ぎません。
とにかく、頭に描いたものをどれだけ楽に早く実現できるのか?
優秀なプログラマーにとって、それ以外の事は些細な事という認識なのです。
そして、もともと効率化の塊のプログラミングに、生成AIを掛け合わせることにより、信じられないイノベーションが生まれる可能性を感じるのです。
プログラミングを覚え、その先の未来へ
RAG(Retrieval-augmented Generation)という技術が流行っています。これは生成AIだけでなく、検索という既存のプログラミング的な技術を利用しています。
また、自律型エージェントというのもありますが、これもプログラミング的な思考が元になっていると考えられます。
生成AIとプログラミングを組み合わせたサービスはまだまだ黎明期と言えます。つまり…
「巨大なブルーオーシャンが広がっています!」
と言えるでしょう。
ノーコードという言葉に騙されてはいけません。
ノーコードを生かせるのは、しっかりとしたプログラミング思考ができる人のみです!
そして、プログラミングが出来るならノーコードに拘らなくてもプログラミングで何でも出来るようになるはずです。そして…皆で「その先へ」進みましょう!
その先には、恐らくワクワクした未来が待ってます!!
この記事が気に入ったらサポートをしてみませんか?