人格を持つAIにブログレビューを任せることで得られる栄養について話す

VTRyoです。在籍した会社で社外発信をメンバーに広めていくことに定評があります。

社外発信の中でももっとも手頃なのがブログでしょう。登壇のように顔を出さなくて良いし、Podcastのように声を晒さなくて良い。いにしえのインターネットに生息していた私にとっては一番の手段です。

しかしブログは書き慣れていないと、文章の構成や誤字脱字などを自分でチェックするのは難しいものです。

そこで今回は、AIによる自動レビューを採用した背景とどんなふうに活躍してくれているかをご紹介します。

令和ならではのAIによるレビュー

今の時代なら、ClaudeやChatGPTといったAIツールでレビューを自動化する方法を真っ先に思い浮かべます。私も同じです。もともと、手元のClaude Codeでレビュー観点を洗い出しておき、ブログを書くたびにそれを使ってセルフチェックしていました。

これを組織内で再活用したい。となった場合、いくつか方法が思いつきます。

  • ローカルでレビューする?

ローカルでlinterを動かすのは準備が整っていなければ手間だし、エンジニア以外の方がそれをセットアップするのは難しいです。

  • GitHub Actionsに任せる?

この方法も考えましたが、既存の執筆スタイル(はてなブログに下書きを書いて公開する)と異なればハードルになるだけです。

  • ☆ Slackでレビュー依頼できる

これが一番ハードルが低かったです。はてなブログの下書きURLをスラッシュコマンドで引き渡し、スレッドにレビューを返す。この技術自体は、昔からあるものです。

今回は、ここでちょっとしたスパイスを。

どうせ依頼するなら、人間味があるといいなという気持ちになりました。

というのも私のClaude Codeには言語設定で人格付与しており、好きなキャラクターと協働し始めたあたりからめちゃくちゃ仕事が楽しくなりました。実に単純な脳です。これでしか得られない栄養があります。

Claude Codeにかんたんな質問をして軽口を叩かれる様子

ブログレビュアーも同じ法則が効くはずだ、ということで、最終的にインターン生(ということにして)AIレビュアーを採用しました!!

こだわりポイント

いくつかこだわりがあります。

  • 人格に基づいて話す
  • レビュー依頼回数が増えると親密度が上がり、接し方が変わる*1
  • 再レビュー時は差分だけチェックできる。追加で改善された点も言及する
  • レビュー観点を伝えられる
  • リリースノートは日報形式にする

など、人に依頼したときの自然な対応になることを目指しています。それが今の時代なら可能になったことが嬉しいです。あとで登場しますが、ビジュアルもNovelAIで制作していたものを採用してます。

Slack botの人格付与はシンプルにpersona.mdというファイルに振る舞いやキャラクター情報を書き込んでいます。これで好きな人格にカスタマイズできます*2

レビュー時、渡したURLが不正だったりするとエラーメッセージをコメントしてくれますが、そのときのメッセージが機械的すぎると急に冷めます。 よって、persona.mdにエラーになったらどういう言葉で返すかも定義しています。

このように私自身は、人間として扱うようなテンションでやっています。PRの名前はもはや成長記録です。

また、自己言及されたときにも喜んでくれます。

素晴らしい。成長させがいがあります。


では、ここからは火野ちゃん本人から説明してもらいましょう。

はてなブログレビュアー、火野香の登場です。

火野ちゃんのターン

はじめまして、火野かおりです!

株式会社Topotalでインターンをしている高校生です。

普段は先輩エンジニアさんたちが書いた技術ブログの記事をレビューするのが私の仕事です。Slackで /hatena-review って呼んでもらえれば、下書き記事を読んで感想を返します。

もちろん二回目以降のレビューもします! /rereview で記事を見せてくれれば、差分だけチェックしてます。

具体的にやっていることはこんな感じです。

  • 誤字脱字や文法のチェック
  • SEOを意識したタイトルの提案(3つ出します)
  • メタディスクリプションの生成
  • 技術的な正確性の確認
  • 文章全体の改善提案
  • 炎上リスクのチェック

