#
606
2026/1/18
今日のトレンド

Next.jsとGLM Coding Plan

どうも、おはようございます。マイクです。
時刻は朝7時を少し回ったところ、今日は2026年1月19日、月曜日です。
ここからの時間は「zenncast」、Zennで話題のトレンド記事をゆるっと、でもしっかりご紹介していきます。

今日はZennのトレンド記事を、全部で5本お届けしていきます。
技術寄りの話から、ちょっとゲーム寄りのディープなバグ解析まで、幅広く揃ってますので、通勤・通学のお供に最後までお付き合いください。

では、今日紹介する内容に行きましょう。
まず1本目。タイトルは
「Next.jsは『近道』か『迷路』か。迷子の初学者がWebの歴史を遡り、Next.jsの本質が見えてきた話」

Next.jsを触り始めたときに、「なんとなく流行ってるから使ってるけど、これって何がそんなにすごいんだっけ?」って思ったこと、ある方も多いんじゃないでしょうか。
この記事の筆者もまさにそこで立ち止まって、「同じブログアプリを、昔ながらのMVCとNext.jsで作り比べてみよう」と実験してるんですね。で、その過程でWebアプリの歴史を振り返りながら、本質をつかみにいくという、読み物としてもおもしろい構成になっています。

伝統的なMVCは、モデル・ビュー・コントローラーに技術的にきれいに分かれていて、保守性は高い一方で、全ページリロード前提で、インタラクティブさが弱い。「フロントとバックエンドがきっちり分かれてるのは良いけど、ユーザー体験的にはちょっと物足りないよね」という世界。
そこにSPAが出てきて、状態管理と宣言的UI、部分レンダリングで一気にリッチになる。ただ今度は、SEOが弱い、初回ロードが重い、JavaScript依存が強すぎる、という別の問題が出てきます。

じゃあNext.jsは何をやっているのか。
Server ComponentとClient Component、それからSSRやServer Actionsを駆使して、「MVCのSSR+プログレッシブエンハンスメント」と「SPAのリッチなUI」をハイブリッドにまとめているんだ、と整理してるんですね。
ポイントとして筆者が強調しているのが、「技術で分ける」から「機能ごとにまとめる(Colocation)」への発想の転換。さらに「どこまでをサーバー側で、どこからをクライアント側で動かすのか」という境界線設計こそが、Next.jsのコアなんじゃないかっていう視点です。

ReactのコンポーネントとJSXで、1つの言語の中にロジックもUIも近接させつつ、実際には裏側でサーバーとクライアントをいい感じに分配して動かしている。
その仕組みを知らないまま使うと「めちゃくちゃ便利な近道」にもなるけど、トラブルが起きたときに「中身が見えない巨大な迷路」にもなり得る。
だからこそ、歴史をさかのぼって「なんでこの仕組みが必要になったのか」を理解する姿勢が大事だよね、という締めになっています。Next.jsにモヤモヤしている初学者の方にはかなり刺さる内容だと思います。

。。.。.。.

続いて2本目。タイトルは
「GLM Coding Plan入門 〜APIキー取得からopencodeやClaude Codeを駆動するまで〜」

こちらは、Z.AIの「GLM Coding Plan」というコーディング特化のプランを、実際に契約して使い倒してみた、という入門記事になっています。
最近「AIにコードを書いてもらう」というのがかなり一般的になってきましたが、その中でもこのGLM Coding Planをどう既存ツールに組み込むか、という具体的な話が中心です。

まず、ブラウザ上の「opencode」で使うケース。npmで専用パッケージをグローバルインストールして、`/connect`コマンドから「Z.AI Coding Plan」を選択。そこに取得済みのAPIキーを入れて、`GLM-4.7`みたいなモデルを選べば、もうエディタからAIコーディングが使えるようになる、という流れが丁寧に整理されています。
さらに、ローカルで人気の「Claude Code」と組み合わせる方法も解説されています。設定ファイルにZ.aiのエンドポイントやモデル名、APIキーをenvとして書いておくことで、`glm-4.7`をClaude Code経由で呼び出せるようにしているんですね。

おもしろいのが、普段使うClaudeのサブスク環境と、GLM Coding Planを切り替える工夫。シェルのaliasで環境変数を切り替えて、用途によって起動するコマンドを変える運用例なんかも載っていて、「あーこれ実務でやりたくなるやつだな」という感じです。
また、OpenAI互換APIとして呼び出す方法にも触れつつ、「ただしこのプランのクォータはあくまでコーディングツール向けだよ。汎用アプリ連携をガンガンやる用途では想定されてないから注意してね」と、利用範囲の注意点も押さえています。
AIコーディング環境を本格的に整えたい人にとって、かなり実務目線のロードマップになっている記事です。

。。.。.。.

3本目はちょっと毛色が変わります。
タイトルは「マリオワールドで256回エリア移動をするとバグる理由」

スーパーマリオワールド、懐かしいですよね。この記事は、そのマリオワールドの中で「コース内で土管やドアを256回くぐると、移動先がめちゃくちゃになる」という、かなりマニアックなバグを、ROMとRAMレベルで解析している内容です。
ゲームとしては完全にやり過ぎな遊び方ですが、エンジニア的には「なんでそんなことが起きるの?」という好奇心を刺激されるテーマです。

ゲーム内には、エリア移動の回数をカウントしている1バイト変数、RAMのアドレスでいうと$7E141Aという領域があって、1回土管に入るたびにこの値が1増えていきます。1バイトなので、最大255までいくと次は0に戻る、いわゆるオーバーフローですね。
この時点では、別のメモリ領域を壊しているわけではないんですが、問題はこの値を使った「分岐ロジック」にあります。

