[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-U0w-0MgT8IhM":3,"adjacent-U0w-0MgT8IhM":523,"$f1wghckeq8ev1u":885},{"id":4,"title":5,"content":6,"summary":504,"charCount":505,"eyecatch":13,"tags":506,"is_no_index":519,"publishedAt":520,"createdAt":521,"updatedAt":522},"U0w-0MgT8IhM","やはりKubernetesからは逃れられない",{"type":7,"content":8},"doc",[9,18,23,27,31,35,43,47,51,55,59,63,67,71,75,80,84,88,92,96,100,107,111,115,120,124,128,132,139,146,150,154,158,163,167,174,178,182,186,190,224,228,232,237,244,248,280,287,291,295,299,304,308,312,316,323,327,331,335,339,344,351,419,423,427,431,438,445,449,454,461,465,472,476,480,485,489,496,500],{"type":10,"attrs":11,"content":14},"heading",{"level":12,"id":13},1,null,[15],{"type":16,"text":17},"text","はじめに",{"type":19,"content":20},"paragraph",[21],{"type":16,"text":22},"どうも、わたしです。",{"type":19,"content":24},[25],{"type":16,"text":26},"最近、安価なVPS上で複数のワークロードをいい感じに収容する方法について考えています。",{"type":19,"content":28},[29],{"type":16,"text":30},"こんなツイートが伸びるくらいなので、もしかしたら多くの人が気になっているのではないでしょうか。",{"type":32,"attrs":33},"linkCard",{"url":34},"https:\u002F\u002Fx.com\u002Fmai_llj\u002Fstatus\u002F2095891620973686914",{"type":19,"content":36},[37,39,41],{"type":16,"text":38},"このような用途の多くは既にサーバレスへ代替されてしまっているのでしょうが、私がやりたいのは、常時起動する小リソースでステートフルなワークロードをデプロイすることです。",{"type":40},"hardBreak",{"type":16,"text":42},"そもそも、リクエスト単位で起動して終了するようなものであればCloudflareのWorkersが一番安くていい感じなんじゃないでしょうか。",{"type":19,"content":44},[45],{"type":16,"text":46},"基本的に、私しか使わないようなものは自宅のKubernetesクラスタにデプロイしているのですが、Misskeyのように外向きのトラヒックが大半を占めるワークロードを自宅に置くのには抵抗があります。",{"type":19,"content":48},[49],{"type":16,"text":50},"そこで活躍するのが安価なVPSです。帯域こそ微妙なものの、安価で、国内ベンダとしては比較的まともなKAGOYA CLOUD VPSを私は愛用しています。",{"type":19,"content":52},[53],{"type":16,"text":54},"VPSなんて必要になったらその都度1台生やせばいいじゃん、という話ではあるのですが、数が増えてくるとそう単純でもありません。例えば、2GiB程度のVPSをアプリケーション単位を収容境界として個別に割り当てていけば、当然ながら管理するホストの数も増えていきます。",{"type":19,"content":56},[57],{"type":16,"text":58},"では大きなVPSを1台借りて、そこへDocker Composeで全部詰め込めばいいのかというと、それも段々と辛くなってきます。どのホストに何が載っているのか、あとどれくらいメモリが空いているのか、新しいワークロードをどこに置くべきなのか。そういうことは機械にやらせてしまいたいわけです。",{"type":19,"content":60},[61],{"type":16,"text":62},"もっと言えば、負荷に応じていい感じにスケールアウトもしてほしいですし、クレデンシャルを含めて綺麗にIaCしたい気持ちがあります。",{"type":19,"content":64},[65],{"type":16,"text":66},"私が思いつく限り、このような用途で一番有用なのがKubernetesです。",{"type":19,"content":68},[69],{"type":16,"text":70},"Argo CDなりFluxなりを使えばGitOpsできますし、Terraformなどとは違い、コントローラによる継続的なreconciliationを前提とした宣言的な構成管理ができます。クレデンシャルについてもExternal Secrets Operatorなどを利用すれば、外部のSecret Managerへ管理を寄せられます。",{"type":19,"content":72},[73],{"type":16,"text":74},"至れり尽くせりなわけです。",{"type":10,"attrs":76,"content":77},{"level":12,"id":13},[78],{"type":16,"text":79},"Kubernetesのオーバーヘッド",{"type":19,"content":81},[82],{"type":16,"text":83},"しかし、Kubernetesには致命的な欠点があります。",{"type":19,"content":85},[86],{"type":16,"text":87},"よく言われるものでは、エコシステムが無駄に大きいとか、学習コストが高いとかいう話もありますが、現に私は使っているので本質的な問題ではありません。",{"type":19,"content":89},[90],{"type":16,"text":91},"単純にオーバーヘッドが大きいんです。",{"type":19,"content":93},[94],{"type":16,"text":95},"もちろん、何をもって重いとするかにもよるでしょし、数十GiB、数百GiBのメモリを積んだノードを大量に抱えている環境なら、kubeletやcontainer runtimeが数百MiB食っていたところで誤差でしょう。",{"type":19,"content":97},[98],{"type":16,"text":99},"しかし、今回考えているのは、安価に契約できるVPSです。4GiB、8GiBあたりの小さい仮想マシンを10何台か契約して、その上へ1-2GiB程度のワークロードを効率よく詰めることを目的としています。",{"type":19,"content":101},[102,104,105],{"type":16,"text":103},"こういう用途に限れば、ノード単位で数百MiBから1GiB近いメモリを基盤側に持っていかれるのは結構しんどいですし、まともに運用しようとすると追加で監視基盤も必要になります。",{"type":40},{"type":16,"text":106},"node-exporterが生え、ログを集めようとするとAlloyやFluent Bitが生え、Ingress Controllerが生え、metrics-serverが生え、cert-managerが生えてきます。",{"type":19,"content":108},[109],{"type":16,"text":110},"もちろん全部が必須というわけではありません。が、Kubernetesをちゃんと運用しようとすると、周辺コンポーネントはどうしても増えてしまいます。結果として、ワークロードを収容するために用意したリソースのうち、それなりの割合を基盤そのものが消費することになります。",{"type":19,"content":112},[113],{"type":16,"text":114},"OS本体の消費リソースも考える必要がありますし、キャパシティの小さいVPSではこのオーバーヘッドを無視することができません。",{"type":10,"attrs":116,"content":117},{"level":12,"id":13},[118],{"type":16,"text":119},"小さいVPSをいっぱい借りればいい？",{"type":19,"content":121},[122],{"type":16,"text":123},"そもそもの発端は、VPSの料金体系を眺めていたことでした。",{"type":19,"content":125},[126],{"type":16,"text":127},"これが不思議なもので、キャパシティの大きいプランを1台契約する場合と比較して、小さいプランを複数台契約した方が安いことがあります。(KAGOYAの場合だと、2GiBのプランがいちばんコスト効率が高そう)",{"type":19,"content":129},[130],{"type":16,"text":131},"であれば、「小さいVPSを大量に借りればよくない？」と思うわけです。",{"type":19,"content":133},[134,136,137],{"type":16,"text":135},"しかし当然、VPSを増やすたびにOSも増えます。",{"type":40},{"type":16,"text":138},"OS本体のオーバーヘッドもそうですが、Linuxをbootして、SSHできるようにして、Dockerなりcontainerdなりを入れて、監視を入れて、アップデートして、という作業を10台、20台やりたいかというと、全然やりたくありません。",{"type":19,"content":140},[141,143,144],{"type":16,"text":142},"私はアプリケーションを動かす基盤がほしいのであって、Ubuntuのお世話をしたいわけではないんです。",{"type":40},{"type":16,"text":145},"極端な話、ホストなんて壊れたら捨てて作り直せればいいし、普段SSHで入る必要すらない形が理想です。",{"type":19,"content":147},[148],{"type":16,"text":149},"その点においてはTalos Linuxがかなり好きです。Immutableで、SSHもshellもなく、APIから管理できますしね。ホストOSを意識する場面を大きく減らせるという意味ではとても理想的です。",{"type":19,"content":151},[152],{"type":16,"text":153},"ただし、TalosはKubernetesを動かすためのOSです。",{"type":19,"content":155},[156],{"type":16,"text":157},"私はKubernetesを前提にしないTalosがほしい。",{"type":10,"attrs":159,"content":160},{"level":12,"id":13},[161],{"type":16,"text":162},"Nomad",{"type":19,"content":164},[165],{"type":16,"text":166},"この手の話をすると、大体Nomadがおすすめされます。実際、使ってみるまでは結構良さそうに見えました。",{"type":19,"content":168},[169,171,172],{"type":16,"text":170},"Task Groupで複数のコンテナを同じノードに置けますし、CPUやメモリを見てスケジューリングしてくれます。Rolling Updateもできます。Kubernetesより構成要素も少なく、かなり軽量です。",{"type":40},{"type":16,"text":173},"もうこれでいいのでは、と思えてきます。",{"type":19,"content":175},[176],{"type":16,"text":177},"しかし、使っていく中で微妙な部分がかなりあります。",{"type":19,"content":179},[180],{"type":16,"text":181},"Nomad自体は単一バイナリでシンプルなのですが、当然それを実行するOSは必要です。OCIコンテナを動かすのであればDockerやPodmanなどのruntimeも必要になりますし、ネットワークをちゃんとやろうとするとCNIが出てきます。service discoveryをどうするかという話もあります。",{"type":19,"content":183},[184],{"type":16,"text":185},"Consulもあります、Vaultもあります、とHashiCorpのエコシステムで補っていくことはできます。が、それらを積み上げた結果できるものに、Kubernetesとの本質的な違いがどれほどあると言えるのでしょうか。",{"type":19,"content":187},[188],{"type":16,"text":189},"別にHashiCorpスタックを愛しているわけではないのですが、気がつくと、",{"type":191,"content":192},"bulletList",[193,200,206,212,218],{"type":194,"content":195},"listItem",[196],{"type":19,"content":197},[198],{"type":16,"text":199},"immutableなOSを選ぶ",{"type":194,"content":201},[202],{"type":19,"content":203},[204],{"type":16,"text":205},"Nomadを載せる",{"type":194,"content":207},[208],{"type":19,"content":209},[210],{"type":16,"text":211},"runtimeを載せる",{"type":194,"content":213},[214],{"type":19,"content":215},[216],{"type":16,"text":217},"ネットワークを考える",{"type":194,"content":219},[220],{"type":19,"content":221},[222],{"type":16,"text":223},"service discoveryを考える",{"type":19,"content":225},[226],{"type":16,"text":227},"という、Kubernetesで既に統合されているものを自分で組み直す必要が出てきました。",{"type":19,"content":229},[230],{"type":16,"text":231},"どう考えても無駄なのでなかったことにします。",{"type":10,"attrs":233,"content":234},{"level":12,"id":13},[235],{"type":16,"text":236},"Incus",{"type":19,"content":238},[239,241,242],{"type":16,"text":240},"IncusOSなんかは特に好みで、immutableでshellもSSHもなく、APIから管理するという、Talosに近いものです。OCI application containerも直接実行できます。",{"type":40},{"type":16,"text":243},"ただ、特性上、複数のコンテナを1つのワークロードとして扱う振る舞いをしてしまう問題がありました。",{"type":19,"content":245},[246],{"type":16,"text":247},"例えば、",{"type":191,"content":249},[250,256,262,268,274],{"type":194,"content":251},[252],{"type":19,"content":253},[254],{"type":16,"text":255},"Application",{"type":194,"content":257},[258],{"type":19,"content":259},[260],{"type":16,"text":261},"PostgreSQL",{"type":194,"content":263},[264],{"type":19,"content":265},[266],{"type":16,"text":267},"Redis",{"type":194,"content":269},[270],{"type":19,"content":271},[272],{"type":16,"text":273},"Caddy",{"type":194,"content":275},[276],{"type":19,"content":277},[278],{"type":16,"text":279},"Backup",{"type":19,"content":281},[282,284,285],{"type":16,"text":283},"を1セットとして、必ず同じホストへ配置したいとします。",{"type":40},{"type":16,"text":286},"KubernetesであればPodがありますし、NomadならTask Groupがあります。",{"type":19,"content":288},[289],{"type":16,"text":290},"Incusの場合、基本的にはそれぞれが独立したinstanceになり、同じノードに置くのであれば、その配置をこちらで管理する必要があります。",{"type":19,"content":292},[293],{"type":16,"text":294},"では、それらを1つの単位として扱って、CPUやメモリの空きを見ながら自動配置してほしい。となると、結局schedulerが欲しくなりました。",{"type":19,"content":296},[297],{"type":16,"text":298},"というわけでIncusもなかったことにします。",{"type":10,"attrs":300,"content":301},{"level":12,"id":13},[302],{"type":16,"text":303},"NixOS",{"type":19,"content":305},[306],{"type":16,"text":307},"じゃあ、世の中の人たちは複数のホストを一体どう管理しているのか気になります。Redditを見てみました。思ったよりつまらなかったです。",{"type":19,"content":309},[310],{"type":16,"text":311},"大きめのマシンを1台用意してDocker Composeをそのまま導入している場合や、複数台をそれぞれ独立したDocker hostとして管理する。PortainerやKomodo、Dokployのようなもので疑似的に中央管理する人もいるようでした。",{"type":19,"content":313},[314],{"type":16,"text":315},"あとはNixOS。これは結構魅力的でした。というか既に私はこれを普段使いのクライアント環境で使っています。",{"type":19,"content":317},[318,320,321],{"type":16,"text":319},"OSの状態自体を宣言的に管理できますし、再現もロールバックもできます。サーバを手作業で育てていく必要がありません。Talosに求めているものの大部分を備えています。",{"type":40},{"type":16,"text":322},"ただ、NixOSはあくまで「このマシンをどういう状態にするか」を管理するものです。",{"type":19,"content":324},[325],{"type":16,"text":326},"複数のホストを1つのリソースプールとして見て、「このワークロードは空きメモリが多いnode-hogeへ」みたいな配置をしてくれるわけではありません。",{"type":19,"content":328},[329],{"type":16,"text":330},"それらは別途考える必要があります。",{"type":19,"content":332},[333],{"type":16,"text":334},"ここでまたschedulerです。",{"type":19,"content":336},[337],{"type":16,"text":338},"どうも私が欲しいものの大半はschedulerの周辺に集約されているようです。",{"type":10,"attrs":340,"content":341},{"level":12,"id":13},[342],{"type":16,"text":343},"結局、Kubernetes",{"type":19,"content":345},[346,348,349],{"type":16,"text":347},"ここまで色々使ってみて、ようやく気づくことがあります。",{"type":40},{"type":16,"text":350},"私が欲しいものを並べると、",{"type":191,"content":352},[353,359,365,371,377,383,389,395,401,407,413],{"type":194,"content":354},[355],{"type":19,"content":356},[357],{"type":16,"text":358},"複数ホストを1つのresource poolとして扱える",{"type":194,"content":360},[361],{"type":19,"content":362},[363],{"type":16,"text":364},"リソースを見て動的に自動配置できる",{"type":194,"content":366},[367],{"type":19,"content":368},[369],{"type":16,"text":370},"複数のコンテナを1つの単位として扱える",{"type":194,"content":372},[373],{"type":19,"content":374},[375],{"type":16,"text":376},"クレデンシャル含め、すべてを宣言的に管理できる",{"type":194,"content":378},[379],{"type":19,"content":380},[381],{"type":16,"text":382},"異常終了したワークロードを再作成できる",{"type":194,"content":384},[385],{"type":19,"content":386},[387],{"type":16,"text":388},"Rolling Updateできる",{"type":194,"content":390},[391],{"type":19,"content":392},[393],{"type":16,"text":394},"ホストをdrainできる",{"type":194,"content":396},[397],{"type":19,"content":398},[399],{"type":16,"text":400},"service discoveryがある",{"type":194,"content":402},[403],{"type":19,"content":404},[405],{"type":16,"text":406},"APIから操作できる",{"type":194,"content":408},[409],{"type":19,"content":410},[411],{"type":16,"text":412},"OCI imageをそのまま使える",{"type":194,"content":414},[415],{"type":19,"content":416},[417],{"type":16,"text":418},"immutableなホストOSを選べる",{"type":19,"content":420},[421],{"type":16,"text":422},"という感じになります。",{"type":19,"content":424},[425],{"type":16,"text":426},"すごくKubernetesですね。",{"type":19,"content":428},[429],{"type":16,"text":430},"Kubernetesを避けるために代替を探していたのに、代替できるものも結局はKubernetesになってしまいます。",{"type":19,"content":432},[433,435,436],{"type":16,"text":434},"Kubernetesは無駄に複雑で、実際私が使わない機能も大量にありますが、NomadやIncusの節で書いたとおり、小さなソフトウェアを組み合わせて同じ要件を満たそうとすると、runtimeやCNI、service discovery、schedulerの選定と統合が今度は自分の責務になってしまいます。",{"type":40},{"type":16,"text":437},"Kubernetesの中で済んでいた統合作業を自分でやり直しているだけで、複雑さの総量は減っていませんよね。Kubernetesがあの大きさなのにも、相応の理由があるということなのかもしれません。",{"type":19,"content":439},[440,442,443],{"type":16,"text":441},"では素直にマネージドKubernetesを使えばいいのかというと、あれはあれで高すぎて使えません。",{"type":40},{"type":16,"text":444},"workerもcontrolもパブクラの価格水準で、格安VPSをよしなにしようねという今回の話とは前提の金額が異なります。",{"type":19,"content":446},[447],{"type":16,"text":448},"結局のところ、Kubernetesは潤沢な計算資源を前提にした、富豪向けのソリューションなのかもしれません。",{"type":10,"attrs":450,"content":451},{"level":12,"id":13},[452],{"type":16,"text":453},"結局どうするの",{"type":19,"content":455},[456,458,459],{"type":16,"text":457},"まだ決めていません。",{"type":40},{"type":16,"text":460},"ここまで書いておいて何なんだという話ですが、本当に決めていません。",{"type":19,"content":462},[463],{"type":16,"text":464},"Kubernetesを使えば、欲しいものは一通りそれなりに揃います。が、VPSで小規模なワークロードを高密度に詰めたいという用途では、やっぱりオーバーヘッドが気になります。",{"type":19,"content":466},[467,469,470],{"type":16,"text":468},"軽量化という意味ではK3sがあります。K3sはKubernetes自体を大幅に軽量化していますが、その下には普通のLinux distributionが必要になります。",{"type":40},{"type":16,"text":471},"一方のTalosは、別にK3sより軽いわけではなく、ホストOSとして綺麗なのであって、upstream Kubernetesそのものを軽量化してくれるものではないからです。",{"type":19,"content":473},[474],{"type":16,"text":475},"Talosのような運用モデルで、K3sくらい軽量なKubernetesが動けばかなり嬉しいのですが、どうも都合よく存在してくれることはありませんでした。",{"type":19,"content":477},[478],{"type":16,"text":479},"何かしらが足りない近しいものはいくつか見つけられたのですが、足りない部分を自分で補おうとすると、またKubernetesに近づいてしまいます。",{"type":10,"attrs":481,"content":482},{"level":12,"id":13},[483],{"type":16,"text":484},"さいごに",{"type":19,"content":486},[487],{"type":16,"text":488},"Docker Composeで困らない規模なら、Docker Composeを使えばいいと思いますし、単一ホストで収まるなら、無理にクラスタを作る必要もありません。",{"type":19,"content":490},[491,493,494],{"type":16,"text":492},"ただ、要求を増やしていくと、最終的には「それKubernetesでできるよ」という話になってしまいます。",{"type":40},{"type":16,"text":495},"そんなことはとっくの昔から知っています。",{"type":19,"content":497},[498],{"type":16,"text":499},"それを避けたくて色々試していたわけですが、どうもこれらの要件を満たしたいのであれば、Kubernetesを使うのが一番素直なのかもしれません。",{"type":19,"content":501},[502],{"type":16,"text":503},"やはりKubernetesからは逃れられないようです。","どうも、わたしです。最近、安価なVPS上で複数のワークロードをいい感じに収容する方法について考えています。こんなツイートが伸びるくらいなので、もしかしたら多くの人が気になっているのではないでしょうか。このような用途の多くは既にサーバレスへ代替されてしまっているのでしょうが、私がやりたいのは、常時起動",5361,[507,511,515],{"id":508,"name":509,"slug":510},"fwj_nwhj1-s","サーバー","server",{"id":512,"name":513,"slug":514},"qfey3yw0z1","テクノロジー","technology",{"id":516,"name":517,"slug":518},"wia4slp55q","独り言","thoughts",false,"2026-09-05T17:43:52.489Z","2026-09-05T16:58:20.431Z","2026-09-05T21:50:20.484Z",{"older":524,"newer":13},{"id":525,"title":526,"content":527,"summary":873,"charCount":874,"eyecatch":13,"tags":875,"is_no_index":519,"publishedAt":882,"createdAt":883,"updatedAt":884},"PNq5wx1vUeCH","Workers Tech Talks #8を見て思ったこと",{"type":7,"content":528},[529,533,537,544,548,552,556,561,565,569,573,577,584,590,597,601,606,613,617,621,625,629,633,640,644,648,652,656,660,665,669,673,677,684,688,692,696,700,704,709,713,717,721,728,741,745,749,756,763,767,771,775,779,783,787,792,799,803,807,811,815,819,823,827,831,835,839,843,850,854,858,862,869],{"type":10,"attrs":530,"content":531},{"level":12,"id":13},[532],{"type":16,"text":17},{"type":19,"content":534},[535],{"type":16,"text":536},"どうも、私です。",{"type":19,"content":538},[539,541,542],{"type":16,"text":540},"先日、Cloudflare Workers Tech Talks in Tokyo #8を見ました。",{"type":40},{"type":16,"text":543},"で、見終わった感想なんですが、あまり面白くなかったです。",{"type":19,"content":545},[546],{"type":16,"text":547},"全部が全部というわけではなく、Containersの話やメルカリの話なんかは興味深く聞いていました。ただ、全体的に技術的な踏み込みが浅いというか、聞き終わって「結局何の話だったんだろう」となる発表がちらほらあって、すごく悲しい気持ちになったというのが正直な感想です。",{"type":19,"content":549},[550],{"type":16,"text":551},"別にプレゼンが下手だったわけではありませんし、むしろ全体的に皆さん発表が上手かったと思います。",{"type":19,"content":553},[554],{"type":16,"text":555},"ただ、私はテックトークにそういうものを求めていなかったようです。",{"type":10,"attrs":557,"content":558},{"level":12,"id":13},[559],{"type":16,"text":560},"何をもってそう思ったの",{"type":19,"content":562},[563],{"type":16,"text":564},"例えば、大規模SaaSの話は、Cloudflareにはこういうサービスがあって、従来こうしていたものがこうできて、Cloudflareでも大規模なSaaSを作れそうだ、というような話だったかと思います。",{"type":19,"content":566},[567],{"type":16,"text":568},"で、何をもって作れそうだと判断したんですかね。",{"type":19,"content":570},[571],{"type":16,"text":572},"Cloudflareに何のサービスがあって、それぞれ何がどのようにできるのかは、概ね公式ドキュメントを読めば分かります。実際に大規模SaaSのアーキテクチャを検討したのであれば、既存の構成と比較してどこが問題になったのか、Cloudflare固有の制約をどう評価したのか、どこまでをCloudflareに載せられて、どこからは載せられないのか。そういう話が私は聞きたかったです。",{"type":19,"content":574},[575],{"type":16,"text":576},"他の発表を聞いていても、似たようなことを何度か思いました。",{"type":19,"content":578},[579,581,582],{"type":16,"text":580},"｢この技術を使いました。｣",{"type":40},{"type":16,"text":583},"なぜ？",{"type":19,"content":585},[586,588,589],{"type":16,"text":587},"｢この構成にしました。｣",{"type":40},{"type":16,"text":583},{"type":19,"content":591},[592,594,595],{"type":16,"text":593},"｢これで実現できました。｣",{"type":40},{"type":16,"text":596},"そもそも何が課題で、それをどう解決するためにこの構成になったの？",{"type":19,"content":598},[599],{"type":16,"text":600},"技術スタックそのものを知りたいのではなくて、その技術スタックに至るまでの判断が知りたかったです。結果だけ並べられても、｢へえ、そうなんですね、すごい｣で終わってしまいます。",{"type":10,"attrs":602,"content":603},{"level":12,"id":13},[604],{"type":16,"text":605},"Vibe Codingの話",{"type":19,"content":607},[608,610,611],{"type":16,"text":609},"今回かなり話題になっていたのが、宮本佳林さんの「アイドル視点から見たものづくりの本質」という発表でした。",{"type":40},{"type":16,"text":612},"自分の活動で使うWebサイトや配信システムなんかを、LLMを使いながら自分で作っている、という話です。",{"type":19,"content":614},[615],{"type":16,"text":616},"まず前提として、作ったこと自体はとてもすごいことだと思います。",{"type":19,"content":618},[619],{"type":16,"text":620},"必要なものがあって、それを自分で作って、実際の活動に投入している。世の中、口だけ達者で何も作らない人間が嫌なほど沢山いるので、手を動かして成果物を出していることはとてもすごい事だと思います。",{"type":19,"content":622},[623],{"type":16,"text":624},"プレゼンはすごく上手かったですし、話の組み立ても上手で、エンタメとして見れば、普段見る技術者の発表より完成度が高かったように思います。｢やっぱりアイドルってすごいんだな〜｣などと思いながら見ていました。",{"type":19,"content":626},[627],{"type":16,"text":628},"ただ、内容についてはあまり好きではありませんでした。",{"type":19,"content":630},[631],{"type":16,"text":632},"例えば、10時間配信のためのシステムを作ったという話であれば、10時間配信を成立させるにあたって何が課題だったのか、それを解決するためになぜそのアーキテクチャを選んだのか、私はその辺が気になりました。",{"type":19,"content":634},[635,637,638],{"type":16,"text":636},"KV, D1, R2を採用したのであれば、それぞれ何を保存して、何を根拠にそこへ保存することにしたのか。KVの整合性モデルは要件上問題にならなかったのか。LLMが生成した実装をどう検証して、本番投入して問題ないと判断したのか。",{"type":40},{"type":16,"text":639},"せっかくVibe Codingを題材にするのであれば、そういう話題を深堀すると面白い話ができると思います。",{"type":19,"content":641},[642],{"type":16,"text":643},"コードの生成をLLMに任せるとして、人間はどこまでシステムを理解する必要があるのか。生成された設計が妥当であることをどう判断するのか。自分の理解を超えた実装が出てきたときにどうするのか。",{"type":19,"content":645},[646],{"type":16,"text":647},"この辺の話題には私自身、かなり興味があります。",{"type":19,"content":649},[650],{"type":16,"text":651},"しかし、実際の発表ではそこまで踏み込まれず、私には概ね「LLMを使いながら色々作ってみたら楽しく作れました」という話に聞こえました。",{"type":19,"content":653},[654],{"type":16,"text":655},"それはそれで良いことだと思います。",{"type":19,"content":657},[658],{"type":16,"text":659},"ただ、テックトークとして聞いて面白いかというと、すごく申し訳ないのですが、私はあまり面白く思えませんでした。",{"type":10,"attrs":661,"content":662},{"level":12,"id":13},[663],{"type":16,"text":664},"DynamoDB",{"type":19,"content":666},[667],{"type":16,"text":668},"中でも特に気になったのが、DynamoDBについてのくだりでした。",{"type":19,"content":670},[671],{"type":16,"text":672},"チケットシステムについて宮本さんが「これはDynamoDBではないか」と質問したところ、相手の会社の方が驚いていた、という話がありました。その理由として、チケットシステムは処理が速いからDynamoDBではないかと考えた、という趣旨の説明がされていたと思います。",{"type":19,"content":674},[675],{"type":16,"text":676},"ここは聞いていて、かなりもにょもにょしました。",{"type":19,"content":678},[679,681,682],{"type":16,"text":680},"速いからDynamoDB。",{"type":40},{"type":16,"text":683},"いや、なんで？",{"type":19,"content":685},[686],{"type":16,"text":687},"DynamoDBが低レイテンシで大規模なワークロードを捌けるのはそうなんですが、当然ながら「処理が速いシステムだからDynamoDB」というだけでデータストアを推測できるわけではありません。",{"type":19,"content":689},[690],{"type":16,"text":691},"どんなデータを扱っているのか、アクセスパターンはどうなっているのか、どの程度の一貫性が必要なのか、スケール特性はどうなのか。その辺を考えた結果としてDynamoDBではないかと推測したのであれば、その思考過程こそ聞きたいところです。",{"type":19,"content":693},[694],{"type":16,"text":695},"少なくとも発表中の説明だけを聞く限りでは、DynamoDBについて中途半端に見聞きした特徴をそのまま当てはめているようにしか見えず、私はあまり好きではありませんでした。",{"type":19,"content":697},[698],{"type":16,"text":699},"もちろん、実際にはもっと色々考えた上での発言だった可能性はあります。発表時間の都合で省いただけかもしれません。",{"type":19,"content":701},[702],{"type":16,"text":703},"なら、なおさらその話してほしかったです。",{"type":10,"attrs":705,"content":706},{"level":12,"id":13},[707],{"type":16,"text":708},"「アイドルなのにすごい」",{"type":19,"content":710},[711],{"type":16,"text":712},"世の中には私が面白いと思わないものを面白いと思う人も沢山居るでしょうし、その逆も当然あります。プレゼンの上手さや、ものづくりの楽しさを伝えることに価値を感じる人もいるでしょう。",{"type":19,"content":714},[715],{"type":16,"text":716},"好みの問題なので、別にそれはどうでもいいのかもしれません。",{"type":19,"content":718},[719],{"type":16,"text":720},"ただ、発表後の反応を見ていて、別のところで引っ掛かりました。",{"type":19,"content":722},[723,725,726],{"type":16,"text":724},"「アイドルなのにこんなことができるのがすごい」というような評価です。",{"type":40},{"type":16,"text":727},"これ、褒めているようで結構失礼ではないですかね？",{"type":19,"content":729},[730,732,739],{"type":16,"text":731},"以前、",{"type":16,"marks":733,"text":738},[734],{"type":735,"attrs":736},"link",{"href":737,"target":13,"rel":13,"class":13,"title":13},"https:\u002F\u002Fnote.com\u002Fcellacoates\u002Fn\u002Fn6711046dea15","〇〇なのに、凄い！n回目",{"type":16,"text":740},"というnoteの記事を読みました。そこでは「アイドルなのにサッカーに詳しい」といった表現について、その言葉が成立する背景にある、属性への期待について書かれていました。",{"type":19,"content":742},[743],{"type":16,"text":744},"「アイドルなのに技術ができてすごい」も同様であると私は思います。",{"type":19,"content":746},[747],{"type":16,"text":748},"この評価が成立するためには、まず「アイドルには通常、この程度の技術的能力はないだろう」という期待が必要になります。アイドルという属性からあらかじめ期待値を下げておいて、その低く設定した基準を超えたので「すごい」と評価する。",{"type":19,"content":750},[751,753,754],{"type":16,"text":752},"要するに「あなたの属性であれば、この程度の基準で評価するのが妥当でしょう」という話です。",{"type":40},{"type":16,"text":755},"私はそこに、ある種の差別的、あるいは蔑視的なものを感じます。すごく傲慢ですよね。",{"type":19,"content":757},[758,760,761],{"type":16,"text":759},"念のため書いておくと、「アイドルなのにすごい」と言っている人に悪意があるとは思っていません。",{"type":40},{"type":16,"text":762},"ただ、悪意がないことと、その見方に差別的なものが含まれていないことは別でしょう。",{"type":19,"content":764},[765],{"type":16,"text":766},"例えば「女性なのに論理的ですね」だとか、「高齢者なのにITに詳しいですね」みたいな言葉も、発言者は褒め言葉として使えます。",{"type":19,"content":768},[769],{"type":16,"text":770},"しかし、その言葉が褒め言葉として成立するためには、「女性は普通それほど論理的でない」「一般的な高齢者はITに詳しくない」という前提となる期待が必要です。",{"type":19,"content":772},[773],{"type":16,"text":774},"少なくとも私は言われたくないです。普通に失礼だと感じるので。",{"type":19,"content":776},[777],{"type":16,"text":778},"アイドルについても同様で、アイドルという職業から技術的な能力を勝手に推測して、通常より低い評価基準を適用することが、果たして相手に敬意を持った接し方なのかは疑問です。",{"type":19,"content":780},[781],{"type":16,"text":782},"以前、属性によるカテゴライズから完全に逃れることは無理だろう、というようなことを書きました。なので、「人を属性で見るな」のような綺麗なことを言うつもりは毛頭ありません。私自身、人間を様々な属性で括って見ていますし、アイドルという職業から何らかの傾向を推測すること自体を差別だと言い始めたら、人間の認知そのものが成立しなくなってしまいます。",{"type":19,"content":784},[785],{"type":16,"text":786},"ただ、同時に、その属性をそのまま個人の評価基準にまで持ち込むことには、もう少し慎重であるべきだと私は考えます。",{"type":10,"attrs":788,"content":789},{"level":12,"id":13},[790],{"type":16,"text":791},"同じ土俵",{"type":19,"content":793},[794,796,797],{"type":16,"text":795},"私は、宮本さんがアイドルだから技術的に未熟だと思いたくはありません。",{"type":40},{"type":16,"text":798},"同時に、アイドルだから多少理解が浅くてもすごい、とも思いたくありません。",{"type":19,"content":800},[801],{"type":16,"text":802},"Cloudflare Workersのテックトークに登壇して、Cloudflare Workersを使ったものづくりについて話しているのであれば、私はその発表を普通に一本のテックトークとして聞きたいと思います。",{"type":19,"content":804},[805],{"type":16,"text":806},"その結果として、技術的に面白ければ面白いと言うし、理解が浅いと思えば浅いと言いたい。",{"type":19,"content":808},[809],{"type":16,"text":810},"寧ろ、「本業はアイドルなんだから技術的に浅くても仕方ないよね」と評価基準を変える方が、私には余程失礼に思えます。",{"type":19,"content":812},[813],{"type":16,"text":814},"もちろん、本業とは全く違う分野のものを短期間で学び、実際に動くところまで持っていったという事実は、それ単体で評価できます。",{"type":19,"content":816},[817],{"type":16,"text":818},"作ったことはすごい。",{"type":19,"content":820},[821],{"type":16,"text":822},"行動力もすごい。",{"type":19,"content":824},[825],{"type":16,"text":826},"プレゼンも上手い。",{"type":19,"content":828},[829],{"type":16,"text":830},"ただ、技術的な内容はすごく浅いように感じました。",{"type":19,"content":832},[833],{"type":16,"text":834},"全てを「アイドルなのにすごい」という便利な一言に押し込める必要はないでしょうし、押し込めるべきではないでしょう。",{"type":10,"attrs":836,"content":837},{"level":12,"id":13},[838],{"type":16,"text":484},{"type":19,"content":840},[841],{"type":16,"text":842},"今回のWorkers Tech Talksを見ていて一番残念だったのは、宮本さんの発表というより、全体として技術的に深掘りする発表が思ったより少なかったことです。",{"type":19,"content":844},[845,847,848],{"type":16,"text":846},"何を使ったかより、なぜそれを使ったのか。作れたという結果より、なぜそれで作れると判断したのか。",{"type":40},{"type":16,"text":849},"そういう公式ドキュメントを読めば分かるようなサービスの紹介よりも、実際に使った人間がどこで苦しんだのかが知りたかったです。",{"type":19,"content":851},[852],{"type":16,"text":853},"Vibe Codingなら、LLMで作れましたという話より、LLMに実装を委ねた状態でどうシステムの正しさを担保したのか。そういう話の方が、私は面白いと思います。",{"type":19,"content":855},[856],{"type":16,"text":857},"世間の反応を見る限り、今回のイベントを楽しんだ人はかなり多かったようなので、単純に私がテックトークに求めるものとズレているだけなのかもしれません。",{"type":19,"content":859},[860],{"type":16,"text":861},"好みの話なので仕方ないのかもしれませんが。",{"type":19,"content":863},[864,866,867],{"type":16,"text":865},"ただ、「アイドルなのにすごい」という評価については、それとは別にやっぱり好きではありません。",{"type":40},{"type":16,"text":868},"属性によって期待値を下げた上で褒めるくらいなら、普通に同じ土俵で、その人が実際にやったことを見ればいいんじゃないでしょうか。",{"type":19,"content":870},[871],{"type":16,"text":872},"少なくとも私は、その方が相手に対して幾分か誠実な態度であると思います。","どうも、私です。先日、Cloudflare Workers Tech Talks in Tokyo #8を見ました。で、見終わった感想なんですが、あまり面白くなかったです。全部が全部というわけではなく、Containersの話やメルカリの話なんかは興味深く聞いていました。ただ、全体的に技術的な踏み込",4348,[876,877,881],{"id":512,"name":513,"slug":514},{"id":878,"name":879,"slug":880},"4oy2jc8mdg","日記","diary",{"id":516,"name":517,"slug":518},"2026-08-28T20:06:27.604Z","2026-08-28T20:05:08.273Z","2026-08-29T06:56:29.446Z",{"url":34,"domain":886,"title":887,"description":888,"image":889,"favicon":890,"type":891,"embedId":892},"x.com","まい (@mai_llj) on X","k8sほど大げさじゃないコンテナオーケストレーションがほしい\nいい感じにGitOpsできて、複数環境に雑にプロビジョニングできて、いい感じに同期してくれて、負荷に応じてスケールアウトできるやつ","https:\u002F\u002Fpbs.twimg.com\u002Fprofile_images\u002F2007799257282265090\u002Fbf45AO_c_400x400.jpg","https:\u002F\u002Fx.com\u002Ffavicon.ico","TWITTER","2095891620973686914"]