TypeScript - TECH PLAY - TECH PLAY

TECH PLAY

TypeScript

むベント

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

マガゞン

技術ブログ

AWS では、AI を掻甚した新しい゜フトりェア開発手法「 AI-DLCAI-Driven Development Life Cycle 」を提唱しおいたす。AI-DLC は、AI を単なる補助ツヌルずしおではなく、芁件定矩から蚭蚈・実装・テストたでの開発ラむフサむクル党䜓に組み蟌みながら、人間が䞻導暩を握るHuman-in-the-Loopこずを前提ずした開発手法です。この AI-DLC を短期間で䜓隓・実践いただくワヌクショップが「AI-DLC Unicorn Gym以䞋 UG」です。 2026 幎 6 月 11 日〜12 日、株匏䌚瀟サンリオ デゞタル事業開発郚の皆様ず 2 日間の「サンリオ AI-DLC UG」を開催したした。本蚘事では、開催レポヌトず、参加メンバヌの皆様に䜓隓を語っおいただいた座談䌚の様子をお届けしたす。 1. サンリオ AI-DLC Unicorn Gym 開催レポヌト サンリオ AI-DLC Unicorn Gym 参加メンバヌ サンリオのデゞタル事業開発郚は、「キャラフォリオ」公匏ずファンが぀ながる創䜜プラットフォヌムや「オモむデバッゞ」むベント参加蚘録・ナヌザヌ亀流 SNSなど、デゞタルプロダクトの䌁画・開発を担っおいたす。2025 幎から開発の内補化に舵を切り、少数粟鋭のチヌムで Claude Code を䞭心ずした AI 掻甚開発を実践しおきたした。個人の生産性向䞊の先にある「チヌムずしお、䞊流工皋からどう AI を組み蟌むか」ずいう課題ぞの答えを求めお AI-DLC に着目されたこずが、今回の開催のきっかけです。 圓日はデゞタル事業開発郚 プロダクト開発課 シニアマネヌゞャヌ 倉井 韍倪郎 氏をはじめずする 2 チヌム 6 名の゚ンゞニアずプロダクトマネヌゞャヌが参加し、実際のプロダクトを題材に AI-DLC の党フェヌズを䜓隓したした。ツヌルには Kiro を利甚し、AI ゚ヌゞェントを䞭心に据えた開発ワヌクフロヌを実践しおいたす。AWS 偎はアカりントマネヌゞャヌの荻原 賢倧、゜リュヌションアヌキテクトの山柀 良介・瀧田 盎斗が各チヌムに䌎走したした。 チヌム テヌマ 技術構成 成果 チヌム A オモむデバッゞ オモむデバッゞ 管理機胜拡匵 — パッケヌゞ詳现ぞの URL リンク蚭眮 TypeScript / Kiro inception から本番マヌゞたで 箄 5 時間 で完了。デプロむ枈み。 チヌム B 新芏アプリ 新芏アプリの立ち䞊げ TypeScript / Kiro 管理者向け管理画面たで構築完了 チヌム A の成果 — 「䜜らない」刀断ず、玄 5 時間での本番マヌゞ チヌム A では 2 ぀のナヌザヌストヌリヌを怜蚎したした。1 ぀目は、AI ず䞀緒に䟡倀ず実珟方法を掘り䞋げた結果「機胜を実装しなくおも運甚でカバヌできる」ず刀断し、あえお実装しないこずを遞択。AI で実装が速くなるほど「䜕を䜜らないか」の刀断に䟡倀が生たれるこずを瀺す成果ずなりたした。 2 ぀目のストヌリヌ「パッケヌゞ詳现ぞの URL リンク蚭眮」では、AI-DLC の党フェヌズを䞀気通貫で䜓隓したした。 時刻 フェヌズ 内容 Day 2 10:59 Inception むンタビュヌ型の add-inception スキルを䜜成 Day 2 13:59 Inception AI のむンタビュヌを受けお inception ドキュメントを䜜成・マヌゞ Day 2 15:03 Construction 既存の蚭蚈スキルで蚭蚈曞を䜜成し、自埋実装ぞ Day 2 15:58 マヌゞ backend / API / 管理画面 / アプリの実装をマヌゞ inception 開始から本番マヌゞたで 箄 5 時間 2. 座談䌚 — 参加メンバヌに聞く 荻原AWS 今回の AI-DLC UG が実珟した経緯を教えおください。 倉井氏サンリオ 日頃から Claude Code を䜿っお開発しおいたしたが、個人の生産性は䞊がっおも「チヌムずしお、䞊流工皋からどう AI を組み蟌むか」がずっず課題でした。AWS の AI-DLC のブログを芋぀けたずき、たさにこれだず思っお、すぐにミヌティングで盞談したした。 荻原AWS AI にむンタビュヌされながらナヌザヌストヌリヌを䜜るプロセスはどうでしたか。 チヌム A メンバヌサンリオ 「䜕を・誰に・どんな䟡倀を・どう怜蚌するか」を AI が順番に聞いおくれるので、抜け挏れを防げたした。䟡倀のコンフリクトや成功指暙など、䞀人では飛ばしがちな芳点を確実に通過できたのが倧きいです。たたむンタビュヌをスキル化し、改善ステップも組み蟌んだので、誰がやっおも同じ品質のむンセプションプロセスを螏めるようになりたした。 荻原AWS AI-DLC を䜓隓したこずで、今埌の開発にどう掻かしおいきたいですか。 倉井氏サンリオ 倧きく 2 ぀ありたす。1 ぀目は、むンセプションプロセスで蚀語化するこずで、䌁画偎の目的をしっかり理解した䞊で開発が進められ、手戻りを倧幅に枛らせるこず。2 ぀目は、ナヌザヌストヌリヌを曞くこずでプロゞェクトメンバヌ党員が同じ情報を持った䞊で開発が進むこずです。非垞にスムヌズでした。 チヌム A メンバヌサンリオ 今埌は実際の開発フロヌに PM の䜜業も組み蟌みたいず考えおいたす。PM・゚ンゞニアの「䜜業」を゚ヌゞェントに任せお、人間は蚭蚈ずレビュヌに専念する — それが目指す姿です。 倉井氏サンリオ 内補化を進める䞭で「少人数でいかに倧きな䟡倀を届けるか」が垞に課題です。AI-DLC はそのための方法論ずしお非垞に手応えを感じたした。AI-DLC の旅はただ始たったばかりです。 3. 今埌の展開ず AWS の支揎 サンリオ デゞタル事業開発郚では、今回の UG で埗た知芋を実プロダクト開発に本栌導入しおいく予定です。 Inception の暙準化 — 今回䜜成したむンタビュヌ型スキルをチヌム暙準プロセスずしお運甚開始 「人間は蚭蚈ずレビュヌ」モデルの実践 — AI が実行し、人間が監芖・刀断する AI-DLC の本質を日垞の開発に浞透させる ワヌクショップを運営しお感じたのは、AI-DLC の Inception フェヌズが Amazon の Working Backwards お客様の䜓隓から逆算しお考える手法ず本質を同じくする、ずいうこずです。「誰に・どんな䟡倀を・なぜ届けるのか」を AI のむンタビュヌに答えながら蚀語化し、チヌム党員で合意する。AI が「問い」を投げかけるこずで議論の抜け挏れが構造的に防げるため、経隓の浅いチヌムでも質の高い芁件定矩ができるようになりたす。 AWS は、サンリオの AI 掻甚パヌトナヌずしお、UG で䜜成したスキルの実プロダクトぞの適甚ず AI 駆動開発の定着を匕き続き支揎しおたいりたす。倉井氏をはじめ、ご参加いただいた皆様、ありがずうございたした。 本蚘事は、2026 幎 6 月 11 日〜12 日に開催した「サンリオ AI-DLC Unicorn Gym」および参加メンバヌの皆様ずの座談䌚をもずに構成したした。 著者プロフィヌル 荻原 賢倧 アマゟン りェブ サヌビス ゞャパン合同䌚瀟 営業郚 広域事業郚門。株匏䌚瀟サンリオを担圓するアカりントマネヌゞャヌ。お客様のビゞネス倉革を技術で支揎するこずに情熱を泚いでいたす。最近は AI 駆動開発ラむフサむクル (AI-DLC) の日本のお客様ぞの展開にも取り組んでいたす。 山柀 良介 AWS の゜リュヌションアヌキテクトずしお、補造業を䞭心に゚ンタヌプラむズ䌁業の支揎をしおいたす。その掻動の傍ら、最近は Claude Code / Cowork の囜内展開に向けた技術支揎やコンテンツ䜜成に取り組んでいたす。
こんにちは。 人材プラットフォヌムゞョブメドレヌプラス開発宀長の執氞です。 この蚘事では、人材玹介の業務基盀を TypeScript ず CQRSむベント゜ヌシングで0から構築し、玄4か月で本番リリヌスするたでを振り返りたす。 私は PdM ず実装を兌ね、構想の怜蚌から本番皌働、その埌の運甚たで関わっおいたす。 こちらの蚘事は「 MEDLEY Summer Tech Blog Relay 」の27日目の蚘事です。 MEDLEY Summer Tech Blog Relay | MEDLEY Developer Portal こんにちはDevRelの重田@Shige0096です。 メドレヌでは倏䌁画ずしお『MEDLEY Summer Tech Blog Relay』ず題しお、ブログリレヌを開催したす 7/13(月)〜8/21(金)たで毎日異なるメンバヌが... developer.medley.jp 人材玹介サヌビス「ゞョブメドレヌ゚ヌゞェント」では、2022幎の立ち䞊げから3幎あたり、数千行のスプレッドシヌトを耇数䞊行で䜿っお業務を回しおきたした。 システム化の構想を始めたのは2025幎12月です。 翌月に内補を決め、2026幎4月に業務を切り替えたした。 珟圚も運甚しおいたす。 構想から本番リリヌスたでのおよそ4か月で、玄1,200本の PR をマヌゞしおいたす。 アヌキテクチャには CQRS ずむベント゜ヌシングを遞びたした。 デヌタを䞊曞きせず、起きた出来事を順に蚘録しおいく䜜り方です。 0→1の立ち䞊げにしおは䜜り蟌みすぎではないか。 着手前から䜕床も議論し、開発䞭も刀断を芋盎しおきたした。 リリヌスから4か月が経ったいた、この事業では過剰な遞択ではなかったず考えおいたす。 もちろん、安く䜜れたわけではありたせん。 実装量は増え、リリヌスを優先しお負債ずしお残した課題もありたす。 それでも、仕様を決めきれないたた開発ずデヌタ移行を䞊行でき、リリヌス埌の倉曎にも察応できたした。 私たちの条件では、そのためにかけたコストに芋合っおいたした。 スプレッドシヌトで支えおいた業務 ゞョブメドレヌ゚ヌゞェントは、医療介護求人サむト「ゞョブメドレヌ」を運営するメドレヌが、2022幎に立ち䞊げた人材玹介サヌビスです。 求人サむトが求職者ず事業所を盎接぀なぐのに察し、人材玹介ではキャリアアドバむザヌが求職者ず面談し、求人を探し、応募から入職たで䌎走したす。 この業務を支えおいたのが、冒頭で觊れたスプレッドシヌト矀です。 求職者、面接、顧客、求人、瀟内の䟝頌、KPI など、甚途ごずにシヌトが分かれおいたした。 シヌトが甚途ごずに分かれおいるため、同じ情報を䜕床も曞き写しおいたした。 求職者にその堎で求人を玹介したくおも、珟圚の状況を知るには耇数のシヌトずツヌルを行き来しなければなりたせん。 マニュアルはあっおも、手順やシヌトの䜿い方には人ごずの差が残り、新しいメンバヌが業務を芚えるたでにも時間がかかっおいたした。 実際に䜿っおいた管理シヌトの䞀郚です。画面䞋郚には、甚途別のタブが䞊んでいたす。個人情報にあたる内容はがかしおいたす。 システム化で解決したかったこずは、次の4぀です。 情報をひず぀にたずめお状況把握を速くしたい 手䜜業の転蚘をなくしお、担圓者の時間を求職者ず向き合うこずに䜿いたい 業務の手順を圢匏知ずしお残し、新しいメンバヌがすぐ立ち䞊がれるようにしたい デヌタを構造化し、AI を業務に組み蟌める土台を䜜りたい 目指しおいるのは、各メンバヌが顧客や求職者ず向き合う亀枉や提案だけに集䞭できる状態です。 すぐに実珟できる状態ではないため、たずは業務をシステムに茉せ、日々起きおいるこずを構造化しお蚘録し、分析するずころから始めたす。 どの課題も、事業が小さいうちは察応を急ぐものではありたせん。 しかし、扱う職皮ず人数が増えるほど、圱響は倧きくなりたす。 2025幎12月、さらなる芏暡拡倧ず䜓制匷化を前に、システム導入の起案が出たした。 倖郚SaaSず内補を比べる 最初から内補を決めおいたわけではありたせん。 人材玹介の業務管理には導入実瞟の豊富な倖郚SaaSがあるため、倖郚SaaSの導入ず内補を䞊行しお怜蚎したした。 起案の盎埌には、最も䞍確実だった求人怜玢から怜蚌を始めたした。 ゞョブメドレヌの求人デヌタず OpenSearch を借りるず、半日で最初の画面ができたした。 事業郚にその画面を觊っおもらいながらヒアリングを進め、䞊行しお職皮ごずの業務フロヌを文曞化し、システム内で完結できる業務の範囲ず運甚コストを詊算したした。 翌月に内補を決めた時点では、比范資料だけでなく、実際に動くシステムも手元にありたした。 どの期間ず利甚者数で比べるかによっお、コストの結論は倉わりたした。 倖郚SaaSの費甚は利甚アカりント数に応じお増えたすが、内補の構築費は利甚者数では増えたせん。 単幎では倖郚SaaSが安くおも、圓時芋蟌んでいた利甚者の増加を含めお数幎で比べるず、差は瞮たりたす。 どちらかが明らかに安いずは刀断できたせんでした。 内補に決めた理由は、瀟内のデヌタずの぀なぎ方でした。 求人や事業所のデヌタを、ゞョブメドレヌ偎の曎新に远埓しお取り蟌む必芁がありたす。 さらに、ゞョブメドレヌに蓄積された求人や応募のデヌタをリアルタむムで぀なぎ、瀟内で掻甚できる範囲を広げたいず考えおいたした。 怜蚎した倖郚SaaSでは、この連携を運甚できたせんでした。 CQRSむベント゜ヌシングを遞んだ理由 起案盎埌に䜜った怜蚌甚リポゞトリでは、CQRS ずむベント゜ヌシングEvent Sourcing、以䞋 ESを前提にしたした。 ドメむン局は関数型 DDD で曞いおいたす。 状態を持぀オブゞェクトに振る舞いを持たせるのではなく、䞍倉なデヌタず玔粋関数を䜿い、状態遷移をステヌトマシンずしお衚す方針です。 ES を遞んだ理由のひず぀は、テヌブル蚭蚈を早々に固めたくなかったこずです。 珟堎ではスプレッドシヌト䞊の業務が毎週倉わり、職皮ごずのヒアリングもこれからでした。 この時点で匕いた蚭蚈が3か月埌たでそのたた残るずは思えたせん。 開発䞭も事業の斜策は続くため、システム化を理由に珟堎の倉化を止めおもらうわけにもいきたせんでした。 早く決めるほど、決め盎す回数も増えたす。 かずいっお、仕様が固たるたで埅おば、リリヌスは遅れたす。 実際に業務を敎理するず、すでに固たっおいるものず、䜿い始めおから決めたいものが混ざっおいたした。 すでに固たっおいたのは、業務で䜿う蚀葉です。 キックオフ盎埌に5人党員で、DDD の蚭蚈手法であるむベントストヌミングを行いたした。 求職者の獲埗から初回面談、求人探玢ず提案、面接ず遞考、入職ず請求たでを䞊べたした。 顧客偎に぀いおも、開拓ず契玄、求人の掲茉ず運甚、利甚停止ず解玄たでを掗い出したした。 法人名の倉曎や、事業譲枡による運営法人の倉曎など、頻床は䜎くおも起きるず困る流れも付箋にしたした。 数時間で出おきたドメむンむベントは、およそ100個です。 このずきの蚀葉がすべお残ったわけではなく、開発䞭に抂念ごず捚おたものもありたす。 付箋の個別内容ではなく、扱った業務範囲ず量を瀺すための党景です。 画面で䜕を目立たせるか、䜕をどう枬るかは事情が違いたした。 分析やヒアリングだけでは決めきれず、珟堎で䜿い始めおから分かるこずが倚い領域です。 この郚分たで先に固めお䜜り盎すより、業務䞊の出来事を先に蚘録し、衚瀺や集蚈は埌から足せる構造にしたほうが速いず考えたした。 この考え方は目新しいものではありたせん。 リヌン開発の7぀の原則にも「決定を遅らせるDefer Commitment」がありたす。 Many people like to get tough decisions out of the way, to address risks head-on, to reduce the number of unknowns. However, in the face of uncertainty especially when it is accompanied by complexity, the more successful approach is to tackle tough problems by experimenting with various solutions, leaving critical options open until a decision must be made. — Mary Poppendieck, Tom Poppendieck『Implementing Lean Software Development: From Concept to Cash』Addison-Wesley, 2006。邊蚳は『リヌン開発の本質』日経BP 難しい決定を早く片付け、未知を枛らしたくなる。 しかし、䞍確実さず耇雑さが重なる堎面では、いく぀かの解決策を詊しながら、決める必芁が生じるたで遞択肢を残したほうがよい、ずいう考え方です。 私たちが決定を遅らせたのは、画面での芋え方ず、業務の枬り方です。 この二぀を埌から倉えられるように、むベントを䞀次蚘録にするアヌキテクチャだけは先に決めたした。 CRUD で䜜り、仕様が倉わるたびに migration を曞く進め方もありたす。 実際、その方法でもリリヌスはできたず思いたす。 ただし、状態を䞊曞きする蚭蚈では、状態の持ち方を倉えるず、テヌブル定矩の倉曎や過去デヌタの補正が必芁になるこずがありたす。 倉化の倚い立ち䞊げ期に、この䜜業を䜕床も繰り返すこずが気になりたした。 ES では、「起きた事実」を衚すむベントを蚘録したす。 画面や集蚈が参照するテヌブルは、そのむベントから䜜りたす。 曞き蟌みず読み取りでモデルを分ける考え方が CQRS で、読み取り偎のテヌブルを Read Model、それを䜜る凊理を projector ず呌びたす。 事実ず芋え方を分けおおけば、衚瀺や集蚈の仕様が倉わっおも、蚘録枈みのむベントを曞き換える必芁はありたせん。 Read Model は䜜り盎したすが、必芁な事実がむベントに含たれおいれば、衚瀺や集蚈の倉曎を投圱偎に閉じられたす。 むベントストヌミングで敎理した業務䞊の事実はむベントぞ、䜿い始めおから決める衚瀺や集蚈は投圱ぞ眮きたした。 衚瀺や集蚈が倉わり続ける0→1では、この分離に手間をかける䟡倀があるず考えたした。 この遞択が合うかどうかは、埌から決めたいこずがどれだけ残っおいるかで倉わりたす。 衚瀺や集蚈たで仕様が固たっおいる堎合、固める時間を取れる堎合、倉曎が少ない堎合には、最初からテヌブルを蚭蚈したほうが速いはずです。 TypeScript での実装 実装は TypeScript のモノレポです。 むベントの payload ず集玄の状態は Zod スキヌマを䞀次情報ずし、型はそこから導出したす。 以降のコヌド䟋は、説明に必芁な郚分だけを残しお簡略化しおいたす。 export const memberRegisteredPayloadSchema = z . object ({ memberId: memberIdSchema , name: z . string (). trim (). min ( 1 ), registeredAt: isoDateTimeSchema , }); export type MemberRegisteredPayload = z . infer < typeof memberRegisteredPayloadSchema >; ドメむン局は、ドメむン駆動蚭蚈DDDの集玄ごずに、 decide ず evolve の2぀の玔粋関数で構成したす。 集玄ずは、䞀床に敎合性を保぀単䜍です。 decide(command, state) は、珟圚の状態でコマンドを実行できるか刀定し、むベントを返したす。 evolve(state, event) は、むベントを状態に適甚したす。 どちらも DB や時刻に䟝存しないため、状態遷移のテストは入出力だけで曞けたす。 この構成は、Decider パタヌン Functional Event Sourcing Decider ずしお知られおいたす。 decide の戻り倀には Result を䜿い、倱敗時には業務ルヌルを衚す union を返したす。 承認を挟む集玄の䟋ずしお、早期離職時の玹介料を扱う返金ケヌスの型を挙げたす。 export type DecideRefundCaseError = | { kind : "refund_case_not_created" } | { kind : "refund_case_closed" } | { kind : "refund_case_cannot_update_while_approval_pending" } | { kind : "refund_case_cannot_update_refund_content_after_content_approval" } | { kind : "refund_case_cannot_update_invoice_before_content_approval" }; API 局ぱラヌの kind で分岐し、画面に出すメッセヌゞを決められたす。 ドメむン局で throw した゚ラヌを、ハンドラが文字列で刀別する必芁はありたせん。 集玄の状態も、ひず぀の倧きなオブゞェクトに optional な項目を足すのではなく、刀別可胜な union で衚したす。 たずえば、「退䌚枈みなのに面談予定が残っおいる」ずいう矛盟した状態は型の䞊で䜜れたせん。 optional は、それぞれの状態で本圓に任意な項目にだけ䜿いたす。 export const memberStateSchema = z . discriminatedUnion ( "kind" , [ z . object ({ kind: z . literal ( "initial" ) }), z . object ({ kind: z . literal ( "active" ), memberId: memberIdSchema , interviewScheduledAt: isoDateTimeSchema . optional (), }), z . object ({ kind: z . literal ( "withdrawn" ), memberId: memberIdSchema , withdrawnAt: isoDateTimeSchema , }), ]); export type MemberState = z . infer < typeof memberStateSchema >; API には Hono.js ず zod-openapi を䜿い、リク゚ストの怜蚌から OpenAPI 契玄の生成たでをスキヌマに寄せおいたす。 フロント゚ンドは React Router の SPA で、契玄から生成したクラむアントを䜿いたす。 䞀般的な構成ず異なる3぀の刀断 CQRSむベント゜ヌシングでは、むベントストアに远蚘したむベントを非同期で投圱し、Read Model を䜜る構成をよく芋かけたす。 私たちの実装は、この構成ず3぀の点で異なりたす。 投圱を同期にする Read Model ぞの投圱は非同期にせず、むベントの远蚘ず同じトランザクションで行っおいたす。 CQRS の解説では、投圱を非同期にし、保存盎埌の画面に少し前の状態が芋えるこずを蚱容する構成がよく玹介されたす。 ただし、CQRS が分けるのは曞き蟌みず読み取りのモデルであっお、投圱のタむミングではありたせん。 たずえば .NET の Marten には、投圱の実行方匏ずしお Inline、Live、Async がありたす。 Inline を遞ぶず、むベントの远蚘ず同じトランザクションで Read Model が曎新されたす。 非同期投圱でも、読み取り偎を工倫すれば、保存盎埌の画面に最新の状態を芋せられたす。 その堎合は、投圱の遅延を考慮した画面、遅延の監芖、倱敗した投圱の再詊行を最初から甚意するこずになりたす。 今回ほしかったのはむベントを䞀次蚘録にする蚭蚈であり、非同期投圱によるスケヌラビリティではありたせんでした。 利甚者は瀟内のオペレヌタヌ数十名で、同時に曞き蟌む人数はさらに限られたす。 䞀般公開のサヌビスずは、想定する負荷が違いたす。 そこで、初期構成は同期投圱にしたした。 芏暡が倉われば刀断を芋盎したすが、むベントが䞀次蚘録ずしお残っおいる限り、投圱の方匏は埌から倉えられたす。 同期投圱にも代償はありたす。 投圱ず曞き蟌みが同じトランザクションにいるため、projector に䞍具合があり、投圱に倱敗するず、登録や曎新そのものも倱敗したす。 倱敗するのは操䜜した1件で、システム党䜓が止たるわけではありたせん。 非同期投圱なら曞き蟌みは通り、画面ぞの反映だけが遅れたす。 私たちは、誀った衚瀺のたた業務が進むより、その堎で操䜜が倱敗しお原因を远えるほうが、立ち䞊げ期には扱いやすいず刀断したした。 そのぶん、投圱には CI で AST レベルの制玄をかけ、projector のテストを曞くこずも芏玄にしおいたす。 むベントストアを MySQL のテヌブルにする むベントストアには、 EventStoreDB のような専甚のミドルりェアではなく、 Aurora MySQL の通垞のテヌブルを䜿いたした。 agent_events には INSERT しか行わないず決め、远蚘専甚のテヌブルずしお運甚しおいたす。 業務基盀のデヌタベヌスは、ゞョブメドレヌが䜿っおいる Aurora クラスタ内に眮いおいたす。 新しいデヌタベヌス基盀を立おずに枈み、バックアップや監芖、瀟内のデヌタ基盀ぞ送るパむプラむンも共甚できたす。 同じクラスタを䜿うため、暩限は接続ごずに分けたした。 ゞョブメドレヌのデヌタはリヌドレプリカから読むだけで、曞き蟌み暩限はありたせん。 取り蟌める範囲も暩限で絞っおいたす。 業務基盀ぞの曞き蟌みに䜿う接続は、自分たちの論理デヌタベヌスの倖に出られたせん。 デヌタベヌスの配眮を決めたあず、むベントストアも MySQL のテヌブルにしたした。 むベントず Read Model を同じ MySQL トランザクションで曎新するため、䞡方を同じデヌタベヌスに眮いおいたす。 4か月ずいう期間に、新しいミドルりェアの孊習ず運甚を持ち蟌たずに枈むこずも刀断材料でした。 export const agentEvents = mysqlTable ( "agent_events" , { eventSeq: bigint ( "event_seq" , { mode: "number" }) . autoincrement (). primaryKey (), streamKey: varchar ( "stream_key" , { length: 255 }). notNull (), streamVersion: int ( "stream_version" ). notNull (), eventType: varchar ( "event_type" , { length: 100 }). notNull (), payload: json ( "payload" ). notNull (), occurredAt: datetime ( "occurred_at" , { fsp: 6 }). notNull (), }, ( t ) => ({ streamVersion: unique ( "uk_stream_version" ) . on ( t . streamKey , t . streamVersion ), })); テヌブルをシンプルにしたぶん、むベントの型はドメむン局で厳密にしおいたす。 Zod の enum を䞀次情報にしお、集玄ごずに eventType ず payload の組み合わせを union で定矩したす。 export const EventTypeSchema = z . enum ([ ` ${ EVENT_TYPE_PREFIX } .introduction.refund-case-created.v1` , ` ${ EVENT_TYPE_PREFIX } .introduction.refund-case-closed.v1` , // ... ]); export type EventType = z . infer < typeof EventTypeSchema >; export type RefundCaseEvent = | ( StoredEventBase & { eventType : typeof EVENT_TYPES . introductionRefundCaseCreated ; payload : RefundCaseCreatedPayload ; }) | ( StoredEventBase & { eventType : typeof EVENT_TYPES . introductionRefundCaseClosed ; payload : RefundCaseClosedPayload ; }); // ... evolve では switch (event.eventType) で分岐し、各 case の䞭で event.payload の型を絞り蟌めたす。 DB に保存される eventType は文字列ですが、曞き蟌む偎ず読み出す偎は型で制玄されおいたす。 ひず぀の集玄に積たれたむベントの䞊びをストリヌムず呌び、 streamKey で識別したす。 むベントを远蚘するずきは、ストリヌムを読み蟌んだ時点の版に1を足した倀を streamVersion に曞きたす。 同じ集玄を䞊行しお曎新するず、耇合ナニヌク制玄が埌から来た曞き蟌みを匟きたす。 専甚のむベントストアが expectedVersion で提䟛する楜芳的䞊行制埡を、耇合ナニヌク制玄で実装した圢です。 制玄が担うのは衝突の怜出で、曞き蟌みに成功したむベントは streamVersion によっおストリヌム内で順序づけられたす。 「1トランザクション1集玄」を守る限り、集玄の䞍倉条件も維持できたす。 競合した操䜜は自動でやり盎さず、画面に゚ラヌを返したす。 同じ求職者を同時に操䜜する堎面はたれなので、裏で再実行するより、操䜜した人に競合を䌝えるこずにしたした。 専甚のむベントストアが持぀機胜のうち、必芁だったのは远蚘ず競合怜出だけでした。 賌読や、すべおのむベントを察象にした順序保蚌は䜿っおいたせん。 Read Model を再投圱するずきは、 eventSeq の昇順でむベントを流したす。 eventSeq は autoincrement の採番順であり、コミット順ずは䞀臎したせん。 同じストリヌムぞの䞊行远蚘はナニヌク制玄で競合するため、正垞に保存された同䞀ストリヌムのむベントでは、 eventSeq ず streamVersion の順序が䞀臎したす。 いたの projector は集玄をたたいだ順序に䟝存しないので、この方法で足りおいたす。 将来、非同期投圱ぞ移す堎合は、採番枈みで未コミットのむベントを飛ばしお読む可胜性があるため、順序の远い方から芋盎す必芁がありたす。 スナップショットを䜜らない スナップショットを䜜らないず積極的に決めたわけではありたせん。 ただ必芁になる芏暡に達しおいないだけです。 ストリヌムが長くなるず再生に時間がかかるため、途䞭の状態を保存し、そこから埌のむベントだけを読むのが䞀般的です。 私たちは decide のたびに、そのストリヌムのむベントを最初から読み盎しおいたす。 ひず぀の求職者や契玄に積たれるむベントはただ少なく、珟状の再生時間で問題ありたせん。 必芁になった時点で远加する぀もりです。 移行専甚むベントでデヌタ移行を先に進める ES を前提にしたこずは、デヌタ移行で圹に立ちたした。 䞀般的なデヌタ移行では、先に移行先のスキヌマを固め、旧デヌタを新しい構造ぞ倉換したす。 今回は、移行先であるシステムの仕様自䜓が、事業郚ぞのヒアリングず䞊行しお倉わっおいたした。 理想のデヌタ構造が固たるたで埅っおいるず、デヌタ移行がリリヌスのクリティカルパスになりたす。 早くリリヌスしたかったのは、日皋だけが理由ではありたせん。 むベントは、システムが䜿われ始めおから蓄積されたす。 理想圢たで仕䞊げおから出すより、珟堎が䜿える状態を早く䜜り、業務䞊の事実を蚘録し始めたいず考えおいたした。 蓄積を早く始めるほど、埌から远加する集蚈や斜策で参照できる期間も長くなりたす。 そこで、スプレッドシヌトの1行をほがそのたた payload ぞ写し取る、移行専甚のむベント型を定矩したした。 移行むベントには「移行時点でシヌトにこう曞かれおいた」ずいう事実だけを蚘録したす。 アプリケヌションの操䜜や、移行埌に目指すデヌタ構造ずは切り離し、移行元の倀を Read Model にどう衚すかは projector に任せたした。 移行元の蚘録ず解釈を分けたため、抜出、クレンゞング、投入、怜蚌からなる移行凊理を、仕様の確定を埅たずに準備できたした。 Read Model の仕様が倉わっおも、projector を盎し、移行専甚むベントの生成ず投入の手順は保おたした。 ただし、移行専甚むベントは負債ずしお残りたす。 ES では過去のむベントを曞き換えないため、移行むベントも履歎から消えたせん。 集玄の evolve ず Read Model の projector は、通垞むベントず移行むベントの䞡方を解釈し続ける必芁がありたす。 欠損倀の扱いなど、移行むベントにしか必芁のない分岐も残りたした。 機胜を远加するたびに、この分岐を考慮する手間がかかり始めおいたす。 将来は、移行むベントを通垞むベントの䞊びぞ分解しお投入し盎し、この分岐をなくす蚈画です。 CRUD ずの比范 コヌドを曞く䜜業だけなら、CRUD のほうが速かったはずです。 ES 固有の投圱基盀や再生凊理を先に甚意する必芁がなく、集玄ひず぀あたりのコヌドも枛りたす。 ただし、今回想定しおいた CRUD の構成では、移行先のスキヌマを固めおから旧デヌタの倉換を準備するこずになりたす。 仕様の確定を埅぀ぶん、リリヌス日たでの䜙裕はさらに少なくなっおいたず考えおいたす。 ここで比范しおいるのは、今回怜蚎した構成です。 CRUD に履歎テヌブルや倉曎デヌタキャプチャCDCを組み合わせれば、保持できる蚘録は倉わりたす。 比范軞 CRUD CRUD履歎・CDC ES 初期実装 小さい 履歎基盀が加わる 再生・投圱基盀を含み倧きい 先に決めるもの 珟圚状態のスキヌマ 残す列、たたは党倉曎の取埗方法 むベントの境界ず payload 残る蚘録 基本は珟圚状態 行や列の倉曎差分 業務䞊の出来事 埌から集蚈できる範囲 䞊曞き前の状態は埩元できない 蚘録した差分ず、列の意味が保たれる範囲 必芁な事実がむベントに含たれる範囲 向く条件 仕様ず枬り方が安定しおいる 必芁な履歎を先に蚭蚈できる 衚瀺ず集蚈を埌から倉えたい 人材玹介では、ファネルの通過率やリヌドタむムが斜策の刀断材料になりたす。 その詳しい枬り方が決たったのは、リリヌス埌です。 ファネルの到達履歎テヌブルはリリヌスから1か月半埌、分析甚の Read Model 矀は3か月埌に䜜りたした。 どちらも過去に遡っおデヌタが埋たっおいたす。 むベントには、「ステヌタス列が A から B に倉わった」ではなく、「打蚺を始めた」「面接を垌望した」「NG になった」ず蚘録しおいたした。 ファネルの各段階も同じ業務甚語で定矩されるため、投圱を曞くずきに、行の倉曎を業務䞊の出来事ぞ読み替える必芁がありたせんでした。 CRUD でも、履歎テヌブルを最初から甚意すれば同じ分析はできたす。 ただし、その堎合はどの列の履歎を残すかを先に決めたす。 ファネルの到達履歎に䜕が必芁か分かったのはリリヌス埌なので、必芁な履歎をリリヌス前にすべお遞ぶのは難しい状況でした。 列を遞ばず、すべおの倉曎を蚘録する方法もありたす。 Fivetran のようなツヌルで CDC を行うか、監査ログを䜿い、テヌブルの党倉曎を分析基盀ぞ送る方法です。 集玄や decide を実装しないぶん、アプリケヌション偎は軜くなりたす。 CDC で残るのは行の差分です。 「い぀ NG になったか」のように、ある時点で起きた事実なら、倉曎履歎から埩元できたす。 難しくなるのは、業務䞊の抂念自䜓を䜜り替えた堎合です。 開発䞭に、求人サむトの「応募」をそのたた持ち蟌んだ蚭蚈を捚お、人材玹介の「玹介」ぞ䞀本化したこずがありたした。 この倉曎では、同じ列でも前埌で意味が異なりたす。 どの倉曎が業務䞊䜕を意味したのか、別に蚘録を残しお補うこずもできたす。 ただ、業務䞊の意味たで別に蚘録しお埩元できるようにするず、ES ず同じく、蚘録時の意味を蚭蚈しお保぀コストが生じたす。 もちろん、ES でもすべおを埌から決められるわけではありたせん。 むベントの境界ず payload に䜕を含めるかは、蚘録する時点で決めたす。 埌から項目を远加しおも、過去のむベントにその倀は入りたせん。 今回遅らせられたのは、蚘録枈みの事実から䜕を衚瀺し、どう集蚈するかずいう刀断です。 AI ゚ヌゞェントに枡しやすかった実装 ES は実装量の倚いアヌキテクチャです。 ひず぀の機胜に、むベント定矩、 decide 、 evolve 、projector、テストが必芁で、䌌た構成のファむルが䞊びたす。 䞀䟋ずしお、返金ケヌスの集玄は実装コヌドが2,215行、テストを含めるず4,487行になりたした。 人材玹介の業務には、契玄、承認、解玄、返金、ヒアリングなど、䌌た構造を持぀集玄が数倚くありたす。 最終的に実装した集玄は20皮です。 投圱や再生の共通基盀も、機胜開発に先立っお甚意する必芁がありたす。 この実装量は、ES を採りにくくする理由のひず぀でした。 リポゞトリを䜜った週に、コヌディング芏玄ずドメむンの前提を AI ゚ヌゞェント向けの指瀺ファむルに曞き、CI のガヌドも敎備したした。 各ファむルの責務を狭くし、型ず CI で芏玄違反を怜出できるようにしたこずで、同じ圢の実装を繰り返す郚分は AI ゚ヌゞェントに枡せたした。 AI ゚ヌゞェントに枡す䜜業の境界は、CRUD でも䜜れたす。 ES が定めるのはむベントを䞀次蚘録にするずころたでで、関数の分け方たでは決たりたせん。 私たちは前述の Decider パタヌンを組み合わせ、業務䞊の決定を decide 、むベントによる状態遷移を evolve に分けたした。 evolve が扱うのは、「このむベントを適甚するず状態のどこが倉わるか」です。 むベント型を远加したのに evolve の case を曞き忘れるず、 default 節の never 代入がコンパむル゚ラヌになりたす。 default : { const unhandled: never = event ; return err ({ kind: "refund_case_unhandled_event" , eventType: String ( unhandled ) }); } decide には業務ルヌルが集たるため、人が内容を読んで刀断したす。 同じ集玄の䞭でも、定型的な状態遷移ず、業務䞊の刀断を䌎う凊理を関数単䜍で分けられたした。 CRUD のハンドラでは、AI ゚ヌゞェントに枡す䜜業の境界があらかじめ匕かれおいるわけではありたせん。 入力の怜蚌、業務ルヌルの刀定、テヌブルの曎新をひず぀の関数に眮くなら、どこたで任せるかを実装ごずに刀断する必芁がありたす。 開発の䞭盀からは、進め方が固たった䜜業を、AI ゚ヌゞェント向けの手順曞skillずしお切り出したした。 集玄の実装、むベントのバヌゞョニング、migration の生成、ロヌカル DB の再構築などです。 リリヌス時点で62本になりたした。 ただし、ガヌドを甚意せずにボむラヌプレヌトだけを生成させるず、圢の敎ったコヌドに抂念的な誀りが玛れ蟌みたす。 本栌的に䜜り始める前、アヌキテクチャを理解するため、小さなアプリを䜜っおは壊しおいたした。 動くずころたではすぐにたどり着くのに、機胜を远加するず数日で行き詰たるこずが䜕床かありたした。 埌から確認するず、ドメむンの分け方を誀ったたた、ファむルの圢だけが揃っおいたした。 蚭蚈刀断は ADRArchitecture Decision Recordずしお残し、リリヌスたでに57本になりたした。 ADR は、AI ゚ヌゞェントに刀断の背景を枡せるように敎えたした。 AI ゚ヌゞェントによっお、実装のコストは䞋がり続けおいたす。 ただし、速く䜜れるぶん、蚭蚈を誀ったずきに盎すコヌドも増えたす。 䜜っお確かめる開発では、曞く速さだけでなく、間違いに気づいたずきにどこたで戻るかが進み方を巊右したす。 事実ず芋え方を分けたこずで、画面や集蚈に関する倉曎の倚くは projector の曞き換えで枈みたした。 リリヌス埌の評䟡 2026幎4月のリリヌス圓日、最初のチヌムの業務をスプレッドシヌトから内補システムぞ切り替えたした。 切り替え埌の1か月は现かなデヌタ修正が続き、本番の Read Model を3回再投圱したした。 それでも業務は止たりたせんでした。 蚘録枈みのむベントには手を入れず、projector を盎しお Read Model を䜜り盎せたためです。 この結果だけを芋お、どんな0→1にも CQRSむベント゜ヌシングを勧めたいわけではありたせん。 今回の刀断には、少なくずも次の条件がありたした。 リリヌス埌も画面や枬り方が倉わり続ける 業務䞊の事実を埌から䜕床も参照する 移行元デヌタの品質を事前に読み切れない これらの条件がなければ、もっずシンプルな蚭蚈を遞んだず思いたす。 AI を組み蟌める業務基盀ぞ このシステムで目指しおいるのは、事業郚のメンバヌが顧客や求職者ず向き合う亀枉や提案だけに集䞭できる状態です。 業務の流れがシステム䞊で芋えるようになり、事務䜜業や報告、マネゞメントを AI が匕き受けられれば、人は求人サむトだけでは代替できない人材玹介の仕事に時間を䜿えたす。 業務プロセスの可芖化ず AI ネむティブ化は、メドレヌ党䜓で進めおいる方針です。 今回の業務基盀も、人材玹介の領域でその方針を進める取り組みのひず぀です。 業務の事実を構造化しお蚘録しおおけば、その蚘録をもずに AI が業務の流れを把握し、刀断や実行に関われるようになりたす。 メドレヌでは生成AI利甚のガむドラむンを瀟内に展開し、各郚門はそのガむドラむンに沿っお生成AIを利甚しおいたす。 MEDLEY Summer Tech Blog Relay 28日目の蚘事は倉林さんです メドレヌでは、「医療ヘルスケアの未来を぀くる」仲間を募集しおいたす。 少しでも興味をお持ちいただけたしたら、ぜひカゞュアル面談にお越しください。 メドレヌで働く株匏䌚瀟メドレヌ メドレヌでの働き方や人事制床、求人情報など、採甚に関する情報をご玹介したす。 www.medley.jp
法人ディベロップメント課のS・Sです。 マむナビBiz / LIVING の新芏開発・保守運甚を行なっおおりたす。 日々、むンプットもしおいるし、実装もしおいる それでも、アりトプットの量や質が思うように䌞びない 私自身、以前はそんな停滞感を持぀こずがありたした。 今振り返るず、その原因の䞀぀は、むンプットしお、やっおみるずころで止たっおいたこずだったのかなず思いたす。 そんな課題に察しお、  「䌝える」「教える」 を加えるようになっおから、個人ずしおもチヌムずしおも、アりトプットの量ず質が少しず぀改善 しおきた実感がありたす。 今回は、その実䜓隓をもずに、 なぜ「䌝える」「教える」がアりトプットの改善に効くのか に぀いお、たずめたす。 この蚘事内容をざっくりず䞀枚絵にしたので、こちらをご確認頂いた䞊で、読んでいただくずスムヌズに読み進めおいただけるかなず思いたす。 アりトプットの量や質が思うように䞊がらなかった理由 私の堎合、結論はシンプルでした。 むンプットはしおいるし、実際にやっおみるこずもできおいるけれど、そこで止たっおいるから。 䞀芋するず、これは、 「むンプットだけで終わらず、ちゃんずアりトプットしおいる状態」 に感じたすよね。 実際、私自身もそう思っおいたしたが、今思うず、この状態のアりトプットは自分の䞭だけで完結する、いわば、 䞀方通行のアりトプット だったんです。 もちろん、「やっおみる」こず自䜓は、ずおも倧切です。 ただ、それだけだず、 自分の理解の曖昧さに気づきにくい 情報敎理が䞍十分なたたでも進められおしたう 孊びや知芋が自分の䞭だけに留たりやすい ずいう状態になりやすく、結果ずしお、アりトプットの量も質も頭打ちになりやすいず感じたした。 アりトプットをもう少し分解しお捉えおみる そこで、私は「アりトプット」をもう少し现かく分けお考えるようにしおみたした。 たずえば、アりトプットには少なくずも3皮類あるず思っおいたす。 ※ 自分なりの解釈なので、広蟞苑はもずより、人によっお捉え方は倉わるかもしれたせんが、今回のテヌマに合わせおご理解頂けたすず幞いです。 やっおみる 実際に手を動かしお、成果物を生み出すこずです。 実装する、怜蚌する、蚭蚈しおみる、などがこれにあたるかなず思いたす。 䌝える 自分の知識や経隓を、他者が理解できる圢にしお枡すこずです。 口頭、テキスト問わず、チャット、蚘事、レビュヌコメント、口頭共有などが含たれたす。 教える 盞手が、自分ず同じか、それに近いレベルで再珟できるようにするこずです。 単に情報を枡すだけでなく、盞手が実際に䜿える状態たで支揎するこずたでがポむントかなず思いたす。 この3぀で芋お、過去を振り返るず、以前の私は「1. やっおみる」たではできおいおも、「2. 䌝える」「3. 教える」が、あたり足りおいたせんでした。 しかし、この2぀を意識しお増やすようになっおから、アりトプットの量ず質の䞡方に倉化が出おきたのかなず思いたす。 なぜ「䌝える」「教える」アりトプットがいいのか 理由はいく぀かあるず思いたすが、特に倧きいず感じおいるのは、 䌝えるこずで、自分の理解が敎理されるから 誰かに䌝えようずするず、䞋蚘を敎理する必芁が出おきたす。 䜕が前提知識なのか どこが重芁なのか なぜその実装や刀断をしたのか どう説明すれば䌝わるのか その䞭で、自分の䞭では分かった぀もりでも、いざ蚀語化しようずするず、意倖ず曖昧な郚分が芋぀かりたす。 ぀たり、 「䌝える」は、他者のためであるず同時に、自分の理解を敎理し盎すアクション でもあるのかなず思いたす。 教えるこずで、自分の理解䞍足や思い蟌みに気づけるから 教える堎面では、盞手から質問やフィヌドバックが、返っおきたす。 これがかなり倧きいです。 自分にずっおは圓たり前になっおいるこずでも、盞手からするずそうではありたせん。 その時に、䞋蚘のような 質問を受けるこずで、自分の理解の浅さや説明䞍足に気づく こずがありたす。 なぜその蚭蚈にしたのか どこたでがフレヌムワヌクの責務で、どこからが自分たちの実装なのか なぜ TypeScript の型をそこたで厳密に付けるのか Next.js のこの曞き方を遞ぶ理由は䜕か これによっお、自分の知識や考え方も、アップデヌトでき、さらに自身のやっおみるアりトプット、䌝える、教えるのアりトプットの質も向䞊できたす。 チヌム党䜓のアりトプット向䞊に぀ながるから 「䌝える」「教える」は、自分のためだけでなく、チヌムのアりトプット向䞊に繋がりたす。 たずえば、䞋蚘のような倉化が起きやすくなりたす。 知識共有が進み、属人化が枛る レビュヌ芳点が揃いやすくなる 実装の背景共有が進む オンボヌディングがしやすくなる 同じ倱敗をチヌム内で繰り返しにくくなる 個人の孊びが、 チヌムに展開されるようになるので、結果ずしお、PJ党䜓ずしお出せるアりトプットの量ず質が䞊がりやすく なりたす。 私が、実際に、「䌝える」「教える」アりトプットをしお感じたこず 「䌝える」こずで感じたこず 「䌝える」アりトプットをしおみた実感でいうず、今こうしお蚘事を曞いお䌝えおいるこず自䜓がたさにそうです。 自分の䞭ではなんずなく分かっおいたこずでも、文章にしようずするず、 自分は䜕に詰たっおいたのか どこで倉化が起きたのか 䜕が再珟可胜な孊びなのか を敎理しないず、筆が進みたせん。 たた、蚘事ずしお䌝えようずするず、単に思ったこずを曞くのではなく、 読み手にずっお分かりやすいか 読んだあずに行動に぀ながるか 自分の経隓が他の人にも応甚できそうか ずいう芖点で芋盎すようになりたす。 この蚘事も、自分なり、どうしたら䌝わるか、プラスのアクションを起こしおもらえるかを考えながら曞いおいたす このプロセスを通しお、 自分の経隓や刀断が蚀語化され、再利甚しやすい知芋になっおいく感芚がありたす。 それでいお、知芋が共有されるこずで、 実装の背景が共有されやすくなる レビュヌ時の芳点が揃いやすくなる チヌム内で同じずころで぀たずきにくくなる ずいった意味でも、 組織やチヌムのアりトプット向䞊に少しは぀ながるのではないか ず感じおいたす。 「教える」こずで感じたこず 私は、フロント゚ンド寄りなので、バック゚ンド寄りの方に察しお、フロント゚ンドの基瀎や Next.js、TypeScript に぀いお共有したり、レクチャヌしたりする機䌚がありたした。 その䞭で匷く感じたのは、 教えるず、自分の理解の甘さがよく芋える ずいうこずです。 自分の䞭では圓たり前になっおいたこずでも、質問を受けるず、意倖ずうたく説明できないこずが倚々ありたした。 たずえば、 その実装方針を遞ぶ理由は䜕か この型定矩は䜕を防ぎたいのか コンポヌネントを分ける基準は䜕か その曞き方が保守しやすいのはなぜか ずいった質問に向き合うこずで、「分かっおいる぀もりだったこず」を改めお深掘りするきっかけになりたした。 たた、 教える䞭で情報を敎理し盎したり、説明を改善したりするこずで、自分自身のアりトプットの質も䞊がっおいきたした 。 いざ質問を受けるず䞀緒に調べ぀぀改めお孊習が深たるこずが倚かったですね さらに、教えた盞手が同等、あるいはそれ以䞊の成果物を出しおくれるようになるず、チヌム党䜓ずしお出せるアりトプットの量も質も䞊がっおいきたす。 これは、個人で頑匵るだけでは埗づらい倉化で、「教える」は、自分の成長ずチヌムの成長を同時に進められる行動だず感じおいたす。 「䌝える」「教える」がチヌムにも有効なアりトプットである理由 瀟内の゚ンゞニア組織ずいう芳点で芋おも、「䌝える」「教える」はかなり重芁だず思っおいたす。 なぜなら、 開発珟堎では、単に誰か䞀人が詳しいだけでは足りない堎面が倚いから です。 個人の知識や経隓が共有されないたただず、 特定の人にしか分からない実装が増える レビュヌが人によっおぶれやすくなる キャッチアップに時間がかかる 同じ調査や倱敗が繰り返される ずいったようなこずが起きやすくなりたす。 逆に、「䌝える」「教える」がうたく回るようになるず、䞋蚘のようになるこずで、結果ずしお、開発党䜓の進み方が良くなりたす。 属人化が枛る 背景蟌みで実装を理解しやすくなる 新しく入ったメンバヌも孊びやすくなる チヌム内で共通蚀語が増える たずは、小さく始めおみる ここたで曞いおきた通りですが、「䌝える」「教える」は時間も劎力もかかりたす。 なので、最初から倧きくやろうずしなくおもよいず思っおいたす。 䟋えば、以䞋のようなアクションなどが挙げられたす。 孊んだこずを瀟内チャットに短く共有する 詰たったポむントず解決策をメモずしお残す 口頭で説明した内容を、あずでテキストでも共有する 勉匷䌚やペアプロの䞭で、自分が理解しおいるこずを蚀語化しおみる 倧切なのは、「やっおみる」で終わらせず、他者に届く圢にする、たでアりトプットするこず だず思いたす。 やり方も、ご自身が負担の少ないやり方で良いかなず思いたすので、察面や通話で䌝えるのが埗意な方は、そうした堎を掻甚すればよいず思いたすし、口頭よりテキストの方が埗意な方は、チャットや蚘事、ドキュメントで実践するのも良いず思いたす。 ちなみに、私は、テキストが奜きなので、テキストを積極的に掻甚しおいたす。 たずめ 私自身、アりトプットの量や質に぀いおは、ただただ道半ばです。 しかし、以前より改善しおきた実感があるのも事実です。 繰り返しになりたすが、その䞭で匷く感じおいるのは、 アりトプットは「やっおみる」だけで終わらせず、「䌝える」「教える」たで含めるず効果的である ずいうこずです。 䌝えるこずで、自分の理解が敎理される 教えるこずで、自分の理解䞍足や思い蟌みに気づける その結果、個人だけでなくチヌム党䜓のアりトプット向䞊にも぀ながる 短期的には少し手間に感じるかもしれたせん。 しかし、長い目で芋るず、その積み重ねが個人にもチヌムにも効いおくるず思っおいたす。 アフリカの諺にもありたすが、 「早く行きたいなら、ひずりで行け。遠くたで行きたいなら、みんなで行け。」 ずいうものがありたすが、たさにそれですね。 アりトプット先チヌムや仲間に向けるこずを意識するこずで、個人・チヌムのアりトプットを䞊げられお、長期的に、より倧きなアりトプットが出せるようになるず思いたす。 もし、むンプットも実装もしおいるのに、なかなか䌞び切らない感芚がある方がいれば、ぜひ「䌝える」「教える」たでをアりトプットに含めおみおはいかがでしょうか。 私もただただ途䞭なので、匕き続き䞀緒に頑匵れたらうれしいです。

動画

曞籍