ムーザルちゃんねるです!
動画をご覧いただきありがとうございます。
📗 チャンネルについて
このチャンネルでは、zaru (ざる)と moo (ムー) がWebアプリのプログラミング勉強をしている初学者や、中級者を目指している方向けに、簡単に楽しくプログラミングを学べるオンライン勉強会をお届けします。皆さんが継続してプログラミングを学び続けられる、一つのキッカケになれば幸いです。
🔧 主に取り扱う技術について
・Web 系全般
・JavaScript / TypeScript
・HTML / CSS
・UI デザイン
・Ruby / PHP / Python
・開発環境系 / Git / エディタ / Linux
質問やリクエストは、Twitter などでお気軽に聞いてください。
チャンネル登録やフォローもお待ちしております!
📝 Zennでも技術記事書いてます
zenn.dev/p/moozaru
🎉 公式Twitterアカウント
ぜひフォローしてください
twitter.com/moozaru_ch
👯♀️ メンバー
・zaru ( twitter.com/zaru )
・moo ( twitter.com/moobugs )
Пікірлер
最近Tailwind触りだしたので、めっちゃ参考になります! TailwindVarianatsはstichesとかvanilla-extractでいうところのrecipesみたいな感じで使えて便利。
間違っていたらすいません。 むーさん、MONGOL800でギター弾いていましたか?
残念ながら..弾いておりません。
すごく便利で使い易くて、その上動画が分かりやすいです!!🤩
すごくわかりやすいです😢
良かったです😆
勘違いだったらすいません… propsから情報漏洩する対策がDTOというところ、「Server->Client間の転送層としてのDTO」という独自の設計前提でお話しされてる気がしました。 主にバックエンドの世界におけるDTOはサーバー内処理において不変なデータ転送であることを示すこと使うので、最初「あー、React Taint APIでDTOを転送禁止にする話かな?」と思ったんですが、どうもそうではなさそうでかつClientへの流出をDTOなら防げるような言い回しが、本来のDTOの意味に沿ってない気がして気になってしまいました。
ちょっとわかりにくい話しですいません。 話したかった意図は、ServerComponent内部で、DBから取得したデータをpropsなどで伝搬する際にDTOの考え方を適用したいということでした。Prismaで取得したオブジェクトをそのまま渡さず、DTOで明示的にフィールドを渡す。ServerからClientという意味では仰るとおりReact Taintが有効になりそうですね。
まさに今日ハマってた テンプレートリテラル使いたい
まさに今週ハマってた
他の人も指摘していますが機能追加や仕様変更が多くて全然技術スタックとして枯れないところが嫌いですね Reactのメタフレームワークだけあって影響力も大きく、言ってしまえば生煮えの技術スタックなのに新規開発でむやみに採用されがちなところも嫌いです🤪
カジュアルにITの面白さを学べて、いつも為になってます! 動画投稿ありがとうございます✨
vue , nuxt からフロントエンドに入った身ですが違うフレームワーク知れて興味深いです
普段置換でやってたけど、そっちの方が効率良さそう🎉
クライアントコンポーネントの下にサーバーコンポーネントが必要なとき
revalidatePathの使い方はそんなふうに使うのか、単にキャッシュ再読み込みして現在のデータ取ってくるのだと思ってた。
フロントエンドとバックエンドでそれぞれ作るという考えから、 開発はデザインと機能にそれぞれ集中できる時代になっていくってことかな。
sql は Next.js + Prisma の合体技かな?
全体的にNextjsの良いところと言うよりReactの良いところって感じがしたんですが、ここで紹介されたうちではNextjsならではなところってなんですか?
revalidatePathでしょうか。これのお陰でグローバルな状態管理をせずとも、データ更新時に最小限に画面の再描画をしてくれます。また、動画では紹介しませんでしたが、Parallel Routesは個人的にお気に入りです。これを上手く使うとClientComponentの境界線を突破してServerComponentに切り出せるので、状態管理が楽になります。 React19新機能をフルサポートしているのが現時点では実質Next.jsだけなのでどうしても被っちゃいますね。今後、他のフレームワークがサポートを始めたら違いが出てくると思うので楽しみです。
Nextめっちゃ好きなんだけど、更新が早すぎてベストプラクティスが確立してなかったり、結構問題ありのバグ含んでたりする、、、新機能にインフラ側がなかなか対応しなかったり、、、
そうですねー。僕も今苦労している点は世の中的にもこう書いたほうが良いなという経験に基づいたベストプラクティスが確立されていない点ですね。なるべく改善されるべくアウトプットをするように心がけていますが、こればかりは時間がかかりそうです。バージョンアップが不安定という問題も、v13-14時代ではすごかったですね…。今はかなり改善されたなという印象はあります。
このようなスタイルを採用するとフロントの人間にもバックエンドの責務が増えそうで嫌だな いち労働者視点では見渡すべき範囲は狭い方が楽
この動画のおかげでNext.js勉強したくなりました。 質問です。実案件ではライブラリやフレームワーク、テストツール、ビルドツール等をどのくらいの頻度もしくはタイミングで最新に追従されてますか? もしくはフロントは流行り廃りが早いので、フルスクラッチで書き直して移行するのが多かったりするのでしょうか? その辺の苦労話もあれば動画にしてほしいです。
基本、各プロジェクトとチーム体制に合ったものを選定するという前提を置きつつ、最新に追従という意味ではなるべく早く対応しています。極端に言うと毎日npm updateします。これは各ライブラリのバージョンが古い状態のまま放置すると、現実的にバージョンアップが無理という状況が生まれてしまうからです(工数が膨大になるため)。ただ、まったく別の最新フレームワークやライブラリで作り変えるということはほとんどしません。それをしても事業の価値につながるケースはほとんどないため。…雑に書くとこんな感じです!
@@moozaru > 極端に言うと毎日npm updateします。 なるほど。毎日というのは考えたことなかったので参考になります。
動画の内容と少し逸れますが、最近Nuxt.jsで初めて開発しました!とても楽しいです!Next.jsもやってみたい!
状態管理が減らせるというのは、サーバーコンポーネントでfetchできたり、サーバーアクションを使えるからで合ってますか、、、? だとすると描画ごとにDBに問い合わせることになると思うのですが、状態管理でグローバルに管理するものの境目というか使い分けはどういう基準がありますか?
今の所、グローバルに状態管理するものはほぼないですね。あるとしたらuseContextで認証したユーザのパーミッション情報や色などのテーマカラーなど、サイト全体で使う設定値のようなものです。それも外部ライブラリを使わずにReactだけでやっています。
前回の動画の続きということでとても楽しかったです。ありがとうございました revalidatePath というものがあるのですね、とても便利ですね。Next.jsをもっと触ってみたいと思います。とても勉強になりました🥰 質問よろしいでしょうか。LaravelもRailsも経験と実績があるお二人はNext.jsでのバックエンドの書き方や、各種機能などを力不足だな、または苦労した。というところはありますでしょうか? といいますのは、お二人の動画を拝見してNext.jsの魅力をたくさん知ることができフロントもバックエンドも全部TSでやってみよう😍と思ったのですが、Next.jsのバックエンドは他のバックエンドとどう違うのかなと思いました。私はLaravelでのバックエンドに慣れているので、これからNext.jsでバックエンドも勉強か。。。と躊躇してしまいました。 いつも楽しい動画ありがとうございます。次の動画も楽しみにしています🥰
動画視聴ありがとうございます!まずNext.jsの学習についてですが、今Laravelをやられているのであれば、それをそのまま継続した方がいいと思います。というのも、同じ領域のフレームワークを同時に学ぶのは普通に疲れちゃいますw 一通り使いこなせるようになってからの方が違いが認識でき面白く学べると思います。
Next.jsで苦労したところや力不足だと感じたのは、なにかトラブルが起きたときにNext.js自体のソースコードを読んで原因を探るのですが、コードが難しすぎて全然理解できなかったことですw 別の言い方をすると、レアな不具合に遭遇するとかなり迷子になります。
@@moozaru ご回答ありがとうございます。原因究明のときですか、レアな不具合とかもあるわけですよね。とても参考になりました。ありがとうございました。☺
@@moozaru アドバイスありがとうございます。そうですよね。同時に複数のことをすると深く学べなくなりますし、しんどいですよね。どうもありがとうございました🥰
next初学者なのですが、server actionsがあれば以前紹介されてたtRPCはもはや不要なんですかね??🤔
フルスタックにNext.jsを使うのであればtRPCは使わなくても良いかなと思います。ただ、tRPCは特定のフレームワークに強く依存するわけではないので、バックエンドをNestJSやExpressで、フロントをNext.jsやSvelteなど他のものを使うことが出来るのが魅力ですね。
非常に役立ちます。わかりやすい説明でかつ、例題もあるのでありがたいです。
どんな技術も使う人の力次第。面倒になったと思う人は技術力が未熟なわけだし、便利になったという人はうまく道具を使える人ってだけ。 さもNext.jsが悪いみたいに評価しているって人は、自分の力をまず評価してみては?
これ世の中のサイトでlayoutで認証やってる人多そうですね
初心者です! Server Actions 内でセッション情報確認しなければならないということですが、それは middleware にてチェックできるのでしょうか??
いや、厳しそうですね... 例えば Auth.js を使っている場合は、server actions 内で getServerSession とかでチェックしないといけないですよね。
そうですね物理的にはできなくもないですが、Server ActionsのEndpointを特定するのが非現実的なので関数内部でチェックする必要があります。
髭剃ったほうがよさそう、、、 生やすならおしゃれな感じで生やしてみては
ありがとうございます。 苦手領域なのですが、がんばらないと、、
バックエンドをメインでやっていたのでNext.jsは知れば知るほど不便でめんどくさい。
Nextはちゃんと触ったことないのですが、こんな面倒なんですね。非常に面白い視点での会話でした。 開発規模にもよると思いますが、そこまでのリスクを背負って利用するメリットはあるんでしょうかね。。。優秀なエンジニアさんであれば生産性は上がって良いんでしょうが。
これは言われないと気づかなそう。 私は普段Rails(+フロント構成のSPA)しか書いてないので、ここで話された地雷は意識しないと踏みそうだなと思いました。
いつも楽しく動画を拝見しています🥰 素人なのですが教えていただけないでしょうか。いろいろと気を付けないとNextの セキュリティは難しいということがわかりました。どうもありがとうございます😍 セキュリティを楽にできるように考えるとバックエンドを railsやLaravelでおこなって必要なデータだけフロントに出すようにしたらなど 考えてしまったのですが、お二人はバックエンドもNextでやる メリットや理由というのをお伺いしたいです。
コメントありがとうございます! まず、そもそもフロントエンドとバックエンドの距離がある事自体に不満がありました。従来のRailsだけ、Laravelだけで作る形式は良かったですが、そこからReactやVueが入ってきた時に2つのアプリを作っているかのような手間を感じてしまいました。そこにフロントとバックの境界線をなくしたように感じるNext.jsは個人的にはすごく良いです。 セキュリティに関してはNext.jsが弱いという事はなく、どのフレームワークを使っていても同じような問題は起こり得ます。 なので、あとは開発体験として自分にとってしっくりくるものを選んでもいいかなと思います。
@@moozaru すぐに返信をいただいてどうもありがとうございます☺ 私はLaravlerだったのですが、今までは全部Laravelでやっていました。しかしフロントを柔軟に作りたいと思い、今バックエンドはLaravelそしてフロントはReactでやっているところです。 はい。おっしゃる通り、2つのアプリを作っている感じがありますね。Authなど、認可のCROSで手間取ってしまったりしてこれが、Next.jsで全部すればこういう苦労もないのかなと動画を拝見しながら考えました。 また、2つの開発サーバーを立ち上げながら、あそこを修正しないと、ああ、こっちのVSCODEじゃなかった、という感じも煩わしいなとも思いました。 Next.jsはDBを使わないちょっとしたものしか作ったものはないのですが、今後は丸ごと全部、Next.jsでやってみようと思います。どうもありがとうございました🥰
dockerを覚えたくて以前見てて、まだ覚えられないですが、しばらくして見返してみるとめちゃくちゃ面白いですね!二人の会話が漫才に見えます✨🎵w
クッキー🍪を、もぐもぐする説明がわかりやすくて覚えました😆 ありがとうございます!
A philosophy of system designはコメントの書き方とか関数や名前の付け方みたいな経験則で流してたようなところもきちんと言語化されてたので面白かったです! 他の2冊も読んでみたいです。
おお!面白いですよね! philosophy 読まれていたら tidy の方は読み応えがないかもしれませんが… ぜひ!
オライリーさん、PDF版があるので好きです(英弱の私でもサクッとコピペでChatGPTに聞けるとこが特によいw)
たしかにコピペで聞けるのめっちゃいいですね! 僕は紙しか読んでないので…使えない技ですw
コンピュータ関連の用語はそのままカタカナになるパターンが多いし、使われる単語は大体決まっていて同義語を使いまくることもないし、構文も簡単で読みやすいと思います。慣れてくると日本語訳をせずに読めるようになってきますね。それで英語に自信が持てたと勘違いして他分野の書物に手を出してショックを受けることが多々ありますが。
…ぼくも小説に手を出して一瞬で挫折しました。。
おひさしゅう😊
素晴らしい👍
いつも動画楽しく拝見してます! 8:55 分割代入だとreadonlyが外れる、ということに触れられていましたが、これは特に問題ではないように思います。 関数の引数の型として設定するreadonlyの意図は、渡されたオブジェクトを書き換えないこと(副作用を生まないこと)がメリットです(そのため、 @ typescript-eslint/prefer-readonly-parameter-types のようなルールも存在します)。分割代入された場合、すでに元のオブジェクトとは切り離されて値のみが代入されていて、副作用を与える心配はないため、問題ありません。 Next.jsの件も、再代入することではなく、副作用を与えないことが目的だと思います。 引数への再代入を禁止したい場合は、ESLintの no-param-reassign ルールを使うのがよさそうです。 ちなみに自分もreadonlyをできるだけ使いたいと思っているのですが、実際のところ外部ライブラリの型が入ってくると途端に困難になるため諦めました…。
コメントありがとうございます! 副作用を生まないことというメリットの観点がすっかり抜けておりました..。おっしゃる通りですね! また eslint についても教えて頂きありがとうございます! > 困難になるため諦めました → なかなか難しいのですね...。
はじめてreadonlyを知ったときは、へーくらいだったけど、イミュータブルが実感できると好きになる。
as const触れて欲しかったなぁ
触れようかと思ってたのですが、長くなりそうで端折っちゃいました…涙 また機会ありましたら!
本当に強制しちゃうならESLintとかのLinterで縛るのが楽ですね
関数型プログラミングとは何ぞやっていう話が聞きたいです
更新待ってました!
ありがとうございます!
0:00 雑談 3:15 本編
とても勉強になりました
いつかvimしたいなーと思い、gvim使っています。
ロック画面、莉犬くんじゃないか❤
初手からすんだもん女の子概念で脳が破壊された