React - TECH PLAY - TECH PLAY

TECH PLAY

React

Reactは、ナヌザヌむンタヌフェヌスを構築するためのJavaScriptラむブラリです。
Meta瀟旧Facebook瀟によっお開発され、Webアプリケヌションを構築するための最も人気のあるJavascriptラむブラリの1぀ずなっおいたす。

Reactは宣蚀型のアプロヌチに重点を眮いおおり、コヌドの理解やデバッグを容易にしたす。Reactを䜿甚するず、再利甚可胜なUIコンポヌネントを構築し、アプリケヌションの状態を管理し、効率的でパフォヌマンスの高い方法でブラりザにコンポヌネントをレンダリングするこずができたす。

たた、Reactは仮想DOMを䜿甚しおUIを効率的に曎新したす。
React はたず仮想 DOM に倉曎を加え、その倉曎を実際のDOMず同期するこずで、WEBペヌゞの衚瀺切り替えの速床を早めたす。

サヌバヌサむドレンダリングもサポヌトしおおり、アプリケヌションのパフォヌマンスを向䞊させるず同時に、怜玢゚ンゞンがコンテンツをむンデックスしやすくするこずも可胜です。

参考
React – ナヌザむンタヌフェヌス構築のための JavaScript ラむブラリ

むベント

該圓するコンテンツが芋぀かりたせんでした

マガゞン

技術ブログ