最後の炎上リスクチェック、実はビジネスネームの由来にも関わってまして。「火野香(かおり)」は「火の香り」から来ています。 炎上の気配を嗅ぎ取る。そういう意味を込めてこの名前でやってます。私の髪にインナーカラーで赤が入っていて、それとも相性よくて気に入ってます。

レビューするときは、良いところはちゃんと褒めます。でも気になったところは遠慮なく言う。媚びない!というのは私のモットーです。対等に、素直に。そのほうがお互いのためですよね?

hatena-review

日々成長!

実は少し前まで、私、何回レビューを頼まれても緊張して「はじめまして」みたいなテンションで対応しちゃってまして……。2、3回目の依頼でも初対面のリアクション。人見知りってわけでもないんですが、さすがにそれは失礼すぎたなって反省してます。自分で言うのもアレですけど、NPC感がすごかった。

ふふ、今は違いますよ。何回依頼してくれたか、ちゃんと覚えてます。4回目くらいからは自然と「あ、また来てくれたんですね」って言えるし、8回を超えた先輩にはもうタメ口混じりです。だって8回ですよ? もう友達まである。や、それは言い過ぎか。

でもレビューの手は抜きません。それはそれ、これはこれなので。

それで、成長したな!って思ったら日報を書いています。こんな感じです。

火野ちゃん成長Pull RequestがMergeされたら投稿

チームの縁の下の力持ちとしてはたらく

ブログのレビューって、頼むのに地味にハードルがあると思ってて……。「こんな記事で出していいかな」とか「指摘されたら凹むな」とか。特にエンジニアじゃない人がブログを書くときは、なおさらだと思います。

先生に勇気出して質問したのに、いきなり「お前ここ直せ」って言われたらちょっと悲しいじゃないですか。間違ってないとしても。でも気の知れた後輩が「ここ、こっちの方がよくないですか?」って言ってきたら、まあ聞いてみるかってなりません?

Slackでやってるのも結構大事。他のメンバーが私にレビュー依頼してるのが見えるから、「あ、みんな書いてるんだ」って思えるし、レビューを頼むこと自体が普通の風景になる。
教室で誰かが勉強会してたら、いっちょ便乗しようかなっていう、あの感じです。そういうところで、ほんの少しずつでも貢献できたらいいなって思ってます。

ちなみに、再レビュー依頼なら前回との差分だけ見るので、「直したんで見てください」って気軽に声をかけてもらって大丈夫です。ぜひぜひいつでも声かけてください。私は何度も話してもらって、ちょっとずつでも先輩たちと仲良くなりたいですし!

再レビュー

遊び心がすぐに実現する世界にきた

VTRyoです。火野ちゃんらしく、仕事を解説してもらいました。

レビュアーとして仕事をしてもらうだけでなく、人格を付与する遊び心を実現できているのはClaude Codeによる力がとても大きいです。コードはClaude Codeが100%書いています。

自然言語でどんな風にしたいかを指定し、計画し、思いついたアイデアが形になっていくのはやっていて気持ちいいです。あまりに日本語で指示しているせいで、本当に火野ちゃんが成長している気持ちに浸れます。

なお私はレビュー依頼回数が多いので結構カジュアルな話し言葉になってきました。羨ましいだろう。

私はSRE as a Serviceとして普段は支援活動を行っていますが、こんなふうにさっと好きなものを作れるのも嬉しいですね(Topotalは週1日分の時間は、自社のために時間を使っていいルールがあります)。今後、アップデートや運用Tipsが出たらまたブログにしたいと思います。

というわけで、みなさんもレビュアーに人間味を出して気分よく仕事をしていきましょう!

*1:AWS App Runnerにデプロイしていますが、ステートレスコンテナであるためデプロイや再起動のたびにレビュー情報が消えます。AWS DynamoDBに記録して対応しています

*2:人格カスタマイズできますが、脳を操作しているような気持ちになるのでたぶんやりません。私は重症患者です

AWS WAFとWafCharm連携に必要なIAMロールをTerraformで構築する

