Transcript
00:00:00先週、SvelteKit 3とSolid 2のリリース候補版が発表されました。
00:00:08まだ完全に安定版ではありませんが、もうすぐです。
00:00:10数年前なら、これはかなり興味深い話題になっていたでしょう。
00:00:15これについての動画がたくさん作られ、もちろん私自身も投稿していたでしょうし、コースさえ作られていたかもしれません。
00:00:19しかし今日の疑問は、そんなことはまだ重要なのかということです。
00:00:24新しいフレームワークや、今回のような新しいバージョンの登場は、果たして今でも意味があるのでしょうか?
00:00:30それともAIの時代においては、どうせReactがすべてなのだから関係ないのでしょうか?
00:00:36そもそも気にする必要があるのでしょうか?
00:00:38つまり、AIが膨大なコード、もしかしたらすべてのコードを書くのだとしたら、基盤となるフレームワークやライブラリなど気にする必要はあるでしょうか?
00:00:46ですが、私は大いに気にするべきですし、新しいフレームワークやライブラリはやはり重要だと言いたいのです。
00:00:52もちろん、普及させることは以前よりもはるかに難しくなっているとは思います。
00:00:59もともと決して楽なことではありませんでしたが、今はさらに状況が厳しくなっているかもしれません。
00:01:05それでは詳しく見ていきましょう。
00:01:06今回は、これらのフレームワークやバージョンが具体的にどういうものかについては詳しく取り上げません。
00:01:13ですが、公式の発表ブログ記事へのリンクを貼っておきますので、そちらを参考にしてみてください。
00:01:17ただ、どちらもかなり興味深い内容であることは間違いありません。
00:01:21実際に、AIとどれくらいうまく連携できるかを確かめるために、私の新しいプロジェクト(今のところは社内プロジェクトですが)でSvelteKit 3を特定して使ってみる予定です。
00:01:33なぜなら、それが重要だからです。
00:01:36新しいフレームワークに反対する理由、あるいは新しいフレームワークの重要性に反論する根拠の一つとして、AIにはお気に入りの技術スタックがあるという点が挙げられます。
00:01:49それがもちろんReactなどです。
00:01:52つまりReactやNext.jsなどですね。
00:01:55それはその通りです。
00:01:56確かにその通りなのです。
00:01:56それは間違いありません。
00:01:58しかし、開発者が適切なコンテキスト(文脈)を与えてやれば、AIは新しくて未知のものでもうまく扱えることが分かっています。
00:02:09そして、それは決して過小評価すべきではありません。
00:02:12もちろん、何も方向性を示さずにただAIに任せきりにし、AIが行う判断をまったく気にしないのであれば話は別ですが。
00:02:21つまり、いわゆる「Vibe Coding(ノリでのコーディング)」をしている場合ですね。特定の使い捨てプロジェクトや単発のソフトウェアであればそれで問題ないこともあります。
00:02:28しかし、もしそうであれば、AIはSvelteKitのバージョン3が何であるかを必ずしも理解しないでしょう。
00:02:35そして、あなたもそれを気にすることはしないはずです。
00:02:37AIに対してそのバージョンを使うように指示することすらないでしょう。
00:02:39ですから、そうした世界においては、新しいフレームワークやライブラリの居場所がないのは当然です。
00:02:46もちろん、開発のすべてがVibe Codingというわけではありません。
00:02:48それにも適した場面はあります。
00:02:50数年後にVibe Codingがどのような役割を果たすのか、そしてこうした技術の選択がどうなるのか、数年後にもそれが重要であり続けるのかは私には分かりません。
00:03:00しかし現時点では、AIをきちんと主導することで多くの成果を確実に得ることができます。
00:03:07それは控えめに言ってもそうです。
00:03:08そして、あなたはAIを主導すべきなのです。
00:03:11私たち開発者の役割は、まさに変化しつつあります。
00:03:15私たちは依然として、何を構築するか、そしてそれをどう構築するかをコントロールするべきです。
00:03:19コードを自分で書かなくなるからといって、コードやアーキテクチャ、下す決断について関心を払わなくてよいということにはなりません。
00:03:29それは今までと同じか、あるいはこれまで以上に重要になっています。
00:03:34あるフレームワークを他のものより選ぶ理由は、現在では以前とは異なっていると思います。
00:03:422019年頃などを振り返ると、特定のフレームワークを選ぶ最大の理由の一つはもちろん、開発者体験(DX)でした。
00:03:54開発者として作業していて心地よいと感じられるかということです。
00:03:58そのため、それが重要でした。特定のフレームワークやライブラリを使って多くの時間をコード記述に費やすことになるからです。
00:04:04ですから、当然心地よく作業したいわけです。
00:04:06もっとも、いつでもそんな選択ができるとは限りません。
00:04:09特定のフレームワークやライブラリの使用を強制されるような職場で働いている場合もあるでしょう。
00:04:15しかし開発者として、勤務先の会社や、特に自営業である場合には、どのように意思決定がなされ、どの技術が採用されるかに対して、一定の交渉力や影響力を持つことができますし、持てていました。
00:04:29ですから当時、フレームワークが優れた開発者エルゴノミクスを備えているか、良い開発者体験を提供しているかは確かに重要でした。
00:04:41もちろんそれがすべてではなく、当時からパフォーマンスやバンドルサイズも重要でした。
00:04:46他にも重要になり得る要素はあります。
00:04:49例えば、JavaScriptのフロントエンドフレームワークなどの文脈で言えば、特定のフレームワークでサーバーサイドレンダリング(SSR)を行うのがどれほど簡単か難しいかなどです。
00:04:58このように多くの重要な側面がありましたが、開発者体験に関する側面は現在では重要性が低下しています。
00:05:05開発者体験はもはやあまり重要ではないと言っていいでしょう。
00:05:10今重要になってくるのはAI体験であり、何と呼ぶべきか分かりませんが「AX」のようなものでしょうか。
00:05:16もちろん、そういった要素は非常に重要です。
00:05:19そしてパフォーマンスやバンドルサイズなどの要素も、もちろん依然として重要であり続けます。
00:05:27そしてAIはコードを吐き出すのが非常に速いため、どのフレームワークを使うかという重要性は、ある意味では以前よりも低くなったと言えるかもしれません。
00:05:43しかしそのおかげで切り替えが以前より容易になり、取り組んでいるアプリやプロジェクトにとってどの側面が重要なのか、何が自分にとって一番大切なのかをしっかり見極め、それに最適なフレームワークやライブラリを選んで使えばよいのです。
00:06:00開発者体験などを気にする必要もありません。
00:06:03エコシステムについても、それほど気にする必要はなくなっていると言えます。
00:06:07もちろん、エコシステムは依然として重要です。
00:06:09一つの要素であり、例えばReactを使っていれば、当然巨大なエコシステムの恩恵を受けることができます。
00:06:17ShadCNがあり、他にも数多くのライブラリが存在します。
00:06:20しかし、重要性が低くなった要素の一つとして(私にとっては残念ですが)、その技術に関するチュートリアルの数があげられます。
00:06:29なぜなら、繰り返しますが、もう自分でコードを書くわけではないかもしれないからです。
00:06:33そのため、それは以前ほど重要ではない要素の一つとなります。
00:06:35そしてエコシステムのもう一つの側面であるライブラリなどについても、確かに存在するのは素晴らしいことです。
00:06:41しかしAIは、あなたが作らせたいものを何でも作り出すのがかなり得意です。
00:06:46もしSvelte用の独自のShadCNが欲しいと思えば(Svelte用のShadCNがすでに存在することは知っていますが)、
00:06:54Reactには存在するけれどお気に入りのフレームワークには存在しないライブラリの独自バージョンを作りたい場合、AIに頼んで作ってもらうことができます。
00:07:02AIに人気のReactライブラリをフォークして、お気に入りのフレームワークに移植するように頼むだけでいいのです。
00:07:11小さなサイドデモプロジェクトをいくつか作るだけならそれだけの労力は価値がないかもしれませんが、より大きなプロジェクトであれば十分に価値があるでしょう。
00:07:19そういったことが可能なのです。
00:07:21ですから実際のところ、エコシステムは依然として重要ではあるものの、以前ほど不可欠ではなくなっていると言えます。
00:07:28そして先ほども触れましたが、今重要になるのは、いわばAI体験(AX)なのです。
00:07:33それはいどういう意味でしょうか?
00:07:36これにはおそらくいくつかの異なる意味が含まれるでしょう。
00:07:39私が意味するのは、AIが、使わせたい対象(フレームワークやライブラリ)をどれほど簡単に学習・理解できるかということです。
00:07:47そして、そのフレームワークがAIにどれほど優れたコードを書くよう強制できるかということです。
00:07:54例を挙げてみましょう。
00:07:55「Effect」というライブラリがあります。
00:07:57EffectはJavaScriptのフロントエンドフレームワークではありませんが、開発者が複雑な同期的・非同期的なプログラムを簡単に作成できるように設計された、JavaScriptまたはTypeScriptのライブラリです。
00:08:08例えばバックエンドで使用することができます。
00:08:10様々な機能が内蔵されています。
00:08:12本当に素晴らしいものです。
00:08:13Effectが優れている理由の一つであり、少なくとも現在特定のニッチで人気を集めている理由の一つは、多くのルールが最初から組み込まれており、それが積極的に強制されるという点にあります。あなたやAIが間違ったコードを書いていると、警告を発してくれるのです。
00:08:35Effectライブラリの特定のルールに違反している場合、TypeScriptのライブラリであるためTypeScriptを深く活用しており、厳格な型チェックやその他の多くの機能によって、特定のルールセットに従って特定の方法でプログラムを書くよう強力に強制してくれます。
00:08:54したがって、AIと作業する際には、ルールを強制し、AIが勝手に創作したりルールから外れようとしたりしたときに警告してくれる仕組みがあれば、それは非常に有益なことなのです。
00:09:09それこそが良いAI体験の一側面であると言えます。
00:09:12特定のルールを強制し、犯しうる間違いの量や、コード内に生じるばらつきの量を最小限に抑えてくれるライブラリやフレームワークと作業すること、それが一つのポイントです。
00:09:28それが1点目です。
00:09:29もう一つの側面は、AIにとって何かを学習することがどれほど簡単かという点です。
00:09:32そしてここでは、もちろんドキュメントがすべてです。先ほど、AIは新しくて未知のこともかなりうまく扱えると述べました。
00:09:44確かにReactに関する膨大な知識が組み込まれていますが、ある意味では、それらの公開リポジトリから多くの悪いパターンを学んでしまっているという点で、それはマイナスとも言えます。
00:09:56しかし、適切なドキュメントのページをAIに指示するか、正しいスキルを与えさえすれば、特定の技術を非常にうまく使いこなすことができます。
00:10:07私はいつもそうしています。
00:10:09ライブラリやフレームワークの新しいバージョンと一緒にAIを使っています。
00:10:13例えばEffectと一緒に使っています。Effect自体は新しくありませんが、バージョン4は新しいものです。
00:10:18また、「Alchemy」と呼ばれるかなり新しいクラウドインフラソリューションでも使っています。
00:10:25ドキュメントを渡すか、あるいは私が好んでやっているように、AIに詳細な調査を依頼します。
00:10:31初期のドキュメントを渡してさらに深く調べさせ、特定のライブラリを使って作業しているプロジェクトに放り込めるスキルを作成させると、本当に素晴らしい結果が得られます。
00:10:42こうしたすべての理由から、要するに、新しいフレームワークやライブラリのバージョンは今でも大いに重要であると私は考えています。
00:10:49もちろん、新しいバージョンだけに限りません。
00:10:51まったく新しいライブラリやフレームワークも非常に重要です。
00:10:55しかし、その理由は多少シフトしました。
00:10:58先ほども述べたように、パフォーマンスなどの要素は常に重要であり続けます。最終的には、エンドユーザーのためにプロダクトを構築しているはずだからです。
00:11:06社内ツールなどの場合は、エンドユーザーがあなた自身であることもあり得ます。
00:11:10それでも、動作が速く、頻繁にクラッシュしないものが求められます。
00:11:14したがって、そうした点はすべて重要です。
00:11:16それに加えて今日重要になっているのは、特定のフレームワークやライブラリがAIとどれほどうまく連携できるかという点です。
00:11:25そしてもちろんそれは、これらのフレームワークやライブラリがどのように開発されているか、あるいは開発されるべきかを変えるものです。
00:11:30また、これらフレームワークの背後にいる開発者たちの優先事項がどうあるべきかも変えることになります。
00:11:34彼らが目指すべきなのは、AIに特定の方法で作業を強制し、AIが犯す可能性のあるミスの量を最小限に抑える仕組みを構築することです。
00:11:43結局のところ、私たちがやろうとしているのは、非決定的なものであるAIを、ある種の決定的な世界に無理やり適応させ、両者のいいとこ取りをすることです。AIの柔軟性とスピードを手に入れつつ、AIが完全に暴走してひどいコードを吐き出すのを避けるためです。
00:12:03そして、新しいフレームワークやライブラリは、ここで重要な役割を果たしていると思います。
00:12:09そのため、こうしたフレームワークやライブラリの学習方法も確実に変化しています。
00:12:14開発者であるあなたも、新しいフレームワークやライブラリを学ぶために巨大なコースに何時間も費やすことは、おそらくなくなるでしょう。
00:12:23代わりに、ドキュメントやYouTubeの動画などを通して基礎を短時間で押さえるようになるでしょうし、そうすべきです。
00:12:33もちろん、コースのあり方自体も変化しています。
00:12:36AIを通じてどんなものであれ効率的に作業するためには、作業対象について基本的な理解を持っていなければならないため、私も提供するコンテンツを変えています。
00:12:49AIに何を頼むべきか、何に注意すべきか、潜在的な落とし穴やベストプラクティスなどを理解しておく必要があるのです。
00:12:56このように、物事の学び方や何を採用するかを決める方法は確かに変わりつつあります。
00:13:00だからといって、フレームワークやライブラリを巡るイノベーションが重要でなくなったわけではありません。
00:13:06AIにより明確なルールを与えるフレームワークに向けてのイノベーションの余地や空間は、これまで以上にたくさん残されているため、以前より重要になっていると思います。
00:13:16そしてもちろん、より高速で、パフォーマンスが高く、エラーのないアプリケーションの構築を可能にしてくれるフレームワーク、ライブラリ、ツールに対する需要は常に存在します。
00:13:26なぜなら最終的には、先ほど述べたように、それこそがAIの有無にかかわらず、私たちが皆目指すべきことだからです。