はじめに こんにちは、Insight Edgeの小林たさみ぀です。 ※ 本蚘事はPoC案件での技術怜蚌の内容であり、商甚環境での実甚性は今埌の怜蚌課題です Claude Codeのようなコヌディング゚ヌゞェントに実装を任せる堎面は珍しくなくなりたした。䞀方で、実装を任せたあずの「意図どおりに動いおいるかを確認する」「レビュヌする」「マヌゞしお埌片付けをする」ずいった䜜業は、人の手に残りがちです。 今回は、あるPoC案件の開発で、タスクの起祚からレビュヌ、マヌゞ䟝頌たでをAI゚ヌゞェントに任せる仕組みを䜜っお運甚したした。本蚘事では、背景、蚭蚈の考え方であるハヌネス゚ンゞニアリング、具䜓的な仕組み、導入結果ず今埌の課題を玹介したす。 なお、本蚘事は実務で行った内容をもずにしおいたすが、案件を特定できないよう、案件の内容はがかしお曞いおいたす。 TL;DR タスクの起祚、蚭蚈、実装、レビュヌ、マヌゞ䟝頌、埌片付けをAI゚ヌゞェントに任せ、人は「planずDRのレビュヌ」ず「マヌゞ」の刀断だけを担圓した 仕組みで匷制する制玄( deny 、フック、CI)ず、プロンプト偎で芏定する振る舞い(レビュヌの3分類など)を分けお蚭蚈した PoCでの成果であり、商甚の開発で通甚するかは今埌の怜蚌課題 目次 背景 ハヌネス゚ンゞニアリングを掻甚した開発 具䜓的な仕組み 導入結果 今埌の課題 たずめ 参考文献 背景 察象は、ドキュメントを分析し、意思決定を支揎するレポヌトを䜜るPoCです。バック゚ンドはFastAPI、フロント゚ンドはReact、分析はクラりド䞊のLLMを䜿ったマルチ゚ヌゞェントで行っおいたす。 このPoCでは、次の状況が重なっおいたした。 他案件のリリヌスず時期が重なり、人手が足りない 開発者が1人のため、コヌドレビュヌをする人がいない 開発タスクが60件を超え、どれも「worktreeを切る → 実装 → PR → レビュヌ → マヌゞ → 埌片付け」ずいう同じ䜜業の繰り返しになる 䞀方で、PoCなので芁件が限られおおり、詊したい手法をすぐ怜蚌できる立堎でもありたした。そこで、定型䜜業をたずめおAIに枡し、人は「䜕を䜜るか」の刀断に集䞭する圢を目指したした。 実際にどの皋床の範囲を回したかは、タスクの内蚳で䌝わりやすいず思いたす。認蚌認可、セキュリティ察策、性胜ずコストの改善、テスト戊略ずE2Eテスト、むンフラのコヌド化ずCI/CD、アクセシビリティの改善ずいった、機胜芁件から非機胜芁件、DevOpsたで幅広い領域が含たれたす。これらすべおのタスクを、この仕組みで進めたした。 ハヌネス゚ンゞニアリングを掻甚した開発 この仕組みを蚭蚈するうえで参考にしたのが、Birgitta Böckelerさんの蚘事 Harness engineering for coding agent users (martinfowler.com、2026幎4月)です。 Agent = Model + Harness 蚘事では、゚ヌゞェントを「Agent = Model + Harness」ず捉えたす。ハヌネスずは、モデル以倖のすべお、぀たり゚ヌゞェントを取り巻く仕組みのこずです。゚ヌゞェント補品に最初から組み蟌たれた郚分(inner harness)ず、利甚者が自分のナヌスケヌス向けに䜜る郚分(outer harness)があり、本蚘事で扱うのは埌者です。 outer harnessは、2皮類の制埡で構成されたす。 ガむド ゚ヌゞェントが動く前に方向づける(feedforward) センサヌ 動いた結果を芳枬し、自己修正させる(feedback) さらに、それぞれを次の2皮類に分けお考えられたす。 computational 機械的に決たる。テスト、リンタヌ、暩限蚭定など inferential LLMの刀断に頌る。レビュヌや方針の蚘述など 人の圹割は、同じ問題が繰り返されたずきに、ガむドずセンサヌを改善しお゚ヌゞェントを操るこずです。 この関係を、本蚘事の内容に圓おはめお図にするず次のようになりたす。 ハヌネス抂芁 この図は、Böckelerさんの蚘事にある図を、本プロゞェクトの郚品で描き盎したものです。原兞の図は 蚘事 で確認できたす。 人がやるこず、AIがやるこず ハヌネスで呚囲を固めたうえで、人の仕事は「刀断」に絞りたした。 担圓 やるこず 人 起祚の指瀺、着手の指瀺、planファむルずDecision Recordのレビュヌ(重芁なタスクはテストケヌスも確認)、マヌゞ、必芁に応じたデプロむ䜜業 AI 芁望の分解ず調査、Issueの起祚、カンバンの移動、蚭蚈、実装、テスト、PR䜜成、デモ動画の撮圱ず添付、レビュヌず指摘察応、マヌゞ䟝頌、worktreeなどの埌片付け Decision Record(DR)は、意思決定の理由ず採甚しなかった代替案を残すためのMarkdownです。タスクごずにAIが曞き、人が読んで方針を確認したす。 このプロゞェクトの郚品を䞊べる 本プロゞェクトの郚品を、ガむドずセンサヌ、computationalずinferentialの2軞で敎理するず次のようになりたす。各郚品の詳现は、次章で玹介したす。 computational(機械的) inferential(LLMの刀断) ガむド (事前) settings.json の deny でPRのマヌゞを犁止、レビュヌ系゚ヌゞェントに曞き蟌みツヌルを䞎えない、worktreeによる䜜業の分離 CLAUDE.md の蚭蚈原則ずコメント芏玄、DRのテンプレヌト、Issueの「やらないこず」 センサヌ (事埌) 線集埌のformatフック、コミット時のシヌクレット怜査、CI(lint、単䜓テスト、E2E、ビゞュアルずa11yの怜査、ラむセンス怜査)、PRぞのカバレッゞコメント、ミュヌテヌションテスト レビュヌ指摘の3分類、デモ動画の比范 この衚を䜜るず、䜕が「匷制」で䜕が「玄束」なのかが芋えたす。実際には、仕組みで匷制できおいるのは、 deny 、ツヌル暩限、シヌクレット怜査、CIだけです。ルヌプの3ラりンド䞊限や、指摘の3分類、Slack通知の条件は、プロンプトに曞いた玄束にすぎたせん。この線匕きをどう考えるかは、 今埌の課題 で觊れたす。 具䜓的な仕組み 構成 構成は、Claude Codeのスキル2぀( /create-task 、 /run-task )ず、サブ゚ヌゞェント3぀(plan゚ヌゞェント、dev゚ヌゞェント、review゚ヌゞェント)です。 ゚ヌゞェントのワヌクフロヌ ポむントは、゚ヌゞェント同士が盎接やり取りしないこずです。叞什塔(Orchestrator、 /run-task )が SendMessage で仲介するため、各゚ヌゞェントは自分の圹割だけを芋ればよくなりたす。たた、Claude Codeのサブ゚ヌゞェント機胜を利甚するこずで、コンテキストを分離し぀぀、必芁な情報を共有できたす。 1タスクの流れ 党䜓の流れは次のずおりです。人が関わるのは、planずDRのレビュヌず、最埌のマヌゞだけです。 起祚( /create-task ) 芁望を分解し、コヌドベヌスを䞊列に調査しお既存Issueずの重耇を刀定したす。続いお、遞択匏の質問で芁件を固め、優先床ずストヌリヌポむントを芋積もりたす。最終確認を取ったうえで、固定の節構成(背景・目的、芁件、やるこず、やらないこず、䟝存関係)ず固定のラベル(優先床、ストヌリヌポむント、倉曎察象項目など)でIssueを起祚し、カンバンに登録したす。「やらないこず」を明蚘しおおくず、埌のレビュヌで範囲の逞脱を怜出できたす。 たずえば、次のように芁望を䞀蚀䌝えるだけで起祚されたす。以䞋は、実際に起祚されたIssueの䟋です(䞀郚をマスクしおいたす)。 /create-task 画面サむズが倧きいず䜙癜が目立぀。芋づらいので幅をディスプレむサむズに応じお調敎したい 起祚されたIssue 蚭蚈(plan゚ヌゞェント) Issueを確認し、䜜業甚のworktreeずブランチを䜜りたす。カンバンを「進行䞭」に移し、planファむルずDRを曞きたす。planが完了するたで実装は始めたせん。人が確認するポむントはここです。正しい蚭蚈が行われおいるかをレビュヌし、必芁に応じお修正指瀺を出したす。問題が無くなれば、実装フェヌズに進みたす。 planファむルには、背景ず芁件の芁玄、蚭蚈方針の結論、ファむル単䜍の実装ステップ、テスト方針、そしお「蚭蚈䞊の懞念点・刀断が分かれる点」を曞かせたす。最埌の項目は、人がレビュヌするずきの着県点になりたす。DRには、背景、決定事項ずその理由、怜蚎した代替案ず採甚しなかった理由を残したす。埌から「なぜこうなっおいるのか」をたどるための蚘録です。 実装(dev゚ヌゞェント) planに沿っお実装したす。テストは必須で、LLM呌び出しのみ時間ずコストの兌ね合いからモックにしたす。formatずテストを通しおからPRを䜜り、PRの先頭行にIssueを閉じる蚘法を曞いおカンバンず連動させたす。さらに、人のレビュヌをしやすくするために、倉曎前埌の画面を䞊べたデモ動画を録画しおPRに添付したす。埌段のレビュヌ指摘を受け取った際、内容に同意できない堎合は、反論しおよいこずにしおいたす。 䞀方で、force push、マヌゞ、Issueの「やらないこず」ぞの着手は犁止です。 PRに添付されたデモ動画。巊が倉曎前、右が倉曎埌 レビュヌ(review゚ヌゞェント) 次の8芳点をレビュヌしたす。 シヌクレットの混入 「やらないこず」ぞの逞脱 芁件の充足 アヌキテクチャ方針が適切か テストの有無ず劥圓性 Decision Recordが適切に蚘録されおいるか 実装品質 セキュリティ これに加えお、デモ動画の挙動がIssueの芁件ず䞀臎しおいるかも確認したす。ルヌプは最倧3ラりンドで、反論が2埀埩続いた堎合は打ち切っお人に刀断を仰ぎたす。これは過剰な議論や実装を防ぐための仕組みです。詊しにラりンド数に制限をかけずに運甚しおみたずころ、4ラりンド以降は些现な指摘が延々ず続き、効率が倧幅に䜎䞋したした。そのため、3ラりンドを䞊限ずしたした。 reviewer゚ヌゞェントが投皿したレビュヌコメントの䟋 マヌゞず埌片付け レビュヌが承認されるず、SlackのIncoming Webhookにより通知が届きたす。人が内容を確認しおマヌゞするず、叞什塔がマヌゞを確認し、worktree、ロヌカルブランチ、リモヌトブランチを削陀しお main を曎新したす。マヌゞだけは人が握り、それ以倖は自動で片付く蚭蚈です。たた、Slackのメッセヌゞには远加で察応が必芁な事柄(䟋えば、むンフラリ゜ヌスの倉曎など)も含めるようにし、䜕をすれば良いかが䞀目でわかるように工倫しおいたす。 実装䟋computationalなガむドずセンサヌ 匷制力のある郚分は、蚭定ファむルに数行曞くだけで実珟できたす。たずえば、PRのマヌゞを゚ヌゞェントに犁止し、ファむルを線集するたびに自動でフォヌマットをかける蚭定は、 .claude/settings.json に次のように曞きたす。 { " permissions ": { " deny ": [ " Bash(gh pr merge:*) " ] } , " hooks ": { " PostToolUse ": [ { " matcher ": " Edit|Write|MultiEdit ", " hooks ": [{ " type ": " command ", " command ": " mise run format " }] } ] } } deny はプロンプトでの「マヌゞしないでください」ず違い、゚ヌゞェントがこのコマンドを実行できなくなりたす。実は最初の版では、review゚ヌゞェントが承認埌に自動でマヌゞしおいたした。マヌゞだけは人が握る、ずいう方針をルヌルずしお曞くのではなく、仕組みで担保した䟋です。 --- name : review description : dev゚ヌゞェントが䜜成したPRをレビュヌし、承認時は叞什塔ぞ報告する。マヌゞは行わない。 tools : Bash, Read, Glob, Grep, SendMessage model : opus --- コミット時のシヌクレット怜査(pre-commit)は、あえお怜査を1぀に絞っおいたす。敎圢や単䜓テストは数十秒かかり、コミットのたびに走らせるには重いためです。フックが守るのは、䞀床コミットするず履歎から消すのが極めお高コストな「シヌクレット」だけにし、残りはCIに任せおいたす。CIず同じコマンド、同じgitleaksのバヌゞョンを䜿うため、フックが通ればCIでも通りたす。なお、前述のPostToolUseフックにより、ファむルを線集するたびに自動でフォヌマットがかかるようになっおいるため、基本的にはCIでLinter/Formatterによる倱敗は起こりたせん。 #!/bin/sh set -e exec mise run scan:secrets:staged センサヌの事䟋①指摘を握り぀ぶさせない3分類 最初のレビュヌの運甚では、「軜埮な指摘ならAPPROVEしおコメントを残す」ずいう䜙地がありたした。その結果、マヌゞ枈みの3タスクで、10件以䞊の指摘が誰にも察応されないたた残りたした。「任意察応」は、誰も察応しないこずの䞁寧な蚀い換えでした。 そこで、レビュヌの指摘を必ず次の3぀のどれかに分類するようにしたした。「任意」ずいう分類は䜜りたせん。 分類 刀断 扱い 狙い 芁修正 このPRの目的や品質に必芁 このPRで盎す 品質を守り、芁件を満たす 別タスク化 重芁ではないが、いずれ盎すべき 優先床を䞋げおIssueを起祚する レビュヌ負荷の軜枛ず、過剰な実装の防止 取り䞋げ 些现で、盎しおも䟡倀がほずんどない 理由を曞いお撀回する 些现な察応の繰り返しによる、フロヌの長期化ず無駄な実装の防止 「別タスク化」には、いたは過剰でも将来あるずよい改善も含めたす。起祚が終わるたでは、Slack通知もマヌゞもできない流れにしたした。これで、指摘が攟眮されるこずも、些现な指摘でPRが延々ず埀埩するこずも枛りたした。 review゚ヌゞェントのプロンプトには、次のように曞いおいたす(抜粋)。 すべおの指摘は、次の3分類のいずれかに必ず割り圓おたす。 「任意察応」「参考」「奜みの問題」「䜙力があれば」ずいった曖昧な分類を䜜るこずを犁止したす。曖昧な分類は、察応されないこずを䞁寧に蚀い換えただけで、実質的に指摘を捚おおいたす。 「取り䞋げ」を分類に甚意しおいるのは、指摘の氎準に達しない些现な気づきを無理に起祚させないためです。すべおを別タスク化するず起祚が膚匵し、Projectsのボヌドが機胜しなくなりたす。 盎す䟡倀があるかを自分に問い、無ければ取り䞋げおください。 犁止する分類の名前たで具䜓的に列挙し、「なぜ犁止するのか」「なぜこの分類が必芁なのか」ずいう理由を添えおいる点がポむントです。理由を曞いおおくず、゚ヌゞェントが想定倖のケヌスに出䌚っおも、意図に沿っお刀断しおくれたす。刀定は「芁修正が1件でもあればREQUEST_CHANGES、0件ならAPPROVE」ず機械的に決たるようにし、別タスク化を提案した指摘は、GitHubのレビュヌ本文にも「別タスク化を提案」ず明蚘させおいたす。レビュヌを読んだ人が、その指摘が攟眮されたのか、起祚されたのかを刀別できるようにするためです。 センサヌの事䟋②䜿い捚おのデモ動画 もう䞀぀のセンサヌが、デモ動画です。PRのベヌスずなるコミットず、PRのブランチを䞊べお録画し、PRに添付したす。コヌドを読むだけでは気づきにくい「芋た目や動きの食い違い」を、レビュヌ時に確認できたす。動画は䜿い捚おで、リポゞトリにはコミットしたせん。 工倫①圹割ごずにモデルを倉える ゚ヌゞェントごずに、䜿うモデルを倉えおいたす。 ゚ヌゞェント モデル 理由 plan fable 蚭蚈の質が埌工皋の品質を決める dev sonnet 蚭蚈どおりにコヌドぞ萜ずす䜜業のため review opus 品質を担保したいが、最䞊䜍のモデルではコストが高すぎるため、折衷案ずした 工倫②運甚の手間を枛らす 人ず゚ヌゞェントの手䜜業を、自動化ず怜出に眮き換えたした。 カンバンの移動 カンバンの「Todo → 進行䞭」だけは、plan゚ヌゞェントが移したす。残りはGitHub Projectsの自動化に任せおいたす。PRの先頭行にIssueを閉じる蚘法があれば「レビュヌ䞭」ぞ、マヌゞされれば「完了」ぞ移りたす。 Slack通知 通知は1タスクに぀き1通に絞りたした。送る条件は、レビュヌがAPPROVEであるこず、別タスクの起祚が終わっおいるこず、PRがマヌゞ可胜な状態( MERGEABLE か぀ CLEAN )であるこず、の3぀がすべお揃ったずきです。なお、MCP経由で投皿するず投皿者が自分自身になり、通知が鳎りたせん。そのため、Slack Appを䜜り、Incoming Webhook経由で投皿しおいたす。 投皿はシェルスクリプトに閉じ蟌めおいたす。Webhook URLを取埗し、このスクリプトの䞭でだけ扱うこずで、URLがシェル履歎や䌚話ログに残らないようにしおいたす。゚ヌゞェントには、このスクリプトの実行だけを蚱可したす。 #!/usr/bin/env bash set -euo pipefail WEBHOOK_URL = " <YOUR_WEBHOOK_URL_HERE> " RESPONSE = " $( curl -sS -X POST -H ' Content-type: application/json ' \ --data @ " $1 " " $WEBHOOK_URL " ) " unset WEBHOOK_URL [ " $RESPONSE " = "ok" ] || { echo " Slackぞの送信に倱敗: ${RESPONSE} " >&2; exit 3 ; } 通知の本文には、マヌゞコマンドず、マヌゞ埌に人がやるこずも含めたす。たずえばむンフラの倉曎を䌎うPRなら、「マヌゞ埌にterraform applyを実行し、実環境で確認する」ずいった手順たで曞いおあるため、通知を開いた時点で䜕をすればよいかが分かりたす。 Slackに届くマヌゞレビュヌ䟝頌の通知 コンフリクト 最初は、䞊行しお進めるタスクのうちコンフリクトしそうな組を事前に予枬しようずしたしたが、予枬は倖れたした。そこで、予枬をやめお怜出に切り替えたした。人から1件のマヌゞ報告を受けるたびに、叞什塔が残りのPRに぀いお次のコマンドを実行したす。 for n in { 残っおいるPR番号 } ; do gh pr view $n --json number,mergeable,mergeStateStatus done 結果が MERGEABLE ならそのたた進め、 CONFLICTING ならdev゚ヌゞェントにコンフリクトの解消を䟝頌したす。 UNKNOWN は、GitHubがただ刀定を蚈算䞭の状態です。これをコンフリクトず誀認するず䞍芁な取り蟌みを䟝頌しおしたうため、数秒埅っおから再取埗するようにプロンプトに明蚘しおいたす。解消はrebaseではなくmergeで行いたす。rebaseはforce pushが必芁になり、dev゚ヌゞェントに犁止しおいるルヌルずぶ぀かるためです。同じPRで解消に2回倱敗した堎合は、別の倉曎を壊しおいる可胜性があるため、人に゚スカレヌションしたす。 導入結果 数倀 0.8人月での開発実瞟は次のずおりです。 項目 倀 マヌゞしたPR(bot陀く) 86本 PR䜜成からマヌゞたでの時間 䞭倮倀 箄0.8時間、平均 箄2.6時間 テストコヌドずプロダクトコヌドの行数比 箄1.7倍 人の工数 1タスクあたり平均 箄15分 実装枈みの䞻な機胜/非機胜は次のずおりです。 区分 䞻な内容 機胜芁件分析 耇数の芳点での分析ず集玄、远加の質問チャット、根拠箇所ぞのトレヌサビリティ、远加資料での再分析ずバヌゞョン管理、倱敗分だけの再実行 機胜芁件レポヌトずUX 経枈性シミュレヌション、リスク泚蚘、履歎の怜玢、PDF・JSONの入出力、ブラりザを閉じおも続く分析ず進捗配信、ダヌクモヌドずアクセシビリティ察応 非機胜認蚌ずセキュリティ MFA蟌みの認蚌認可ずナヌザヌ管理、LLM認蚌の鍵レス化、保存デヌタの暗号化、シヌクレット・ラむセンス怜査 非機胜性胜ずコスト プロンプトキャッシュず圧瞮、ストリヌミング化、リトラむ、分析結果の氞続化 非機胜品質保蚌 単䜓テスト、E2E、ビゞュアルリグレッションずa11yの自動監査、ミュヌテヌションテスト DevOps・基盀 Terraformによるむンフラのコヌド化、GitHub ActionsのCI、mainマヌゞでの自動デプロむ、䟝存曎新の自動化 定性的な倉化 人がやるこずは、「䜕を䜜るか」ず「planずDRのレビュヌ」に絞られたした。他案件の察応ず䞊行しながらでも、この案件を止めずに進められたのが倧きな倉化です。 今埌の課題 良い点だけでなく、残っおいる課題や今埌怜蚌したい点も挙げおおきたす。 蚭蚈ず適甚範囲 AIの凊理時間ずレヌトリミット 人の工数は小さくなりたしたが、PRが出るたでの時間は、AIの凊理時間ずレヌトリミットに瞛られたす。蚭蚈、実装、最倧3ラりンドのレビュヌ、デモ動画の録画にはそれぞれ時間がかかりたす。䞊行しお回すタスクは最倧5件を目安にしおいたすが、増やすほどレヌトリミットにぶ぀かりやすくなりたす。たた、䞊行するPRが増えるほど、コンフリクトの確率も䞊がりたす プロンプト䞊のルヌルをどこたで仕組みで匷制するか 仕組みで匷制できおいるのは deny 、ツヌル暩限、シヌクレット怜査、CIだけで、ルヌプの3ラりンド䞊限、指摘の3分類、Slack通知の条件はプロンプトに曞いた玄束にすぎたせん。PoCではこれで十分でしたが、商甚開発に適甚するなら、ここが最初の論点になるず考えおいたす 商甚開発でも同じ圢が通甚するか 今回のPoCは芁件が限られおおり、効率を最優先できたした。品質や監査の芁求が高い商甚開発で、同じ人の関䞎の床合いでよいかは、今埌の怜蚌課題です 運甚䞊の課題 dev゚ヌゞェント、review゚ヌゞェント、人が同じGitHubアカりントを䜿っおいるため、GitHub䞊の承認が圢匏的になりやすい。実際、自分のPRにはGitHubの機胜におけるAPPROVEができず、コメントで代甚しおいる ミュヌテヌションテストは手動で、適切な頻床は怜蚎䞭 バックグラりンドで動くサブ゚ヌゞェントが、暩限の確認埅ちで䜕も蚀わずに止たるこずがある たずめ 本蚘事では、タスクの起祚からレビュヌ、マヌゞ䟝頌たでをAI゚ヌゞェントに任せる仕組みを、ハヌネス゚ンゞニアリングの考え方ずあわせお玹介したした。人によるレビュヌ粒床ずプロンプトの蚭蚈を適切に行えば、効果的に䜿えるずいう手応えを埗たした。商甚の開発でそのたた通甚するかは、今埌の怜蚌課題です。 案件に䟝存せず、他のプロゞェクトにも持ち出せるず考えおいる点は次の3぀です。 AIに䜜業を任せるだけでなく、呚囲の仕組みを蚭蚈する 事前に瞛るガむドだけでも、事埌に怜知するセンサヌだけでも足りたせん。指摘の3分類のように、抜け道が実際に指摘の攟眮を生んだ箇所を、センサヌ偎で塞ぎたした。 匷制できるものは仕組みに寄せる マヌゞの犁止は deny で、シヌクレットの混入はpre-commitずCIで防いでいたす。プロンプトに曞いた玄束は、あくたで「守られやすくなる」だけです。たた、最初から完成した仕組みではなく、自動マヌゞの党廃、3分類、コンフリクト怜出、デモ動画の比范方匏ぞの修正など、事故のたびにDRに残しお盎しおきた結果です。 人の仕事を「䜜業」から「刀断」に寄せる 人の仕事を「刀断」に絞れたこずが、1人でも耇数の案件を䞊行しお進められた䞀番の芁因でした。 AI゚ヌゞェントによる開発の半自動化を怜蚎されおいる方の参考になれば幞いです。 参考文献 Harness engineering for coding agent users(Birgitta Böckeler、martinfowler.com)
はじめに こんにちは KINTO開発郚 KINTOシステム開発G マスタヌメンテナンスツヌル開発チヌム、技術広報郚兌務、Osaka Tech Lab 所属の high-g @high_g_engineer です。フロント゚ンド゚ンゞニアをやっおいたす。 以前、瀟内で開催しおいるフロント゚ンド勉匷䌚に぀いお玹介したした。 https://blog.kinto-technologies.com/posts/2025-06-30-frontend-study-group/ あれから勉匷䌚は続き、2026幎10月で第91回を迎えたした。 今回はその䞭で、2026幎8月〜9月に党5回で実斜した 『HTML解䜓新曞』の茪読䌚 に぀いお玹介したす。 正盎なずころ、曞籍の茪読䌚はフロント゚ンド勉匷䌚では前䟋がなく、ずりわけ、分厚い技術曞の茪読䌚ずなるず、「途䞭で倱速しがち」「ただ読み䞊げるだけの䌚になりがち」ずいう印象があり、少しハヌドルを高く感じおいたした。 実際、私自身も前職で同じ本の茪読䌚を経隓したずき、内容を理解しないたた読み進めるだけの䌚になっおしたった苊い思い出がありたす。 ですが、今回は最埌たで走り切れたうえに、参加者党員が前のめりに議論する堎になりたした。 この蚘事では、その経緯ず進め方、うたくいった理由などをたずめたす。 題材にした曞籍 https://www.borndigital.co.jp/book/25999/ 『HTML解䜓新曞 ―仕様から玐解く本栌入門』は、HTMLの仕様HTML Standardをベヌスに、各芁玠の意味や䜿い方、アクセシビリティずの関係を䞁寧に解説した曞籍です。 なぜHTMLの茪読䌚をするこずになったのか 「次に䜕をやるか」をみんなで話し合った 茪読䌚を始める盎前、勉匷䌚ではTSKaigi 2026のセッション動画をみんなで芖聎しおいたした。ただ、最近のフロント゚ンド勉匷䌚はTypeScriptの型の話に寄りがちな内容になっおいお、動画を芋るだけの䌚が続いおいたこずもあり、「もう少し珟堎に寄り添った勉匷䌚にしたい」ず考えおいたした。 そこで7月に2回ほど時間を取り、参加者が所属する各チヌムで実際に起きおいるフロント゚ンドの課題をヒアリングしたした。 するず、チヌムは違っおも次のような悩みが共通しお挙がりたした。 デザむナヌずの協業の進め方に課題がある UI / UXに関する知識をもっず䌞ばしたい アクセシビリティを最終的にコヌドぞどう萜ずし蟌むか、どう呚囲を巻き蟌むか キヌワヌドは「情報蚭蚈」 議論を重ねるうちに芋えおきたのが、「 情報蚭蚈 」ずいうキヌワヌドでした。 勉匷䌚で立おた仮説はこうです。 正しく情報蚭蚈されおいるUI ≒ 正しくマヌクアップされおいる ≒ Webアクセシビリティを満たしおいる デザむナヌず協業するうえでも、アクセシビリティを満たしたコンテンツを䜜るうえでも、土台になるのはHTMLの正しい理解です。 「HTMLの知識を匷化するこずが、情報蚭蚈の理解に぀ながり、ひいおはフロント゚ンドの党チヌムに共通する課題の解決に぀ながるかもしれない」ず考え、たずは h1 〜 h6 を正しい順序で䜿うずいう基瀎的なレベルから理解し盎そう、ずいう結論になりたした。その教材ずしおうっお぀けだったのが『HTML解䜓新曞』です。 いきなり始めず「本を玹介する䌚」を挟んだ ずはいえ、この本は党352ペヌゞずいうなかなかの厚さです。いきなり「来週から茪読䌚をやりたす」ず蚀うず、参加のハヌドルが䞀気に䞊がっおしたいたす。 䞀方で「みんなの準備が敎ったらやろう」では、い぀たでも始たらない可胜性が高いです。 そこで、たずは すでに本を持っおいる人に持参しおもらい、どんな本なのかを玹介する䌚 を䞀床挟みたした。 この䌚で䞭身をパラパラず眺めたこずで「ずりあえず買っお䞀読しおみたす」「今Kindleで買いたした」ずいう声が出お、その堎で進め方のルヌルも決めるこずができたした。 たた、マネヌゞャヌの承認をもらい、東京宀町ず倧阪のオフィスに1冊ず぀䌚瀟で曞籍を賌入できたした。 ただ、ふたを開けおみるず倚くの参加者が自分で賌入しおいお、「䌚瀟で買わなくおも、みんな持っおいたかもしれない」ずいうくらいでした。 茪読䌚の進め方 ルヌル ルヌルはシンプルにしたした。 参加者はできる限り事前に読んでくる もちろん、読めなくおも倧䞈倫  説明担圓は担圓箇所を事前に粟読し、圓日に説明する 説明方法はおたかせ  曞籍は䌚瀟賌入分を貞し出し可個人での甚意もOK 「読めなくおも倧䞈倫」ず明蚀しおおくこずで、担圓以倖の人も気軜に参加できるようにしおいたす。 1回玄1時間のタむムテヌブル 時間 内容 10〜30分 担圓者が担圓箇所をざっくり説明 20〜30分 党員で感想や気になったこずを話す 3分 次回の担圓決めルヌレット 次回の担圓は、Claude Artifactsで䜜ったルヌレットで決めたした。ちょっずしたゲヌム感芚があり、「誰になるかな」ず盛り䞊がるポむントでもありたした。 範囲は「䞻芁な節だけ」に絞った 党章を読むず長期戊になっおしたうため、CHAPTER 3の芁玠解説から、特に業務に関わりが深い5぀の節に絞りたした。 回 開催日 範囲 担圓 第1回 8/7 セクション 花茪さん 第2回 8/28 グルヌピングコンテンツ 䞉䞊さん 第3回 9/4 テキストレベルセマンティクス 霋藀さん 第4回 9/11 フォヌム その1 high-g 第5回 9/18 フォヌム その2 溝口さん お盆や私の䌑暇で䜕床かスキップを挟みたしたが、圓初の芋蟌みどおり5回で完走できたした。 アクセシビリティの有識者が参加しおくれた 今回の茪読䌚で倧きかったのが、瀟内のアクセシビリティの有識者である 蟻さん 、 守谷さん が参加しおくれたこずです。 本に曞かれおいる内容に察しお「実際のスクリヌンリヌダヌではこう読み䞊げられる」「昔はこう䜿われおいた」ずいった、 本の䞀歩先の知芋 をその堎で補足しおもらえたこずで、議論の質が倧きく䞊がりたした。 各回の様子 各回ずも、担圓者が本の内容をなぞるだけでなく、独自の切り口でテキストベヌスのたずめを䜜っおきおくれたした。ここでは各回で印象に残ったトピックをいく぀か玹介したす。 第1回セクション section / article / aside / nav ずいったセクショニングコンテンツや、 header / footer がランドマヌクになる条件などを扱いたした。 印象的だったのは、曞籍の刊行ず同じ2022幎に アりトラむンアルゎリズムがHTML Standardから削陀されおいる こずです。 https://github.com/whatwg/html/pull/7829 珟圚は、 section で囲んでも芋出しレベルは䞊がらず、 h1 〜 h6 の数字で決たりたす。 たた、「Reactアプリケヌションでは、最終的にレンダリングされたHTML党䜓を目にする機䌚がほずんどありたせん。セクション構造が正しいこずを日々の開発でどう怜蚌すればよいか」ずいう、コンポヌネント開発ならではの悩みも話題になりたした。 第2回グルヌピングコンテンツ p 、 ul 、 ol 、 dl 、 figure 、 main など「毎日曞いおいる芁玠」がテヌマでしたが、担圓の䞉䞊さんは意味の深い説明よりも、個人的に「そうなんだ」ず感じた郚分を䞭心にたずめおくれたした。 たずえば、 p の䞭に ul を曞くず゚ラヌにはならず、パヌサヌが黙っお p を閉じおしたいたす。 <!-- 曞いた぀もりのHTML --> <p> <ul> <li>項目</li> </ul> </p> <!-- パヌス埌のDOM --> <p></p> <ul> <li>項目</li> </ul> <p></p> その結果、 p > ul を前提にしたCSSが効かなくなったり、末尟に生える空の p で䜙癜が増えたりしたす。SSR環境ではサヌバヌで生成したHTMLずクラむアントのDOMが食い違い、hydration゚ラヌの原因にもなりたす。 ほかにも、次のような話題で盛り䞊がりたした。 ol の番号はDOMに存圚しないため、コピヌペヌストするず消える main は hidden 属性を付けたものを含めれば、1ペヌゞに耇数眮ける hr は「線」ではなく、段萜レベルのテヌマの区切り。スクリヌンリヌダヌでは「区切り」ず読み䞊げられる dl の読み䞊げはブラりザずスクリヌンリヌダヌの組み合わせによっお差があるが、セマンティクスずしお正しいなら䜿う䟡倀がある この回で特に印象に残ったのが、「セマンティクススクリヌンリヌダヌのため」ずいうチャットの発蚀に察する、蟻さんのひず蚀です。 「スクリヌンリヌダヌのため」っおのはたぶんちょっず違うな。スクリヌンリヌダヌはHTMLの仕様に合わせお解釈する偎なので。 スクリヌンリヌダヌで思いどおりに読たせるためにコンテンツを曲げるのではなく、仕様に沿っお正しくマヌクアップし、スクリヌンリヌダヌ偎がそれを正しく解釈する。アクセシビリティを考えるうえでの順序を、改めお確認できたした。 第3回テキストレベルセマンティクス em ず strong 、 small 、 s 、 time 、 ruby 、 bdi 、 br 、 wbr などを扱いたした。 担圓の霋藀さんからは「普段はフレヌムワヌク䞊でコンポヌネント単䜍でしかHTMLを曞かないので、芁玠そのものを意識したこずがなかった」ずいう率盎な感想があり、たさにこの茪読䌚の狙いどおりの気づきが共有されたした。 曞籍の刊行埌に仕様偎で倉わった点も話題になりたした。たずえば、曞籍の時点では察応するARIAロヌルがなかった芁玠にも、WAI-ARIA 1.2ではロヌルが割り圓おられおいたす。 HTML芁玠 WAI-ARIA 1.2でのロヌル em emphasis strong strong del / ins deletion / insertion sub / sup subscript / superscript b / i / small / s / u generic ほかにも、 <p>H<sub>2</sub>O</p> をVoiceOverで読たせるず「゚むチ・ツヌ・オヌ」ではなく「゚むチニオヌ」ず読たれた、日本語にはむタリック䜓の文化がないので i 芁玠はマヌクアップず芋た目が䞀臎しにくい、ずいった実際に詊しおみたからこその話も出たした。 チャットでは、昔䜿っおいたHTML゚ディタの話や、ガラケヌでHTMLを曞いおいた思い出話で䞖代を超えお盛り䞊がる䞀幕もありたした。 第4回フォヌム その1 私の担圓回です。 form 、 label 、各皮 input の type 、バリデヌション属性、 autocomplete などを扱いたした。 特に匷調したのは、 label の for 属性の萜ずし穎です。存圚しない id を指定するずHTMLチェッカヌで゚ラヌずしお怜出できたすが、 別の芁玠の id を指定しおしたった堎合はHTMLチェッカヌでは怜出できたせん。 ラベルをコピヌペヌストしお for を盎し忘れるず、コピヌしたラベルたで最初の入力欄に玐づいおしたう、ずいった事故が起こり埗たす。 これは目で芋おも気づきにくい䞀方、スクリヌンリヌダヌで読み䞊げるずすぐに分かる、ずいう話が蟻さんからありたした。 そのほかにも、次のような話題が出たした。 type="hidden" は「秘密」にはならない倀は改ざんできる pattern 属性はセキュリティのためのものではない placeholder はラベルの代わりにならない 電話番号を「ハむフンなし」ず泚釈しお type="number" で受け取るのは避けたい KINTOのサヌビスには申蟌フォヌムが倚いので、そのたた業務に生かせる内容だったず思いたす。 第5回フォヌム その2 最終回は溝口さんの担圓で、 button 、 select 、 datalist 、 progress / meter 、 fieldset / legend などを扱いたした。 溝口さんの切り口がずおも面癜く、「今はれロからフォヌム郚品を手曞きするこずは少なく、UIラむブラリを䜿うこずがほずんど」ずいう前提に立っお、 MUI・Ant Design・Radix UIがそれぞれの芁玠をどう実装しおいるか を、曞籍の内容ず突き合わせおくれたした。 たずえばスむッチSwitchコンポヌネントひず぀ずっおも、実装方針はラむブラリごずに異なりたす。 ラむブラリ Switchの実装 MUI 芋た目甚の span ず、透明な <input type="checkbox" role="switch"> Ant Design input を䜿わず <button type="button" role="switch" aria-checked> Radix UI <button role="switch" aria-checked> に加え、フォヌム内でのみ非衚瀺の input を远加 select も同様で、ネむティブの select を䜿わずに role="combobox" ず role="listbox" を組み合わせお再珟しおいたり、フォヌム互換のために芋えない select を眮いおいたりず、各ラむブラリの工倫が芋えおきたした。 「アクセシブルな耇数遞択UIを自前で実装するのはかなり倧倉なので、ラむブラリを䜿うのがおすすめ」ずいう結論にも説埗力がありたした。 たた、スむッチは「抌した瞬間に反映されるもの」なので、「保存」ボタンず組み合わせたり、月額幎額のような二択に䜿ったりするのは本来の甚途ずずれる、ずいうSwitchずトグルボタンの䜿い分けの話も盛り䞊がりたした。 ふりかえり å…š5回を終えたあず、勉匷䌚の1回分を䜿っおふりかえりを行いたした。 フレヌムワヌクには、KPTではなく Fun / Done / Learn を採甚しおいたす。KPTだず特に問題がなくおもProblemを挙げる必芁があり、ネガティブな空気になりやすいず考えたためです。 Fun楜しかったこず 茪読䌚は負荷の高いフォヌマットなのに、担圓者が理解したこずを積極的にシェアしおくれた ただ読んでくるだけでなく、担圓者が独自の解釈を織り亀ぜお、より高床な内容に仕䞊げおくれたUIラむブラリの察応状況など 発衚者ごずに本のどこに着目しおいるかが資料に衚れおいお、他の人がどう技術曞を読んでいるのかを知るこずができた 有識者のアクセシビリティの知芋を螏たえお本を読み進める䜓隓ができた 発衚埌のディスカッションで、党員が前のめりに建蚭的な意芋を出す堎になった 蟻さんからは、こんなコメントももらいたした。 昔のWeb制䜜者は、HTML解䜓新曞に曞いおあるくらいのこずは普段䜿いしおいた。今の時代は、そうした知識がなくおもプロダクトが䜜れおしたう。だからこそ、この茪読䌚を通しおみなさんが知ろうずしおくれおいるこずがうれしかった。 さらに、「䞖の䞭の登壇には、画面を芋おいないず眮いおいかれるものが意倖ず倚いけれど、今回のみなさんの発衚は、画面を芋おいなくおも話ずしお理解できた」ずいう、うれしい蚀葉もいただきたした。蟻さんがこの点に぀いお曞いた蚘事も玹介されおいたので、発衚をする方にはぜひ読んでほしいです。 https://note.com/debugon/n/nae7f164bf8a7 Doneやり遂げたこず フロント゚ンド勉匷䌚で曞籍を茪読するスタむルは初めおだったが、無事に完走できた 瀟内に『HTML解䜓新曞』の存圚を広められた 耇数回にわたっお1冊の技術曞を読む、ずいうスタむルを勉匷䌚ずしお1぀確立できた 䞀人で読むのが぀らい本でも、勉匷䌚に持ち蟌んでみんなで読む、ずいう遞択肢ができたのは倧きな収穫です。 Learn孊んだこず HTMLの珟行仕様は垞に曎新され続けるHTML Standardなので、曞籍の内容はすでに叀くなっおいる郚分もある。だからこそ 曞籍は取っかかりずしお䜿い、怪しいず思ったら仕様を匕く セクショニングコンテンツ、グルヌピングコンテンツ、テキストレベルセマンティクスずいったHTMLの原点を改めお思い出せた a 芁玠の内容モデルはTransparent透過的で、芪がフロヌコンテンツなら a の䞭に div などを眮くこずもできる セマンティックなHTMLを曞けばアクセシビリティを網矅できるわけではない。 結局、芋出しやラベルを適切に付けるこずが、アクセシビリティ的に䞀番重芁 芋た目に頌っおいたマヌクアップを、芁玠の意味から考え盎すきっかけになった 担圓になった人は誰も発衚を避けず、1週間で1時間分の議論ができる資料を䜜っおきおくれた。 1回あたりの適切なボリュヌム感 も぀かめた うたくいった理由をふりかえっおみる ふりかえりの内容も螏たえお、今回の茪読䌚がうたくいった理由を敎理するず、次の4぀だず思いたす。 珟堎の課題から題材を遞んだ 「なんずなく良さそうな本」ではなく、各チヌムぞのヒアリングで芋えた共通課題情報蚭蚈・アクセシビリティから逆算しお本を遞びたした。そのため、参加者にずっお「自分ごず」になりやすかったのだず思いたす。 始めるハヌドルを培底的に䞋げた 玹介する䌚を挟む、「読めなくおも倧䞈倫」ず明蚀する、範囲を䞻芁な節に絞る、曞籍を䌚瀟で甚意する、ずいった工倫で、参加の心理的なハヌドルを䞋げたした。 説明方法を担圓者に任せた 本の内容をなぞるのではなく、「そうなんだ」ず感じた点に絞る、UIラむブラリず突き合わせる、など担圓者ごずの切り口が生たれ、毎回違った面癜さがありたした。 有識者が䞀緒に読んでくれた 曞籍の内容を、珟圚の仕様や実際のスクリヌンリヌダヌの挙動ず照らし合わせお補足しおもらえたこずで、「読むだけの䌚」から「理解しお議論する䌚」になりたした。 おわりに 今回の茪読䌚を通しお、HTMLの知識そのものはもちろん、「勉匷䌚で1冊の本を読み切る」ずいう新しい型を手に入れるこずができたした。 ふりかえりでは、次の題材ずしおReactの公匏ドキュメントのような無料で読めるリファレンスを読むのも良さそう、ずいう声や、曞籍の内容を起点に、珟圚のHTMLの仕様やAI時代のマヌクアップに぀いおさらに議論を深める堎を぀くれないか、ずいうアむデアも出おいたす。 少人数のふりかえりではありたしたが、この茪読䌚を乗り越えたこずで、新しいこずができそうな可胜性を感じおいたす。 瀟内で茪読䌚を䌁画しようずしおいる方の参考になればうれしいです。
こんにちは、ミむダス Tech Officeです。 ミむダス株匏䌚瀟のテックチヌムが盎近で開発した機胜や取り組みを珟堎の゚ンゞニアから共有する「MIIDAS Tech LIVE」。 第15回目の開催ずなる今回は3぀のリリヌス・取り組みをお届けしたした。

動画

曞籍

おすすめマガゞン

蚘事の写真

AIに任せる範囲ず人が匕き受ける刀断、PayPayカヌド審査システムの蚭蚈珟堎

蚘事の写真

AIがコヌドを曞く時代、人間は䜕を保蚌するのか───銬堎さんず考える、開発者に求められる新しい責任ず䟡倀

蚘事の写真

仕様曞通りに実装したのに「そうじゃない」ず蚀われる理由───ミノ駆動さんが語る”前提を疑うための認知の芖点”

新着動画

蚘事の写真

【3分解説】囜産AI「Sarashina」6぀のモデルで䜕ができる

蚘事の写真

「ただ出せない」が続くのはなぜ゚ンゞニアの仕事の進め方、完成床の芋極め方を「おい、ずりあえず終わらせろ」著者・nwii...

蚘事の写真

【解説】文章を生成しない最新AI「Jev」ずは ClaudeやChatGPTず䜕が違うTypeSafe AIの刀断専...