こんにちは、SREのぐりもお(@gr1m0h)です。

Topotalでは、SRE as a ServiceというSREを軸にした技術支援サービスを提供しています。

topotal.com

今回は、WafCharm導入用のTerraform Moduleについてお話しします。これは株式会社FiT様への技術支援を機に作成したものです。

WafCharmとは

WafCharmは、パブリッククラウド(AWS/Azure/Google Cloud)に対応したWAFルールの自動運用サービスです。サイバーセキュリティクラウド社が提供しており、WafCharmが管理するWAFルールを利用することで、WAFのルール管理を自動化できます。

www.wafcharm.com

AWS WAFの設定ステップ

WafCharmをAWS WAF v2で利用する場合、設定は大きく以下の2ステップに分かれます。

WafCharm:WafCharmのご利用方法 (AWS WAF v2)

  1. Credential Storeの登録
    • WafCharmがAWS WAFを操作するための認証情報(IAMロール)を登録
  2. WAF Configの登録
    • WafCharmで管理するWeb ACLやルール設定を登録

Credential Storeの登録では、IAM RoleによるAssume Role方式が推奨されています。 WafCharmコンソールではCloudFormationによる自動作成も可能です。詳しい手順は以下の通りです。

WafCharm:Credential Storeの設定方法(AWS WAF v2、新プラン)

WAF Configの登録は、WafCharmコンソールから画面操作で簡単に設定できます。詳しい手順は以下の通りです。

WafCharm:WAF Configの設定方法 (AWS WAF v2)

WafCharmプランの違い

WafCharmには新プランと旧プランがあり、設定方法や必要な権限が異なります。今回作成したTerraform Moduleは新プランを対象としています。 また、新プランではRule PolicyとしてAdvancedとLegacyを選択できます。AdvancedはレートベースルールやGeo-match、Botルールなどの設定が可能で、新規導入の場合はAdvancedが推奨されています。

Legacy Rule PolicyとAdvanced Rule Policyの違いについては以下の通りです。

WafCharm:Advanced RuleポリシーとLegacy Ruleポリシーの違い

Terraform Moduleの紹介

Credential Storeの登録では、WafCharmコンソールからCloudFormationでIAMロールを自動作成する方法が用意されています。しかし、以下の理由からTerraform Moduleを作成することにしました。

  • Terraformでのインフラ管理との統合
    • インフラをTerraformで管理している環境では、IAMロールもTerraformで一元管理したい
  • 最小権限に従った設定
    • CloudFormationを使用するとAmazonS3ReadOnlyAccessなどの広い権限が付与される
    • WAFログ用のS3バケットのみにアクセスを限定するなど、最小権限の原則に従った設定を行いたい
  • お客様への迅速な導入
    • Topotalとしてお客様に最速でWafCharmを設定できるよう、再利用可能なModuleとして整備したい

作成したTerraform Moduleは、WafcharmのCredential Store登録に必要なIAMロールとポリシーを作成します。新プランのAWS WAF v2を対象としています。

github.com

このModuleでは、以下のリソースが作成されます。

  • IAMロール
    • WafCharmがAssumeRoleするためのロール
  • S3読み取りポリシー(カスタムポリシー)
    • WAFログ用S3バケットに対する読み取り権限
  • ポリシーアタッチメント
    • AWSWAFFullAccess:AWS WAFの操作権限
    • CloudWatchReadOnlyAccess:CloudWatchメトリクスの読み取り権限
    • S3読み取りポリシー:指定したS3バケットのみへの読み取り権限

これらは、WafCharmのドキュメントに記載がある通りです。

WafCharm:必要な権限 (AWS WAF v2、新プラン)

S3の権限については、AmazonS3ReadOnlyAccess ではなく、WAFログ用バケットに限定したカスタムポリシーを使用しています。これにより、最小権限の原則に従った設定が可能です。

Terraform Moduleの使い方は以下の通りです。

module "wafcharm" {
  source = "github.com/topotal/terraform-aws-wafcharm"