コースデータを読み込む共通サブルーチンの中で、この$141Aが0かどうかで処理を分けているんですね。0だったら「マップ画面から新しくコースに入りました」、0以外なら「コース内で別エリアに移動しました」と解釈する仕様になっている。
なので、エリア移動を繰り返していって256回目に達すると、値が255から0へ戻る。その瞬間、ゲームは「お、0だ。これはマップから入ってきたパターンだな」と勘違いして、本来とは違うルートでデータを読み込んでしまう。結果、想定外のエリアに飛ばされる、という仕組みです。

移動先が具体的にどう決まるかまでは、記事の中でもまだ完全には解明できていませんが、「バグの本質は1バイトのオーバーフローによって、条件分岐の意味が変わってしまうこと」にあると整理しています。
ゲームの裏側のメモリ管理と、古典的なオーバーフローの問題が直結している、レトロゲーム好きにも、低レイヤー好きにもたまらない内容です。

。。.。.。.

4本目。タイトルは
「開発環境現状確認(2026年)」

これは、画像・デザイン生成系のResearch Scientistの方が、「いま自分はこういう環境で開発してます」というのを、かなり詳しくまとめた記事です。
macOS上のVSCodeから、UbuntuのGPUサーバーにRemote SSHでつなぐスタイルを前提にしていて、「クラウドやリモートサーバー前提の時代の、実務的な開発環境の作り方」がリアルに伝わってきます。

エディタはVSCodeで、拡張とAIコーディングをがっつり活用。その中心に据えているのがClaude Code(Sonnet 4.5)で、「コードを書く」というより、「目標を設定して、方針を決めて、レビューしてもらう」役割がどんどん大きくなっている、と言っています。
ターミナルはiTerm2+tmux、シェルはzsh。ローカルとリモートでプロンプトを変えたり、miseやuvで言語環境を統一的に管理したり、ezaやghq、fzf、dotenvxといったCLIツールも組み合わせて、スムーズなワークフローを作っています。

ハードウェア面のこだわりもかなり細かくて、分割キーボードのMistel MD600に静音スイッチ、32インチ4Kの曲面モニター、昇降デスクとエルゴヒューマンの椅子で、長時間作業時の姿勢と生産性を両立。日本語入力はGoogle日本語入力を使っているそうです。
設定ファイルはすべてdotfilesとして公開していて、chezmoiで管理することで、公開・非公開をちゃんと分けつつ、どのマシンでもすぐ同じ環境を再現できる仕組みを作っています。
今後は、日本語入力まわりでazooKeyを検討したり、Claude Hooksを活用したりしながら、「今のスタイルを壊さない範囲で、じわじわ改善していく」という方針。
環境構築沼にはまりがちな人ほど、「あ、ここまで整理されてると逆に気持ちいいな」と感じるような記事です。

。。.。.。.

そして最後、5本目。タイトルは
「【個人開発】未経験が、Google推奨のベストプラクティスで『最強のCI/CD』を構築してみた🏰」

こちらは、個人開発で作ったLINE Botを題材に、Google Cloud公式のDevOpsベストプラクティスを、ほぼフルコースで適用してみたというチャレンジ系の記事です。
「未経験だけど、ちゃんとしたCI/CDやってみたい」「でも企業の大規模事例はスケール感が違ってピンとこない」という人に、ちょうどいいリアルさの規模感になっています。

アプリ側は、依存性注入やモックを取り入れて、テストしやすい構成に。主要ロジックではテストカバレッジ80%以上を確保していて、「とりあえず自動テストがあります」じゃなくて、ちゃんと信頼できるラインを狙いにいっているのがわかります。
CI/CDパイプラインはGitHub Actionsで構築されていて、Trivyでの脆弱性スキャン、pytest+カバレッジ閾値チェック、そのあとDockerイメージのビルド、Artifact Registryへのpush、最後にCloud Runへの自動デプロイ、という流れ。
認証周りではWorkload Identity Federationを使うことで、従来ありがちな「鍵ファイルをGitHub Secretsに置く」方式から脱却しているのもポイントです。

機密情報はSecret Managerで集中管理し、IAM権限は最小限に。これによって、手動デプロイから「git pushだけで、だいたい4分半後には本番に反映されている」という状態に到達しています。
しかもこれだけやっておきながら、トータルコストは月0.1ドル程度に収まっているということで、「ちゃんとベストプラクティスを理解して設計すれば、個人でもここまでできるんだ」という、かなり勇気をもらえる内容です。
CI/CDやセキュリティに興味はあるけど、一歩目が踏み出せてない方には、良い道しるべになりそうですね。

。。.。.。.

ということで、今日は5本の記事をご紹介しました。
ざっとおさらいすると、
1本目は、Webの歴史をさかのぼりながら「Next.jsの本質とは何か?」を見つめ直す話。
2本目は、GLM Coding PlanをopencodeやClaude Codeで動かすための、実務寄りな入門記事。
3本目は、スーパーマリオワールドの「256回エリア移動バグ」をメモリレベルで解析した、ゲーム×低レイヤーの世界。
4本目は、Research Scientistの方の2026年版・開発環境フル公開。
5本目は、未経験からGoogle推奨ベストプラクティスで「最強のCI/CD」に挑んだ、LINE Bot個人開発の事例でした。

気になった記事があれば、ぜひこの後ショーノートからチェックしてみてください。
番組の感想や、「こんなテーマも取り上げてほしい!」といったリクエストも、どしどしお待ちしています。あなたの一言が、次回のzenncastのネタになるかもしれません。

それでは、そろそろお別れの時間です。
ここまでのお相手はマイクでした。次回のzenncastでまたお会いしましょう。いってらっしゃい!

Related episodes

内容の近いエピソードを推薦しています