Dify
モヤっと思ってたことを整理して言語化してくれてた
下部構造が安定していないときに、その上にレイヤーを重ねてもな、と思ってた
水の上を歩くのも、仕様に基づいてソフトウェア開発するのも簡単だ。それが凍結しているなら。
kenn Difyみたいなノーコード環境は、チャットボットのような外部の人が使う実運用には向いてなくて、内部の人が使うツールをサクッと作って、不要になれば捨てるぐらいの温度感で使う場面に向いている、ということは知っておきたい。
ノーコードって、ようするにビジュアル・プログラミング言語なので。
たとえば、2022年末のChatGPT登場以降のOpenAIモデルだけをみても、
GPT-3の頃には文字補完モデルしかなかったのでチャットっぽいやりとりを実現するために様々な工夫が必要だった(LangChainが登場したのはこの頃、この時代にはとても便利だった)
↓
GPT-3.5でチャットモデルが出てきたことで、ユーザーとAIのメッセージをくっきり線引きして扱えるようになった。これはチャット用途ではとても便利だったが、逆に素の補完モデルとして使うにはやや制限を感じるものになった(LangChainいらなくね?となった)
↓
GPT-4で「関数呼び出し」が出てきたことで文字出力とは別のout-of-bandな領域に「関数を呼び出す」というメタデータが付与されるようになった(ただし、信頼性は低かった)
↓
2023年末にJSONモードが誕生し、出力自体をJSONで吐けるようになった(信頼性は上がったが完全ではなかった)
↓
2024年にはJSONスキーマによる指定が可能になった(信頼性はかなり万全となったが、一方で指定できないパターンがあることが判明した)←今ココ
こういう仕様変更や非互換なバージョンアップが発生するたび、それに合わせて面倒なツギハギ作業をしているのがプログラマーの日常。
その面倒さをユーザーに丸投げするというのは、ユーザーに(オレの作った独自のビジュアル言語を使って)プログラマーになれ、と言っているのに等しい。
プログラマーであっても、アップグレード作業が面倒すぎると、なんか不毛な仕事をさせられてる感が強くなり、それを「技術負債」と呼んだりする。負債が増えすぎると思い切って「自己破産」して、つまり捨てて別のツールを探そう、もう一回人生をやり直そう、となる。
AIのようなモジュールの責任境界がどんどん上へ上へと高速にシフトしていく世界では、そういった破壊的な変更が次々に起こる。
しかも、ビジュアル言語で書いたプログラムの場合、なにか問題があっても、どこが悪いのかAIに聞けない。プログラミング言語なら、範囲選択してAIに聞くだけでどこに問題があるのか教えてくれるのに、俺様ビジュアル言語であるがゆえにAIの力を使えない、という矛盾が生じる。
それでいて、Difyがやっていることはプログラミング言語の薄いラッパー(皮一枚かぶせただけ)なので、見た目がビジュアルになっているだけで、実は内部の複雑さがむき出しになっており、ほとんど簡単になってもいない。
だったら、ノーコードよりコードを学ぶほうがいいんじゃない?ってこと。コード自体はAIの力で支援を得られやすく、ClaudeのArtifactsもあるし、v0もcursorもあるし、どんどん書きやすくなっている。
ところで余談だけど、自分のキャリア最初期の仕事が、まさにノーコード(という言葉がなかったぐらい最初期の)ツールを作ることだったので、教訓が身に刻まれている、ということも添えておきたい。