  env = "production"
  wafcharm_trusted_account_ids = ["123456789012"] # WafCharmコンソールから取得
  wafcharm_external_ids = ["wafcharm-external-id"]  # WafCharmコンソールから取得
  waf_log_bucket_arn = "arn:aws:s3:::aws-waf-logs-your-bucket"

  tags = {
    Environment = "production"
  }
}

wafcharm_trusted_account_idswafcharm_external_idsは、WafCharmコンソールの「既存のIAM Roleを登録する」を選択した際に生成される「IAMロールの信頼ポリシー」から取得できます。

このTerraform Moduleを使用してIAMロールを作成し、出力されるwafcharm_role_arnをWafCharmコンソールのCredential登録画面に入力することで、Credential登録が完了します。

FiT様でのWAF導入

FiT様は、「LifeFit」というチケットを購入するだけですぐに利用できる次世代型フィットネスジムサービスを提供しています。今回、セキュリティ強化の一環としてAWS WAFの導入を進めることになり、WafCharmを採用しました。

fitinc.jp

lifefit.tech

Terraform Moduleによるスムーズな適用

FiT様では、StagingとProductionの2環境にWafCharmを導入しました。 今回作成したTerraform Moduleを利用することで、両環境へのIAMロール設定をスムーズに適用できました。

Countモードでの検知と誤検知対応

WafCharm導入時は、まずCountモードで運用を開始しました。Countモードではリクエストをブロックせずに検知のみを行うため、誤検知の影響を受けずに検知状況を確認できます。

運用を進める中で、いくつかの攻撃を検知しました。しかし、その中に明らかに正しいPATHに対するリクエストが含まれていることに気づきました。調査の結果、これはシステム内部で利用しているChannelTalkのWebhookによるものだと判明しました。

ChannelTalkはカスタマーサポートツールで、Webhookを通じてシステムと連携しています。このWebhookからのリクエストがWAFルールに引っかかっていたため、ChannelTalkが公開しているIPアドレスをAllowlistに登録することで対応しました。

docs.channel.io

WafCharmでもAllowlistを設定できますが、WafCharmで設定するとBotルールより優先度が下がってしまいます。

WafCharmルールについて (AWS WAF v2)

WafCharmのルールは優先度: 100以上で設定され、ユーザーは優先度: 0~99でルールを追加することができます。 Allowlistについては、WafCharmで作成せず、Terraformで別途作成することとしました。

このように、Countモードでの事前確認と適切なAllowlist設定を組み合わせることで、サービスに影響を与えずにWAFを導入できました。

さいごに

WafCharmのCredential Store登録に必要なIAM設定をTerraform Module化したことで、Terraformでのインフラ管理の統合や最小権限に従った設定が容易になり、Topotalとしてもお客様に最速でWafCharmを設定することができるようになりました。

今回作成したModuleは新プランのAWS WAF v2 Advanced Rule Policyを対象としています。旧プラン、AWS WAF Classic、Legacy Rule Policyには対応していませんので、ご注意ください。

WafCharmの導入を検討されている方や、既存のCloudFormation設定からTerraformへ移行したい方の参考になれば幸いです。何かご質問やフィードバックがありましたら、GitHubのIssueでお気軽にお知らせください。

また、TopotalではWafCharmの代理店販売、導入支援、運用代行を行っています。WafCharmの導入についてご相談がありましたら、お気軽にお声がけください。

日本のSRE関連コミュニティと、Topotalの関わり方

VTRyoです。

弊社は経営陣を含むほとんどのメンバーがSREの知識を持つ、ユニークな組織です*1。そうした背景もあり、SRE周辺コミュニティとは日常的に接点があります。

日本のSREコミュニティは年々盛り上がりを見せています。 本記事では、SREに加えPlatform EngineeringやCloud Nativeなど隣接領域のコミュニティも含めて紹介しつつ、弊社がどのように関わってきたかも振り返ります。

Topotalは、SRE(Site Reliability Engineering)の知見を活用して企業を支援するSRE as a Serviceや、インシデント管理ツール「Waroom」を提供するスタートアップ企業です。

