はい、時刻は朝7時をまわりました。1月24日、土曜日の朝です。おはようございます、「zenncast」パーソナリティのマイクです。
この番組では、毎回Zennで話題になっているトレンドの記事をピックアップして、朝イチでみなさんにお届けしていきます。通勤前、通学前、ベッドの中のあなたも、ゆるっと耳だけ貸していただければと思います。
さて今日は、Zennで話題の記事をぜんぶで5本ご紹介していきます。技術寄りの話から、開発のワークフロー、そしてレビューのツールまで、わりと幅広くつまみ食いできるラインナップになってますよ。
ではまず1本目。
タイトルは「【個人開発】Claude Codeに83%のコードを書かせる『ドキュメント駆動開発』の全貌【Flutter向けCLAUDE.md公開】」。
これ、AI時代の開発スタイルとしてかなり実践的で面白いです。Flutterの予定管理アプリを3週間で作って、そのコミットの83.5%をClaude Codeに書いてもらった、という話なんですが、ポイントは「AIに丸投げ」じゃなくて「ドキュメントでガチガチにレールを敷いてから走らせる」ってところなんですよね。最初の3日で、プロダクトの方向性から技術設計まで、24種類ものドキュメントを用意して、AIが“勝手に推測しないようにする”環境をつくった、と。
特徴的なのが「CLAUDE.md」という、AIが毎回最初に読む“案内板ファイル”を置いて、そこには最小限の情報と「このディレクトリのこの番号を読んでね」というポインタだけを書く。そして、10_product、20_design、30_technical…みたいに番号付きディレクトリで情報を整理して、どこがSSOTなのかを明確にしているんですね。MECEっぽく仕様を分解して、通知の仕様とかも構造化。さらにlib以下にもREADMEを置いて、アーキテクチャの地図を作る。
プロンプトも工夫されていて、「曖昧な点があったら必ず質問してから実装して」とAIに約束させる。コミットも細かく分けて、ドキュメントの粒度も「コードが真実、ドキュメントは理由を残す」に徹する。これをやることで、途中からは「ドキュメントを読んで実装するだけ」の状態にして、ひたすらAIに書かせていく。AIにとっての“職場環境”を整えると、ここまで開発速度と品質が上がるのか、というのが伝わってくる記事でした。AIと一緒に開発したい人にはかなり刺さる内容だと思います。….
続いて2本目。
タイトルは「ステルスSSID、百害あって一利なし」。
Wi-Fi好き、ネットワーク好きの方にはおなじみのワードかもしれませんが、「SSID非通知にすればちょっとは安全なんでしょ?」っていうあの考えに、バッサリ切り込んでいる記事です。昔、WEP時代には多層防御っぽく使われてた「ステルスSSID」なんですが、今の時代だとセキュリティ効果はほぼゼロ、むしろリスク増えますよ、という話。
理由としては、SSIDって管理フレームの中で結局どこかで露出するので、Wiresharkみたいなツールを使えば簡単に見えちゃうんですね。さらにやっかいなのが、ステルスSSIDにしていると、クライアント側が「このSSIDどこ〜?」とDirected Probe Requestを飛ばしまくる。その結果、過去に接続したネットワーク名が漏れたり、Evil TwinやKARMA攻撃のターゲットにされやすくなったり、バッテリーもじわっと消耗したり、特にiOSだと接続まわりの挙動が不安定になったりする。
じゃあどうするのがいいの?というところで、記事は「素直にSSIDは公開しましょう」と。拠点ごとにSSIDは統一して、しっかり強いパスフレーズを設定したうえで、WPA2/WPA3、可能ならWPA3-EnterpriseやPPSK/DPSKみたいな、ちゃんとした認証と暗号化に投資しましょう、という提案です。見かけだけの安全っぽさ、「セキュリティ・シアター」はもう卒業しよう、ってメッセージですね。家庭でもオフィスでも、ルータの設定を見直したくなる記事でした。….
3本目にいきましょう。
タイトルは「ZennのシンタックスハイライターをPrism.jsからShikiに移行しました」。
これはZenn本体の中の人の記事ですね。コードブロックのハイライトエンジンを、Prism.jsからShikiに切り替えましたよ、という技術的な裏話です。Moonbitみたいな新しい言語にも対応していきたい、というニーズがあって、TextMate GrammarとOnigurumaによる、より厳密な構文解析ができるShikiを採用した、と。
ベンチマークを取ると、ShikiはPrism.jsより2〜5倍くらい遅いんですが、それでもミリ秒オーダーで実用的と判断。実装としては、markdown-itのプラグインとしてShikiを組み込みつつ、Shiki自体はシングルトンで遅延ロード。記事の中では、コードブロックをいったんプレースホルダーにしておいて、あとから非同期で一括ハイライトする構造や、ASTベースでHTMLをカスタマイズするTransformerの話なんかも出てきます。
既存の記事については、すぐに全部置き換えるんじゃなくて、Prismで生成したHTMLをそのまま残しつつ、順次Shiki版に再変換していく方針。両者はCSS的にも競合しないようにしてあって、しばらくは共存可能という設計になってます。インフラ面の検証では、Cloud Run Functions上でShiki版はメモリ使用量が増える一方で、2GB割り当てならPrism版とほぼ同じ実行時間で動いた、と。ただ、第1世代と第2世代のCloud Runを比べると、想定より第1世代のほうがレイテンシが小さくて、「あれ?」という結果も出ていて、ここは今後の検証課題、という締めでした。Zennの裏側、どうやって動いてるのか気になっていた人にはおいしい記事です。….
4本目。
タイトルは「人用のテストケースも実行できる汎用テスト実行エージェントを開発した話」。
これは「人間が読むつもりで書いた手動テストケースを、そのままAIに実行させちゃおう」という、かなり攻めたチャレンジのお話です。対象はAndroidとPCで、テストケースは自然言語。AIエージェントが画面の説明や主要要素の意味を入力として受け取って、「じゃあ次はこのボタンを押して…」と判断・行動計画を立てて、実際の操作はADBやWin32APIに任せる構成になっています。で、その行動履歴は保存しておいて、あとから高速にリプレイできるという機能付き。
実プロジェクトのRomi設定アプリで42ケース試したところ、そのうち64.3%はテストケースの文言修正なしで実行できて、残りも少し手を入れれば全部通せた、というのがなかなかの成果ですよね。既知のバグをなぞるだけじゃなくて、人間の手動リグレッションだと見逃していたUI不整合も見つけられた、という報告も面白いポイント。一方で、実行スピードは人間より遅くて、AIの認識ミスへの不安から、結局あとで人が結果を確認するコストが増える、という課題もちゃんと書かれています。
それでも、テスト実装やメンテナンスのコストをガッと下げられる可能性があること、開発初期からユーザーストーリー単位のE2Eテストを当てていけることなど、メリットはかなり大きそう。今後は本番プロジェクトへの部分適用とか、さらにテストケース自動生成エージェントと組み合わせて、「仕様書を書いたらそのままテストまで流れる」世界観を目指したい、という展望が語られています。テスト自動化に興味ある方にはワクワクする内容です。….
ラスト、5本目。
タイトルは「Devin Reviewがレビュー疲れの人を助けてくれるかも」。
最近、生成AIでコードのアウトプット量はどんどん増える一方で、レビューをする人間の時間は増えない、という問題がありますよね。そんな「レビュー疲れ」を少しでも軽くしたい、という文脈で登場するのがDevinの新機能「Devin Review」です。
このツールは「AIが人間を置き換えます」というより、「人のコード差分理解を拡張するツールですよ」と最初から位置づけているのがポイント。PRの変更を意味単位でグルーピングして、重要そうな順に並べてくれるので、たとえばDBスキーマの変更みたいなインパクト大きめの箇所から優先的にチェックできる。さらに、PR差分について疑問があれば、その場でチャット的に聞くと、数秒で答えを返してくれる。
GitHub Actionsなどを別途用意しなくても、条件に応じて自動レビューを走らせて、見つけた怪しい点をPRにコメントとして投稿してくれる機能もあるそうです。UIもGitHubにかなり寄せてあって、コメントしたり、Approveしたり、Request Changesしたりといった基本的な操作感はほぼ同じ。一方で、現時点では日本語対応がどの程度か不透明だったり、コメント上で直接コードサジェストできなかったり、チャットでの会話をそのままレビューコメントに昇格させられなかったりと、痒いところも残っているとのこと。
それでも筆者は、既存のGitHubレビューやローカルレビューと併用しつつ、「意味的な変更のまとまりが見えること」と「雑に素早く質問できる」環境が、日々の大量PRレビューの助けになっていると感じているようです。AIがレビューを乗っ取るというより、「レビューの渋滞を緩和する肩たたき機」みたいな立ち位置で、今後の進化に期待したくなるツールですね。
というわけで、きょうの「zenncast」は、
AIに83%コードを書いてもらうドキュメント駆動開発の話、
ステルスSSIDはやめようというネットワークセキュリティの話、
ZennのコードハイライトがPrismからShikiに変わった裏側、
自然言語のテストケースをそのまま実行するテストAIエージェント、
そしてレビュー疲れを軽くしてくれそうなDevin Review、
この5本をお届けしてきました。
気になった記事があった方は、ぜひショーノートから元記事を読んでみてください。ここではさらっと概要をお話ししましたが、どの記事も、実際にはもっと細かい工夫やノウハウがぎっしり詰まっています。
番組の感想や、「こんなテーマを取り上げてほしい」といったリクエストも、どしどしお待ちしています。あなたの一言が、次回のラインナップを決めるかもしれません。
それでは、そろそろお別れの時間です。
お相手はマイクでした。また次回の「zenncast」でお会いしましょう。
それではみなさん、良い一日を。