こんにちは。エンジニアのりゅーそうです。
microCMSのエンジニアチームでは、毎週1時間ほど社内勉強会をしています。
有志のメンバーが話題を持ち寄って発表したり、適当にテーマを設けて雑談したり、、、とゆるく数年間運営されています。
今回はそんなmicroCMSの勉強会ではどんなことが話されているのか?10月(全5回)で話した内容を紹介したいと思います。
第1週
CognitoとDynamoDBの使い分けについて
さっそく社内のドメイン知識のお話です。私、りゅーそうが話しました。
microCMSではCognitoでユーザー管理を行い、Cognitoの情報をDynamoDBに同期して利用しています。
歴史的背景からCognitoをデータストアとして利用してしまっているアンチパターンの紹介をしました。
また
- Cognitoでは認証のみを責務とする。
- DynamoDBでは、データストアとしてデータの表示・認可を責務とする。
というようにそれぞれのAWSのサービスの特性に合わせた使い分けやmicroCMSではどのようなデータをそれぞれ持っているのかを解説しました。
ドメイン知識を文書として貯めておくことで、AI活用にも繋げていけたら良いですね。
勉強会では業務と関連がうすい話がされることも多いですが、ドメイン知識みたいな「業務!」という感じの話がされることもあります。
Goのcontextについて
プラットフォームチームのエンジニア寺田さんによるGoのcontextの解説です。
contextリリース時のRelease Note(https://go.dev/doc/go1.7#context)を見ながらContextの仕組みや使い所について議論しながら話しました。
「Do not store Contexts inside a struct type; instead, pass a Context explicitly to each function that needs it」(https://go.dev/blog/context-and-structs)といったstructにcontextを定義するアンチパターンの紹介や、
contextパッケージの目的
- デッドライン
- キャンセル信号
- リクエストスコープの値
についての解説をしていただきました。microCMSのソースコードをみながら具体的な使い方を紹介していました。現状microCMSでは言語情報の保持にcontextを利用していますが、それはリクエストスコープに当てはまるのか?など具体的な議論もできて大変勉強になりました。
第2週
この週はりゅーそうは健康診断でお休みだったので、議事録などから雰囲気をお伝えします。
データクレンジングの仕組みを作成しました
プラットフォームチームのエンジニア北條さんによるデータクレンジングについてのドキュメントの解説・共有です!
本番環境に存在する不整合データの修正や、既存データに合わせた更新など本番環境のデータクレンジングを行う際に気をつけたことや、まとめた作業フローを共有いただきました。
データマイグレーションなども含めて、本番データをいじる際はこういったフローが存在すると心理的安全性が高いな...と個人的に感じるのでありがたいですね。
ちなみにmicroCMSでは、誤作業を防ぐための動作確認の仕組みや、データ修正はCI経由で行うなどのワークフローが決まっています。
Blacksmith についてざっくりと調べてみた
プラットフォームチームのエンジニア福田さんによるBlacksmithの紹介がありました。
Blacksmith とは GitHub Actions の実行環境(ランナー)を置き換える、SaaS 型の CI/CD 最適化サービスだそうです。
福田さん曰く、Blacksmithは「物理で殴っている。(笑)」そうで、ハードウェアの最適化などを行い、GitHubActionsよりもパフォーマンスが優れているというメリットがあるそうです。
microVMなど内部の仕組みについても解説いただきました。
管理対象のサービスが増える(GitHub で完結しない)というデメリットも挙げつつ、今後microCMSでも採用が検討されるかも....!?(追記:採用され、運用が進んでいます!)。
こういった勉強会で紹介したサービスやOSSが実際に採用されるケースもあり、勉強会が技術提案の場となっているのもとても良いなと思っています。
第3週
Vite+ についてまとめる
でぃーすけさんによる Vite+ の紹介です。Vite+ とはJavaScriptの開発でも、Goのように「go fmt」などとするだけで開発用コマンドが叩けるようにエコシステムの統一を図るものだそうです。
https://viteplus.dev/
JavaScriptのライブラリが成熟してくるとエコシステムをまとめるムーブがおこるといったような歴史的な会話もして面白かったです。
microCMSが Vite+ を採用する予定は今のところ可能性が低そうですが、Vite lintの内部で使用されているOxlintはESlintとの兌換性があることなどが知れて勉強になりました。
JavaScriptのライブラリやエコシステム周りの進化は早くて多いので、勉強会で整理してもらえるとありがたいと感じます....!
aquaとmiseについて
プラットフォームチームのエンジニア石井さんによるmicroCMSで利用しているaquaとmiseを mise に統一するという提案です。
これまでmicroCMSでは aqua と mise を使用してライブラリのインストール・管理を行っていますが、これを mise に統一することで、管理をしやすくするようにするとのことです。
aquaのLazy Install(初回実行時に自動インストールしてくれる)がなくなるので、GitHub Actionsにて使用するツールを明示的に書く必要があり、移行についてはやや手間がかかりますが、明示的にツールを書くことでむしろ依存関係を可視化するメリットがあることなどを話していました。
microCMSは Devcontainer + mise によって依存関係を管理し、環境の差異をなくす改善が進められています....!(ありがたや)
React 19.2 release
私りゅーそう進行で、フロントエンドエンジニアでぃーすけさんに解説加わってもらい 19.2 の release note を読みました。
https://react.dev/blog/2025/10/01/react-19-2
microCMSで即活用できそうな、 <Activity> についてまずは話しました。タブ切り替えのUIではデータ構造上大きなデータを持つ箇所がmicroCMSでも存在するのでその際のパフォーマンス改善に繋げられそうです。実際に管理画面を見ながらこのあたりで使えそうなどと話せたのがよかったです。
次に useEffectEvent  について。これは useEffect  とセットで使用するAPIですが、使用については useEffect  と同様に注意が必要という話をしました。useEffectEvent  はuseEffect  の依存配列を少なくできるAPIですが、ユーザーイベントの際に乱用しないようにしたいという話しでした。
release noteは私が読みたいと提案しましたが、こういったドキュメントもみんなで読んだりすると理解が深まるのでおすすめです。今回もでぃーすけさんに色々教えていただきながら読めたのでよかったです。
npmでのセキュリティに関しての変更 & より安全な公開方法について軽く紹介
宇都宮さんより、npmのセキュリティ面でのアップデートについての共有がありました。
https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/
昨今のサプライチェーン攻撃の状況を受けてのセキュリティアップデートの話しです。
- Classic Tokenを無効化
- WebAuthn/passkeyによる新しい認証方法の提供
などの対応が11月にかけて実施されるようです。
最後にTrusted Publisherを利用したパッケージの公開方法を共有していただきました。
https://docs.npmjs.com/trusted-publishers#supported-cicd-providers
9月以降のサプライチェーン攻撃を受けて、このようなセキュリティの話題も今まで以上に社内では共有されている気がします....!
第4週
(案件リリースによる仕様変更のシェア)公開レビュー申請と終了レビュー申請
宇都宮さんが担当した「公開レビュー申請」と「終了レビュー申請(こちらが新機能)」についての内部的な仕様の解説をしていただきました。内部的な話しなのでここにあまりかけることはないのですが、開発時の考慮事項、何をテストすべきなのか?などなど、、、今後開発にあたって注意すべき仕様の解説でした。
新機能の仕様などを共有したり、どんな機能をリリースしたのか?というのは勉強会でもそうですが、機能案件ごとにSlack チャンネルを作成して共有しながら作業をしたり、releaseチャンネルで共有されたり社内でもアップデートが共有されていく文化がある気がしています。
この発表もそんな文化の一つだなと感じました。
Amazon Web Services(AWS)の大規模障害〜DNSから始まった連鎖的障害
同じく宇都宮さんより10/19に発生したAWSの障害についての内容と時系列などの紹介です。
今回の障害は US-EAST-1 リージョンで発生したもので、発端はDynamoDBのDNSの異常であり、そこから波及してEC2などのサービスに影響があったようです。
「インフラサービスを利用するユーザーにとっては、リージョン分散・依存可視化・冗長化について改めて考えられるインシデントだった」という宇都宮さんの感想が印象的でした。
第5週
git rebase の理解と使い所
開発部長の大西さんによるgit rebaseの解説です。
作業ブランチにmainブランチを取り込むときはgit pull origin mainよりもgit rebase mainとした方がコミットログが見やすいという話しから始まり、実際に git mergeとgit rebaseでpushした場合のコミットログの違いをデモしながらの解説がありました。
そこから派生して、git pushを安全に実行する --force-with-lease オプションの話しや、実際にメンバーがどのようにGitを使用しているのかという話しでチャット欄が盛り上がっていました。
rebaseのデメリットやsquash & mergeの運用などなど、Gitひとつとっても話題はつきませんね.....!
Node.js から Go WebAssembly を呼び出すプロトタイピング
福田さんより、Node.jsからGo WebAssemblyを呼ぶ方法についての共有です!
microCMSではNode.jsからGoのコードを呼ぶことがあり、その際にWeb Assemblyを呼べるのでは?という興味からプロトタイピングを行なったそうです!
これが最適解かと言われると「NO」とした上で、WebAssemblyの紹介とメリット、実際のサンプルコードを共有いただきました!最後に WebAssemblyにコンパイルされる Moonbitの紹介など、WebAssemblyの可能性について感じられる発表でした!
microcms cliを試作してみました
ストリームアラインドチームのエンジニア杉田さんによる発表です。
先日発表された Hono CLI(https://zenn.dev/yusukebe/articles/ff69c13ccafb28)に触発されて、microCMSのCLIを作ってみたそうです....!
docsコマンドを叩くことで、マークダウンでmicroCMSのドキュメント情報を取得できるようです。マークダウン出力することで、AIにも組み込みやすいワークフローが作れそうで期待です。
「CLIを提供する流れがくるかもしれない.....!」とのことでした。コンテンツAPIのレスポンスをCLIで提供したり.....拡張して様々なユースケースも考えられそうです。
encoding/json/v2について
最後に北條さんによりGo 1.25から実験的に利用できるencoding/jsonの紹介です。
https://pkg.go.dev/encoding/json/v2
v1での課題
- 不正なUTF-8を受け入れてしまう
- フィールド名マッチングにおいて「大文字・小文字を無視」する挙動がデフォルトになっている
- omitemptyの曖昧さ
などを挙げていました。特に omitemptyのJSONとしての「空であること」の意味と一致しづらいケースや、JSONの文脈で「数値の0」と「値が存在しないnull」を区別したい場合や、「空の配列[]」と「存在しないことを示すnull」を区別したい場合に、omitemptyが強制的に省略してしまうという問題があるそうです。
v2での omitemptyではJSONの空状態を基準に省略できる、omitzeroを使用することで柔軟な省略を実装可能になるなどのアップデートがあるそうです。
microCMSではNode.jsとGoを併用している関係でGoのゼロ値の運用に悩まされているという現状があるのですが、このアップデートによって改善されていく未来を感じました....!
10月の勉強会の発表は以上になります。
こうして振り返ると、
- 実務に近いドメイン・仕様の話
- 言語仕様・アップデート、Gitなどのレイヤー低めな話
- 最新のトレンド技術の話
など、本当に様々なテーマが話されていると感じることができました。
こんな感じでmicroCMSではゆるく各々が話したいことを話す時間が週1回設けられています。その他にもAI情報を投稿するチャンネルや、技術について投稿するチャンネルなどなどゆるく気になる技術についてシャアするような文化があります。
11月以降も、ゆるく楽しく勉強会を続けていけたらと思います。勉強会の内容や取り組みなどもっと興味がある方は、カジュアル面談などぜひ申し込みをしてみてください。
なおこの文章はまとめ記事なので、AIっぽさを感じるかもですが、私がちゃんと入力しています。笑
最後まで読んでいただきありがとうございました!