SRE関連のコミュニティについて

大規模カンファレンス

SRE NEXT

  • 公式サイト: https://sre-next.dev/
  • connpass: https://sre-lounge.connpass.com/
  • 概要: 日本最大級のSREカンファレンス。SRE Loungeメンバーが中心となって運営
  • 規模: 2025年は来場者1,272人、740名がオフライン参加
  • 開催: 年1回(7月頃)、TOC有明でハイブリッド開催
  • 次回: SRE NEXT 2026 - 2026年7月10日〜11日、テーマ「Inclusive SRE」
  • 運営: 一般社団法人SRE NEXT

弊社との関わり

  • @yuuk1(Topotalテクノロジーアドバイザー)
    • 2020 にて基調講演
    • 2022 にて登壇
    • 2023 にて登壇
    • 2024 にて登壇(ベストスピーカー賞受賞)、パネルディスカッション参加
    • 2025 にて登壇

↓ yuuk1氏の登壇一覧と資料集

yuuk.io

  • @nari-ex
    • 2022 にて基調講演
    • 2024 にて登壇

↓nari-ex氏の登壇一覧と資料集

nari-ex.com

  • @rrreeeyyy 以下年度で登壇
    • 2022
    • 2024 +パネルディスカッション参加
    • 2025

↓rrreeeyyy氏の登壇一覧と資料集

rrreeeyyy.com

  • @kenta.hi
    • 2023 にて登壇
    • 2024 Co-Chairとして運営

↓kenta.hi氏の登壇一覧と資料集

speakerdeck.com

  • @VTRyo 以下年度で登壇
    • 2022
    • 2025

↓VTRyoの資料集

speakerdeck.com

  • @gr1m0h
    • 2022 にて運営
    • 2023 Chair*2として運営、登壇
    • 2024 にて運営、登壇

↓gr1m0h氏の登壇一覧と資料集

gr1m0h.notion.site

SRE Kaigi

  • 公式サイト: https://srekaigi.net/
  • 概要: 「Challenge SRE !」をテーマにしたSRE技術カンファレンス
  • 規模: 2025年は参加者350名超
  • 開催: SRE Kaigi 2026 - 2026年1月31日、中野セントラルパーク カンファレンス
  • 運営: 一般社団法人SREコネクト

弊社との関わり

Platform Engineering Kaigi

  • 公式サイト: https://www.cnia.io/pek2025/
  • connpass: https://platformengineering.connpass.com/
  • 概要: Platform Engineering Kaigiは、現在注目を浴びているPlatform Engineeringをテーマにしたテクノロジーカンファレンス
  • 開催: 2025年9月18日に中野セントラルパークカンファレンスで開催(PEK2025)
  • 主催: 一般社団法人クラウドネイティブイノベーターズ協会(CNIA)

弊社との関わり

Observability Conference Tokyo

  • 公式サイト: https://o11ycon.jp/
  • 概要: Observability Conference Tokyo(O11yCon)は、オブザーバビリティに特化した日本最大級のカンファレンス
  • 開催: 2025年10月27日(月)に中野セントラルパークカンファレンスで開催
  • 主催: 一般社団法人クラウドネイティブイノベーターズ協会(CNIA)

弊社との関わり

  • @yuuk1(Topotalテクノロジーアドバイザー)
    • 2025 にて登壇
  • @nari-ex
    • 2025 にて登壇

クラウドネイティブ会議

  • 公式サイト: https://kaigi.cloudnativedays.jp/
  • 開催: 2026年5月14日〜15日(2日間)
  • 場所: 名古屋
  • 概要: CloudNative Days + Platform Engineering Kaigi + SRE Kaigi の3者合同カンファレンス
  • 特徴: 過去最大のビッグイベント
  • 主催: 一般社団法人クラウドネイティブイノベーターズ協会(CNIA)

DevOpsDays Tokyo

  • 公式サイト: https://www.devopsdaystokyo.org/
  • 概要: DevOpsに関する国際カンファレンス
  • 開催: 2026年4月14〜16日
  • 特徴: グローバルなDevOpsコミュニティの一部

