[{"data":1,"prerenderedAt":154},["ShallowReactive",2],{"/blog/comment-feat/":3,"related-技術系-/blog/comment-feat":128},{"id":4,"title":5,"body":6,"category":113,"coverImage":114,"date":115,"description":16,"draft":116,"extension":117,"meta":118,"navigation":119,"path":120,"rawbody":121,"seo":122,"stem":123,"tags":124,"__hash__":127},"blog/blog/comment-feat/index.md","ブログにコメント機能つけたぞ！（いらない）",{"type":7,"value":8,"toc":103},"minimark",[9,13,17,20,23,26,33,36,44,47,51,54,57,63,66,69,72,78,88,91,94,97],[10,11,12],"h2",{"id":12},"概要",[14,15,16],"p",{},"Claudeのレートリミット余ってる！？ならなんか作りてえよなぁ！？ということで、このブログにコメント機能を追加してきました。ので、そのあれこれと技術的なつまらない話を書きます。",[14,18,19],{},"誰が使うんだ？というのはともかく、匿名可だしメアドもいらないので、荒らさない程度になんか書いてってくれると嬉しいかも。いつも通りカバー画像は無関係です、トモコレ楽しいね。",[10,21,22],{"id":22},"中身",[14,24,25],{},"設計の中身の話を軽くします。興味のない人は読み飛ばしてください。",[14,27,28],{},[29,30],"img",{"alt":31,"src":32},"簡単な図","https://images.bokukoha.dev/blog/comment-feat/__________2026-05-17_195940.webp",[14,34,35],{},"と、このようにいいね機能同様AWSフル活用のサーバーレス構成です。管理は以前作ったヘッドレスCMSからやってるので、そこだけはサーバーレスではないんですが。",[14,37,38,39,43],{},"モデレーションにひと工夫というか面白い要素を取り入れたかったので、今回は",[40,41,42],"code",{},"Claude-haiku-4.5","にモデレーションの一部を丸投げする方式を取ってみました。あんまし中身をべらべら喋るのも運用上良くないと思うので詳しくは言えませんが、攻撃的なコンテンツや宣伝コンテンツを排除するために2段階で判定するアプローチをとっています。",[14,45,46],{},"今回もいつも通りAWSの権限周りが一番の難所だった気がしますね。他はこっちが設計決めてClaudeに任せるだけだったのでそこまでという感じ。ほぼClaudeに鞭打ちしていただけでした。",[10,48,50],{"id":49},"uiの工夫","UIの工夫",[14,52,53],{},"これ、下スクロールして見ていただいたらわかるんですがかなり自信作です。めっちゃ見やすくないですか？",[14,55,56],{},"RedditとYoutubeのいいところどりをしたようなUIに気合で仕上げてきました。中身はほとんどClaude製なので僕は鞭打ってただけなんですがね……。",[14,58,59],{},[29,60],{"alt":61,"src":62},"これはプロトタイプ① 色々悩んだけど結局Youtubeのコメ欄を大いに参考にした","https://images.bokukoha.dev/blog/comment-feat/__________2026-05-17_200707.webp",[10,64,65],{"id":65},"コーディングエージェントありがとう",[14,67,68],{},"かんたん構成図見ていただいたらわかると思うんですが、今回の実装は①ブログページ, ②CMS, ③AWSの三か所を横断する形でのプロジェクトとなりました。",[14,70,71],{},"Misskeyで同じ話をしたのですが、1つのものを作るだけなら全然自力でもなんとかなりますが、複数プロジェクトを横断するような大規模プロジェクトだと、コーディングエージェントの有能さがほんとに際立つなあと痛感しました。俺が忘れてることでも覚えててくれてありがとう。",[14,73,74],{},[29,75],{"alt":76,"src":77},"この謎生物はナニ？","https://images.bokukoha.dev/blog/comment-feat/__________2026-05-17_201309.webp",[14,79,80,81],{},"それはそれとして、逆に俺が覚えてるのにClaudeが忘れてることもちょくちょくあって、「君、その修正ここ変えるだけじゃね？」みたいなことを言ったら「鋭い視点ですね😎」とか返してきて殴りたくなる瞬間もありましたが。 ",[82,83,84],"small",{},[85,86,87],"del",{},"それくらい自分で直せってことですかね",[10,89,90],{"id":90},"おわり",[14,92,93],{},"物の関係上あまり中身を詳しく話せないのが悲しいところですね。こういったモデレーションが必要なコンテンツ（要するにユーザーからの入力を受け付けるもの）を作ったのって実は初めてなので、モデレーション設計が自分でもわかるくらいガバガバな気がします。",[14,95,96],{},"良ければ下のコメント欄で僕とClaudeの検閲の穴をかいくぐってくてみてください。正直実用しながら検閲の調整して行くのがちょうどいいよな❓",[14,98,99],{},[29,100],{"alt":101,"src":102},"おまけ　ロビンの歌を聞いて感動するサンデー。近親相姦、一番いい歌詞","https://images.bokukoha.dev/blog/comment-feat/2026051117091700_s.webp",{"title":104,"searchDepth":105,"depth":105,"links":106},"",4,[107,109,110,111,112],{"id":12,"depth":108,"text":12},2,{"id":22,"depth":108,"text":22},{"id":49,"depth":108,"text":50},{"id":65,"depth":108,"text":65},{"id":90,"depth":108,"text":90},"技術系","https://images.bokukoha.dev/blog/test/2026051117085800_s.webp","2026-05-17",false,"md",{},true,"/blog/comment-feat","---\ntitle: \"ブログにコメント機能つけたぞ！（いらない）\"\ndate: \"2026-05-17\"\ncategory: \"技術系\"\ntags:\n  - \"AWS\"\n  - \"Claude\"\ncoverImage: \"https://images.bokukoha.dev/blog/test/2026051117085800_s.webp\"\ndraft: false\ndescription: \"Claudeのレートリミット余ってる！？ならなんか作りてえよなぁ！？ということで、このブログにコメント機能を追加してきました。ので、そのあれこれと技術的なつまらない話を書きます。\"\n---\n\n## 概要\n\nClaudeのレートリミット余ってる！？ならなんか作りてえよなぁ！？ということで、このブログにコメント機能を追加してきました。ので、そのあれこれと技術的なつまらない話を書きます。\n\n誰が使うんだ？というのはともかく、匿名可だしメアドもいらないので、荒らさない程度になんか書いてってくれると嬉しいかも。いつも通りカバー画像は無関係です、トモコレ楽しいね。\n\n## 中身\n\n設計の中身の話を軽くします。興味のない人は読み飛ばしてください。\n\n![簡単な図](https://images.bokukoha.dev/blog/comment-feat/__________2026-05-17_195940.webp)\n\nと、このようにいいね機能同様AWSフル活用のサーバーレス構成です。管理は以前作ったヘッドレスCMSからやってるので、そこだけはサーバーレスではないんですが。\n\nモデレーションにひと工夫というか面白い要素を取り入れたかったので、今回は`Claude-haiku-4.5`にモデレーションの一部を丸投げする方式を取ってみました。あんまし中身をべらべら喋るのも運用上良くないと思うので詳しくは言えませんが、攻撃的なコンテンツや宣伝コンテンツを排除するために2段階で判定するアプローチをとっています。\n\n今回もいつも通りAWSの権限周りが一番の難所だった気がしますね。他はこっちが設計決めてClaudeに任せるだけだったのでそこまでという感じ。ほぼClaudeに鞭打ちしていただけでした。\n\n## UIの工夫\n\nこれ、下スクロールして見ていただいたらわかるんですがかなり自信作です。めっちゃ見やすくないですか？\n\nRedditとYoutubeのいいところどりをしたようなUIに気合で仕上げてきました。中身はほとんどClaude製なので僕は鞭打ってただけなんですがね……。\n\n![これはプロトタイプ① 色々悩んだけど結局Youtubeのコメ欄を大いに参考にした](https://images.bokukoha.dev/blog/comment-feat/__________2026-05-17_200707.webp)\n\n## コーディングエージェントありがとう\n\nかんたん構成図見ていただいたらわかると思うんですが、今回の実装は①ブログページ, ②CMS, ③AWSの三か所を横断する形でのプロジェクトとなりました。\n\nMisskeyで同じ話をしたのですが、1つのものを作るだけなら全然自力でもなんとかなりますが、複数プロジェクトを横断するような大規模プロジェクトだと、コーディングエージェントの有能さがほんとに際立つなあと痛感しました。俺が忘れてることでも覚えててくれてありがとう。\n\n![この謎生物はナニ？](https://images.bokukoha.dev/blog/comment-feat/__________2026-05-17_201309.webp)\n\nそれはそれとして、逆に俺が覚えてるのにClaudeが忘れてることもちょくちょくあって、「君、その修正ここ変えるだけじゃね？」みたいなことを言ったら「鋭い視点ですね😎」とか返してきて殴りたくなる瞬間もありましたが。 \u003Csmall>~~それくらい自分で直せってことですかね~~\u003C/small>\n\n## おわり\n\n物の関係上あまり中身を詳しく話せないのが悲しいところですね。こういったモデレーションが必要なコンテンツ（要するにユーザーからの入力を受け付けるもの）を作ったのって実は初めてなので、モデレーション設計が自分でもわかるくらいガバガバな気がします。\n\n良ければ下のコメント欄で僕とClaudeの検閲の穴をかいくぐってくてみてください。正直実用しながら検閲の調整して行くのがちょうどいいよな❓\n\n![おまけ　ロビンの歌を聞いて感動するサンデー。近親相姦、一番いい歌詞](https://images.bokukoha.dev/blog/comment-feat/2026051117091700_s.webp)",{"title":5,"description":16},"blog/comment-feat/index",[125,126],"AWS","Claude","Q-2UMDqsWTGSIdWg0H1jw_VWEcdDhU9aftiwqCSPwyo",[129,134,139,144,149],{"title":130,"path":131,"date":132,"category":113,"coverImage":133},"ClaudePro契約してCMS作ったぞ！！！","/blog/cms-dev","2026-04-09","https://images.bokukoha.dev/blog/cms-dev/PXL_20260327_034729621.jpg",{"title":135,"path":136,"date":137,"category":113,"coverImage":138},"MisskeyのDBバックアップとオブジェクトストレージの設定方法","/blog/misskey-setting","2025-11-23","https://images.bokukoha.dev/blog/misskey-setting/main.jpg",{"title":140,"path":141,"date":142,"category":113,"coverImage":143},"Proxmoxでコンテナ on コンテナして自鯖落とした話","/blog/docker-on-lxc","2025-11-21","https://images.bokukoha.dev/blog/docker-on-lxc/main.png",{"title":145,"path":146,"date":147,"category":113,"coverImage":148},"Nuxt Content3のコンポーネント呼び出し機能で遊んでみよう","/blog/md_components","2025-11-17","https://images.bokukoha.dev/blog/md_components/6.jpg",{"title":150,"path":151,"date":152,"category":113,"coverImage":153},"自宅で動かすMinecraftサーバー","/blog/mc_server","2025-09-30","https://images.bokukoha.dev/blog/mc_server/main.jpg",1779071540948]