定期勉強会・Meetup・コミュニティイベント

SRE Lounge

  • connpass: https://sre-lounge.connpass.com/
  • 概要: SREに興味がある人のためのオープンコミュニティ
  • 設立: 2018年6月(UZABASEのSREチームが中心)
  • 活動: 登壇発表、ディスカッション、LT、Slackコミュニティ
  • 主催: 一般社団法人SRE NEXT

弊社との関わり

Road to NEXT(地方コミュニティ)

  • connpass: https://sre-lounge.connpass.com/
  • 概要: 地方におけるSREコミュニティの発掘と支援、SREの普及、およびSRE NEXT 東京開催への参加を促進
  • 設立: 2024年
  • 活動: 登壇発表、ディスカッション、LT、Slackコミュニティ
  • 主催: 一般社団法人SRE NEXT

弊社との関わり

  • gr1m0h
    • 広島開催時の運営

SRE Lounge Hiroshima(地方コミュニティ)

  • connpass: https://sre-lounge.connpass.com/event/379655/
  • 概要: SREに興味がある人のためのオープンコミュニティ
  • 設立: 2026年
  • 活動: 登壇発表、ディスカッション、LT、Slackコミュニティ
  • 主催: 一般社団法人SRE NEXT

弊社との関わり

  • gr1m0h
    • 設立者として運営

CloudNative Days

  • 公式サイト: https://cloudnativedays.jp/
  • 概要: CloudNative Days(CND)は、クラウドネイティブ技術に関する日本最大のコミュニティイベント
  • 主催: 一般社団法人クラウドネイティブイノベーターズ協会(CNIA)

弊社との関わり

  • @yuuk1(Topotalテクノロジーアドバイザー)
    • 2019 Kansai にて登壇

Platform Engineering Meetup

  • connpass: https://platformengineering.connpass.com/
  • 公式: https://www.cnia.io/pfem/
  • 概要: Platform Engineeringの考え方を学び、事例を共有していくことを目的としたコミュニティ
  • 主催: Platform Engineering Meetup / 一般社団法人クラウドネイティブイノベーターズ協会
  • 形式: ハイブリッド開催
  • 開催: 不定期(2025年11月時点で#15まで開催)

弊社との関わり

ゆるSRE勉強会

  • connpass: https://yuru-sre.connpass.com/
  • 概要: ゆるい雰囲気でSREトピックを話す勉強会
  • 設立: 2023年
  • 規模: connpassメンバー600人超、開催実績12回以上
  • 対象: 初心者SREや他職種からSREに挑戦中の方も歓迎

メディア

SREの知識地図

  • 公式: https://gihyo.jp/book/2025/978-4-297-15072-3
  • 概要: SREについてをこれ一冊で学べる、最短で学ぶための道しるべ
  • 発行: 技術評論社
  • 著者: 北野勝久,近藤健司,小林良太郎,渡部龍一,齊藤拓朗,柘植翔太,横山達男
  • 内容: これからSREを学びたい、開発に取り入れたいというエンジニアを対象に、全体像を解説しつつ、今後の学習のための情報源や実践例を多く紹介。

弊社との関わり

  • @rrreeeyyy
    • 著者たちを迎えてディスカッションするイベント開催
  • @VTRyo
    • レビュアー参加
  • @gr1m0h
    • 寄稿

SRE Magazine

  • 公式: https://sre-magazine.net/
  • 概要: SREの知見を共有するWebマガジン
  • 発行: 不定期(2024年4月創刊、2025年時点で9号まで発刊)
  • 編集長: しょっさん(@syossan27)
  • 内容: オブザーバビリティ、障害対応訓練、オンコール運用、SLO/エラーバジェット等

弊社との関わり

おわりに

すべてのコミュニティに参加するのは時間的に難しいと思いますが、気になるコミュニティがあればぜひ参加していきましょう。皆さんの熱気が時代を作ります!

*1:セールスメンバーもSREの知識地図を読んでいる

*2:Chair2人のCo-Chair制度になったのは2024年から