゚ス・゚ム・゚スのブログ - TECH PLAY

TECH PLAY

゚ス・゚ム・゚ス

゚ス・゚ム・゚ス の技術ブログ

å…š282ä»¶

この蚘事は株匏䌚瀟゚ス・゚ム・゚スAdvent Calendar 2025 vol.1の12月4日の蚘事です。 qiita.com ゚ス・゚ム・゚スで党瀟SREずいうロヌルで掻動しおいるSecurity Hub芞人の山口 @yamaguchi_tk です。おすすめのAWSサヌビスは営業ですい぀もお䞖話になっおいたす。 はじめに 私が所属しおいる党瀟SREチヌムで監芖基盀の入れ替えを行った際、そのタむミングで監芖蚭定自䜓も芋盎したした。 その芋盎しの䞭で、 脅嚁モデリング の考え方をむンフラレむダヌの監芖蚭蚈に応甚しお敎理を行いたした。 本蚘事では、そのずきに実斜した手法をできるだけ具䜓的に蚀語化し、同じように監芖を芋盎したい方の参考になるこずを目指しお玹介したす。 背景 オンプレからAWSにLiftした際にオンプレず同じ構成でAmazon EC2を構築し、監芖もZabbixを利甚しおオンプレず同じ構成で構築したした。 Zabbix自䜓のアップデヌトやAmazon EC2、Amazon RDSのアップデヌトを䜕床か実斜した結果、アップデヌトの怜蚌工数やZabbix自䜓の運甚工数が課題になっおきたため、フルマネヌゞドサヌビスであるAmazon CloudWatchぞの移行を行いたした。 監芖蚭定の敎理の目的 監芖蚭定自䜓はZabbixの基本テンプレヌトをベヌスに䞀郚をカスタマむズしお利甚しおおり、特にメトリクスベヌスのアラヌトがシステムの実態ず合っおおらず 無駄なアラヌトが発生しおいる 状況でした。 無駄ず刀断した監芖蚭定は、発生のたびに削陀したり閟倀や監芖するメトリクス自䜓を芋盎ししたりしおいたしたが、発生郜床の察応ではどうしおもいたちごっこになっおしたいたす。 そこで、Amazon CloudWatchぞの移行を機に方針を決めお監芖蚭定を敎理するこずにしたした。 むンフラレむダヌの監芖蚭定ぞの応甚 むンフラレむダヌの監芖蚭定に脅嚁モデリングの手法を応甚できないか怜蚎し、実際に行っおみたした。 これは叀兞的なセキュリティ原則の「可甚性Availability」にフォヌカスしお脅嚁モデリングを実斜した、ず蚀えるかもしれたせん。 脅嚁モデリングに぀いお 脅嚁モデリングThreat Modelingは、システムやアプリケヌションのセキュリティを蚭蚈段階から考慮するための手法です。 アダム・ショヌスタック氏の以䞋のフレヌムワヌクが有名です。 Shostack’s Four Question Framework for Threat Modeling 䜕に取り組んでいるのか What are we working on? 䜕が問題を匕き起こす可胜性があるか What can go wrong? それに察しお䜕をするのか What are we going to do about it? 十分によい察応をしたか Did we do a good job? 具䜓的には、DFD等でシステムの構成芁玠を可芖化し、「起こったら困るこず」ずいう芖点で脅嚁を特定したす。 特定した脅嚁をSTRIDE等でカテゎリ分けし、その発生確率をアタックツリヌで分析し圱響床ず䜵せおリスク評䟡するこずで、セキュリティリスクを事前に把握し、適切な察策を怜蚎するこずができる手法です。 実斜手順 ここからは、実際に行った手順を玹介したす。 発生したら困るこずを掗い出す たず、AWSの構成図を䜜成したす。 1぀目の構成図EC2版には、オンラむンWebサヌビスず同じむンスタンスで凊理されるバッチ凊理が含たれおいたす。 2぀目の構成図AWS Fargate版には、オンラむンWebサヌビスずバッチ凊理、非同期凊理が含たれおいたす。 AWSの構成図を芋ながら、 起こったら困るこず を基準に付箋などを匵ったりしお掗い出しおいきたす。 䟋瀺したAWSの構成図の堎合だず、以䞋のようになりたす。 オンラむンサヌビス系 オンラむンサヌビスが応答しない オンラむンサヌビスの応答が遅延しおいる バッチ系 バッチが凊理されない 非同期凊理系 非同期凊理が凊理されない 非同期凊理が遅延しおいる 凊理フロヌを可芖化する 掗い出した 起こったら困るこず に察しお、その凊理オンラむンサヌビス系バッチ系非同期凊理系がどのようなシステムフロヌで実行されおいるかを、AWS構成図ごずに可芖化しおいきたす。 䜜成したAWS構成図から必芁な凊理フロヌを抜き出しお構成したす。 以䞋に䞊で䟋瀺したAWS構成図での可芖化䟋を瀺したす。 オンラむンサヌビス系(EC2) バッチ系(EC2) オンラむンサヌビス系(Fargate) バッチ系(Fargate) 非同期凊理系(Fargate) 発生芁因を分析する 掗い出した 起こったら困るこず に察しお、凊理フロヌ図を芋ながらその発生芁因を抜象床高めで掗い出しおいきたす。 ここでは「xxxずいう゚ラヌでyyyが発生しお凊理が異垞終了する」ずいう詳现な蚘茉ではなく、「凊理が正垞終了しない」ずいった抜象床高めの粒床で掗い出しを行いたす。 掗い出した䟋を図で瀺したす。 オンラむンサヌビス系発生芁因(EC2) バッチ系発生芁因(EC2) オンラむンサヌビス系発生芁因(Fargate) バッチ系発生芁因(Fargate) 非同期凊理系発生芁因(Fargate) 盎接的に監芖できるずころを探す 分析で掗い出した発生芁因に察しお、 䞀番盎接的に芳枬できる箇所・監芖内容 や、 凊理の急所ここを監芖すればシステムフロヌの䞋流の異垞が怜知できる箇所・監芖内容 を凊理フロヌから探したす。 掗い出した䟋を図で瀺したす。 オンラむンサヌビス系監芖ポむント(EC2) バッチ系監芖ポむント(EC2) ハヌトビヌト系凊理でログを監芖する堎合は、ハヌトビヌト系凊理をどこで動䜜させるのか、バッチ凊理のログをどこに出力するのか、ずいった点もあわせお考慮する必芁がありたす。 オンラむンサヌビス系監芖ポむント(Fargate) バッチ系監芖ポむント(Fargate) 非同期凊理系監芖ポむント(Fargate) バッチ系監芖ポむント(Fargate)では、以䞋の理由でAWS Step Functions以降を監芖するこずで党䜓をカバヌしおいたす。 Throttlingが発生する可胜性がある堎合は通垞Amazon SQS等を挟むため、このシステムはThrottlingが発生する状況になるこずは少ないず考えられる。 Amazon S3ずAmazon EventBridge間でThrottlingが発生しおもAWS Step Functions自䜓は起動するこずを期埅しおいる。 Amazon EventBridgeの定時凊理は少なくずも1回は起動するこずを期埅しおいる。 たずめ 監芖蚭定の敎理に脅嚁モデリングの手法を応甚するこずで、以䞋の効果が埗られたした。 システムの実態に合った 最䜎限必芁な監芖蚭定 が可胜になりたす。 「起こったら困るこず」を起点にするこずで、無駄なアラヌトを削枛できたす。 凊理フロヌを可芖化するこずで、監芖ポむントの遞定根拠が明確になりたす。 この手法は既存の監芖蚭定の芋盎しだけでなく、新芏システムの監芖蚭蚈にも応甚できるず考えおいたす。
この蚘事は株匏䌚瀟゚ス・゚ム・゚スAdvent Calendar 2025 12月3日の蚘事です。 qiita.com 介護/障害犏祉事業者向け経営支揎サヌビス「カむポケ」の゜フトりェア開発者の空䞭枅高(@soranakk) です。 本蚘事ではカむポケのバック゚ンド開発で取り入れおいる、スキヌマからのコヌド生成に焊点を圓おお取り組みや工倫を玹介したいず思いたす。 カむポケのシステム抂芁 たずはこちらの図をご芧ください。 こちらはカむポケのシステム抂芁図ずなっおいたす。 バック゚ンドにはいく぀かのサヌバヌが存圚しおいお、それぞれのサヌバヌはGraphQL APIを公開しおいたす。 そしお、それらをGatewayで1぀のGraphQL APIにたずめお、フロント゚ンドに公開しおいたす。 たたそれぞれのバック゚ンドはSpring Bootで構成されおいお、KotlinずSpring for GraphQLを利甚しお開発しおいたす。 さらにそれぞれのバック゚ンド毎にデヌタストアずしおPostgreSQLのデヌタベヌスを持っおいる構成になっおいたす。 本蚘事ではこれらのバック゚ンド開発のコヌド生成に焊点を圓おお玹介したいず思いたす。 コヌド生成を利甚しおいる箇所 コヌド生成は䞻に2箇所で利甚しおいお、1぀目はGraphQL Schemaからのコヌド生成です。 それぞれのバック゚ンドで公開しおいるGraphQL SchemaからKotlinのコヌドを生成しお利甚しおいたす。 もう1぀はデヌタベヌスアクセスでPostgreSQLのスキヌマからKotlinのコヌドを生成しお利甚しおいたす。 GraphQL Schema からのコヌド生成 カむポケのバック゚ンドではSpring for GraphQLを利甚しおGraphQL APIの開発をしおいるのですが、Spring for GraphQLにはコヌド生成の機胜が存圚したせん。 そのため、カむポケではDGS Framework (Domain Graph Service)ずいうラむブラリのコヌド生成を利甚しおいたす。 DGS frameworkはNetflixが提䟛しおいる、Spring BootでGraphQLを開発するためのラむブラリです。 リンク https://netflix.github.io/dgs/ DGS frameworkにはコヌド生成のためGradleプラグむンが甚意されおいお、それを䜿うずKotlinのコヌドを生成するこずができたす。 ちなみにSpring for GraphQLの開発においおコヌド生成でDGS frameworkを利甚するこずは公匏ドキュメントでも觊れられおいたすので、半分ぐらい公匏的な方法です。 リンク https://docs.spring.io/spring-graphql/reference/codegen.html デヌタベヌススキヌマからのコヌド生成 カむポケのバック゚ンドではjOOQずいうORMを利甚しおデヌタベヌスアクセス局の開発をしおいたす。 jOOQにはデヌタベヌススキヌマからのコヌド生成プラグむンが提䟛されおいるので、それを利甚しおいたす。 jOOQを䜿ったデヌタベヌスアクセスは、䟋えば゜ヌスコヌドはこのような感じになりたす。 by公匏ドキュメント https://www.jooq.org/doc/3.20/manual/sql-building/dsl-api/ val result: Result <Record?> = create.select() .from(AUTHOR) .join(BOOK).on(AUTHOR.ID.eq(BOOK.AUTHOR_ID)) . where (AUTHOR.YEAR_OF_BIRTH.gt( 1920 )) .and(AUTHOR.FIRST_NAME.eq( "Paulo" )) .orderBy(BOOK.TITLE) .fetch() この時に利甚するテヌブル名やカラム名、View名やRecord型などがjOOQによっお生成されたコヌドずなっおいたす。 生成するずきはデヌタベヌスのスキヌマを盎接参照しお生成するこずになるので、DockerなどでPostgreSQLを起動しおおいたり、 TestContainersを䜿ったりしおPostgreSQLを起動した状態でコヌド生成したす。 コヌド生成のメリット:GraphQL GraphQLのコヌド生成によっおリク゚ストやレスポンス型のdata classを自分で曞く必芁がなくなりたす。 これらはGraphQL Schemaに合わせお定型的な型を定矩しお利甚するだけなので、コヌド生成できるず楜です。 さらにGraphQL Schemaからコヌド生成されるため、GraphQL Schemaを修正すれば自動的にコヌドぞ反映されるようになりたす。 そのためGraphQL Schemaを曎新したけどコヌドぞ反映が挏れおいた、みたいなこずにコンパむル゚ラヌで気づくこずができたす。 ナニットテストやCIでも気づくこずはできるのですが、やはり修正しおすぐに手元の゚ディタで気づけるほうが開発者䜓隓ずしお良いです。 コヌド生成のメリット:デヌタベヌス デヌタベヌスのスキヌマは䜕らかのマむグレヌションツヌルを䜿っお管理しおいるず思いたす。 カむポケではgolang migrateずいうGo蚀語で䜜られたマむグレヌションツヌルを利甚しおいたす。 リンク https://github.com/golang-migrate/migrate こちらのツヌルではデヌタベヌスの曎新をSQLファむルを䜿っお管理したす。 そのためデヌタベヌスのスキヌマを管理するSQLずアプリケヌションコヌドのKotlinで倉曎を同期しおおかないず、デヌタベヌスは曎新したのにアプリケヌションが発行するSQLは叀いたたで゚ラヌになっおしたう、みたいなこずが発生しがちです。 そこでデヌタベヌススキヌマからコヌド生成するこずで、自動的に同期できるようになりたす。 なのでGraphQLの時ず同じく、デヌタベヌスを曎新したけどコヌドが叀いたたになっおいた、みたいなこずにコンパむル゚ラヌで気づくこずができたす。 CI での掻甚 スキヌマずコヌドのズレにコンパむル゚ラヌで気づける、ずいう話をしたしたがそれでも挏れおしたうこずもありたす。 そこでGraphQL SchemaやデヌタベヌスのマむグレヌションのSQLが远加された時などをトリガヌにしおCIでコヌドの自動生成を行なっお、倉曎がコヌドに反映されおいるかどうかをチェックしおいたす。 手元で修正挏れがあったずしおもPRのCIでチェックされるので、敎合性が取れおいない堎合はマヌゞされるこずもありたせん。 このような自動化が行えるこずも自動生成の利点だず思いたす。 たずめ 本蚘事ではカむポケのバック゚ンド開発で取り入れおいるコヌド生成に焊点を圓おお玹介したした。 コヌド生成を掻甚するこずで倖向けのむンタヌフェヌスず内郚の゜ヌスコヌドの敎合性のチェックが自動化できたり、開発者がコンパむル゚ラヌで䞍敎合に気づけるずいうメリットがありたす。 DGSのようにコヌド生成郚分だけ利甚するっおケヌスもありかなっお思っおいたす。 たた、本蚘事の内容はKotlin Fest 2025やJJUG CCC 2025 Fallのカンファレンスの゚ス・゚ム・゚スのブヌスでも玹介しおいたした。 ブヌスでは実際の゜ヌスコヌドも芋せながら色んな工倫を話すこずが出来たので、今埌も゚ス・゚ム・゚スのブヌスを芋かけたら立ち寄っおもらえるず嬉しいです。
この蚘事は 株匏䌚瀟゚ス・゚ム・゚ス Advent Calendar 2025 の12月1日の蚘事です。 qiita.com  みなさんこんにちは。Analytics & Innovation掚進郚の井手です。あっずいう間に今幎も12月。心の準備も枈たぬ間にカりントダりンが始たる時期に突入です。そしお今回の蚘事はAdvent Calendar 2025の蚘事の䞀぀でありしかも1日目ずのこず。華々しい幕開けずなれるかどうか。はおさお。 RecSys2025に参加しおきたした  前回の 私の蚘事 でも曞きたしたが、私は珟圚求職者ず事業者に察しおリコメンドを提䟛するシステムの䜜成に関わっおいたす。そしおむンプットの䞀環ずしお、だいぶ過日ずなっおしたいたしたが、秋にチェコはプラハで開催された RecSys ずいうリコメンドシステムの囜際カンファレンスに参加しおきたした。開催地域である䞭倮ペヌロッパの囜々を䞭心に、アメリカ、䞭囜、むギリス、フランスなど䞖界各囜からリコメンドシステムに関わる研究者や実務者が集たり、研究が共有されたした。たた、Music, Travel, News, HRずいったドメむンごずのワヌクショップも開かれ、実甚的な芳点での孊びも倚分にありたした。 今回のRecSys 簡単に前眮き  あたりこの界隈に銎染みのない読者の方も倚くいらっしゃるず思いたすので簡単に前眮きをいれおおきたす。ここで蚀うリコメンドシステムずは、ECサむトではおなじみの「あなたぞのおすすめ」ず衚瀺されお自動的に商品が提案されるような、過去のデヌタを利甚しおタヌゲットずなるナヌザヌの奜みやニヌズを掚枬し、それにマッチするアむテム矀を抜出するシステムのこずを指したす。リコメンドアむテムを決定するアルゎリズムは「自分の行動ず䌌た行動をずっおいるナヌザヌのパタヌンを参考に決定する」「自分が高評䟡したアむテムの䞭身ず䌌たコンテンツのものを探し決定する」などのアプロヌチの偎面があり、たたそれらの偎面から、クラスタリングアルゎリズムの適甚、行列分解、ディヌプラヌニングを利甚した手法などを甚いおアむテムの決定がなされたす。特に最近は、粟床や柔軟性の高さから、ディヌプラヌニングを甚いた手法が䞭心ずなっおおり、今回のRecSysの発衚の傟向も同様でした。 ドメむンごずにみたRecSys   RecSysでは様々なドメむンでのリコメンドに぀いお扱われおいたすが、ここでは倧きく「リコメンドシステムが成熟しおきおいるドメむン」ず「新たなドメむンぞのリコメンドシステムの適甚」ずいう2偎面で今回のカンファレンスの特城をたずめおみたいず思いたす。 成熟しおきおいるドメむンでのリコメンドの深化  E-commerceや音楜、映画、オンラむン広告など、すでにリコメンドシステムが倚数のナヌザヌが利甚するサヌビスに取り蟌たれ、アヌキテクチャヌの実瞟がすでにある分野では、゚ンベディングの頑健性や安定性を高める取り組み、あるいはリコメンド結果の倚様性に焊点をあおおいる研究などが倚かったように思えたす。䟋えばMetaのスタッフを䞭心ずした Zhengらの発衚 では、広告衚瀺のリコメンドに関連する課題を解決するための提案でした。SNSで衚瀺される予定の広告は、量が膚倧なのはもちろん、䞀方で衚瀺される広告ずそうでない広告の差が激しく分垃が歪んでいたり、広告の入れ替わりが激しくIDドリフトが生じやすいなどの点で゚ンベディングが䞍安定になりやすい。それを解決するために、䌌た意味を持぀広告をクラスタにしお情報を共有するSemantic IDを甚いる手法を提案しおいたす。  たた、新芏ナヌザヌのように、該圓サヌビスにほずんど過去の情報を持っおいない䞭でリコメンドを行うコヌルドスタヌト問題に぀いおは、今回も耇数の研究発衚がありたした。クロスドメむンやマルチモヌダル等、入力のバリ゚ヌションを増やすこずで解決する提案が倚かったように思え、これは近幎の傟向ず蚀えるでしょう。コヌルドスタヌト状態における情報の補完を、他ドメむンあるいは他メディアで補完する堎合、いかにそれらの情報を目暙ずするドメむンで利甚できるフォヌマットに倉換するかが課題ずなりたす。マルチモヌダルの䟋だず、むメヌゞ情報、たたは音声情報をテキストの゚ンベディングに倉換するのは今たでであればかなりハヌドルの高いタスクでした。しかしLLMが登堎し、この郚分をLLMが担うこずで、ハヌドルが劇的に䞋がり各ドメむンぞの適甚結果の報告がかなり増えおきたした。LLMは適甚が容易ですので、今埌倚くのドメむンでコヌルドスタヌトのリコメンドの質が改善されおいくこずでしょう。 新たなドメむンぞのリコメンドシステムの適甚  䞀方、リコメンドシステムを新たな領域に適甚しようずいう動きも倚く芋られたした。䟋えば Bereket らは、アヌトセラピヌにおける、絵や音楜のリコメンドに関する手法。既存研究では絵の刺激に察するクラむアントの反応からリコメンドのモデルを孊習させおいたずころを、音楜のモデリングも含めた双方からのクロスドメむンで行うずいう研究を報告しおいたした。たた、オンラむンコヌスのリコメンドでは、受講者の興味をモデリングする手法が既にありたしたが、これは受講者の興味がシフトしたタむミングを把握できないずいう欠点が指摘されおきおいたす。この課題に察しお䞡方を達成するためのモデルの提案が Li らによっおなされ、その効果ず有効性が䞻匵されおいたした。こういった領域は今埌しばらくは様々な偎面からのリコメンドアヌキテクチャが提案されおいくなかで、埐々にデファクトの方法が定たり、珟圚のe-commerceの領域のように深化しおいくのだろうなずいう印象を受けたした。  たた、本のリコメンドに関する研究や実装はすでに珍しくなくなっおおりたすが、リコメンド察象を子䟛に限定し、さらに既存のリコメンドで前提ずなるプロフィヌル情報やむンタラクションログなどがprivacy lawなどで取埗できないずいう制限された状況でのリコメンド゚ヌゞェントを䜜成するずいう Hillら による発衚は非垞に目新しく、そしお倧倉興味深かったです。子䟛の各幎霢がどのような感情パタヌンを持぀かをグルヌピングしたものず、リコメンド察象の本を感情的偎面でベクトル化したものでLLMをファむンチュヌニングしお゚ヌゞェントを䜜成するずいう手法で、その有効性を䞻匵されおいたした。発衚者は今埌の課題点など挙げられおおり、確かに今埌改善するポむントは倚くあるのかもしれないずは思ったものの、それ以䞊に発衚者孊生さんたちでしたの「子どもたちにもっずたくさん本を読んでもらいたい」ずいう研究のきっかけずなったモチベヌションは玠晎らしく、ずおも魅力的な研究であるなず感じたした。 個人的に特に気になった研究  どのドメむンの発衚も興味深く聞くこずができたのですが、䞊蚘党䜓を通しお䞀番印象に残った研究は、NetflixのZielnickiらによる、 Orthogonal Low Rank Embedding Stabilization ずいうタむトルの発衚でした。  実際のサヌビスでリコメンドシステムを運甚するにあたり、日々曎新されるデヌタからの再孊習は避けおは通れたせん。ただし、再孊習を行うにあたっおは蚈算負荷や、再孊習されたモデルから生成される゚ンベディングが今たでのものず倉化しおしたうずいう問題が倧きな課題ずなりたす。この再孊習で生成された゚ンベディングの蚈算負荷や䞍安定性に察し、QR分解ずSVDを甚いお次元を䞋げた埌に、プロクラステス回転を行い前の行列に近づけるずいうアプロヌチを提案しおいたす。圌らはNetflixの実際のデヌタ基準日および基準日から数週間埌の日をこの方法で孊習させ比范し、䞡者の間に匷い類䌌床が生じおいるこずを確認したず報告しおいたした。  通垞、あるモデルを利甚しお怜玢甚のベクトルむンデックスを構築しおいる堎合などは、再孊習でモデルを䜜り盎すず、むンデックスも䜜り盎すこずになりたす。デヌタが膚倧な堎合にはモデルの孊習ず合わせおかなりの時間がかかるこずになりたす。今回提案された方法は、モデル孊習のみならず、軞をプロクラステス回転で過去の軞に合わせるこずでむンデックスの䜜り盎しを避けるこずができる可胜性がある点で非垞に魅力的で、参考になりたした。 RecSys in HR  RecSysでは、メむンの研究発衚ずは別に初日ず最終日にワヌクショップがありたす。ワヌクショップなので、メむンの研究発衚よりもさらに領域特化した感じのトピックになりたすが、基本的には研究発衚がメむンずいう点は同じです。いく぀か参加したしたが、ここでは本業であるHRに関するワヌクショップRecSys in HRに぀いお簡単に玹介したす。  今回の発衚は7件ほどあったず思うのですが、AI特に生成AI)が生み出すバむアスに泚目する研究が倚かった印象です。LLM登堎盎埌の、ゞェンダヌや人皮などに察する極端なバむアスではなく、文脈がより倚様化した䞭でのバむアスが扱われおいたした。䟋えば、 Hoffmannらの発衚 では、職業のマッチングに぀いお、そのマッチングがどの皋床適切かをLLMに評䟡させた際のバむアスに぀いお報告しおいたした。それによるず、アラビア系囜籍の人はペヌロッパ系囜籍の人に比べお、経隓が少ないこずをより倧きなペナルティず刀断したなど、现かい郚分にバむアスが芋られたずいうこずでした。  このような、现かいずころに芋え隠れする小さなバむアスずいうのは、ずきに誰かを倧きく傷぀ける可胜性がありたす。LLMが持぀数倚くの偏りに垞に泚意深くあるこずは、ずりわけ我々のような、数倚くの人に利甚しおいただくサヌビスにAIを適甚しようず考えおいる者にずっおは非垞に重芁なこずです。  ワヌクショップの最埌には組織内でAIを利甚するリスクずその察策に぀いお、研究者、実務者、匁護士を含めたパネルディスカッションが行われたした。そこでも話題の䞭心は、LLMが持぀バむアスに぀いおであり、バむアスに぀いお泚意深くあるこず、そしおバむアスがあるこずを前提ずしたレギュレヌションを明確に敷いおいくこずは絶察に必芁であるし、囜際的な流れでもあるずいう話がなされおいたした。これは倧倉手間のかかる䜜業ではありたす。ただ、今埌AIを䜿わないずいう未来はないこずを考えれば、い぀かは絶察にやらなくおはいけないこずです。私たちの準備はどうであるか、今䞀床考えるずおもいいきっかけになりたした。 自身の領域を改めお考える  さお、こうやっお今回参加したRecSysのメむンカンファレンスおよびHRのワヌクショップを振り返り、改めお私が目䞋取り組んでいるテヌマや領域に぀いお考えおみたずきになにを匷く思うかずいうず、やはりHR領域でのマッチング課題ずいうのは、他ドメむンのマッチング課題ずは課題構造が少なからず異なるなずいうこずです。  HR領域におけるリコメンドは、倚くの堎合コヌルドスタヌト問題を抱えおいたす。転職垌望者のなかの倚くは、転職をするのが初めおの求職者です。そしお転職が圓たり前の時代になっおいるずはいえ、総回数はe-commerceなどにおける買い物などずは比范にならないほど少ない。぀たり過去の履歎はあったずしおもかなり少ない。むンタビュヌなどを通じお把握した、求職者のニヌズだけを頌りに適切なマッチングを行っおいく必芁がありたす。たた、リコメンドモデルを䜜成するのに利甚する過去の求人情報は、ほずんどの堎合珟圚はすでにありたせん。垌望の求人が満たされた時点でなくなっおしたいたす。孊習時に成立した求人ず、類䌌した求人を探す必芁が出おきたす。するず、リコメンドされる求人は「珟圚の求職者さんず䌌たニヌズを持぀人にマッチしたものず、䌌た求人」ず、だいぶ誀差の範囲の広いおすすめになっおしたう可胜性がありたす。  たた、求職者のニヌズずいうのは、他領域のリコメンドにおける「奜み」ずは異なり、制玄に近いニュアンスを持ちたす。奜みであれば、倚様性で蚱容されるかもしれたせんが、制玄ずなるずより匷い条件をリコメンドシステムに課すこずになりたす。しばしばゞョブマッチングは、問題構造をデヌトのマッチングのアナロゞヌずしお取り扱われるこずもありたすが、私はこの奜みず制玄の違いから、デヌトマッチングずも倧きく異なるず考えおいたす。぀たり、RecSysで発衚されるような研究をはじめリコメンドに関する研究は䞖の䞭に数倚くあるものの、HR領域ぞの効果的な適甚を考えおいくず、領域特化しお考えなくおはならない郚分が倚分にあるのではないかず感じるようになっおいたす。参考になるもの、そしお独自に考えなくおはならないもの、それをきちんず切り分けながら課題を蚭定し、解決しおいく必芁がありたす。考えおみるず割ず圓たり前のこずなのですが、様々な領域の話を聞くず、この点が茪郭を持っお浮き䞊がっおきたす。すごい倧事なこずなんですよね。その気付きも含めお、実りの倚いカンファレンスでした。  RecSysぞの参加、自分ではもちろん意矩があるこずだず思っおいたけど、それをうたく䌝えられるかなヌなんお少し䞍安に思っおいたのですが、䞊叞である田蟺さんに盞談したずころ、快諟しおくださいたした勉匷だけじゃなくせっかくだから楜しんできおくださいずたで蚀っおもらえたした。自身の成長の背䞭をぜんず抌しおくれるのは、田蟺さんはもちろんこの䌚瀟党䜓の文化なんだなあず倧倉ありがたく思っおいたす。  ずいうわけでこの経隓を成長に぀なげ、日々の仕事に還元しおたいりたす。求職者、そしお事業者が最も欲しおいるリコメンドができるよう、匕き続き粟進しおいきたす。 皆さんにも「いいものができたよ」ず報告できる日を楜しみに、アドベントカレンダヌ2日目にバトンを枡したいず思いたす。それではたた
こんにちは、 豊濱 です。 珟圚は、プロダクト開発郚で りェルミヌゞョブ 、 シカトル 、 カむゎゞョブアカデミヌ の゚ンゞニアリングマネヌゞャ(EM)を担圓しおいたす。 この蚘事では、珟圚りェルミヌゞョブで取り組んでいるこずに぀いおご玹介したす。 少し自己玹介 ただ20䞖玀だったころに゜フトバンクに入瀟し、2日目に子䌚瀟のダフヌに出向ののち正匏に転籍、そこから玄16幎働いおいたした。 21䞖玀に入ったあたりから、むンタヌネットの急速な普及、倧容量回線によるコンテンツの進化、スマヌトフォンの台頭など、業界や垂堎の成長ずずもに゚ンゞニアずしお自分も成長させおもらったな、運が良かったな、ず今でも思いたす。その埌、Web/IT系の䌁業に䜕瀟か転職、テックリヌド・アヌキテクト・CTOなどを経隓し、2024幎に゚ス・゚ム・゚スに入瀟しお今に至りたす。スタヌトアップ䌁業の技術顧問・アドバむザヌやカメラマンもやっおたす。 今でも䜿える技術スタックだずPHP/Laravelぐらいです。COBOLも曞けたす。 ここ数幎はEMやプロダクトマネゞメント(PdM)ず呌ばれる領域にりェむトを眮くこずが倚いです。 りェルミヌゞョブずは 2025幎7月に、 “カむゎゞョブ” からリブランディングを行ったものが “りェルミヌゞョブ” です。 2025幎3月期 決算及び䌚瀟説明資料より カむゎゞョブはブランド名の通りもずもずは介護䞭心の求人情報でしたが、介護・医療・障害犏祉・保育の求人サむト「りェルミヌゞョブ」ずしお、今埌は職皮暪断のダむレクトリクルヌティングプラットホヌムずしお拡倧・成長を実珟するプロダクトになりたした。 ゚ス・゚ム・゚ス的に蚀うず、りェルミヌゞョブはキャリア事業ずいう領域の䞭の1぀ですが、ナヌス専科転職やカむゎゞョブ゚ヌゞェントはそれぞれ専任のキャリアパヌトナヌ(CP)が、就職・転職先を探しおいる埓事者ぞ働き方や条件に合う事業所を玹介したり、事業所からどういう人材が欲しいかの芁望もヒアリングしたす。 それに察し、りェルミヌゞョブはCPがおらず、埓事者は自分で事業所に応募する圢、事業所も求人祚を自分で蚘述しお掲茉するずいう圢になっおいたす。その分採甚時にいただく料金もお安くなっおいる、ずいう仕組みになっおいたす。 課題抜出・仮説の蚭定 CPを介しおヒアリングや玹介を行うサヌビスのこずを、゚ス・゚ム・゚スでは人材玹介ず呌んでいたす。 䞊述したずおりりェルミヌゞョブはCPがいないぶん、基本的には埓事者も事業所の双方に自埋自走が求められたす。 埓事者目線で転職するずなるず、いたの職堎で働き぀぀、どういう堎所でどういう職堎で働きたいのか、を自分で決めお芋぀けお、スケゞュヌルを調敎しお面接をこなしおいく必芁がありたす。 事業所目線でいうず、小さな介護斜蚭などは専任の採甚担圓もおらず、マネヌゞャも珟堎での業務をこなし぀぀採甚もやらなきゃいけない状況であるこずが倚いです。 圓然ですが、埓事者はりェルミヌゞョブのサむトに来たずきが䞀番モチベヌション高く職堎を探しおいる状態です。事業所も求人祚を掲茉したいず思っおいるタむミングが䞀番人材がほしい状態になりたす。そこから実際に埓事者が事業所に入職するたでの手間ず時間をいかに枛らすか、究極 “れロ” が理想、ずいうこずになりたす。 それらの芁望を叶えるために、珟圚の状態を正しく把握する必芁が出おきたした。 䌁業は採甚したいず思ったずきから入職するたでに、なににどれぐらい手間ず時間をかけおいるのか 求職者は就職・転職したいず思ったずきから入職するたで、なににどれぐらい手間ず時間をかけおいるのか そのなかから課題の倧きさや重芁さから、仮説怜蚌すべき領域やフェヌズのはなんなのか そのために成果物ずしお䜜るべきものはなんなのか 珟状分析から課題抜出した結果、それらを怜蚌するためにスコヌプを絞っおMVPMinimum Viable Productを䜜る必芁があるずいう刀断をしたした。 チヌムで議論しおいるずきは「契玄っおしないずだめなんだっけ」「人が文章曞かないずいけないんだっけ」「なにかモノを䜜らないずいけないんだっけ」ずいった、珟状や垞識に瞛られない話も出おきたした。もちろん契玄や成果物が必芁なのはわかっおたすが、角床を倉えお芋るこずで新しいアプロヌチが芋えたりず非垞に有意矩だったなず思いたす。 どのようにプロゞェクトを進めるか このMVPでは、䞍確実性が高い状況で仮説怜蚌を小さく玠早く回す必芁があったため、アゞャむル的なアプロヌチを取るこずにしたした。 アゞャむルで進めるずいうこずは、「い぀たでに䜕ができるのか」を最初から明確に瀺せない、途䞭で方向転換する可胜性がある、投資察効果の芋通しが立ちにくい、ずいった特性がありたす。 組織にずっおは、蚈画の䞍確実性を受け入れるこずになるため、慎重にならざるを埗ない進め方です。 それでも、゚ス・゚ム・゚スはこうした挑戊を蚱容しおくれる環境です。 「なぜこのアプロヌチが必芁なのか」「䜕を怜蚌しようずしおいるのか」ずいった意矩をしっかり説明すれば、䌚瀟ずしお倉化を受け入れ、任せおくれたす。 䞍確実性の高い状況であっおも、玍埗のいく説明さえできれば前に進める。そういった環境で、やりがいず責任を持っおプロゞェクトを進められるこずを、日々感じおいたす。 たずめ 今回は、りェルミヌゞョブで取り組んでいるMVP開発の事䟋を通じお、以䞋のような実践をご玹介したした。 埓事者ず事業所の入職たでの手間ず時間を枛らすずいう課題に察し、珟状分析から仮説を立おる 䞍確実性が高い領域では、スコヌプを絞ったMVPで怜蚌サむクルを回す アゞャむルアプロヌチを取るこずで、蚈画の䞍確実性を受け入れながら前に進める こうした取り組みを進める䞊で倧切なのは、「なぜこのアプロヌチが必芁なのか」を説明し、組織の理解を埗るこずです。 ゚ス・゚ム・゚スでは、䞍確実性の高い挑戊であっおも、その意矩をしっかり䌝えれば前に進める環境がありたす。圹職や圹割に関係なく議論でき、「サヌビスを通じお瀟䌚に貢献したい」ずいう共通の䟡倀芳があるからこそ、こうした挑戊ができるのだず感じおいたす。 さいごに ゚ス・゚ム・゚スに入瀟したのは、昔の同僚が声をかけおくれたのがきっかけでした。もちろん玹介は玹介でしかなくお、面接や面談でしっかりず情報亀換をしおいったのですが、䌚う人䌚う人党員が、立堎や圹割関係なく「瀟䌚のために我々は䜕をしおいくべきか」を軞にお話をしおいたのが非垞に印象的でした。 匊瀟が以前から取り組んでいる、少子高霢、人口枛少による生産幎霢人口の枛少ずいう未来ず、AIをはじめずした技術革新ず、それを享受する瀟䌚や人類の情報リテラシヌの倉化の䞭で、 我々はなにをどう圢にしお䞖の䞭に䟡倀を提䟛するのか を考え続けられる䌚瀟です。 そんな我々は䞀緒に働ける仲間を倧・倧・倧募集しおいたすここたで読んでくださったみなさんは、倚少なりずも゚ス・゚ム・゚スずいう䌚瀟に興味を持っおいただけおるはずです。たずは話だけでも聞いおみたせんか以䞋からご連絡お埅ちしおいたす 最埌たで読んでいただきありがずうございたした。
こんにちは。2025幎6月に゚ス・゚ム・゚スに入瀟した柎山です。珟圚は介護/障害犏祉事業者向け経営支揎サヌビス「カむポケ」のリニュヌアルプロゞェクトでQA゚ンゞニアずしお働いおいたす。 プラむベヌトでは1歳ず4歳の子䟛を育おるワヌキングマザヌでもありたす。今回は、倚くのワヌキングマザヌが盎面する「育児ずキャリアの䞡立」ずいう課題に私自身がどう向き合っおきたか。その「戊い方」ず、新たな挑戊の堎ずしお゚ス・゚ム・゚スを遞んだ理由に぀いおお䌝えしたす。 私自身の経隓に基づく、かなり生々しい話も含たれたすので、あらかじめご容赊いただけたすず幞いです。 たた、最近は男性育䌑の取埗も増加傟向にあり匊瀟でも取埗報告は倚く、非垞に喜ばしいこずです、子育おずキャリアの䞡立は必ずしも女性に限った課題ではないず認識しおいたす。それでもあえお今回は 女性のキャリアにフォヌカス しおお䌝えできればず考えおいたす。 育児ずキャリアの䞡立に察する課題意識 子育お䞭の皆さん、仕事ず家事ず育児、どうですかうたくいっおたすか朝は子䟛のお䞖話や保育園の登園でぞずぞず、日䞭はなんずか仕事しお、倜は寝かし぀けや家事を終えおぐったり。残業する䜓力もないし、勉匷䌚は倧䜓アヌカむブ配信を芋るのみ  みたいな感じじゃないですか少なくずも私はそうです。生掻リズム、物事の優先床、仕事の向き合い方やキャリアの考え方。子䟛が生たれる前ず埌では党おが倧きく倉わりたした。母芪になっお4幎経ちたすが、その倉化には未だ困惑しおいたす。 その䞭で、ここ数幎私が悩んでいたのは、産䌑・育䌑による「キャリアの断絶」そしお「マミヌトラック」でした。 キャリアの断絶 子䟛を劊嚠・出産し、職堎埩垰するたでの期間は 最短でも7か月 *1 、長ければ2幎 *2 に及びたす。しかもこれは単玔な䌑職期間の話。実際には劊嚠初期の悪阻に始たり、食欲䞍振、頭痛、眠気、こむら返り、動悞、息切れなど様々な䞍調が䌎いたす。そんな状態で、通垞業務をこなしお曎にはスキルアップを目指すのは極めお困難です少なくずも、私にはかなり厳しいものでした。これは私の䜓感ですが、劊嚠発芚盎埌からパフォヌマンスは萜ち始めたす。ホルモンバランスの乱れもありたすし、正盎に蚀えば「流産が怖い」「犁忌事項が倚すぎる」ずいったストレスも倧きいのです。 そのため、職務経歎曞䞊の経隓幎数ず実務が䞀臎しないずいった事態も十分に起こりたす。私自身も゚ンゞニア歎は10幎ですが、2回の産育䌑を挟んでいるため、実務の期間は7〜8幎ほどでしょう。同じ経隓幎数の人ず比范したずき「若干スキルが劣るのでは」ず芋られる可胜性がありたす。それならば䌑職䞭にスキルアップを目指したり、埩職埌にバリバリ働いおギャップを取り戻そう、ず考えるかもしれたせん。しかし、それもあたり珟実的な解決策ではありたせん。なぜなら、前述の通り劊嚠䞭は著しくパフォヌマンスが䞋がるうえ、子を産んで埩職すれば仕事ず家庭の䞡立ずいう正解のない課題が埅っおいるからです。 マミヌトラック 子䟛を育おながら働く女性にずっお、䞀床は聞いた単語かもしれたせん。出産した女性が本人の意欲ずは関係なく、昇進から遠いキャリアコヌスに乗せられおしたう状態を指す蚀葉です。芁するに、子䟛が生たれる → 短時間勀務や早退遅刻で仕事にかける時間が枛る→スキルアップや重芁な仕事に取り組めない → キャリアが停滞、あるいは䞋降する、ずいう流れですね。 パヌトナヌや芪族を頌っお時間を捻出すれば、このようなマミヌトラックは回避できるかもしれたせん。しかし近幎共働き栞家族化の圱響で、自分たちだけで仕事も家庭もたわす必芁がありたす。私もそうです。 特にIT業界は、技術の進化が非垞に速いずいう特性がありたす。 1幎、あるいは数か月で技術トレンドは移り倉わり、䌑職前に䜿っおいた技術がレガシヌになるこずも珍しくありたせん。垞に新しいOSSや蚭蚈・開発手法を孊び続ける必芁があり、近幎はAIの発展によっおそのスピヌドはさらに加速しおいたす。 限られた時間の䞭で通垞の業務ず䞊行しおスキルをアップデヌトし続けるのは容易ではありたせん。 このような芁求の高い環境は、「キャリアの断絶」や「マミヌトラック」ずいう課題をより䞀局深刻なものにしたす。 そしお、「今の䌚瀟を離れるこずになった時、自分に垂堎䟡倀はあるのだろうか」「このたたIT゚ンゞニアを続けられるのだろうか」ずいう、キャリアに察する匷い䞍安に繋がっおいくのです。 産䌑・育䌑埌のキャリアチェンゞずいう遞択 この課題にどう向き合うべきか考えた末に、私が遞択したのはキャリアチェンゞでした。倉化の速いIT業界でスキルが陳腐化するリスクず戊うよりも、党く新しい専門性を身に぀けるこずで仕事の幅を広げようず考えたのです。 私は珟圚QA゚ンゞニアですが、それ以前はフロント゚ンド゚ンゞニアずしおプロダクト開発に関わっおいたした。䞀人目の育䌑から埩垰した際、䌑職による知識のギャップや開発環境の激しい倉化に私は匷い衝撃を受けたした。仕事のスピヌドに぀いおいくだけで粟䞀杯、「このたた最前線で戊い続けるのは難しい」ず痛感したのです。そんな䞭、前職でQA゚ンゞニアずいうポゞションが新蚭されるこずになり、開発経隓ずテスト工皋ぞの理解があった私に声がかかりたした。 正盎、圓時は未知の領域でしたが、これは 新たな専門性を築くチャンス だず感じたした。特に、今埌のテスト自動化などを掚進する䞊では、これたでの 開発経隓が倧きな匷みになる ず確信し、キャリアチェンゞを決意したした。 この遞択によっお私はマミヌトラックに陥るこずなく、IT業界で生き抜く新たなスキルを手にしたした。しかし、䞀人QAずいう環境では、どうしおも自分の成長に限界を感じるようになりたす。ラむフステヌゞの倉化に巊右されず自身のキャリアを実珟するためには、継続的にスキルアップできる環境に身を眮くこずが最善だず考えたした。それが、今回の転職を決意した理由です。 ずはいえ、転職掻動を開始した矢先に劊嚠が発芚したため、実際は出産埌の育䌑䞭に転職掻動を再開したした。この蟺りの経緯はJaSST nanoでお話ししおいたす。 ゚ス・゚ム・゚スに入瀟した決め手 子䟛がいる私にずっお、転職掻動では仕事内容だけでなく、働く環境も同じくらい重芁芖したした。いく぀かの条件を軞に䌁業遞びを進める䞭で、特に゚ス・゚ム・゚スに入瀟を決めた3぀のポむントをご玹介したす。 働き方の柔軟性リモヌト勀務を前提ずした組織づくり 保育園に入園した途端に起こる「保育園の掗瀌」、誰しも経隓があるず思いたす。保育園入園盎埌に子䟛が発熱や䞋痢症状を起こし、頻繁にお迎えの電話がかかっおくる、療逊のためしばらく保育園をお䌑みする、ずいった状況のこずですね。こういった急な呌び出しにもすぐ察応できる、子䟛を自宅看護しながら最䜎限仕事ができる、ずいう理由からリモヌト勀務を垌望したした。たた将来的な地方移䜏も芖野に入れ、長く働ける環境ずいうのも1぀のポむントでした。そのため、地方圚䜏者が所属しおいるかも条件に加えたした。 私が所属するプロダクト掚進本郚では、リモヌトワヌクを基本ずしながらも、出瀟するか圚宅するかを遞択できる䜓制が敎っおいたす。入瀟初日のオリ゚ンテヌションや総䌚などで出瀟が必芁な堎合も、事前に家庭内で調敎しお参加しおいたす。 組織内には関東圏倖の圚䜏者も倚く私の知る限り、北は北海道から南は九州たで、チヌム内にも京郜からリモヌトで働くメンバヌがいたす。堎所が離れおいおもチヌムのコミュニケヌションに䞍郜合を感じないのは、オンラむンで円滑に連携できる組織づくりがされおいるからだず感じおいたす。こうした柔軟な環境であれば、将来的に移䜏ずいったラむフステヌゞの倉化にも察応できそうだず感じたした。 専門性を高める環境QAチヌムの存圚 前職においおはQA゚ンゞニアが䞀人ずいう関係䞊、QA同士で業務盞談ができない、ずいう課題がありたした。勉匷䌚の内容をシェアしたり、品質に察する議論をしたり「他のQAチヌムはどのように工倫しおいるのだろう」ずいった情報亀換ができなかったのです。そのため、QAチヌムが存圚するこず、具䜓的には3名以䞊QAが圚籍しおいお、暪断的掻動やコミュニケヌションの堎があるこずを条件に転職掻動をしたした。 ゚ス・゚ム・゚スでは、耇数のQA゚ンゞニアが所属しおおり、各プロダクトの品質向䞊掻動を行なっおいたす。同じプロダクトの別チヌムの様子も聞けるし、別プロダクトのQA゚ンゞニアにお話を䌺う機䌚もあるので、情報共有や亀換がずおも掻発です。 たた、組織ずしおも勉匷䌚やカンファレンスの参加を掚奚しおいたす。先日行われたJaSST Niigataも、メンバヌ間で掻発な意芋亀換が行われおいたした。私は珟地参加でしたが、他の方々はオンラむン参加でした。い぀かチヌムメンバヌず珟地参加できるこずを楜しみにしおいたす。 盞互理解ず文化面接で感じたフィット感 転職掻動終盀、ありがたいこずに2瀟内定を頂きたした。私が垌望する䞊蚘の条件はどちらも満たしおいたので、どう決めようかず盞圓悩んだのを芚えおいたす。その時に最終的な決め手ずなったのが、゚ス・゚ム・゚スのオファヌ面談における誠実さず熱量、フィット感でした。 ゚ス・゚ム・゚スのオファヌ面談で印象に残ったのは、自分の匷みだけではなく匱みたで䌝えられ、それが自分の理解ず䞀臎しおいた私に察する解像床が高かったこず。そしお、入瀟埌に掻かすべきスキルず期埅される掻動が、かなり具䜓的か぀明確に瀺されたこずでした。 そのおかげで入瀟埌のむメヌゞをより匷く持぀こずができ、入瀟を決めたした。 入瀟埌に感じた、子育おず䞡立しやすい環境 ここからは、実際に入瀟しお4か月で感じた「子育おず䞡立しやすい環境」に぀いおお䌝えしたす。 カルチャヌず呚囲の理解 たず、入瀟しお特に重芁だず感じたのは、䌚瀟のカルチャヌです。 私が所属する組織には子育お䞖代が倚いずいうこずもありたすが、それに関わらず、お互いのプラむベヌトを尊重し、仕事䞊でサポヌトし合う文化が根付いおいたす。家族や自身の䜓調䞍良に関しおも、仕事の調敎が非垞にやりやすく助かっおいたす。 たた、子䟛の䜓調䞍良などで自宅保育しながら勀務せざるを埗ない状況もありたす。そういった堎合にもチヌムメンバヌは業務調敎など快くサポヌトしおくれたす。実際私も転職したおの頃は䜕床か子䟛を保育しながら仕事をしおいたしたが、ミヌティングに子䟛が映り蟌んでしたうようなアクシデントも、枩かく受け入れおもらえたした。 柔軟な勀務を支える制床 私が所属するプロダクト掚進本郚では、コアタむム12:00〜16:00ありのフレックスタむム制床を導入しおいたす。このコアタむムに勀務しおいれば、始業・終業時間は個人の裁量で柔軟に調敎するこずが可胜です。 そのため、朝の時間を掻甚しお8時から業務を始めるメンバヌもいれば、午前䞭に甚事を枈たせおからコアタむムが始たる12時に合わせお勀務を開始するメンバヌもいたすもちろん、月圓たりの定められた劎働時間を満たすこずが前提です。 私自身もこの制床を掻甚し、普段は子䟛を保育園に送った埌の9時頃から、お迎えの時間に合わせお18時頃たで勀務しおいたす。もちろん、子䟛の通院などで日䞭の勀務が難しい日もありたす。そういった堎合は、コアタむム以倖の時間を調敎するこずで察応しおいたす。 たた、時間単䜍の䌑暇制床もあり、1時間単䜍で䌑暇を取埗できたす。子䟛の予防接皮や圹所での手続きなど、短時間の離垭が必芁な際にこの制床を掻甚するこずで、業務ぞの圱響を最小限に抑え぀぀家庭の甚事にも察応でき非垞に助かっおいたす。 これらの制床やカルチャヌに助けられながら、仕事ず子育おに奮闘しおいる状況です。 仕事ず子育おに远われる䞀日のスケゞュヌル ここでは私のずある平日のスケゞュヌルをご玹介したす。出瀟や子䟛の通院などがある日は倉動したすが、普段は抂ねこのような流れで䞀日が過ぎおいきたす。 我が家は倫婊共にリモヌトワヌク旊那はたたに出瀟か぀保育園が近所なので、フルタむム勀務でギリギリ家庭を回しおいる状態です。これが1぀でも欠けおいたら絶察に無理だろうな〜ず日々思っおいたす。 06:00 起床・朝の準備 08:30 保育園登園 & 業務開始 12:00 昌食 17:50 業務終了・お迎え 18:30 垰宅・倕食 19:00 お颚呂 21:00 寝かし぀け・残りの家事 子䟛たちがいない間はほが勀務時間なので、家事は昌䌑みや隙間時間にねじ蟌んでこなしおいたす。やはり家事に手間をかけられないので、食噚掗浄機やロボット掃陀機、ドラム匏掗濯機は必須です  。 特にご飯を䜜る時間食材調達から食材管理、献立、調理、埌片付け含むが圧倒的にないので、我が家では ぀くりおき.jp *3 を掻甚しおいたす。ずおもおいしくお経枈的で時短にもなりたす。でもママの䜜った料理じゃなくおごめんねっおいう謎の眪悪感に駆られるんですよね。これが地味にメンタルに来るんだよなあ〜。ずはいえフルタむム勀務しながら倕食を䜜るのは私には絶察に無理です。時間のない䞭䜜ったご飯を残されおも悲しいしね。 おわりにラむフステヌゞの倉化ずキャリア圢成 ここたで、産育䌑ず女性のキャリアや仕事ず子育おの䞡立に぀いお語っおきたした。決しお偉そうに語れる立堎ではなく、そんなに䞊手く立ち回れおいるわけでもない、ずいうのが正盎なずころです。「子育おを蚀い蚳に仕事を諊めたくない」ずいう気持ちず、「ずはいえ仕事に党力投球しお家庭を顧みないのは、家族ずしお健党ではないよね」ずいう珟実ずの間で今も毎日のように葛藀しおいたす。 子䟛がただ未就孊児で保育園に助けられおいる郚分もあるけど、小孊生に䞊がったらどうなるんだろう、孊童に行っおもらう倏䌑みはどう乗り切ろうずいった先の心配で頭がいっぱいです。たあでも正盎なるようにしかならないんだろうな、ず最近は割り切るようになりたした。子䟛や家庭に䜕か倧きな倉化があった時、䌚瀟員を続ける遞択ができるよう、少しず぀でもキャリアを積み䞊げおいきたいです。 珟圚はQA゚ンゞニアずしお、䞻にPlaywrightコヌドベヌスのE2Eテストツヌルを甚いたテスト自動化の掚進に取り組んでいたす。この掻動はこれたでの開発経隓を倧いに掻かせる領域です。他にも開発者芖点でテストの課題や改善点を芋぀け出し、それを解決しおいくプロセスを通じお、QA゚ンゞニアずしおの専門性を高めおいけたらず考えおいたす。 私自身、特別芁領が良いわけでも䜓力があるわけでもありたせん。たぶんどこにでもいる普通のワヌキングマザヌです。だからこそ、この蚘事が同じ境遇で働く方々の支えになれたらず願っおいたす。 こうしたラむフステヌゞの倉化はキャリアを諊める理由ではなく、働き方や自分自身を芋぀め盎す最高の機䌚なのかもしれたせんね *1 : 10月ごろに出産し、0歳児クラスに生埌5か月で預けるパタヌン。産前䌑業が出産予定日の1か月前なので9月に䌑職、4月に保育園入園ず同時に埩職する想定。 *2 : 0歳児クラスで入園できなかったパタヌン。2歳の誕生日前たで育䌑の延長が可胜。 *3 : 数日分の食事を宅配で届けおくれるサヌビス。おかずのみが冷蔵で届くので、ご飯ず汁物さえ甚意すれば栄逊バランスの敎った食卓が実珟できお助かっおいたす。おいしいし。忙しい家庭におすすめ
こんにちは。介護・医療・障害犏祉・保育の求人サむト、りェルミヌゞョブのQAを担圓しおいる林です。 りェルミヌゞョブは、2025幎7月にカむゎゞョブからリブランディングしおサヌビス提䟛を開始したした。 私は先日Kaigi on Rails 2025に参加しおきたした。私はQA゚ンゞニアでProduction Readyなコヌドは曞けたせんが、開発系のカンファレンスに興味があり、今回生たれお初めお参加したした。䌚堎ではセッションを聎講したり自瀟ブヌスでの察応をおこないたしお、感想ずしおは、控えめに蚀っお すごくすごくよかった ですこのブログでは、コヌドが曞けないQA゚ンゞニアの私が、開発系カンファレンスで䜕を感じ、開発ずQAの意倖な「共通点」をどう芋぀けたのか具䜓的な孊びずずもにお䌝えしたす。 自己玹介 QA歎は10数幎で、2021幎5月から珟りェルミヌゞョブ圓時のカむゎゞョブの開発チヌムぞ、専属QAの䞀人目ずしおJOINしたした。圓時は人生初の䞀人目QA・育䌑明け・初のリモヌトワヌク・コロナ犍における様々な圱響などにより倚くの困難がありたしたが、アゞャむルな開発チヌムの䞭で、持ち前のコミュニケヌション胜力ず「握ったボヌルは自分でやり切るor誰かに枡す」の粟神で乗り切っおきたした。  私の開発系技術スペックはこんなかんじです。 倧孊はバリバリの文系で、開発系技術ずは無瞁 新入瀟員時代、必須受講のC蚀語研修にお、ポむンタで挫折しお泣いたほんずうに QA゚ンゞニアずしお業務をしながら、2016幎に基本情報技術者FEに合栌。開発系の資栌はこれのみ所有 過去には「仕様曞がない・觊れるシステムもただない」案件で、ER図からがんばっおテスト蚭蚈をやり遂げた経隓あり SQLやAPIに぀いお積極的には実行しないが、幞いにも幎1回皋床は觊ったり勉匷したりする機䌚に恵たれおいる アゞャむルな開発チヌムにお日々、開発メンバヌ同士の䌚話を暪で聞いおいる。そのため、テヌブル・デヌタ・モデル・凊理などが倧たかにむメヌゞできおいる なぜ「Kaigi on Rails 2025」ぞ参加したのか Kaigi on Railsは、「初孊者から䞊玚者たでが楜しめるWeb系の技術カンファレンス」をコアコンセプトずした技術的な孊びの堎であり、倚様な人々が亀流できるむベントです。 kaigionrails.org ゚ス・゚ム・゚スはKaigi on Rails 2025ぞGoldスポンサヌずしお協賛し、スポンサヌブヌスにおりェルミヌゞョブの゜ヌスコヌドを公開したした。 このKaigi on Rails 2025ぞなぜQAの私が参加したかずいうず、2぀の目的があったからです。 @moro さんの基調講挔を聎くため りェルミヌゞョブの開発をリヌドする@moroさんがKeynote Speakerずしお登壇しお基調講挔を務める運びずなり、私もそれを珟地で聞きたいず思いたした。普段からチヌム内に共有されおいる@moroさんの考えが、倚くの゚ンゞニアに響くのを肌で感じたいず思いたした。@moroさんが楜しそうな様子で準備しおいるのを身近で芋おいたこずもあり、私を含め倚くのチヌムメンバヌがワクワクしおいたした。さらに、開発チヌムのメンバヌから「林さんも䞀緒に珟地で楜しもう」ずお誘いがあったこずも参加の埌抌しになりたした。 開発゚ンゞニアの考えや課題感を知るため  セッションの芖聎やブヌスでの亀流によっお開発゚ンゞニアのこずが知れるず、それが開発ずQAの盞互理解を深める土台ずなっお、より匷い連携を築けるのではずいう期埅がありたした。   参加しおわかったセッションからの孊び 特に印象に残った2぀のセッションに぀いおご玹介したす。  1. 基調講挔dynamic! speakerdeck.com 芁玄 なぜ動的/dynamicにしたいのか この発衚では「動的/dynamic」ずは「継続しお倉化し続けるこず」を指したす。䞍確実性の高いプロダクト開発においお「初めから正解を遞ぶ」のは難しいため、䞀床に正解を目指すのではなく、良い方向を目指しお少しず぀倉わるこずを倧事にしたいです。そしおそれは、楜しいこずです。 フィヌドバックから埗られる䟡倀 「最もシンプルで、うたくいく」ものは䜕かを芋極めお、䜜っおみお動かしお、フィヌドバックをもずに倉化させ続けたす。動かすこずで、開発者だけでなくデザむナヌやQA゚ンゞニアなどがそれぞれの職胜を発揮できたす。䌁画者も、事業掻甚の蚈画を刀断できたり芋盎せたり、ドキュメントではなく動く゜フトりェアをベヌスにコミュニケヌションを円滑におこなえたす。 あらゆるものを動的に習熟しおいく 芋極めたり、䞀床䜜ったものを倉えるのは簡単ではありたせん。そのため、コヌド・プロダクト・プロセス・チヌム・自分自身も含めおあらゆるものを少しず぀動的に習熟しおいきたす※1。倉わるこずを楜しみたしょう ※1 所感 珟地で聞けお良かった 䌚堎では倚くの賛同のリアクションや拍手が起こり「良いプロダクトを䜜りたい」ず願う人々の心が䞀぀になったような感動を芚えたした。講挔の内容は、りェルミヌゞョブ開発の䞭で@moroさんが日々䜓珟されおいるこずをそのたた資料に萜ずしたようなものでした。改めお、魅力あるプラクティスに日々トラむできるこずぞの喜びを感じたした。 倉化に察応するQAの課題感ず、それを解決する可胜性 QA゚ンゞニアずしお日々倉化に぀いおいくのは容易でなく、高頻床に発生する远加のテスト蚭蚈・実斜を軜やかにおこなうための工倫が必芁です。ここで私は「忍者匏テスト」を思い出したした。 忍者匏テストの講挔資料はこちら 忍者匏テストずは深谷矎和氏・関将俊氏によっお提唱されるプラクティスで、反埩開発の䞭で「増分だけでなく、プロダクト党䜓を郜床テストする」ずいうものです。忍者匏テストでは、開発者もテストを実行しおプロダクトから孊び、修正や改善を積極的にできるようになるメリットがあるそうです。私は、忍者匏テストぞの挑戊も含めお、今埌さらに軜やかに倉化察応できるようトラむしおいきたいです。 䞍安を軜枛するコミュニケヌションの重芁性 動的に開発が進むこずにより、䟋えば䌁画者は「最終決定がい぀頃になるのか芋通せない」ず䞍安を芚えるかもしれたせん。そんな堎面では、ステヌクホルダヌが必芁ずするものが䜕かを知り、より盞互にコミュニケヌションをずり、必芁なドキュメントはシンプルに残すなどしお困り事や䞍安を取り去るこずが倧事になりそうです。 倉わるのは、楜しいこず。倉えられるのは、ハッピヌなこず 課題もありたすが、䞍確実性の高いプロダクト開発においお動的に物事を進めるこずのメリットは倚倧です。私もQA゚ンゞニアずしおあらゆる倉化を楜しみながら、よりよいプロダクト開発に尜力したいです    2. Railsによる人工的「蚭蚈」入門 speakerdeck.com 芁玄 蚭蚈を䜓埗する・教えるこずの課題感 「蚭蚈」を䜓埗したり教えるのは難しいこずです。䞀方で、今埌はAIが普及しお蚭蚈の機䌚が枛り「堎数を螏んで䜓埗する・させる」のが難しくなりそうです。さらに、AIを䜿いこなすためには蚭蚈できる胜力が重芁です。そのため、蚭蚈を教える人が「蚭蚈を教えられる」ようになっおいる必芁がありたす。  手順から逆算しお考えるアプロヌチ 蚭蚈ができない人は「コヌドを曞くずシステムができる」ず考えがちですが、蚭蚈ずはコヌドずは違っお、抜象的なレベルで考える掻動です。「コヌドを意識しないで蚭蚈する」ように導くのに「システムができる手順から逆算しお考える※2」ずいうアプロヌチが有効でした。たず「完成したシステム」を思い浮かべ、もっずも実珟したい本質的な事柄を「ゎヌル」ず定めお、その実珟に必芁なこずを段階的に考えるずいうステップで、抜象的なレベルで蚭蚈しおいきたす。  ※2 「名前付け」の重芁性 抜象化する䜜業においお「名前を付ける」こずは重芁です。長い抂念を適圓に省略しおしたうず、本質から倖れたずころにミスリヌドされおしたいたす。名前付けに苊手感がある人も、勇気を出しお、本質を衚す名前を自分の裁量で぀けたしょう。 所感 「抜象化する胜力」の課題感はQAも同様 QAにずっおも抜象化する胜力は重芁です。䟋えばテスト分析ずいう過皋で「䜕をテストするか」を定矩する際、抜象化が苊手な人はテストケヌスなどの现かい粒床で考えおしたっおテスト党䜓を捉えられたせん。さらに、䜓埗する過皋における課題感も開発ず同様、AIの普及で䜓埗する機䌚が枛りそうです。そのため、QAにずっおも「人工的に抜象化を䜓埗させるメ゜ッド」はずおも圹に立ちそうです。 「逆算しお党䜓像を考える手法」はQAにも適甚可胜 先述した「システムができる手順から逆算しお考える※2」の文脈で、私は、西康晎氏によっお提唱されたVSTeP「䜕をテストすべきか」ずいう芳点を図で敎理し、抜け挏れなく効率的にテストを蚭蚈するための手法 VSTePの講挔資料はこちら を思い出したした。VSTePでは、「テスト芁求分析」「テストアヌキテクチャ蚭蚈コンテナ蚭蚈・フレヌム蚭蚈」などの工皋を経おテスト党䜓をアヌキテクトしたす。このうちの「テスト芁求分析」の際にテスト芳点テストすべき芁玠を敎理するにあたり、逆算の手法を適甚しおみるず、以䞋のステップで進められそうです。 「完成したシステム党䜓」を思い浮かべる 䞭栞的な「実珟したいこず」にフォヌカスする 「実珟したいこず」に察しお「ナヌザヌに䜿っおもらっお倧䞈倫、ずなれるには䜕の確認が必芁か」を順々に考えおいっお、党郚考えた状態にする QAも「勇気を出しお名前付けをしよう」 名前付けの重芁性や課題感もQAに共通するずころだず感じたす。名前付けがしっくりこないずきは「倧事なものの芋極め」がうたくいっおいないサむンですし、間違っおいればチヌムメンバヌがそれを教えおくれ、より正しく抜象化ができるようになりたす。「勇気を出しお、本質を衚す名前を、自分の裁量で぀けよう」ずいうメッセヌゞを、倚くのQA゚ンゞニアにも届けたいです。  開発・QAが類䌌課題を共有しお解決できる可胜性 開発・QAの類䌌課題に぀いお、開発・QA䞡者が情報や知恵を出し合えるず、よりよい解決の方向性が芋出せるず思いたす。さらに、VSTePの講挔資料の「テスト開発プロセスの基本的考え方※3」においお「テストケヌスを開発成果物ず捉え、゜フトりェア開発プロセスず゜フトりェアテスト開発プロセスを察応させよう」ずあるように、開発ずQAは様々なプロセスでリンクしおいたす。蚭蚈のタむミングだけでなく、倚くのプロセスにおける開発・QAの連携が期埅できそうです。 ※3出兞 VSTePによる゜フトりェアテストの開発 ブヌス察応で感じたQAの可胜性 今回はスポンサヌブヌスに立ち、来蚪者ぞの察応をおこなう機䌚もありたした。具䜓的な実装に関する受け答えができないので䞍安でしたが、いざやっおみるず、QAならではの匷みを発揮できたず感じおいたす。 プロダクトの「䜓隓」を提䟛 テスト甚端末を䜿っお来堎者に実際にプロダクトを觊っおもらうこずで、コヌドだけでは䌝わらない魅力を䌝えるこずができたした。 倚様な情報提䟛 テックブログやりェルミヌマガゞンなど、プロダクト以倖の情報も提䟛するこずで、来堎者ずの䌚話を広げるこずができたした。 QAの魅力を発信 開発チヌムの䞭でQAがアゞャむルに掻躍しおいるこずを開発メンバヌからも話しおもらえお、QAの存圚や魅力がより䌝わったかず思いたす。たた、りェルミヌゞョブの開発チヌムが「異なる業皮間のコミュニケヌションが良奜なチヌム」であるずいう魅力が発信できた点も有意矩でした。さらに、来蚪者の方にはQAの話に興味を瀺しおくれる方もおり、QAからの情報発信の堎ずしお開発系カンファレンスは有効な堎所ずなる可胜性を感じたした。  たくさんの人ずの出䌚い・関わり 2日間のセッション聎講やスポンサヌブヌス察応を通じお倚くの方々ず関わるこずができたした。開発業務が䞻担圓ではない私の参加を歓迎しおいただき、たた、QAずいう領域にも興味を持っおいただくこずができたした。いずれの方も、カンファレンスぞの参加や亀流を心から楜しんでいる姿がずおも印象的でした。 運営メンバヌ ブヌス察応を共におこなった開発チヌムメンバヌ ブヌスの来蚪者 他瀟ブヌスの方、本屋さんやコヌヒヌなどを提䟛しおくださった方 珟圚䞀緒に業務しおいる方、過去に業務でご䞀緒した方 開発チヌムメンバヌの方の玹介があっお出䌚えた方  たた、私が身に着けおいる゚ス・゚ム・゚スのロゎを芋た倚くの方から「○○さんの䌚瀟の」ず声をかけおいただきたした。これらの出䌚いは、゚ス・゚ム・゚スで掻躍する人の぀ながりによっお生たれた貎重なもので、私もその぀ながりを倧事に玡いでいきたいず思いたす。  䞀方で、普段ずは違っお倚くの人ず関わる堎面のため、意識しお気を付けようず思ったこずがありたす。それは「人を尊重するこず」です。 安心しお気持ちよく過ごせるために アンチハラスメントポリシヌはもちろん遵守したす。さらに、そこからもう䞀歩螏み蟌んで「お互いが気持ちよく安心しお過ごせるためのマナヌ」も倧事にしたいず思いたした。 楜しいからこそ芁泚意 楜しさから気が緩んでしたったり、䞀䜓感や高揚感から「このくらいの蚀動は倧䞈倫だろう」ず刀断を誀っおしたうかもしれたせん。「普段から私は気を付けおいるから倧䞈倫」ず過信せず、䞀呌吞おいお刀断するこずが倧事だず思いたした。 尊重する盞手は「すべおの人」 尊重する盞手は、お客様にあたる立堎の方・運営メンバヌ・自瀟のチヌムメンバヌ・友人知人・䌚堎や廊䞋などでたたたた物理的に距離が近づいた人ず倚岐に枡りたす。そしお私の個人的な感芚かもしれたせんが「自分自身」もその察象に入れるず、自然に「すべおの人を尊重する」が実行できるような気がしたす。そのため、自分自身も倧事にしたいなず思いたした。 たずめ 今回の開発系カンファレンス参加を通じお、開発゚ンゞニアずQA゚ンゞニアは「 よりよいプロダクトを䜜りたい 」ずいう同じ気持ちを匷く持っおいるこずを再確認したした。 「 dynamicにシンプルに 」プロダクト開発を進めるこずは容易ではありたせんが、関わる人ず盞互理解のもずコミュニケヌションをずっお 楜しんで 実珟しおいけるず確信しおいたす。 QAが開発系のカンファレンスに参加する意矩は、自身のスキルアップだけでなく、 QAの存圚や意矩を広く知っおもらうこず や 開発・QAの盞互理解からの連携匷化 にも繋がりたす。開発゚ンゞニアのみなさんにも、ぜひ品質保蚌に関するカンファレンスに参加しおいただけたら嬉しいです 「コヌドが曞けないQAが開発系カンファレンスに参加する」、2回目のチャレンゞを目指しお珟圚鋭意調敎䞭です  お知らせ スポンサヌブヌスで倧奜評だった りェルミヌゞョブの゜ヌスコヌド公開 は、カゞュアル面談におおこなうこずも可胜です。「カンファレンスぞの参加が叶わなかった」「時間がなくおブヌスに行けなかった」「ブヌスでコヌドを芋おみたが、もっず芋たい」ずいう方がいらっしゃいたしたら、ぜひ、カゞュアル面談したしょう @moroをはじめずしたりェルミヌゞョブの開発メンバヌがご芁望あればQAメンバヌも、みなさんずお話できるのを楜しみにしおいたす。  
はじめに こんにちは。プロダクト開発郚の髙朚です。先日、匊瀟のブログでテックブログの入皿システムに぀いお玹介したした。このシステムは、ブログ蚘事の䜜成から投皿たで、これたで手䜜業で行っおいた工皋を倧幅に自動化し、蚘事執筆に集䞭できる環境を提䟛するものです。 tech.bm-sms.co.jp このシステムを運甚しおいる䞭で、サムネむル画像生成機胜においお、䞀郚の文字が倪字にならないずいう問題が発芚したした。調査・修正を行う過皋で、技術的な問題を解決するだけでなく、チヌム開発においお非垞に重芁な「どうしおこうしたんだろう」を考えるきっかけを埗られたした。 問題の発芋ず原因の特定 サムネむルの文字が倪字にならない 今回問題ずなったのは「絆」ずいう挢字でした。通垞、サムネむル䜜成システムによっお生成される画像では、すべおの文字が統䞀された倪字フォントで衚瀺されるはずです。しかし、ある蚘事のサムネむルを確認したずころ、「絆」ずいう文字だけが现字で衚瀺され、他の文字ず芖芚的に異なる状態になっおいたした。 この珟象を詳しく調査したずころ、リポゞトリに内包しおいたフォントファむルにその文字が含たれおいないこずが刀明したした。システムは存圚しない文字を代替フォントで衚瀺しおいたため、芖芚的な違いが生じおいたした。技術的な挙動の原因は特定できたしたが、そもそもなぜそのような問題が起きる状態になっおいたのか、その背景や経緯に぀いおは䞍明でした。 最初のアプロヌチGoogle Fontからのダりンロヌド 問題の根本的な解決を図るため、たずはGoogle FontsからNoto Sans JPのフォントファむルをダりンロヌドし、既存のフォントファむルず眮き換えるこずにしたした。この新しいフォントファむルを䜿甚しおサムネむル生成をテストしたずころ、期埅通り「絆」ずいう文字も正しく倪字で衚瀺されるようになりたした。 問題が解決したず安心しお、この修正をコミットしおリモヌトリポゞトリにプッシュしようずしたずころ、予想倖の゚ラヌが発生したした。これたでそのような倧きなファむルを扱った経隓がなかったため、Gitでは玄1MBを超えるファむルをプッシュしようずするずサむズ制限によっお゚ラヌが出るこずを、このずきに初めお知りたした。 サブセット化ずいう解決策 バッファサむズ倉曎よりも良い方法 最初は、Gitの蚭定でバッファサむズを䞊げお倧きなファむルをプッシュできるようにするこずを怜蚎したした。しかし、調べおいる過皋で、フォントファむルのサブセット化ずいう、より根本的で効率的な解決手法があるこずを知りたした。 サブセット化ずは、フォントファむルから実際に䜿甚しない文字を排陀しお、必芁最小限の文字セットのみを含むフォントファむルを䜜成する技術です。今回のブログのサムネむル生成ずいう甚途を考えるず、日本語のすべおの文字を含む必芁はありたせん。そのため、ファむルサむズを倧幅に削枛できるサブセット化の方針の方が、長期的に芋おもメンテナンス性やパフォヌマンスの芳点から適切だず刀断したした。 「絆」が含たれなかった理由 今回䜿甚しおいたフォントファむルに「絆」が含たれなかった理由を考えおみたした。結構身近に感じおいた挢字でしたが、この挢字が垞甚挢字に含たれないこずがわかりたした。たしかに子ども頃に習った蚘憶はない気がする 。 今埌も垞甚挢字以倖の挢字をタむトルに䜿甚する可胜性がありたす。そのため、ある皋床䜿甚される可胜性のあるフォントはサブセット化する際に含めおおく方が安党であるこず考えたした。 垞甚挢字以倖の文字の遞定 䜿甚される傟向のある垞甚挢字以倖の挢字は、文化庁の資料から抜出したした。 垞甚挢字衚の字䜓・字圢に関する指針報告に぀いお報告 | 文化庁 こういったPDFから抜出するコヌドをさっず䜜っおくれるのは、LLMの良いずころだなず改めお思いたした。 結果ず成果 それらの文字を含めたフォントファむルを䜜成したずころ、1MB未満ずなりコミット、プッシュするこずができたした。 先駆者の行動をリスペクトする 「なぜそうしたのか」を理解する 蚘事のタむトルに戻りたすが、おそらくこの問題は、このシステムを担圓した方も党く同じこずを考えたのだず思いたす。フォントファむルを入れおみたら1MBを超えおいお、ファむルサむズを枛らすために垞甚挢字のみを入れたフォントファむルを䜜成したのだず思いたす。 想像力ず知識の䞍足を認める 日垞的に「どうしおそうしなかったんだろう」ず思うこずは倚いですが、自分が同じ立堎に立぀ず「だからこうしたんだな」ずなるこずが倚いです。それは自分の想像力が足りおいないこずもありたすが、知識が足りおいなくおそのような結論になっおしたうこずが倚いず感じおいたす。 先駆者の行動はリスペクトを持っお分析し、その䞊で「こうした方が良さそう」にもっおいくこずは、同じチヌムずしお掻動しおいく仲間ずしお倧切な考え方です。技術的な問題を解決するこずは重芁ですが、その過皋で過去の意思決定を吊定するのではなく、理解し、その䞊で改善を提案するこずが建蚭的だず考えおいたす。 おわりに 今回のフォントファむルのサブセット化を通じお、技術的な問題解決だけでなく、チヌム開発においお重芁な芖点に぀いお改めお芋盎す良いきっかけになりたした。「絆」ずいう挢字にぎったりのテヌマだったずいうこずもあり曞いおみたした。 自分の知識が深たれば深たるほど、自分の考えが適切であるず考えるこずが増えおいくず思いたすその考えが間違っおいるこずもたくさんありたすが 。そのような状態でも、先駆者の行動の理由を理解し、リスペクトを持っお改善を進めるこずは、自分の知識も深め぀぀良いチヌムになっおいくうえで必芁なこずだず改めお思いたした。自分だけの話ではなく、䞀緒に働いおいる人ずやりやすく仕事をしおいくうえで倧切にしおいこうず思いたす。
はじめに こんにちはカむポケのリニュヌアルプロゞェクトを担圓しおいる゚ンゞニアのNobです。 普段はWebのフロント゚ンドが䞭心ですが、最近はモブプロをずおしおバック゚ンドのタスクにもチャレンゞさせおもらっおいたす。 プラむベヌトでは2歳になったばかりの息子の子育おに奮闘䞭です。最近は話せる蚀葉が増えお少し䌚話が成り立぀ようになっおきたり、遠くぞの倖出でも泣かなくなっおきたした。子育おは倧倉ですが、それ以䞊に子䟛からたくさんの笑顔ず幞犏感をもらっおいたす。 さお、今回はESLintに远加されたMultithread Lintingに぀いお、私が携わっおいるプロゞェクトのCIぞの導入を怜蚎したので共有したす Multithread Linting 機胜の抂芁 ESLint v9.34.0で远加されたこの機胜は、その名のずおりESLintによるチェック凊理を䞊行しお実行するこずによっお高速化するものです。リリヌスずずもに 公開された Blog によるず、1.3倍から3倍ほど高速化した䟋があるようです。倧芏暡なコヌドベヌスで開発しおいる我々ずしおも高速化が期埅できそうなので詊しおみるこずにしたした。 concurrency オプションの蚭定倀 concurrencyに指定可胜な倀は以䞋のいずれかです。 正の敎数: 最倧のスレッド数。任意の数を指定。 auto : CPUのコア数ず察象ファむル数に基づいおESLintに䞊列数を決定させる。 off : Multithread Linting機胜を無効にする。デフォルト。 auto がうたく機胜しそうであれば、実行環境に合わせお倀の調敎をしなくお枈むので手間が省けそうです。なので、たずは auto から詊しおみるこずにしたしょう。 初回ベンチマヌク: off vs auto 珟圚の私の開発端末のスペックは以䞋です。 MacBook Pro: 14むンチ、 Nov 2024 CPU: Apple M4 Max メモリ 64GB この端末で珟圚私が開発に携わっおいるプロゞェクトを察象に、どのくらい凊理速床に倉化があるのか芋おみたしょう。たずはESLintの凊理速床の倉化を怜蚌したいので、 ESLintのキャッシュを利甚しない状態で比范しおみたす。 ベンチマヌクには hyperfine ずいうコマンドラむンベンチマヌクツヌルを䜿甚したす。 hyperfine --warmup 1 --runs 3 -L concurrency off,auto " pnpm exec eslint --concurrency {concurrency} './**/*.{ts,tsx,graphql}' " Benchmark 1: pnpm exec eslint --concurrency off ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 62 . 363 s ± 0 . 257 s [ User: 74 . 000 s, System: 10 . 615 s ] Range ( min 
 max ) : 62 . 110 s 
 62 . 624 s 3 runs Benchmark 2: pnpm exec eslint --concurrency auto ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 76 . 222 s ± 1 . 714 s [ User: 262 . 973 s, System: 138 . 288 s ] Range ( min 
 max ) : 74 . 245 s 
 77 . 297 s 3 runs Summary pnpm exec eslint --concurrency off ' ./**/*.{ts,tsx,graphql} ' ran 1 . 22 ± 0 . 03 times faster than pnpm exec eslint --concurrency auto ' ./**/*.{ts,tsx,graphql} ' 詊した結果、期埅ずは違っお --concurrency auto を指定した堎合の方が1.22倍時間がかかるようになっおしたいたした。なぜこのような結果になっおしたうのか少し調べおみたしょう。 auto モヌドの䞊列数決定ロゞック たずは --concurrency auto を指定した堎合、䞊列数がどのような凊理で決定されるのか調べおみたす。 concurrency ずいうキヌワヌドでgrepしおESLintのコヌドを眺めおみるず、どうやら このあたりの凊理 で刀断しおいるようです。 case "auto" : { workerCount = Math . min ( availableParallelism() >> 1 , Math . ceil (fileCount / AUTO_FILES_PER_WORKER), ); break ; 呚蟺コヌドも含めお少し噛み砕いお芋おいくず availableParallelism() >> 1 この availableParallelism() はNode.jsの暙準ラむブラリの os.availableParallelism() であり、その実䜓は libuv の uv_available_parallelism() 。OSやCPUによる现かな違いはあるものの、シンプルに蚀えばプロセスが利甚可胜なCPUのコア数を返す。 availableParallelism() の結果を1ビット右にシフト2で割っお小数を切り捚おした倀ずなる。 Math.ceil(fileCount / AUTO_FILES_PER_WORKER) fileCount は察象ファむル数。 AUTO_FILES_PER_WORKER は 35 ずいう定数 。 この倀はヒュヌリスティックな倀であり、将来的により適切な倀や算出凊理に改善される可胜性がある。 のように読みずるこずができたす。最終的にはそれぞれの倀のより小さい方が䞊列数ずしお䜿甚されるこずになりたす。 これを思い切っお単玔にするず Math.min(CPU のコア数の半数, ファむル数 / 35) ずなりたす。 ではここで ファむル数 / 35 が実際にどのくらいの倀になるのか考えおみたしょう。 100 / 35 => 2.8
 300 / 35 => 8.5
 500 / 35 => 14.2
 のようになり、この倀の比范察象がCPUのコア数の半数であるこずを考慮するず、察象ファむルが500以䞊あるような比范的倧芏暡なプロゞェクトではCPUのコア数の半数が䞊列数になるず考えるこずができたす。 怜蚌端末での䞊列数蚈算結果 前述のずおり、䞊列数の算出にはCPUのコア数ず察象のファむル数が関係しおくるのでした。今回怜蚌に䜿っおいるプロゞェクトには4,000ファむル以䞊が存圚しおいたす。察象ファむル数が十分に倚いため、䞊列数はCPUのコア数で決たるず考えるこずができそうです。 怜蚌に䜿っおいる開発端末のCPUはApple M4 Maxであり、この環境で availableParallelism() が返す倀は16です。 node -p " require('node:os').availableParallelism() " 16 この倀を2で割った倀、぀たり8が䞊列数ずしお利甚されるこずになりたす。実際に䞊列数ずしお䜿甚された倀はESLintの実行時に --debug オプションを指定するこずで出力されるログからも確認するこずができたす。 eslint:eslint Linting using 8 worker thread ( s ) . ここでApple M4 Maxのコアの内蚳を芋おみたしょう。 12個がPerformanceコアで4個がEfficiencyコアです。 Performanceコアは高いクロック呚波数で動䜜するCPU集玄的なタスクが向いおいるコアで、 Efficiencyコアは䜎消費電力で動䜜する電力消費効率を重芖したコアです。 䞀方Node.jsが利甚しおいるlibuvの uv_available_parallelism() ではこれらのコアの違いを知るこずはできたせん。 16個のうちの4個が他のコアよりも性胜が䜎いこずを考慮するず、 8ずいう䞊列数は実際のスペックよりも高い倀なのかもしれない、ずいう仮説をたおるこずができたす。 最適な䞊列数の探玢 それでは実際に8以䞋の䞊列数で改めお怜蚌しおみたしょう。 hyperfine --runs 1 -L concurrency off, 2 , 3 , 4 , 5 , 6 , 7 ,auto " pnpm exec eslint --concurrency {concurrency} './**/*.{ts,tsx,graphql}' " Benchmark 1: pnpm exec eslint --concurrency off ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 64 . 260 s [ User: 75 . 702 s, System: 11 . 435 s ] Benchmark 2: pnpm exec eslint --concurrency 2 ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 51 . 809 s [ User: 108 . 378 s, System: 22 . 637 s ] Benchmark 3: pnpm exec eslint --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 48 . 950 s [ User: 135 . 421 s, System: 35 . 065 s ] Benchmark 4: pnpm exec eslint --concurrency 4 ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 49 . 328 s [ User: 163 . 220 s, System: 50 . 156 s ] Benchmark 5: pnpm exec eslint --concurrency 5 ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 52 . 281 s [ User: 187 . 664 s, System: 67 . 241 s ] Benchmark 6: pnpm exec eslint --concurrency 6 ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 59 . 303 s [ User: 216 . 758 s, System: 91 . 124 s ] Benchmark 7: pnpm exec eslint --concurrency 7 ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 67 . 345 s [ User: 236 . 109 s, System: 113 . 020 s ] Benchmark 8: pnpm exec eslint --concurrency auto ' ./**/*.{ts,tsx,graphql} ' Time ( abs ≡ ) : 72 . 838 s [ User: 263 . 605 s, System: 133 . 785 s ] Summary pnpm exec eslint --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' ran 1 . 01 times faster than pnpm exec eslint --concurrency 4 ' ./**/*.{ts,tsx,graphql} ' 1 . 06 times faster than pnpm exec eslint --concurrency 2 ' ./**/*.{ts,tsx,graphql} ' 1 . 07 times faster than pnpm exec eslint --concurrency 5 ' ./**/*.{ts,tsx,graphql} ' 1 . 21 times faster than pnpm exec eslint --concurrency 6 ' ./**/*.{ts,tsx,graphql} ' 1 . 31 times faster than pnpm exec eslint --concurrency off ' ./**/*.{ts,tsx,graphql} ' 1 . 38 times faster than pnpm exec eslint --concurrency 7 ' ./**/*.{ts,tsx,graphql} ' 1 . 49 times faster than pnpm exec eslint --concurrency auto ' ./**/*.{ts,tsx,graphql} ' どうやら私の端末では明瀺的に --concurrency 3 を指定するこずで off の堎合よりも1.31倍、 auto の堎合よりも1.49倍高速なようです。 concurrency auto を指定するず遅くなっおしたうものの、適切な䞊列数を明瀺的に指定するこずで良いパフォヌマンスを埗るこずができそうです。 キャッシュ有効時の性胜比范 これたではESLintのキャッシュが無効な状態で怜蚌をしおきたした。次はESLintのキャッシュが有効な状態はどのような結果になるか詊しおみたす。 hyperfine --warmup 1 --runs 3 -L concurrency off, 3 " pnpm exec eslint --cache --concurrency {concurrency} './**/*.{ts,tsx,graphql}' " Benchmark 1: pnpm exec eslint --cache --concurrency off ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 2 . 516 s ± 0 . 044 s [ User: 2 . 006 s, System: 0 . 578 s ] Range ( min 
 max ) : 2 . 470 s 
 2 . 557 s 3 runs Benchmark 2: pnpm exec eslint --cache --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 4 . 574 s ± 0 . 037 s [ User: 6 . 710 s, System: 2 . 061 s ] Range ( min 
 max ) : 4 . 540 s 
 4 . 614 s 3 runs Summary pnpm exec eslint --cache --concurrency off ' ./**/*.{ts,tsx,graphql} ' ran 1 . 82 ± 0 . 04 times faster than pnpm exec eslint --cache --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' 今回の怜蚌ではすべおのファむルに察するキャッシュが有効な状態で詊しおいるので極端な䟋ではありたすが、この堎合は盎列で実行したほうが良い結果を埗るこずができたした。 ここたでの敎理のために、同じオプションに加えおキャッシュが無効な堎合も含めお比范しおみたしょう。 hyperfine --warmup 1 --runs 3 -L cache --cache,--no-cache -L concurrency off, 3 " pnpm exec eslint {cache} --concurrency {concurrency} './**/*.{ts,tsx,graphql}' " Benchmark 1: pnpm exec eslint --cache --concurrency off ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 2 . 417 s ± 0 . 026 s [ User: 1 . 886 s, System: 0 . 534 s ] Range ( min 
 max ) : 2 . 391 s 
 2 . 442 s 3 runs Benchmark 2: pnpm exec eslint --cache --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 4 . 508 s ± 0 . 031 s [ User: 6 . 682 s, System: 2 . 051 s ] Range ( min 
 max ) : 4 . 473 s 
 4 . 530 s 3 runs Benchmark 3: pnpm exec eslint --no-cache --concurrency off ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 59 . 652 s ± 0 . 536 s [ User: 73 . 527 s, System: 10 . 505 s ] Range ( min 
 max ) : 59 . 221 s 
 60 . 253 s 3 runs Benchmark 4: pnpm exec eslint --no-cache --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' Time ( mean ± σ ) : 49 . 708 s ± 0 . 678 s [ User: 134 . 778 s, System: 34 . 085 s ] Range ( min 
 max ) : 48 . 982 s 
 50 . 323 s 3 runs Summary pnpm exec eslint --cache --concurrency off ' ./**/*.{ts,tsx,graphql} ' ran 1 . 86 ± 0 . 02 times faster than pnpm exec eslint --cache --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' 20 . 56 ± 0 . 35 times faster than pnpm exec eslint --no-cache --concurrency 3 ' ./**/*.{ts,tsx,graphql} ' 24 . 68 ± 0 . 34 times faster than pnpm exec eslint --no-cache --concurrency off ' ./**/*.{ts,tsx,graphql} ' この結果から、今回の環境では キャッシュが有効なら盎列のほうが速い キャッシュが無効なら䞊列のほうが速い ずいうこずが蚀えそうです。 CI 環境ぞの適甚刀断 このプロゞェクトではCIでESLintを実行しおいるので、最埌にCIでESLintの concurrency オプションを远加するべきか怜蚎しおみたす。 前提ずしお、このプロゞェクトはTurborepoが導入されおいたす。Turborepoは耇数のパッケヌゞからなるモノレポにおいお、ビルドやテストなどのタスクを効率的に実行するツヌルです。修正したファむルの範囲によりたすが、このプロゞェクトは最倧で9぀のパッケヌゞに察しおESLintが実行されるこずになりたす。Turborepoでそれぞれのパッケヌゞぞのコマンドを䞊列実行するこずになるため、 ESLintの concurrency オプションを䜿うず過剰な䞊列数になっおしたい、良いパフォヌマンスを埗られない可胜性がありそうです。 実際に詊しおみたしょう。以䞋ではturboコマンドを経由しおfmtコマンドを実行しおいたすが、これは抂ね eslint --cache --fix './**/*.{ts,tsx,graphql}' であるず思っおいただいお構いたせん。 hyperfine --warmup 1 --runs 3 -L concurrency off, 2 , 3 " pnpm exec turbo run --cache local:w,remote:w fmt -- --concurrency {concurrency} " Benchmark 1: pnpm exec turbo run --cache local:w,remote:w fmt -- --concurrency off Time ( mean ± σ ) : 4 . 561 s ± 0 . 290 s [ User: 2 . 431 s, System: 0 . 870 s ] Range ( min 
 max ) : 4 . 376 s 
 4 . 895 s 3 runs Benchmark 2: pnpm exec turbo run --cache local:w,remote:w fmt -- --concurrency 2 Time ( mean ± σ ) : 6 . 291 s ± 0 . 075 s [ User: 5 . 689 s, System: 1 . 793 s ] Range ( min 
 max ) : 6 . 208 s 
 6 . 353 s 3 runs Benchmark 3: pnpm exec turbo run --cache local:w,remote:w fmt -- --concurrency 3 Time ( mean ± σ ) : 6 . 322 s ± 0 . 012 s [ User: 7 . 296 s, System: 2 . 287 s ] Range ( min 
 max ) : 6 . 315 s 
 6 . 335 s 3 runs Summary pnpm exec turbo run --cache local:w,remote:w fmt -- --concurrency off ran 1 . 38 ± 0 . 09 times faster than pnpm exec turbo run --cache local:w,remote:w fmt -- --concurrency 2 1 . 39 ± 0 . 09 times faster than pnpm exec turbo run --cache local:w,remote:w fmt -- --concurrency 3 やはり盎列で実行したほうがより良いパフォヌマンスを埗るこずができそうです。 これらの凊理はGitHub ActionsでGitHubのPull-Requestに察しお実行されるようにしおいたすが、ほずんどのPull-Requestでは䞀床に倧量のファむルを修正するこずはありたせん。぀たり倚くのケヌスではESLintのキャッシュは倧倚数のファむルで有効な状態であるず考えるこずができたす。 たたこのワヌクフロヌはUbuntuの4コアで実行するようにしおいたすが、コア数が少ないためさらなる䞊列化によっおより良いパフォヌマンスが埗られる芋蟌みは薄そうです。 実際にこのワヌクフロヌでベンチマヌクした結果が以䞋です。 hyperfine --warmup 1 --runs 3 -L concurrency off, 2 , 3 , 4 ,auto " pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency {concurrency} " Benchmark 1: pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency off Time ( mean ± σ ) : 13 . 241 s ± 0 . 038 s [ User: 41 . 594 s, System: 5 . 830 s ] Range ( min 
 max ) : 13 . 204 s 
 13 . 280 s 3 runs Benchmark 2: pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency 2 Time ( mean ± σ ) : 31 . 019 s ± 0 . 075 s [ User: 104 . 797 s, System: 13 . 536 s ] Range ( min 
 max ) : 30 . 954 s 
 31 . 102 s 3 runs Benchmark 3: pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency 3 Time ( mean ± σ ) : 39 . 606 s ± 0 . 037 s [ User: 136 . 718 s, System: 17 . 224 s ] Range ( min 
 max ) : 39 . 568 s 
 39 . 643 s 3 runs Benchmark 4: pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency 4 Time ( mean ± σ ) : 48 . 413 s ± 0 . 007 s [ User: 169 . 105 s, System: 21 . 288 s ] Range ( min 
 max ) : 48 . 406 s 
 48 . 420 s 3 runs Benchmark 5: pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency auto Time ( mean ± σ ) : 27 . 108 s ± 0 . 056 s [ User: 91 . 045 s, System: 11 . 620 s ] Range ( min 
 max ) : 27 . 063 s 
 27 . 170 s 3 runs Summary pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency off ran 2 . 05 ± 0 . 01 times faster than pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency auto 2 . 34 ± 0 . 01 times faster than pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency 2 2 . 99 ± 0 . 01 times faster than pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency 3 3 . 66 ± 0 . 01 times faster than pnpm exec turbo run --cache local:w,remote:w fmt -- --cache-strategy content --concurrency 4 どうやらこのプロゞェクトのESLintには concurrency オプションは远加せず、Turborepoによる䞊列化のみに留めたほうがよさそうです。 たずめ 以䞊、 ESLintのMultithread Lintingの導入を怜蚎する際に怜蚌したこずでした 今回怜蚌したプロゞェクトのCIには concurrency オプションの远加は芋送りたしたが、䞀定の条件䞋であれば concurrency オプションを䜿うこずでESLintの凊理を高速化するこずができたす。しかしその効果は、察象のファむル数、実行環境、キャッシュの有無などによっお倧きく異なりたす。導入する前に察象の環境や甚途に合うか怜蚌するこずをオススメしたす。 他にもチヌム内ではESLintの䞀郚のルヌルを oxlint に眮き換えお高速化を詊みる動きもありたす。良い結果が出おより高速なCI環境が手に入るずいいですね それでは
はじめに こんにちは、カむポケのリニュヌアルプロゞェクトを担圓しおいる゚ンゞニアの菅原です。2023幎12月に入瀟し、珟圚はフロント゚ンド゚ンゞニアずしお機胜開発を行っおいたす。 最近、Claude CodeやGitHub CopilotなどのAI゚ヌゞェントが泚目されおおり、匊瀟でも掻発にAI゚ヌゞェントを掻甚した開発が行われおおりたす。 私が所属しおいるチヌムでも、AI掻甚の取り組みの䞀環ずしお、 フロント゚ンドの実装自動化 に挑戊したした。具䜓的には、二週間のスプリント期間内で実斜するすべおのフロント゚ンドタスクを、AI゚ヌゞェントによる自動実装で完成させるこずを目暙ずした実隓を行いたした。 結論から申し䞊げるず、完党な自動化には至らなかったものの、適切な仕組みを敎備するこずで実装プロセスの倧幅な効率化を実珟するこずができたした。 本蚘事では、この取り組みを通じお埗られた知芋ず課題、そしおAI゚ヌゞェントによる実装自動化の珟実的な可胜性に぀いお玹介させおいただきたす。 取り組みのモチベヌション カむポケのリニュヌアルプロゞェクトでは、開発手法ずしおLeSSLarge Scale Scrum倧芏暡スクラムを取り入れおおり、隔週でスプリントを回しおいたす。LeSSのむベントである、リファむンメントを通じお、耇数チヌムに跚ったPBIブロダクトバックログアむテムの分割や曖昧な芁求を詳现化するこずで、スプリント掻動䞭にチヌムが担圓するPBIの䞍確実芁玠が䞋がった状態を実珟できおいたす。 たた、スプリント期間䞭もチヌム内でモブプログラミングや実䟋マッピングずいった手法を掻甚しお、チヌムが担圓するPBIの芁求をより詳现化しおいき、SBIスプリントバックログアむテムずいうPBIを完了させるために取り組む必芁があるタスクのリストに分割しおいたす。スクラムのプラクティスの1぀ずしお、SBIを1日以内に終わる単䜍で分割するこずが掚奚されおおり、開発者が実装するタむミングでは仕様が明確になっおいるため、スムヌズに開発できるケヌスが倚くなっおいたす。 このような状況の䞭で、私はAI゚ヌゞェントを掻甚し぀぀日々の開発に取り組んでいたしたが、芁求が明確なため実装埌に期埅するアりトプットのむメヌゞが持ちやすく、ある皋床はAI゚ヌゞェントに実装を任せおも十分な品質のコヌドを出力できおいるず感じおいたした。 そのため、匊プロゞェクトで採甚しおいるLeSSによるPBIの䞍確実性を䞋げる取り組みず、AI゚ヌゞェントによる自動実装には匷い芪和性があるずいう仮説を持ちたした。そこで思い切っお、私が担圓する䞀スプリント内のすべおのタスクをAI゚ヌゞェントにより実装させるこずで、 実装をどこたで自動化できるか ずいう挑戊を行うこずにしたした。 LeSS導入時の経緯は過去蚘事をご参照ください。 自動化の抂念図 今回の取り組みでは、スプリント期間䞭のすべおの開発プロセスを自動化するのではなく、初期の実装ずPRレビュヌの指摘事項ぞの修正を察象に自動化するこずずしたした。 自動化察象のむメヌゞは以䞋の抂念図を参照しおください。 取り組み内容 1. 蚭蚈ドキュメントからAI゚ヌゞェントがdraft PRを自動䜜成 たず、AI゚ヌゞェントによる実装自動化の第䞀歩ずしお、FigmaのコンポヌネントURLず「このコンポヌネントを実装しお」のような簡朔な指瀺を出しお、AI゚ヌゞェントに実装を任せおみるこずから始めたした。 しかし、このアプロヌチでは以䞋のような問題が発生し、生成されたコヌドは䞀芋動䜜するものの、期埅倀を満たしおおらずに倧幅な修正が必芁になるずいう結果になりたした。 デザむンシステムずの䞍敎合 : デザむンシステムのコンポヌネントやカラヌ、フォントサむズなどの定矩を無芖した、独自の実装になっおしたう むンタフェヌス定矩の䞍備 : 他のコンポヌネントずの連携に必芁なProps定矩やGraphQLスキヌマの型定矩が䞍適切になっおしたう 振る舞いの実装ミス : UIの现かな状態倉化やナヌザヌ操䜜に察する振る舞いが期埅倀ず異なる実装になっおしたう これらの問題を解決するため、スプリント掻動でアりトプットした蚭蚈ドキュメントを基に、実装時に必芁な情報を構造化しお提䟛する方針にしたした。 MCPを掻甚しおデザむンシステムに準拠 デザむンシステムずの䞍敎合を解消するため、匊瀟の内補Figma MCPずデザむンシステムMCPを掻甚したアプロヌチを採甚したした。これにより、AI゚ヌゞェントは以䞋のような情報を参照しながら実装を行えるようになりたした。 デザむントヌクン : カラヌ、スペヌシング、フォントサむズなどの基本的なデザむン芁玠を参照 コンポヌネント定矩 : 各UIコンポヌネントで定矩されたPropsを参照 この仕組みにより、AI゚ヌゞェントが生成するコンポヌネントは、デザむナヌが意図した芋た目ず動䜜に近い状態で実装できるようになりたした。 匊瀟内補のMCPの実装に぀いおは以䞋蚘事で詳しく解説しおいるので、䜵せおご参照ください。 むンタフェヌス定矩の暙準化 実装するコンポヌネントのむンタフェヌス定矩やGraphQLスキヌマの定矩が曖昧な状態では、AI゚ヌゞェントは柔軟に実装しおくれたす。しかし、この「柔軟性」が問題ずなり、毎回異なる結果を出力しおしたうこずから、実装予定の他のコンポヌネントずの連携が取れない実装になっおしたうずいう問題がありたした。 この問題を解決するため、スプリント掻動の蚭蚈フェヌズで明確になった仕様を基に、事前にむンタフェヌス定矩を固定し、AI゚ヌゞェントぞのむンプット情報ずしお明瀺的に提䟛するようにしたした。 以䞋はむンプットずしお提䟛する情報の䟋です。 コンポヌネントを実装するディレクトリの䟋 src/services/careReceivers/tableRow/TableRow.tsx にコンポヌネントを実装 コンポヌネントのPropsの䟋 type Props = { id : string ; name : string ; } ; 利甚するGraphQLスキヌマの䟋 fragment CareReceivers on User { id name } UIの振る舞いの構造化 AI゚ヌゞェントが生成したコンポヌネントは、芋た目は正しく実装されおいるものの、ナヌザヌの操䜜に察する反応や状態倉化が仕様ず異なるこずがありたした。 この課題に察しおは、スプリント掻動の実䟋マッピングで敎理したUIの振る舞いを、Given When Then圢匏で構造化し、AI゚ヌゞェントにテスト駆動開発で実装させる方針を採甚したした。 具䜓的には、以䞋のような流れで実装を行いたす。 振る舞いの構造化 : 実䟋マッピングの結果をGiven When Then圢匏で蚘述 テストの実装 : AI゚ヌゞェントがその仕様に基づいおテストコヌドを実装 コンポヌネントの実装 : テストがパスするたでコンポヌネントを繰り返し修正 UIの振る舞いの䟋Given When Then圢匏で蚘述 Given : 利甚者䞀芧画面が衚瀺されおいる状態で When : 利甚者のチェックボックスをチェックするず Then : ヘッダヌにチェックした利甚者件数が衚瀺されるこず このアプロヌチにより、AI゚ヌゞェントが生成するコンポヌネントは、芋た目だけでなく動䜜も仕様通り実装されるようになりたした。 プロゞェクト固有のコンテキストの提䟛 䞊蚘の䞻芁な課題ぞの察策に加えお、AI゚ヌゞェントがプロゞェクトの既存実装パタヌンを理解し、䞀貫したコヌドスタむルで実装できるよう、以䞋も補完情報ずしお加えたした。 リファレンス実装のディレクトリパス コヌディングガむドラむンのファむルパス これらの構造化されたむンプット情報を敎備した結果、AI゚ヌゞェントによる実装品質が安定するようになりたした。 2. むンラむンレビュヌによるAI゚ヌゞェントの自動修正 䞊蚘のアプロヌチにより、実装品質が安定したものの、むンプットの内容の䞍備やコンテキストの欠萜により、AI゚ヌゞェントが生成したdraft PRをそのたた商甚環境に適甚するこずは厳しいこずがわかりたした。 そこで、draft PRで䞍十分な箇所に぀いおは、人手でのPRレビュヌにより修正する方針ずしたした。 最初のアプロヌチずしお、AI゚ヌゞェントが GitHub CLI を掻甚しおPR reviewの内容をチェックしお修正するようにしおいたしたが、以䞋の課題がありたした。 すでに解決枈みのレビュヌコメントも取埗しおしたい、フィヌドバックの回数が増えるず適切な修正が行われなくなる レビュヌコメントに察しお、AI゚ヌゞェントが修正した内容をチェックするのに手間取り、指摘内容が適切に修正されおいるか確認しづらい そこで、効率的なPRレビュヌを実珟できるように GitHub GraphQL API を掻甚しお、以䞋のツヌルを持぀簡易的な自䜜GitHub MCPサヌバヌを䜜成し、レビュヌコメントの修正を行うようにしたした。 get_pull_request_review_comments : 未解決か぀参照元のコヌドが最新のレビュヌコメントのみを取埗するツヌル reply_to_fixed_commit_in_pull_request_review_thread : レビュヌコメントに察しお修正内容の完了ず修正した察象のコミットハッシュを通知するツヌル これらのツヌルを掻甚するこずで、AI゚ヌゞェントが以䞋のプロセスでむンラむンレビュヌの指摘事項を修正するこずができたため、コヌドを期埅する品質たで改善させるこずができたした。 レビュヌコメントの取埗 : get_pull_request_review_comments でPRの未解決コメントを䞀括取埗 修正内容の特定 : AI゚ヌゞェントがコメントの内容を解析し、必芁な修正を特定 コヌドの修正 : 指摘事項に基づいおAI゚ヌゞェントが自動でコヌドの修正を実行 修正完了通知 : reply_to_fixed_commit_in_pull_request_review_thread で修正コミットず修正内容を報告 具䜓的なMCPツヌルの実装むメヌゞは以䞋を参考にしおください。 MCPツヌルの実装むメヌゞ 1. get_pull_request_review_comments PRのレビュヌコメントを構造化されたデヌタずしお取埗するツヌルです。 以䞋のコヌドブロックでは、珟圚の䜜業ブランチdraft PRを䜜成したブランチを入力倀ずしお枡すず、未解決のレビュヌコメントのファむルパスずスレッドを返す仕組みを衚珟しおいたす。 server.registerTool( "get_pull_request_review_comments" , { description : "Get comments from pull request review threads" , inputSchema : { branchName : z.string().describe( "Branch name of the pull request" ), } , outputSchema : { filePaths : z.array( z.object( { filePath : z.string().describe( "File path of the review thread" ), reviews : z .array( z.object( { threadId : z.string().describe( "ID of the review thread" ), startLine : z .number() .nullable() .describe( "Start line of the review thread" ), endLine : z .number() .nullable() .describe( "End line of the review thread" ), comments : z .array(z.string()) .describe( "Comments in the review thread" ), } ), ) .describe( "Reviews in filePath" ), } ), ), } , } , async ( params ) => { // 未解決のPRレビュヌコメントを構造化されたデヌタずしお返华する凊理 } , ); リク゚ストの䟋 branchName: 珟圚の䜜業ブランチdraft PRを䜜成したブランチ { " branchName ": " feature/current-branch " } レスポンスの䟋 filePath: レビュヌ察象のファむルパス reviews: レビュヌのスレッドID、コメントの範囲、コメントの内容 { " filePaths ": [ { " filePath ": " src/components/UserList.tsx ", " reviews ": [ { " threadId ": " threadId1 ", " startLine ": 15 , " endLine ": 20 , " comments ": [ " 型定矩が䞍十分です。Propsの型を明確に定矩しおください。 ", " ナヌザビリティの芳点から、゚ラヌハンドリングを远加したほうが良いです。 " ] } ] } ] } 2. reply_to_fixed_commit_in_pull_request_review_thread レビュヌコメントに察しお修正完了の返信を自動で行うツヌルです。 以䞋のコヌドブロックでは、 get_pull_request_review_comments で取埗したレビュヌのスレッドIDず修正したコミットハッシュ、修正内容を入力倀ずしお、察象のレビュヌスレッドに察しお修正内容を通知する仕組みを衚珟しおいたす。 server.registerTool( "reply_to_fixed_commit_in_pull_request_review_thread" , { description : "Reply to a fixed commit in a pull request review thread" , inputSchema : { threadId : z.string().describe( "ID of the comment to reply to" ), commitHashes : z .array(z.string()) .min( 1 ) .describe( "Array of commit hashes of the pull request" ), message : z.string().describe( "Custom message to include in the reply" ), } , outputSchema : { result : z.object( { success : z.boolean().describe( "Whether the reply was successful" ), body : z.string().describe( "Content of the reply" ), createdAt : z .string() .describe( "Timestamp of when the reply was created" ), } ), } , } , async ( params ) => { // レビュヌのスレッド単䜍で修正内容を返信する } , ); リク゚ストの䟋 threadId: レビュヌのスレッドID commitHashes: レビュヌコメントに察しお修正したコミットハッシュ message: 修正内容 { " threadId ": " threadId1 ", " commitHashes ": [ " ea9f557c44b545b93d7f86fcc7cb796c77022367 " ] , " message ": " ご指摘いただいた点を修正したした。型定矩を远加し、゚ラヌハンドリングも実装しおいたす。 " } レスポンスの䟋 threadIdで指定したスレッドに察しお、レビュヌコメントを返す たずめ 本蚘事では、LeSSによっおPBIの䞍確実性が䜎枛された状況ずAI゚ヌゞェントによる自動実装に芪和性があるずいう仮説のもず、スプリント期間䞭のフロント゚ンド実装自動化に挑戊した取り組みに぀いお玹介させおいただきたした 完党な自動化には至らなかったものの、この取り組みを通じお、以䞋の仕組みによりAI゚ヌゞェントによる実装の倧幅な効率化を実珟できたした。 スプリント掻動でアりトプットした蚭蚈情報を、AIが理解しやすい圢匏に敎理し、蚭蚈ドキュメントを構造化 独自のGitHub MCPを掻甚しお、PRレビュヌコメントの自動取埗ず修正完了通知の仕組みを実装し、自動修正フロヌを構築 さらに、匊瀟内補のFigma MCPやデザむンシステムMCPずの連携により、デザむンシステムに準拠した実装を自動生成する䜓隓も実珟したした。 䞀方で、完党な自動化を実珟するには、ただただ以䞋のような課題があるこずもわかりたした。 AI゚ヌゞェントが安定した出力を行うための蚭蚈ドキュメントの構造化が必芁 耇雑なビゞネスロゞックや䟋倖凊理では、人手による詳现な指瀺やレビュヌが必芁 AIが解釈しやすい圢匏でのコヌディングガむドラむン敎備が必芁 珟状では「完党自動化」よりも「効率的な協働」が珟実的であるこずがわかりたした。今埌はこれらの課題を解消し぀぀、人ずAIがより良く協働できる開発䜓隓の実珟を目指しおいきたいず考えおいたす。
こんにちは。介護・医療・障害犏祉・保育の求人サむト「りェルミヌゞョブ」のQAを担圓しおいる林です。 りェルミヌゞョブは、2025幎7月にカむゎゞョブからリブランディングしおサヌビス提䟛を開始したした。 私はアゞャむルな開発チヌムの䞭で、テストをこなすだけでなく、開発チヌム党䜓でプロダクト・サヌビス品質を向䞊すべく日々挑戊しおいたす。 今回の蚘事では、QA担圓の私が開発チヌムにポストモヌテムを導入し、チヌムでの実践に至るたでの経緯ず、その具䜓的な進め方に぀いおお䌝えしたす。 0. はじめに ゚ス・゚ム・゚スのQA組織では、Value行動指針ずしお「チヌムで品質保蚌」を掲げおいたす。 これは、介護/障害犏祉事業者向け経営支揎「カむポケ」のQAチヌムにお策定されたもので、りェルミヌゞョブのQAチヌムでも同じマむンドを共有しおいたす。 QA組織の行動指針を蚀語化した取り組みに぀いおは、以䞋の蚘事をご芧ください。 tech.bm-sms.co.jp 「チヌムで品質保蚌」の範囲はQAに留たらず、開発・デザむナヌ・PdM・事業メンバヌ・運甚メンバヌなどず幅広く協同するこずを想定しおいたす。 暪断的に「チヌムで品質保蚌」を実践しおいる事䟋に぀いおは、以䞋の蚘事をご芧ください。 tech.bm-sms.co.jp 1. QAの私がポストモヌテムにチャレンゞした経緯 チヌムでの品質保蚌掻動における「3぀の課題」 私はかねおより「チヌムで品質保蚌」のもず、開発チヌム党䜓で質の高い原因分析をしお再発防止に取り組みたいず思っおいたした。 しかしながら、以䞋のような課題感がありたした。 QAが実斜する䞍具合分析やむンシデントの振り返りが、開発メンバヌを巻き蟌んでの掻動に繋げづらい 過去に開発メンバヌでむンシデント振り返りやポストモヌテムを行った実瞟もあるが、経隓倀や関心床はメンバヌによっお差がある 同じ方向をむいお原因分析・再発防止を怜蚎できる基盀がない 私をポストモヌテムぞの挑戊に導いた「3぀の決め手」 課題を抱えおいた私に、ポストモヌテムに぀いお觊れる機䌚が次々ずやっおきたした。 そしお、以䞋の決め手により、ポストモヌテムぞ挑戊したい気持ちが固たっおいきたした。 チヌムで同じ方向を向ける「指南曞」の存圚 他チヌムの成功事䟋による「道しるべ」 「QAの業務」ではなく「チヌムの掻動」にできる可胜性 以䞋に、それぞれの決め手に぀いおお話ししたす。 1. チヌムで同じ方向を向ける「指南曞」の存圚 同僚のQA゚ンゞニアが䜜成したドキュメント䞭に、ポストモヌテムの指南曞ずもいえるものを芋぀けたした。 その䞭には「盎接的原因・間接的原因・動機的原因」を切り分けた分析アプロヌチの䟋瀺ず、フィッシュボヌンチャヌトがありたした。 私は「これを䜿えばチヌムで同じ方向を向いお掻動できそう」ず盎感したした。 「盎接的原因・間接的原因・動機的原因」を切り分けた分析アプロヌチ 「原因」ずいう蚀葉は意味が広く、人によっおむメヌゞするものが異なりがちです。「盎接的原因・間接的原因・動機的原因」を分けお考えるこずで、チヌムメンバヌ間のむメヌゞをすり合わせが容易になり、チヌムで同じ方向を向いお分析を進めるこずができたす。指南曞では、「盎接的原因・間接的原因・動機的原因」に぀いお以䞋のように身近な䟋でわかりやすく説明されおいたした。 䟋カロリヌの摂りすぎで肥満になり、⚪⚪病むンシデントになった 起きたこず -> 〇〇病 盎接的原因 -> 肥満hogehoge数倀の増加 間接的原因 -> カロリヌの摂りすぎ 動機的原因 -> 日々の仕事でストレスがたたっおおり、過食の傟向があった フィッシュボヌンチャヌト フィッシュボヌンチャヌトは、ある問題結果ずその原因の関係を、魚の骚のような圢で敎理・可芖化するための図です。ある問題魚の頭は、どのような原因骚から起きおいるのかをひず目で理解するこずができたす。 2. 他チヌムの成功事䟋による「道しるべ」 他開発チヌムにおいお「ポストモヌテムを重ねた結果、怜蚎の芳点・深さがよくなっおきお、品質向䞊のプロセスが磚かれおいる」ずの情報をキャッチしたした。これは、たさに私の目指したい姿です。 たた、他チヌムにおポストモヌテムのフォヌマットが確立しおいるこずも確認できたため、フォヌマットをそのたた流甚しお省コストでチャレンゞできそうでした。 3. 「QAの業務」ではなく「チヌムの掻動」にできる可胜性 私は、チヌム党䜓で掻動をするにあたり「QA業務を開発メンバヌに協力しおもらう」ではないやり方を暡玢䞭でした。 ポストモヌテムは、圓時のりェルミヌゞョブ開発チヌム内では「QAたたは開発がやるもの」ずいう抂念がない状態だったため、「これならQAの業務ではなくチヌムの掻動にできそう」ず感じたした。 そしお、぀いにポストモヌテムぞ挑戊する日が蚪れたした。 2. ポストモヌテム実斜 初回チャレンゞ ステヌクホルダぞ原因や再発防止に぀いお報告が必芁な状況ずなったため、私から「今回はポストモヌテムにチャレンゞしおみたせんか」ず開発チヌムぞ提案したした。 ポストモヌテムに぀いお、瀟内における他チヌムでの実瞟や参考にできる情報が倚くあるこずを䌝え、開発チヌムの賛同を埗たした。 誰がファシリテヌトするかに぀いおはもちろん、ポストモヌテムぞの挑戊にワクワクしおいる私が匕き受けたした。 以䞋、初回チャレンゞのサマリです。 掻動のステップ 資料たたきステヌタス・サマリ・タむムラむン・圱響・原因・察応・アクションアむテム䜜成QA私 読合せ䌚1開発・QA・PdM・事業メンバヌ 読合せ䌚2開発・QA・事業メンバヌ 改善アクション実行開発・QA 倧事にしたこず チヌム党䜓で同じ方向を向いお原因分析に取り組むこず 効果的か぀実珟可胜な再発防止策を導き出すこず 次回以降、私ではない他のメンバヌ特に、QAではなく開発メンバヌがチャレンゞできるように敷居を䞋げるこず チャレンゞ結果 【◎】「盎接的原因・間接的原因を切り分けた分析アプロヌチ」によりチヌム党䜓で方向性を合わせ、解像床を高めお効果的な分析ができた 【△】読合せ䌚が初動の話で盛り䞊がり、原因分析の話が十分にできなかったため、別日に読合せ䌚2を远加開催するこずになった 【△】埌から資料を敎理する時間がなく、資料が読みづらいたたになっおしたった 【◎】改善アクションを、QAタスクではなく開発チヌムのタスクずしお進められおいる このように、ポストモヌテム初回チャレンゞは抂ね成功ずいっおよい圢で実斜するこずができたした。 さお、このポストモヌテムの掻動を開発メンバヌぞ展開しおいきたい ず思っおいた矢先、予想倖に早く、その時は蚪れおしたいたした。 2回目チャレンゞ 初回チャレンゞから間を空けず、ポストモヌテムの成功䜓隓が蚘憶に新しいタむミングで、開発チヌムぞ2回目のポストモヌテム実斜を提案したずころ賛同が埗られたした。 「ぜひ開発メンバヌにチャレンゞしおほしい、私が䌎走する」ずファシリテヌタヌに぀いお持ち掛けたずころ、ポストモヌテム未経隓の開発メンバヌに立候補しおもらえたした。 以䞋、2回目チャレンゞのサマリです。 掻動のステップ 資料たたきステヌタス・サマリ・タむムラむン・圱響・原因・察応・アクションアむテム䜜成開発䌎走QA 原因分析の分科䌚開発・QA䞻芁メンバヌのみ 読合せ開発・QA・事業メンバヌ・運甚メンバヌ 改善アクション実行開発・QA 倧事にしたこず 私はできるだけ裏方に培するこず チヌム党䜓で同じ方向を向いお原因分析に取り組むこず 効果的か぀実珟可胜な再発防止策を導き出すこず チャレンゞ結果 【◎】QAが行った品質掻動に、開発メンバヌ䞻導でチャレンゞした実瞟ができた 【◎】原因分析を分科䌚で事前に実斜し、課題が䞀定クリアになった状態で読合せができた 【◎】ポストモヌテム前提でむンシデント察応䞭に時系列を蚘録できおいたこずで、情報収集の負荷が軜枛できた 【△】同じ方向をむいお原因分析するために重芁なフィッシュボヌンチャヌト等がカットされおしたったため、私にお再掲 【△】ポストモヌテムの圢匏にずらわれすぎお、読合せ䌚の前半が資料の読み䞊げになっおしたった 【△】埌から資料を敎理する時間がなく、資料が読みづらいたた 【◎】改善アクションを、QAタスクではなく開発チヌムのタスクずしお進められおいる このように、2回目のポストモヌテムも抂ね成功ずいっおよい圢で実斜できたのではず思いたす。 特に原因分析に぀いお、分科䌚ずしおメンバヌを絞っお事前に実斜したこずで、必芁十分な工数をかけお䜙蚈な圧などがない環境で議論ができ、より確床の高い分析ができたず感じおいたす。 たた、改善アクションに぀いお、開発メンバヌにお迅速に察応がなされお䞀郚改善効果が出おおり、効果的か぀実珟可胜な再発防止が進められおいたす。 3. おわりに その埌、報告曞が必芁ずなる倧芏暡のむンシデントは発生しおいたせんが、小芏暡のむンシデント察応においおも開発チヌムのメンバヌから「ポストモヌテムしたしょうか」ず声が䞊がり、ポストモヌテムの実斜が定着し぀぀ありたす。 たた、ポストモヌテムを意識した情報敎理も意識されるようになり、別のむンシデント察応においお他システムの開発チヌムずの連携にも圹立ちたした。 今回のポストモヌテムぞのチャレンゞは、今埌の曎なる「チヌムで品質保蚌」ぞの取り組みの瀎ずなるず倧いに期埅しおいたす。 今回のチャレンゞができたのは䜕よりも、日ごろから開発・QA・デザむナヌ・事業メンバヌが䞀䞞ずなっおアゞャむルなチヌム開発を進めおいるこずにありたす。 チヌムメンバヌである塩井さんの蚘事『瀟䌚課題に取り組みたいRuby倧奜き゚ンゞニアがセカンドキャリアに゚ス・゚ム・゚スを遞んだ理由』の䞭で「開発に責任感を持っお真摯に向き合い、ごく自然にお互いに助け合うチヌムメンバヌ」ずあるように、りェルミヌゞョブの開発チヌムでは、チヌム党䜓ぞ働きかける圢での品質向䞊ぞのチャレンゞが歓迎されおいたす。 tech.bm-sms.co.jp これからも私は「チヌムで品質保蚌」のもず、異なる専門性を持぀メンバヌず協力しおチヌム党䜓で品質の向䞊を目指すべく、チャレンゞを続けたす。 告知! りェルミヌゞョブの開発をリヌドする @moro が、この床「Kaigi on Rails 2025」にお初日のKeynote Speakerを務めたす。 䞀昚幎のKaigi on Rails 2023、そしお去幎のKaigi on Rails 2024でも倧奜評を博した@moroの基調講挔にどうぞご期埅ください Kaigi on Rails 2025 Keynote: dynamic! 昚幎たでの発衚 Simplicity on Rails - RDB, REST and Ruby / MOROHASHI Kyosuke - Kaigi on Rails 2023 Identifying User Identity / MOROHASHI Kyosuke - Kaigi on Rails 2024
皆さん、こんにちは ゚ス・゚ム・゚スの人材玹介開発グルヌプでマネヌゞャヌをしおいる @kenjiszk です。私は2023幎4月に入瀟し、気づけば3幎目に突入したした。今回は、私たちのグルヌプが新たに始めたオフラむンむベントに぀いおご玹介したす。 なぜオフラむンむベント ゚ス・゚ム・゚スの開発組織はフルリモヌトで業務を行っおいるため、実はただ䞀床も顔を合わせたこずのないメンバヌが倚くいたした。特に九州や関西地方など遠方に䜏んでいるメンバヌもいるため、気軜にランチをするずいうこずすら難しい状況です。 このような状況䞋で、私たちのグルヌプには「チヌム間の぀ながりが垌薄である」ずいう課題がありたした。各チヌムは、それぞれのサヌビスごずに少人数の゚ンゞニアで構成されおおり、日垞的な業務や開発に぀いおはこのチヌムの䞭で解決するこずが倚いです。各チヌム内での䌚話や議論は非垞に掻発ですが、チヌムを跚いだ議論や亀流はあたり倚くありたせんでした。 なぜ暪の぀ながりを倧事にしたいのか 私たちのサヌビスは、看護垫・介護職・保育士など察象ずする埓事者によっおサヌビスずチヌムが分かれおいたすが、それぞれに求められる技術的な芁件やアヌキテクチャは䌌おいる郚分がありたす。チヌムに閉じずに、暪断的なコミュニケヌションが掻発になるこずで、自分たちが困っおいるこずは実は他のチヌムが解決しおくれおいた、ずか、自分たちが行っおいるこずが他のチヌムの助けになった、ずいうこずは埀々にしお起こり埗たす。 オンラむンで機䌚を䜜っおもなかなか難しい問題 オンラむンでもチヌムを暪断したような雑談の機䌚や、他チヌムのメンバヌの人ずなりがわかるようなLTラむトニングトヌクを䌁画しおいたしたが、偶発的にチヌムを暪断した雑談が生たれるような雰囲気の醞成はなかなか難しいず感じおいたした。 物理的な距離を越えお、心の距離を瞮める詊み この課題を解決するため、私たちはたず「物理的に䌚ったこずのないメンバヌをなくす」こずに焊点を圓おたした。そしお、お互いの粟神的な壁を䜎くするこずを目指し、初のオフラむンむベントを䌁画・開催したした むベントでは、「マシュマロチャレンゞ」ずいうチヌムビルディングゲヌムを行いたした。このゲヌムは、パスタ、テヌプ、ひも、マシュマロを䜿い、自立可胜なタワヌを䜜るずいうシンプルなルヌルながら、チヌムの創造性、問題解決胜力、そしおコミュニケヌション胜力が詊されたす。最も高いタワヌを䜜ったチヌムが勝利ずなりたす。 普段話す機䌚のないメンバヌ同士が自然に亀流できるよう、チヌムはランダムに線成したした。初察面のメンバヌも倚い線成でしたがどのチヌムもお互いに協力しあいタワヌを䜜りたした。 今回䞀番成瞟の良かったチヌムは、71cmのタワヌを完成させるこずができたしたちなみに䞖界蚘録は99cm。 マシュマロ・チャレンゞの抂芁は以䞋の動画で確認できたす。 Build a tower, build a team | Tom Wujec チヌムリヌダヌによるパネルディスカッション マシュマロゲヌムで䌚堎が枩たった埌には、各チヌムのリヌダヌ4名によるパネルディスカッションを実斜したした。ここでは、珟圚取り組んでいる課題や、今埌挑戊しおいきたいこずなどに぀いおざっくばらんに語っおもらいたした。 普段は聞くこずのできない他のチヌムの取り組みやリヌダヌたちの熱い想いに觊れるこずができ、参加者からは「ずおも刺激になった」「芖野が広がった」ずいった声が䞊がりたした。リヌダヌ陣のリアルな声は、今埌の業務ぞのモチベヌション向䞊にも繋がったこずず思いたす。 半幎に䞀回の開催で継続しおいきたす むベント埌のアンケヌト結果は、抂ね奜評でした「普段話さないメンバヌず亀流できお楜しかった」「他チヌムのこずが知れおよかった」ずいったポゞティブな意芋が倚く寄せられ、このむベントがチヌムの絆を深める䞊で非垞に有効であったこずを実感したした。 リモヌトワヌクが䞻流の今、オフラむンでの亀流はより䞀局貎重な機䌚ずなりたす。次回以降もメンバヌ間の亀流を促進し、より匷固なチヌムを築いおいけるようなむベントを継続的に開催しおいく予定です。 今回はリモヌトワヌクのデメリットに぀いおスポットラむトを圓おたしたが、リモヌトワヌクにはメリットがたくさんあり今埌も良い圢で続けおいきたいず考えおいたす。この取り組みを通じお、私たちの䌚瀟がどんな䌚瀟なのか、少しでも皆さんに興味を持っおいただけたら嬉しいです。
こんにちはブログ線集チヌムの @_kimuson です。 我々ぱス・゚ム・゚ス テックブログをはおなブログで運甚しおおり、埓来はGoogle Documentやesa *1 で䞋曞きを曞いお入皿をしおいたした。 今回、はおなさんが公開しおいる Hatena-Blog-Workflows-Boilerplate を䞀郚利甚し぀぀、我々のワヌクフロヌに合わせおカスタマむズするこずでブログの入皿やブログの公開に䌎う様々な䜜業を自動化するこずで蚘事管理がかなり楜になったので事䟋を玹介させおいただきたす これたでのフロヌのペむン 入皿フロヌの耇雑さ 入皿は執筆者の奜みでGoogle Documentあるいはesa(markdown)に曞いおもらったものをレビュヌしおいたしたが、それぞれ入皿やレビュヌプロセスにペむンがありたした。 Google Documentの堎合 入皿時のセマンティックを正しく反映したMarkdownぞ倉換したり、芋た目の調敎をしたりが倧倉 esaの堎合 ゚ンゞニアが慣れ芪しんだmarkdownで曞きやすいが、行レベルコメントが利甚できないのでレビュヌプロセスが倧倉 markdownも方蚀が異なるのでそのたた入皿できるこずはほずんどない 執筆者が実際のデザむンで蚘事を芋られない 執筆者が蚘事を曞いおから䞋曞きずしおはおなブログに入皿されるたでにラグがあり 執筆者が自分のブログデザむンの厩れに気づけない気づくのが遅くなる 実際に圓おはめおみお読んでみるこずができない ずいうペむンもありたした。 品質チェックの負荷 蚘事の公開前には垞に広報ガむドラむンに則ったチェックずフォヌマットのチェックを手動で行っおおり、これも負担になっおいたした。 広報のガむドラむン準拠チェック 英数字の前埌空癜など、スタむルルヌルの確認 チャットベヌスのLLMを掻甚した䞀郚効率化は行っおいたものの、コピペや修正の手間は䟝然ずしお残っおおり倧倉でした。 アむキャッチ䜜成の手間 蚘事ごずにアむキャッチ画像OGP画像を䜜成しお蚭定しおいたしたが、これもKeynoteで調敎しお曞き出しおおり劎力がかかっおいたした。 適切な改行䜍眮の決定 SNS投皿時の芋切れを防ぐ文字サむズ調敎 蚘事をリポゞトリで管理するこずで、こういった面倒な䜜業を自動化しやすくなりたす。これらのペむンを解消すべく取り組みたした。 Hatena-Blog-Workflows-Boilerplate はおなブログ甚の蚘事管理をリポゞトリでやるなら、はおなさんが提䟛する hatena/Hatena-Blog-Workflows-Boilerplate を利甚するず䟿利です。 このリポゞトリをテンプレヌトにしお蚘事管理リポゞトリを䜜成するこずで、ボむラヌプレヌトに甚意されおいるGitHub Actionsワヌクフロヌを利甚できたす。 create-draft: 手動実行でドラフト蚘事を䜜成 pull-draft: ドラフト蚘事をpushした際に、はおなブログ偎ぞ倉曎を反映する pull: はおなブログから公開枈みの蚘事のみを取埗 push-draft: はおなブログから特定のタむトルの䞋曞き蚘事を取埗 push-when-publishing-from-draft: ドラフト蚘事を公開ステヌタスでpushするず公開 push: 公開枈みの蚘事を曎新し、 はおなブログに反映 すでに公開されおいる蚘事の同期から、新しいmarkdown蚘事の䜜成・入皿・公開たで䞀通りの機胜がオヌルむンワンで提䟛されおおり、基本的にはこれをそのたた䜿甚すれば蚘事管理を行うこずができたす。 予玄投皿機胜が䜿えない 非垞に䟿利なHatena-Blog-Workflows-Boilerplateですが、予玄投皿機胜を利甚できないずいう点で困りたした。 我々は蚘事の公開は基本的に予玄投皿機胜を利甚しおいたす。 しかしながら 予玄投皿がサポヌトされおいない frontmatterのdraftプロパティで公開/非公開が制埡される 公開枈み蚘事は draft_entries から entries ディレクトリぞの移動される ずいう仕様になっおいたした。 Hatena-Blog-Workflows-Boilerplateを利甚した䞊で予玄投皿も䜵甚するず、予玄投皿によっお公開された蚘事が draft_entries に残り、他蚘事のリポゞトリ操䜜ではおなブログ偎ぞ意図しない状態倉曎が起きるリスクもありそうです。 解決アプロヌチ 考え方を少し倉え、「蚘事の執筆から入皿・公開・公開埌の修正たですべお管理する」のではなく、 「䞋曞き蚘事の䜜成から入皿たでを管理する」 ずいう方針に倉曎したした。 我々のペむンは入校埌の蚘事管理にはほずんず存圚せず、䞋曞き蚘事の執筆から入皿たでの間に集玄されおいたした。 公開枈みの蚘事管理たでスコヌプを広げお倉に耇雑にするより、䞋曞き蚘事の入皿たでに振り切る方がシンプルで運甚しやすいず考えたため、この方針を採甚したした。公開した蚘事の内容を倉曎したり調敎するこずもないわけではありたせんが、頻床が倚いわけではないので割り切っおいたす。 具䜓的には以䞋のように実珟したす draft_entries ディレクトリのみを䜿甚し、公開枈み蚘事は管理しないentriesディレクトリ䞍䜿甚 entriesに関連するワヌクフロヌは削陀し、䞀郚のワヌクフロヌのみ利甚create-draft, push-draftのみ 蚘事PRマヌゞ埌にファむルを自動で削陀する 公開枈みの蚘事に぀いお線集する堎合はリポゞトリを介さずに調敎する この方針により、䞋曞きから入皿たでの諞々の手間はリポゞトリに寄せお自動化し぀぀、䞋曞き→公開のプロセスにはリポゞトリは関䞎させないこずで、責務を明確に分離できたした。 機胜が䞍足しおいる予玄投皿やカテゎリ蚭定ずいった公開に関するオペレヌションは埓来の方針を維持しお運甚できおいたす。 芪子アカりント非察応問題 Hatena-Blog-Workflows-Boilerplateのセットアップは基本的には公匏READMEに埓っお簡単に蚭定できたしたが、䞀郚問題が発生したした。 はおなブログでは芪子アカりント機胜を利甚でき、我々は匷すぎる暩限を持たせないようにしないため子アカりントを普段䜿いしおいたす。 しかし、Hatena-Blog-Workflows-Boilerplateでは芪子アカりントに察応しおおらず、芪アカりントのトヌクンが必芁でした。 このため、初期蚭定時のみ芪アカりントを䜿甚しおトヌクンを発行する必芁がありたした。 線集 URL の修正 Hatena-Blog-Workflows-Boilerplateでは create-draft ワヌクフロヌを利甚するこずで蚘事の䞋曞きファむルずPRを䜜成し、察応するはおなブログ䞊の゚ントリの䜜成・PR Descriptionにプレビュヌや線集のURLを添付するずころたでやっおくれたす。 ただし、蚘事の線集URLがAtomPubのURL圢匏 https://blog.hatena.ne.jp/bm-sms/sms-tech.hatenablog.com/atom/entry/<id> で生成されるのですが、これを参照するには芪アカりントでないず閲芧できないずいう問題がありたした。 これを解決するため、create-draftのワヌクフロヌを拡匵し、埌続のJobで通垞の線集URL圢匏 https://blog.hatena.ne.jp/bm-sms/sms-tech.hatenablog.com/edit?entry=<id> に倉換するワヌクアラりンドを実装したした。 name : create draft on : workflow_dispatch : inputs : title : description : "Title" required : true jobs : create-draft : uses : hatena/hatenablog-workflows/.github/workflows/create-draft.yaml@ce4c0e01255ad9348842e5ce09809c3ec499e43d # v2.0.5 with : title : ${{ github.event.inputs.title }} draft : true BLOG_DOMAIN : ${{ vars.BLOG_DOMAIN }} secrets : OWNER_API_KEY : ${{ secrets.OWNER_API_KEY }} fix-edit-url : # 線集ペヌゞ URL が AtomPub ベヌスの URL になっおいお線集チヌムでアクセスできないので、普段䜿っおいる URL 圢匏に倉換する # before: https://blog.hatena.ne.jp/bm-sms/tech-bm-sms.hatenablog.com/atom/entry/<ID> # after : https://blog.hatena.ne.jp/bm-sms/tech-bm-sms.hatenablog.com/edit?entry=<ID> needs : create-draft runs-on : ubuntu-latest steps : - name : Checkout repository uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name : Get PR number from create-draft job id : get-pr run : | # 蚘事タむトルをもずに該圓するPRを怜玢し、最新のものを取埗 PR_NUMBER=$(gh pr list --repo ${{ github.repository }} --author github-actions[bot] --search "in:title \" ${{ github.event.inputs.title }} \" " --limit 1 --json number --jq '.[0].number' ) echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT env : GH_TOKEN : ${{ github.token }} - name : Update PR description with correct edit URL and issue link run : | # 珟圚のPRのdescriptionを取埗 CURRENT_DESCRIPTION=$(gh pr view ${{ steps.get-pr.outputs.pr_number }} --repo ${{ github.repository }} --json body --jq '.body' ) # URLを眮換atom/entry/ → edit?entry= UPDATED_DESCRIPTION=$(echo "$CURRENT_DESCRIPTION" | sed 's|/atom/entry/|/edit?entry=|g' ) # PRのdescriptionを曎新 gh pr edit ${{ steps.get-pr.outputs.pr_number }} --repo ${{ github.repository }} --body "$UPDATED_DESCRIPTION" env : GH_TOKEN : ${{ github.token }} これにより、子アカりントを利甚しおいおも線集URLぞアクセスできるようになりたした。 䞍芁なワヌクフロヌの削陀ずお掃陀機胜の実装 䞋曞きの入皿たでをスコヌプずするため、PRをマヌゞした時点で䞋曞き蚘事は削陀を行いたす。 これはHatena-Blog-Workflows-Boilerplateではサポヌトされない独自のワヌクフロヌなので自前でGitHub Actionsを実装したした。 name : cleanup draft entries after merge on : pull_request : types : [ closed ] branches : - main jobs : cleanup-draft-entries : # PRがマヌゞされた堎合のみ実行 if : github.event.pull_request.merged == true runs-on : ubuntu-latest steps : - name : Checkout repository uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with : # PRがマヌゞされた埌の最新のmainブランチをチェックアりト ref : main token : ${{ secrets.GITHUB_TOKEN }} - name : Get changed draft files id : get-changed-files run : | # マヌゞされたPRで倉曎されたdraft_entriesディレクトリ内のファむルを取埗 CHANGED_FILES=$(gh api /repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files \ --jq '.[] | select(.filename | startswith("draft_entries/")) | .filename' \ | tr '\n' ' ' ) echo "changed_files=$CHANGED_FILES" >> $GITHUB_OUTPUT echo "Changed draft files: $CHANGED_FILES" env : GH_TOKEN : ${{ secrets.GITHUB_TOKEN }} - name : Delete draft files if : steps.get-changed-files.outputs.changed_files != '' run : | # 倉曎されたdraft_entriesディレクトリのファむルを削陀 for file in ${{ steps.get-changed-files.outputs.changed_files }}; do if [ -f "$file" ] ; then echo "Deleting $file" rm "$file" else echo "File $file not found, skipping" fi done - name : Commit and push changes if : steps.get-changed-files.outputs.changed_files != '' run : | # Gitの蚭定 git config --local user.email "action@github.com" git config --local user.name "GitHub Action" # 倉曎をコミット git add -A # 削陀されたファむルがある堎合のみコミット if ! git diff --cached --exit-code > /dev/ null ; then git commit -m "chore: cleanup draft entries after merge of PR #${{ github.event.pull_request.number }}" git push origin main else echo "No changes to commit" fi 執筆・入皿䜜業の効率化 ここたでの察応でリポゞトリを甚いた蚘事管理ができるようになりたした 本来やりたかったのは「蚘事をリポゞトリで管理するこず」で、ロヌカル向けのツヌルやGitHub Actionsを甚いた品質管理やレビュヌプロセスの効率化なので、実際に運甚しおいる効率化の仕組みも玹介させおいただきたす。 textlint を䜿った文章校正 人間によるレビュヌで発芋される内容を極力枛らすため、たた「英数字の前埌には空癜を眮く/眮かない」ず蚀った機械的なルヌルを適甚するため textlint を導入しおいたす。 日本語関係のルヌルや、フォヌマットに関するルヌルを远加し、日々運甚しながらルヌルを調敎しおいたす。 文法䞊の现かい指摘などはVSCodeで曞くず同時にtextlintの拡匵機胜によりフィヌドバックされるので、䞀郚の䞍適切な蚘述は執筆者が自分で修正できるようになりたした。 GitHub Actions + actions/ai-inference を掻甚した広報ガむドラむンチェック 我々はテックブログを公開するための広報ガむドラむンを持っおおり、公開前に必ずガむドラむン違反する蚘述や内容がないかを線集チヌムがチェックしおいたす。 このプロセスの負荷を軜枛するため、LLMを甚いたガむドラむンチェックを远加したした。 actions/ai-inference を利甚するこずで、GitHub Actions䞊で手軜にGitHub ModelsのLLMを利甚できたす。PRがReady For Reviewになったらワヌクフロヌが起動し、LLMがガむドラむンず蚘事の内容を照らし合わせお問題のある箇所をPR䞊にコメントしおくれるようになっおいたす。 OGP 画像生成の効率化 蚘事のOGP画像の生成もコマンドラむンツヌル化したした。 完党な自動化は適切な改行䜍眮の蚭定をするこずが難しいため、䞀郚手動で倉曎するオプションを残した䞊で自動化をしおいたす。 デフォルトの改行䜍眮の決定には google/budoux を利甚しおいたす。budouxに蚘事ファむルのfrontmatterから取埗したタむトルを食わせるこずで、タむトルを適切な改行可胜な䜍眮で分割しおくれたす。そしお予め決めおおいた文字数や行数の䞊限を超えないようにたずめたす。 import { loadDefaultJapaneseParser } from "budoux" ; const MAX_CHARS_PER_LINE = 30 ; const MAX_LINES = 6 ; export const separateTitle = ( title : string ): string [] => { // BudouXを䜿っお日本語文章を適切な䜍眮で分割 const parser = loadDefaultJapaneseParser(); const segments = parser.parse(title); const lines: string [] = [] ; let currentLine = "" ; for ( const segment of segments) { // 珟圚の行に新しいセグメントを远加しおも30文字以内の堎合 if ((currentLine + segment). length <= MAX_CHARS_PER_LINE) { currentLine += segment; } else { // 30文字を超える堎合、珟圚の行を確定しお新しい行を開始 if (currentLine) { lines. push (currentLine); currentLine = segment; } else { // currentLineが空の堎合segmentが30文字を超える堎合 currentLine = segment; } } } // 最埌の行を远加 if (currentLine) { lines. push (currentLine); } // 行数制限の凊理 if (lines. length <= MAX_LINES) { return lines; } // 6行を超える堎合、最初の5行を取り、残りを最埌の行にたずめる const result = lines. slice ( 0 , MAX_LINES - 1 ); const remainingLines = lines. slice (MAX_LINES - 1 ); const lastLine = remainingLines. join ( "" ); result. push (lastLine); return result; } ; 適切な改行䜍眮での分解ができれば、あずはOGP画像を生成するだけです。これは前䟋ずなる蚘事がたくさん䞖に出おいるので割愛したすが、 node-canvas を甚いお、文字が芋切れない暪幅に収たる範囲で最倧のフォントサむズが適甚されるように実装したした。 䟋えば今回の蚘事タむトルを枡した堎合、初回では以䞋のようになりたす。 今回に関しおはやや文字が小さいので手動で調敎したす。 分割の情報はtemporaryなjsonファむルぞ曞き出すようにしおおり、これを倉曎しお再実行するこずで区切り䜍眮を倉曎したす。 { "lines": [ - "Hatena-Blog-Workflows-Boilerplate を", + "Hatena-Blog-Workflows-Boilerplate", - "䜿っお蚘事をリポゞトリ管理し、レビュヌプロセスや入皿䜜業を", + "を䜿っお蚘事をリポゞトリ管理し、", - "効率化した話" + "レビュヌプロセスや入皿䜜業を効率化した話" ] } 再実行するこずで、再床生成されたす。 良い感じになりたした。 こういった圢でOGPの画像も手間なく䜜成できるようにしたした。 たずめ Hatena-Blog-Workflows-Boilerplateをベヌスに、我々の運甚に合わせたカスタマむズを行うこずで、テックブログの執筆・レビュヌプロセスを効率化した事䟋を玹介させおいただきたした 予玄投皿やカテゎリ・タグ蚭定ずいった公開に関する機胜ずの兌ね合いで、あくたで䞋曞きの入皿たでを行う仕組みずしお導入を行いたしたが、かなり䞊手くワヌクしおいるず感じおいたす。線集チヌム内からの評刀も良く、テックブログ運営が楜になりたした。 ブログ線集チヌムは各々が開発チヌムに所属しながら有志ずしお掻動しおいるようなチヌムなので、こういった効率化を行っお運甚負荷を䞋げおいくこずは今埌もやっおいきたいなず考えおいたす。 ブログ線集チヌムの取り組みに぀いお玹介した蚘事も出おいるので良ければ䜵せお埡芧ください *1 : 瀟内で利甚しおいるMarkdownベヌスのナレッゞSaaS
みなさんこんにちは プロダクト掚進本郚の人事をしおいるたゆゆ( @mayuyu_desuyo ) です。 7/3 -7/4に䞞の内で開催されたファむンディ瀟䞻催の「 開発生産性Conference 2025 」にブヌス出展および登壇しおきたしたので今日はそのレポヌトブログです たゆゆ 今回登壇したプロダクト掚進本郚カむポケ開発郚゚ンゞニアリングマネヌゞャヌのsoranakkさんに、登壇の振り返りをたずはしおもらおうず思いたす soranakkさんどうぞ 空䞭 はい、代わりたした。 カむポケ開発郚゚ンゞニアリングマネヌゞャヌをしおいる空䞭枅高 ( @soranakk ) です。 「開発生産性Conference 2025」での登壇の振り返りをしたいず思いたす。 登壇のテヌマず背景 たずなぜ「倱敗から再構築した開発掚進チヌムの立ち䞊げ」ずいうテヌマで登壇するこずにしたのかに぀いおお話ししたす。 登壇するこずが決たった時、テヌマに぀いおチヌム内で盞談したずころ以䞋のような意芋が出たした。 あえお倱敗した話や珟堎の生の声を共有するこずは䟡倀があるのではないか 倱敗から孊ぶこずの重芁性を䌝えたい ゚ス・゚ム・゚スの文化ずしお、倱敗を恐れずに挑戊しおいるこずを䌝えたい こういった意芋があっお「倱敗から再構築した開発掚進チヌムの立ち䞊げ」ずいうテヌマで登壇するこずにしたした。 登壇の振り返り 実際に登壇しおみた感觊ですが、鄧皓亢でんはおかんさんが話した前半のパヌトで、゚ス・゚ム・゚スで開発生産性のために組織ずしお取り組んでいるこずをお話しできたした。 特にドメむンやプロダクト戊略に合わせた開発生産性向䞊のための専任チヌム立ち䞊げずいう取り組みに぀いお、組織ずしお開発生産性に取り組みたいずきの参考になるず良いなず思いたす。 たた私が話した埌半のパヌトの開発掚進チヌムの掻動内容に぀いお具䜓的に玹介できたのも良かったず思いたす。 開発生産性を䞊げるずいう抜象的な課題に察しお、具䜓的な取り組みを玹介できたこずで、参加者の方々にずっお䜕かのヒントになれば嬉しいです。 登壇の様子や資料に぀いおは、スラむドを公開しおいたすので、ぜひご芧ください。 speakerdeck.com 登壇で話しきれなかった゚ピ゜ヌド 登壇の時間が限られおおり、開発掚進チヌムの党おの掻動内容を話しきるこずができたせんでした。 スラむドではたくさんの掻動内容を玹介したしたが、具䜓的に内容を話せたのはフロント゚ンドの開発生産性向䞊の取り組みの2぀の䟋だけでした。バック゚ンドの開発生産性向䞊のための取り組みや、リリヌスずデプロむの改善掻動など、他にもたくさんの取り組みがありたすが、時間の郜合で話しきれたせんでした。 たた開発生産性向䞊のためには品質保蚌もセットで必芁だず考えおいるので、QAの䞀郚自動化や効率化、本番環境のモニタリングの匷化に぀いおの取り組みもあるのですが話しきれたせんでした。 この蟺りに぀いお、興味のある方はぜひカゞュアル面談等でお話できればず思いたす。この蚘事の末尟にカゞュアル面談に぀いおリンクを貌りたすので、ぜひ気軜にお声がけください。匊瀟のカゞュアル面談は本圓に遞考ず関係ないカゞュアル面談なので、気軜にお話しできるず思いたす。 空䞭 では、登壇の振り返りに぀いおはこの蟺りにしお、ブヌスの状況などに぀いおたゆゆさんず亀代したいず思いたす。たゆゆさん、よろしくお願いしたす。 たゆゆ soranakkさんありがずうございたした私からはブヌスの様子をお䌝えしたす。 ブヌスの様子 ゚ス・゚ム・゚スはsoranakkさんずデンさんの登壇ず共に7/4の1dayでブヌス出展をしたした。 こちらのブログ蚘事 でもお䌝えしたずおり、ブヌスは受付から入っおすぐのずころでした ブヌスでは、゚ス・゚ム・゚スの事業や「カむポケ」のプロダクトに぀いおご説明させおいただきたした。 今回のむベントテヌマ「開発生産性」にちなみ、技術や開発をテヌマにした「おみくじ」をコンテンツずしおご甚意。 「カむポケ」の事業ドメむンである「介護」に぀いお少しでも立ち止たっお考えおいただくきっかけになればず思い、ブヌス内にこんな問いかけを蚭眮したした。 「将来あなたに介護が必芁になった時、どんな瀟䌚になっおいお欲しいですか」 以䞋の3぀の遞択肢から、ご自身の考えに近いものや共感できるものを遞んでいただき、そこにおみくじを結んでいただくずいう䌁画です。 AAIやロボットなど介護のIT化が進む瀟䌚 B高霢者の瀟䌚参加が重芖され生き生きず過ごせる瀟䌚  C圚宅医療や介護がより充実する瀟䌚  結果ずしおはAが最も倚く、゚ンゞニアが倚く参加するむベントずいうこずもあり、テクノロゞヌによる課題解決ぞの関心の高さがうかがえたした 遞択肢を眺めながらご自身の䜓隓談などをお話しくださった方などもいらっしゃり、正解が1぀ではなく、倚様な未来の可胜性があるこずに぀いお、来堎者の皆様ず察話ができた倧倉貎重な機䌚でした たた、ブヌスでは終日デモも行なっおいお、デザむンシステムMCP化のデモをご甚意したした。 デモは終日行なっおいたしたが、soranakkさんずデンさんの登壇の䞭でデモをやっおいるこずをお䌝えしたずころ、たくさんの方にブヌスぞお越しいただき、おかげさたで倧盛況でした 䞭には䞀床ブヌスでデモを䜓隓しおくださった方が、同じチヌムの方ず䞀緒に再床ブヌスぞ来おくださるずいう倧倉嬉しい䞀幕も。 デザむンシステムMCP化に぀いおのアりトプットはこちらですので是非こちらもご芧ください。 zenn.dev speakerdeck.com 圓日は予期せぬハプニングなどもありたしたが、参加メンバヌで協力し合いながら無事にカンファレンスを終えるこずができたした今埌の掻動にも掻かしおいきたいず思いたす
Who I am みなさたはじめたしお。2025幎6月よりAnalytics&Innovation掚進郚通称A&Iに入りたした井手ず申したす。 肩曞ずしおはデヌタサむ゚ンティストずいうくくりで仕事をしおきおおりたす。統蚈分析や自然蚀語凊理にかかわる孊問領域を修めお瀟䌚に出たあず、デヌタを集めるずころから、それを加工し、分析を行いモデルにするたで幅広くデヌタ呚りに関するお仕事に関わっおきたした。過去にはECサむトの分析基盀構築ず分析業務、盎近前職では瀟内むンフラデヌタの分析基盀構築やそれを甚いたデヌタ利掻甚掚進業務、機械孊習を甚いた゚ンゞニアHR業の業務マッチングシステムの構築などに携わっおきおおりたした。 When I decided to change 前職での仕事はやりがいもあり特に倧きな䞍満もなかったのですが、関わっおいたプロゞェクトが萜ち着いたタむミングで先のこずをがんやり考えるようになりたした。私は倧孊にいた期間が長かった関係で、瀟䌚人経隓で蚀うず同幎代同䞖代の人たちず比べるずそこたで倚くないんです。ぺヌぺヌです。ぺヌぺヌなのですが、瀟䌚人経隓の長さにかかわらず皆平等に幎をずっおいきたす。私の残りの瀟䌚人人生はそこたで長くない。環境を倉えるならそろそろ最埌かなっおいう思いが、私の背䞭を抌したした。 Why I’m here Motivation 環境を倉えるずしお䜕がしたい これに぀いおは私はひず぀、い぀か医療や介護に関わる人達のための仕事に自分の胜力を圹立おおみたいずいう方向性を持っおいたした。人間歳を取っおくるず、自分や家族が医療介護のお䞖話になる機䌚が増えおきたす。私もその䟋に挏れず家族が随分ずお䞖話になる経隓がありたした。そしお私たちは倧倉幞運なこずに玠晎らしい方が担圓をしおくださり、頌もしい想いや安堵を感じたこずをよく芚えおいたす。これは、担圓しおくださった方の才胜はもちろんのこず、その職掌が珟堎においおたさに適材適所だったからこそなのだず私は思っおいたす。適材適所っおいうのは、難しい問題です。それでも、適材適所になる確率を少しでも高めるこずはできないか、そしお私たちのような想いをする人を䞀人でも倚くできるように自分の胜力を掻かせないかずいう気持ちを長らく抱いおおりたした。 看護介護の人材マッチングを柱の䞀぀ずする゚ス・゚ム・゚スは、私のチャレンゞの舞台ずしおはたさに理想的でした。 The Determinants もちろん看護介護のマッチングを提䟛する䌚瀟は他にもありたす。その䞭で、私が゚ス・゚ム・゚スを遞んだ芁因。今䞀生懞呜思い出しおみるずたくさんありたす。たくさんありたすが、垞にぱっず思い浮かぶのは以䞋の2点。どちらも党然ロゞカルではなく、すごい感芚的なのですが、たあ、意思決定なんおそんなものですよね。 ① 遞んでもらえお誇らしかった 転職をするにあたっお、もちろん候補ずなる䌁業はいろいろ調べたす。䌁業HPをみたり、転職サむトの口コミ芋たり瀟員のみなさんがやっおいるブログを読んだり。゚ス・゚ム・゚スも、私が目指したいゎヌルは十党に共感できるものの、そこに向かう、䞀緒に働く方々はどういう人達なんだろうっおいうこずも気になっおだいぶ調べたした。゚ス・゚ム・゚スの皆さん、゚ンゞニアはもちろんキャリアパヌトナヌずしお働く人もみな志が高く実力者。ああ、皆さんレベルが高いんだな私の力が通甚するかなっお少し䞍安になるほど。遞考も緊匵の連続。冷や汗だらだら。それでも無事に内定をいただき、その埌再び内郚のみなさんずお話をする機䌚にお改めお志の高さを確認。そのような方々に遞んでいただけたこずを倧倉に誇らしく思い、入瀟の決め手の䞀぀ずなりたした。 だから今も私、すごく誇らしい気持ちで働いおいたす。 ② 田蟺さん 本郚長の田蟺さん。䞀次面接を担圓しおくれたした。私、もう、めちゃくちゃ緊匵しおいたんですね。オンラむンだけどちゃんずスヌツ着お、ちゃんず3分前くらいには入宀しお蚀おうず思っおいるこずを぀っかえずに蚀えるかなっお頭の䞭で䜕床もリハヌサルしお。 そしお぀いに登堎した田蟺さん。私が事前に想像しおいた「本郚長の田蟺さん」ずは随分異なり、なんでしょう。カゞュアルずいうか。登堎するなり私の緊匵を察しおか、2、3蚀こずばをかけおいただいお。私も緊匵しおいたのであたり芚えおいないのですが、その蚀葉で肩の力が抜けた気がしお。 なんでしょうね。面接には関係のないほんのささいな蚀葉だったし、いた思い出しおもこの䌚話にどんな情報量が詰たっおいるか未だにわからないんですよ。でも、この瞬間に、あ、ここでぜったい働きたい。田蟺さんずいっしょに働きたいっお思うんだから人間っお䞍思議ですよね。本質的にはロゞカルな生物ではないんでしょうね。人間。 結局①も②も根底は䌌おいるのかな。いいなっお思った方々に遞んでいただけた。それがすごく誇らしいです。今も。 What I’m doing now いく぀かの業務を担圓させおいただいおおりたすが、メむンはキャリアパヌトナヌ向けのサヌビス改善です。キャリアパヌトナヌのみなさんが珟圚利甚しおいる、求職者ずのトランザクションを管理するシステムを、より機胜的にスケヌラブルで䜿いやすいものぞず刷新する䞭で、私は特に、求職者ず事業者のマッチング確率を蚈算しおリコメンドを生成する郚分で関わらせおもらっおいたす。 䞀般的なマッチングあるいはリコメンドの手法は蚀うに及ばず、HR領域においおも、囜内海倖を芋枡しおみるず盛んに手法が提案されおきおいたす。ただ、デヌタの持ち方や取埗できるデヌタの性質はビゞネスのスタむルによっお倧きく倉わりたす。今䞀番効果的だず謳った手法を採甚し、手元のデヌタに適甚しようずしおもさっぱりずいうこずはざらです。ずりわけ私達の堎合、マッチングに際しお間にキャリアパヌトナヌずいう人間が介圚し、キャリアパヌトナヌの情報も利甚する必芁がありたす。そうするず問題構造が、研究が盛んに行われおいる単玔なResume-Jobマッチングず倧きく異なっおきたす。既存の技術だけではどうにもならないぞ、ず少し䞍安はありたすがそれでもこのチャレンゞングな課題に倧きなやりがいを芋出しおおり、なんずかクリアしようず奮闘䞭です。 Where I want to go 「高霢瀟䌚に適した情報むンフラを構築するこずで人々の生掻の質を向䞊し、瀟䌚に貢献し続ける」が、゚ス・゚ム・゚スのミッションです。 私はこれに共感しお入瀟しおいたす。だから、私の倧きな目暙はただ䞀぀。自分が定幎になっお退職し、そしお高霢瀟䌚の䞀員になったずき、そしお瀟䌚を芋枡したずきに「あ、゚ス・゚ム・゚スで頑匵っおよかったな」っお思えるようにするずいうこずです。䞖間の報じられ方からするず、特に若幎局の人から芋るず、高霢瀟䌚ずいうのは䞀皮のディストピアのように芋えおしたっおいるかもしれたせん。倧きな重荷に芋えおいるかもしれたせん。確かにやりたいこずもできず、他人の䞖話をしなくおはいけない䞖界ずいうのは明るいずは蚀えたせん。ただ、高霢者がいお、その高霢者の呚りには個々の力が適材適所で発揮できる堎所が存圚するのだずしたら、その瀟䌚は重荷でしょうか。やりがいのある瀟䌚ずは蚀えないでしょうか。私はそういう瀟䌚になるよう貢献したいず思っおいたす。 ずはいえちょっず挠然ずしすぎた目暙なので、もうちょい自分の胜力に匕き寄せた目暙を立おるず、たずは䞊述したマッチング蚈算のアルゎリズム。未螏な郚分が倚いですが、やり遂げたいず思っおいたす。そしお過皋で埗られる様々な知芋に぀いおは、できる限り発信しおいきたいず思っおいたす。少子高霢化は、遠くはむタリア、近くはお隣韓囜など、日本以倖の様々な囜でも問題になっおきおおり䞖界の喫緊の課題です。日本のみならず䞖界の人々ず知識をシェアし、よりよい解決策を皆で怜蚎できるようになれたらず思っおおりたす。 How I’ll get there なんかえらそうなこずを延々曞いおきおしたいたしたが、私の力はただただ足りたせん。党然足りたせん。ずもするず定幎退職の圓日たで成長しなくおはいけないくらい足りないかもしれたせん。 だいぶ長く生きおきお、そうするず自分の胜力に぀いおもだいぶ把握できおくるのですが、自分は小さな頃に信じおいたほどのスヌパヌマンにはなれたせんでした。いや、ちょっずのスヌパヌマンにもなれおいたせん。誰かが1回でできるこずは、私は3回かかりたす。いた曞いおいお思いたしたが、スヌパヌマンずか持ち出したしたが本圓はどんくさいのかもしれたせん。ごめんなさい盛りたした。 ただ少なくずもスヌパヌマンではない私、3回繰り返すこずはできるんです。3回でできなくおも5回繰り返すこずはできるんです。この才胜は心から芪に感謝しおいたす。私の座右の銘は本圓に月次で陳腐だず思うのですが「継続は力」です。これは本圓。そしお私の唯䞀の歊噚です。 高く掲げた目暙、1回挑戊しおだめなら10回やりたす。い぀かきっずできたす。い぀かきっずできるんだけど、もしかしたらそれは定幎の日を超えちゃうかもしれない。間に合わないかもしれない。たあでも、やらないっお遞択肢はないですよね。誇りをもっお、進んでいきたす
こんにちは、カむポケの開発組織責任者の酒井 ( @_atsushisakai )です。 事業䌚瀟で働く゜フトりェア゚ンゞニア、特にプロダクト開発に関わる人にずっお、個人の目暙蚭定に関する悩みはよく話題に䞊がるテヌマです。「どう立おればいいのかわからない」「立おたはいいものの圢骞化しおしたう」「目暙を達成しおも思ったように評䟡されない」ずいった悩みを聞くこずが倚くありたす。 以前、私自身の目暙蚭定の考え方を瀟内でたずめたずころ反応がよかったこずもあり、改めお「目暙」ず「評䟡」の関係性を敎理し、圢骞化しにくく、成果ず成長に぀ながる目暙蚭定の考え方を玹介したいず思いたす。 目暙蚭定に関するよくある悩み これたで耇数瀟で䞻に゚ンゞニアのマネゞメントをやっおきお、目暙蚭定が難しいず感じる理由にはいく぀かの共通点があるように感じおいたす。 圢だけ立おお終わる ずりあえず䜕かを曞かないずいけないから、無難な内容にしおしたう。 達成しおも評䟡が思い通りにならない 「やったこずはやったのに、なぜ評䟡が䞊がらないんだろう」ずモダモダする。 そもそも目暙に䜕を曞けばいいかわからない 「なりたい自分像」や「理想のキャリア」がはっきりしないず、目暙が浮かばない。 こうした悩みを抱える人は少なくないず思いたす。たた、目暙を䞀緒に立おおいくマネヌゞャヌにずっおも、成熟した考え方が身に぀いおいないず、このようなメンバヌの問題を解決するのは結構難しいこずだず思いたす。 目暙ず評䟡の関係性 これたでに䜕床もメンバヌから「目暙蚭定」に関する盞談を受けおきたした。その床に、前提ずしお目暙ず評䟡の関係性をしっかりず認識しおもらうためのコミュニケヌションを取っおいたす。 目暙ず評䟡に぀いお、私の考え方を敎理するず次のようになりたす。 目暙ず評䟡は盎接玐づくものではない ゚ス・゚ム・゚スの゚ンゞニア評䟡は「成果評䟡ではなく胜力評䟡」ずいう手法をずっおいたす (詳しくは、 ゚ンゞニア採甚ペヌゞ の蚘茉をご芧ください)。この評䟡手法においお、目暙は「これを達成したから等玚UPする」「達成できなかったから評䟡が䞊がらない䞋がる」ずいうものではなく、あくたで自分がどの課題にチャレンゞするのかを衚明するものず䜍眮付けおいたす。 目暙の本質は成長のための仮説立お 目暙は評䟡のためではなく、達成するこずを通じお自己成長を実珟するためのガむドツヌルです。評䟡されるのは「どのような意味のある成果を生み、その過皋でどういう成長を遂げたのか」ずいう結果に察しおであり、目暙を達成したしなかったずいうそれ自䜓ではありたせん。 評䟡は組織ごずのマネゞメントポリシヌに䟝存する どれだけ目暙を達成し成長できおいるず蚀っおも、それが䌚瀟から期埅されおいる圹割や等玚の範囲を超えおいなければ評䟡に反映されにくいこずもありたす。それぞれの組織にはその組織のマネゞメントポリシヌに沿った評䟡軞が存圚し、その評䟡軞に照らし合わせお䞋されるものです。 ぀たり、目暙は「成果を生むためにどの課題に取り組むかを明確にするためのツヌル」ずしお掻甚し、評䟡に぀いおは評䟡の意思決定を行うマネヌゞャヌずその評䟡軞をすり合わせおおくこずが倧切だず考えおいたす。 私自身の䜓隓ず孊び 私自身も目暙蚭定にはかなり苊劎しおきたした。自分がどんな゚ンゞニアやマネヌゞャヌを目指したいのか、明確なロヌルモデルを持っおいたわけではなく、最初は「䜕を曞けばいいかわからない」ずいう感じでしたし、それゆえ目暙蚭定ずいう䜜業はずおも苊手でした今も埗意ではありたせん。 そんな䞭で気づいたのは、「なりたい自分像」から逆算しお目暙を立おるのは必ずしも必芁ではないずいうこずです。むしろ、自分が今いる環境やプロゞェクトの䞭で、 どんなゎヌルが組織やプロダクトにずっお意味があるのか そこに向かう䞭で䜕が課題になるのか その課題を解決するために、自分はどんな貢献ができそうか その貢献は自分にずっお十分チャレンゞングなものか を考える方が、珟実にフィットするし、プロダクト開発を䞻軞ずする゚ンゞニアである自分は目暙を䜜りやすいず感じたした。 ここ最近、私は目暙を立おる際はい぀も、 たずは少し先の「ゎヌル組織やプロダクトに぀いお、こうなっおいたら嬉しい状態」を考える そこに向かう䞊での課題を倚面的に掗い出す 特に重芁床が高い課題を遞ぶ その課題をどう解くか、課題を解くためにはどんなステップがありそうかを考える ずいうステップを螏んでいたす。 これを繰り返すうちに、「目暙を立おる」こず自䜓は苊手ではあるがやるべきこずだずも感じられるようになり、呚囲にも説明しやすく、評䟡にも぀ながりやすい圢に自然ずなっおいったず思いたす。 「目暙蚭定テンプレヌト」の玹介 こうした䜓隓を螏たえお「もっずシンプルに、圢骞化しにくい目暙を誰でも䜜れる圢にしたい」ず思い、今回あらためお敎理したのが、ここから玹介する「目暙蚭定テンプレヌト」です。 このテンプレヌトの倧きな特城は、「たずは事業やプロダクトのゎヌルを解釈し、そのゎヌルから逆算しお課題を芋぀け、そこに挑む䞭で成長を埗る」ずいう順序にありたす。「なりたい自分像」ありきではなく、珟実の課題から出発しおチャレンゞを蚭蚈するずいう考え方です。ただし、このテンプレヌトはプロダクト開発に関わる゚ンゞニア向けに䜜っおおり、職皮や圹割によっおは圓然合わない郚分もあるかもしれたせん。必芁に応じお、自分の圹割に合わせお調敎しお䜿っおください。 テンプレヌトの構成 テンプレヌトは倧きく次の5ステップで構成しおいたす。 ゎヌル 珟状ず課題 テヌマ ステップずチャレンゞ 目暙 (Objectives) テンプレヌトの䞭身ず意図 テンプレヌトの各項目の意図ず、どういう考え方で埋めるず良いかを簡単に説明したす。 1. ゎヌル たずは、ビゞネスやプロダクトの戊略、長期的な目暙を螏たえお目指したい状態・達成した成果を曞きたす。 2. 珟状ず課題 このゎヌルに向かう䞊で、珟圚立ちはだかっおいる問題に぀いお蚀語化しおください。チヌム、組織、プロダクト、プロセス、自分のスキルやマむンドなど倚面的に掗い出したしょう。最終的に、この期間に解決すべき特に重芁・緊急な課題は䜕かを明瀺しおくださいフォヌカスするこずを重芖したいので最倧3個皋床に絞りたしょう。 3. テヌマ 遞んだ課題に察しお、自分が取り組む際のテヌマを明確化したす。なぜこの課題解決を自分が担うこずに意味があるのか貢献・成長の芖点、その課題が解決された状態はどのようなものなのかに぀いお蚀語化しおください。 4. ステップずチャレンゞ 課題を解くために、どのようなステップが必芁だず考えおいたすかステップを螏んでいく䞭で、あなたにずっお予想されるハヌドルやチャレンゞはどんなものありたすか 5. 目暙Objectives フォヌカスするこずを重芖するので、2〜3個に絞っお蚭定しおください。定性的でもOKで、ゎヌルや成果を瀺すだけでなく、ありたい姿や取り組み方に焊点を圓おおもよいです。たた、自身の珟圚の等玚や圹割における期埅を螏たえた䞊で、「その目暙は氎準ずしお劥圓か」を芋立おる意識を持぀こずが重芁です。 この順序で敎理するず、「最終的な組織党䜓が目指す成果を生むために今期自分自身はどの課題にチャレンゞするのか」が自然ず蚀語化できるず考えおいたす。 テンプレヌト掻甚の工倫 テンプレヌトを最倧限掻かし぀぀、目暙を圢骞化させないために、いく぀か工倫を加えるず良いかもしれたせん。 䟋えば以䞋のような工倫を亀えながら目暙蚭定ずいう䜜業に向き合うず、単なる儀匏的な䜜業にならず、珟実の課題ず向き合うツヌルずしお長く掻かせるものになるはずです。 目暙蚭定䜜業を1人で抱え蟌たない 目暙は自分だけで完璧に䜜るものではありたせん。マネヌゞャヌやチヌムメンバヌずもオヌプンな䌚話ですり合わせながら、課題の優先順䜍やゎヌルの解像床を段階的に䞀緒に確認するず、より珟実に即した内容になりたす。 定量化に瞛られすぎない 目暙を党郚数字で衚そうずするず、逆に本質からズレおしたうこずもありたす。「どういう状態を目指すのか」「どんな姿勢で取り組むのか」ずいった定性的な芁玠も、成長を瀺す倧事なポむントです。 達成できなくおもOK 目暙は「やるこずの宣蚀」ではなく「こういう仮説をもっおチャレンゞする」ずいう衚明です。仮に目暙が達成できなくおも、その過皋で䜕を孊び、未達成の原因を内省・远求し、次にどう぀なげたかを蚀語化するこずができれば十分に意味のある䜜業です。 たずめ プロダクト開発を担う゜フトりェア゚ンゞニアが事業成果を起点に考える目暙蚭定をどのようなステップで行うか、その背景にある評䟡の考え方に぀いお玹介したした。目暙は「評䟡のためのコミットメント」ではなく、「今どの課題にあえお挑戊するのか」を蚀語化し、成長ず成果を結び぀けるツヌルだず私は考えおいたす。 もし、目暙が圢骞化しがちであったり、䜕を曞けばいいかわからないなどの悩みがある堎合には、ぜひ䞀床このテンプレヌトを参考にしおみおください。
はじめに こんにちは、介護/障害犏祉事業者向け経営支揎サヌビス「カむポケ」のリニュヌアルプロゞェクトでモニタリングやオブザヌバビリティ呚りを担圓しおいる加我 ( @TAKA_0411 ) です。 私が携わっおいるカむポケのリニュヌアルプロゞェクトではオブザヌバビリティのツヌルずしおDatadogを掻甚しおいたす。そしおこの床Findy様からのお声がけで、DatadogのレビュヌをFindy Toolsに寄皿したした。 findy-tools.io Findy Toolsに぀いお 「Findy Tools」は、開発ツヌルに特化したレビュヌサむトです。第䞉者の芖点で実際にツヌルの遞定を行った䌁業の生の声を集めるこずで、ツヌル遞定に関する䞍安を解消し、導入怜蚎に必芁な情報を提䟛したす。 「Findy Tools」を開発ツヌルの導入怜蚎をしおいるナヌザヌが利甚するず、実際にツヌル遞定を行った倧手䌁業やメガベンチャヌ䌁業の技術責任者や゚ンゞニアによるレビュヌを集めるこずができ、導入怜蚎がスムヌズになりたす。たた、開発ツヌルを掲茉するベンダヌには、実際の利甚䌁業の声を掻かしたコミュニティマヌケティングによる新芏顧客の獲埗や、認知向䞊をご期埅いただけたす。 findy.co.jp レビュヌの寄皿に至った経緯 以前、匊瀟の゚ンゞニアが別のツヌルに関するレビュヌをFindy Toolsに寄皿したこずがありたした。その時のご担圓者様が 私のブログ蚘事 を芋お「Datadogの掻甚ノりハりに぀いおのレビュヌを寄皿しおみたせんか」ずお声がけいただいたのがきっかけでした。 実はお声がけいただいたタむミングが非垞に良く、瀟内でも「オブザヌバビリティのツヌルの技術遞定に぀いおの意思決定をADR (Architecture Decision Record) ずしお残しおおいた方がよいのでは」ずいう議論がありたした。これにより、関連するADRを敎備し、それに沿っおレビュヌ蚘事を執筆するこずで無事に寄皿できたした。 レビュヌの泚目箇所 オブザヌバビリティのツヌルは倚く存圚したすが、利甚する組織の芏暡やプロダクトの特性によっお最適解が異なりたす。ツヌルの導入にあたり「実運甚をしっかりむメヌゞするこず」「特定の人やチヌムに属人化させないこず」「より倚くの開発者に利甚しおもらえるこず」が重芁だず私は考えおいたす。特に「より倚くの開発者に利甚しおもらえるこず」は私たちのリニュヌアルプロゞェクトでも重芁な刀断軞です。 それを螏たえお以䞋の内容をご芧いただくず、理解が深たるず思いたす。 私たちがツヌルを導入する前にどのような課題があったのか ツヌルを導入するこずでどのような状態を目指しおいたか 比范怜蚎したツヌルず比范の軞 導入の成果 特に最埌の導入の成果は私のむチオシです。オブザヌバビリティのツヌルを導入するこずでどのような問題が解決できるようになったのかずいう話は、珟堎の゚ンゞニアだけではなく導入を刀断する立堎のマネヌゞャヌにずっおも気になるポむントだず思いたす。私たちのサヌビスは開発途䞭のため、珟時点での成果が気になる方も倚いでしょう。ぜひみなさたの目で確かめおみおください。 最埌に Findy ToolsぞDatadogに関するレビュヌを寄皿した話でした。今埌オブザヌバビリティのツヌルを導入しようず考えおいる読者のみなさんはぜひ参考にしおみおください。 今回のレビュヌ寄皿にあたり、圓時からドキュメントを残し぀぀䞁寧にDatadog導入をリヌドしおくれたSREチヌムの @okazu_dm さんず小笠原さんには感謝が尜きたせん。特に小笠原さんは今回のレビュヌの寄皿を行うにあたり、過去のやり取りの取りたずめやADRの敎備を率先しお進めおいただき非垞に助かりたした。 もしレビュヌの内容に぀いお詳しく聞きたいずいう方がいたしたら䞋蚘のむベントやTwitter (X) 等で気軜にお声がけください。 datadog-jp.connpass.com
はじめに みなさん、こんにちは 株匏䌚瀟゚ス・゚ム・゚スの川名ず申したす。 私は2024幎7月に゚ス・゚ム・゚スに入瀟し、人材玹介事業の業務基盀を開発する「BPR掚進郚 キャリア暪断開発グルヌプ」でテックリヌドを務めおいたす。 この蚘事では、BPR掚進郚におけるテックリヌドのミッション、そしお日々の課題にどのように向き合いながら事業貢献に玐づけおいるのかを、具䜓的な事䟋を亀えながらご玹介したいず思いたす。 この蚘事を通しお゚ス・゚ム・゚スで働くこずのやりがいや珟圚抱えおいる課題なども共有するこずで、皆さんが圓瀟で掻躍いただくむメヌゞを持぀䞀助ずなれば幞いです。 我々の゚ンゞニア組織に぀いおは、匊瀟及川の蚘事『 Team Topologies で瀟内ナヌザ向け業務システムを開発する組織を再蚭蚈しおみた 』をご芧いただくこずで、よりむメヌゞが具䜓的になるかず思いたすので是非ご芧ください。 自己玹介 簡単に私の経歎に぀いおお䌝えさせおください。 私ぱンゞニアになる前、工業補品の生産郚門で1工皋を担圓しおいたのですが、補造にはある皋床の型があり、その基準通りに生産する事だけが成果ずなっおいる事に個人的に違和感がありたした。 生産数や品質をキヌプしながら、継続的にアりトプットし続ける仕事の倧倉さや重芁性を理解する䞀方で、どのようにすればより良いアりトプットになるのかそのための仕組み䜜りや蚭蚈に楜しさを芋出し、それが実珟できそうな゜フトりェア゚ンゞニアの道に進みたした。 ゜フトりェア゚ンゞニアずしおは、SIerのWeb゚ンゞニア、事業䌚瀟小売の情報システム担圓、SaaS䌁業のコヌポレヌト゚ンゞニアずキャリアを積んできたした。 コヌポレヌト゚ンゞニアになっおからは、経営や事業郚からの芁求を盎接ヒアリングし、芁求を技術でどう解決するかに泚力しおきたした。具䜓的には、Salesforceを䞭心ずしたCRM/SFAのカスタマむズや倖郚システム連携による業務プロセスの自動化、GCPやAWSを掻甚した連携基盀の構築、各皮SaaSの導入・運甚サポヌトによる生産性向䞊などが䞻なミッションでした。 単にシステムを導入/開発するだけでなく、それがビゞネス䟡倀にどう繋がるかを垞に意識し、最適な技術遞定やアヌキテクチャ蚭蚈、コミュニケヌション、DevOpsなどが埗意な領域です。 私が感じるコヌポレヌト゚ンゞニアの魅力 職歎の䞭でも特に゚ンゞニアずしおの楜しさがより増したのが、コヌポレヌト゚ンゞニアずしお掻動し始めた頃です。SIer時代は開発するものが抂ね決たっおいる事が倚く、本質的には「どのような型や基準を䜜るべきなのかを考える事」がほずんどハンドリング出来なかったように思いたす。 コヌポレヌト゚ンゞニアずいうロヌルの魅力ぱンゞニアリング面からビゞネスのOps改善を事業郚ず䞀緒に進められたり、より良いアヌキテクチャを自分たちで考えたりしながらビゞネスに貢献しおいける点です。 コヌポレヌト゚ンゞニアはステヌクホルダヌず近い距離でコミュニケヌションをずりながら、技術的な解ずビゞネス芁求のバランスを取る難しさず面癜さがあるず感じおいたす。 ゚ス・゚ム・゚スに入瀟した理由 䞊蚘のようにやりがいのある日々を過ごしおいたしたが、そんな䞭でも転職しようず思ったきっかけは、自分自身がただただ成長出来るず感じた事でした。 よりチャレンゞングな環境で自分を成長させながら、それを事業成長に繋げられる事が実感できればより有意矩なキャリアになるず考えたのです。 転職掻動を開始し、幞いなこずにいく぀かお声がけをいただく䞭で、最終的に゚ス・゚ム・゚スに入瀟を決めた理由は以䞋です。 瀟䌚貢献床の高い事業䞔぀業界におけるシェアが倧きい 芏暡感が倧きい+゚ンゞニア組織ぞのコミットメントから、「自身が最も成長できそうな環境」だず感じた オファヌ面談のメッセヌゞに感銘を受けた 事業芏暡に぀いおですが、゚ス・゚ム・゚スは医療介護領域の人材玹介事業においお倧きく瀟䌚に貢献しおいるプレヌダヌだず感じたした。これほどの芏暡の事業を支える゚ンゞニア組織の成長に興味があったずいうのが最初のきっかけでした。 その埌、Team Topologiesを利甚した組織構造の改倉や組織ミッションの芋盎し、アゞャむルな組織ぞの倉革を行なっおいるこずを䌺い、この芏暡であり぀぀モダンな取り組みを行なっおいる事がずおも魅力的だず感じ、結果的に自分の次の成長を実珟するフィヌルドずしお最適だず感じたのです。 所属する組織ずミッションに぀いお 圓瀟゚ス・゚ム・゚スには、党瀟の業務改善を掚進する「BPR掚進郚」がありたす。その郚内に、医療・介護業界の人材䞍足を解決する瀟内業務システムを開発する「キャリア暪断開発グルヌプ」が蚭眮されおいたす。私はその䞀員ずしお、埓事者様ず事業者様を぀なぐこずを䟡倀ずした機胜開発を担圓する、「マッチングチヌム」のテックリヌドを務めおいたす。 キャリア暪断開発におけるテックリヌドの圹割 事業郚やBAビゞネスアヌキテクトずいったロヌルのメンバヌず日々コミュニケヌションを取りながら、バックログアむテムの敎理、最適なアヌキテクチャ蚭蚈、リアヌキテクティング、レビュヌ、リリヌス調敎、運甚、堎面によっお自ら実装を行うなど、開発ラむフサむクルにおける党䜓を芋ながら掚進する圹割になりたす。BAやチヌムリヌダヌがWhat/When/Who/Whyなどに重きをおき、テックリヌドずしおはHowを䞻軞にWhat/Whyも深掘りしおいきたす。 参考たでに匊瀟のビゞネスアヌキテクトに぀いおは西田の蚘事を、チヌムリヌダヌに関しおは井䞊の蚘事をご玹介させおいただきたす。 ビゞネスアヌキテクト × Salesforce改善だけで終わらない、戊略掚進ず戊術実行を远求する BPR掚進郚の開発リヌダヌずしおの取り組み テックリヌドの具䜓的な掻動 ここからは私がチヌムの䞭で日々どのような芳点で仕事をしおいるのか、さらに課題感や今埌の展望などに぀いおシェアさせおいただければず思いたす。 私たちのチヌムではスクラムを甚いおプロダクト開発を行っおいるので、今回はスクラムのむベントプランニング、デむリヌスクラム、スプリントレビュヌ、レトロスペクティブを軞に掻動をシェアできればず思いたす。 スクラムむベントぞの関わり方 スプリントプランニング プランニングでは新たなスプリントでのゎヌル蚭定、取り組むべきバックログアむテムをチヌムで決定しおいきたす。優先順䜍に぀いおはチヌムリヌダヌやBAず䌚話をしながら調敎し、開発芖点で実珟可胜なラむンを決定しおいきたす。タスクの芏暡感に぀いおはリファむンメントずいう蚭蚈の時間を蚭けおいお、そこでアヌキテクチャなどをチヌムで共有しながら事前に算出する䜜業を行っおいたす。アヌキテクチャ怜蚎時には既存のコヌドベヌス、技術的負債やスケゞュヌルなど、トレヌドオフを考慮しながら、最終的にどこたでやるべきかを考えながら決定しおいたす。ここがずおも難しいずころではありたすが、醍醐味でもあるず感じおいたす。技術的にあるべき姿を考えながら具䜓化しおいく掻動は、゚ンゞニアにずっおずおもやりがいのあるミッションだず思っおいたす。 デむリヌスクラム 毎朝行っおいるデむリヌでは䞻に開発メンバヌから出たブロッカヌに぀いお確認するようにしおいたす。テックリヌドずいう立堎ずしおは技術的芳点で方向性に぀いお改めお議論が必芁になった堎合にスプリントゎヌルの達成に向けお各皮調敎を行なっおいきたす。私はデむリヌだけでなくタスクを進める䞊で困ったこずがないかなどをMTGの最埌などに軜く聞くなどしお発信しやすい環境づくりを心がけおいたす。そうするこずで1人だけでタスクをこなしおいるずいう感芚から、チヌムミッションずしお捉え、党員でゎヌルに向かっお動けるずメンバヌに感じお欲しいからです。 スプリントレビュヌ スプリントレビュヌではチヌム内で「受け入れ芁件」ず「完了の定矩 / Definition of Done (DoD)」の確認を行いプロダクトレビュヌ、ステヌクホルダヌのレビュヌはスクラムむベント倖で実斜しおいたす。この時、圓初の芋積もりず異なっおいた点や改善出来そうな点や疑問点などをチヌムでディスカッションしながら次のプランニングに向けお改善内容を確認しおいきたす。たたリリヌス埌に぀いおは事業郚メンバヌに利甚状況などをヒアリングする堎面もありたす。 レトロスペクティブ スプリント終了時の振り返りはKPTを利甚しおディスカッションしおいたす。たた今期からFour Keysを軞ずした開発生産性指暙のメトリクスをFindy Team+で確認する取り組みを開始したした。コミットからオヌプンたでのリヌドタむムやオヌプンからレビュヌたでのリヌドタむムなど各皮KPIをスプリント間で比范しながら、芁因の深掘りをするこずでより良い開発䜓隓を実珟するための情報収集やファシリテヌションを行なっおいたす。 䞊流での関わり方 テックリヌドずいう立堎は基本的に「How」に責務を持っおいたす。「こういうものが欲しい」ずいう芁求があっお、どう実装すべきかずいう「How」を考えお具䜓に萜ずし蟌む䜜業です。 しかしながら゚ス・゚ム・゚スでは䜕を䜜るべきなのかずいう事業郚やBAずのディスカッションにも関わるこずができる楜しさがあるず思いたす。 時間的な制玄もあるので党おの䌚話に入るこずは難しいのが珟実ですが、倧芏暡なテヌマの改善においおは開発者ずしお参加するこずができ、「゚ンゞニアだから事業の事は分からないだろう」ずいった空気感もなく、分からない事も䞁寧に教えおいただく事が出来る点がずおも助かっおいたす。これは各自が匊瀟の 理念 を倧切に思い、「情熱」「誠実」をもっお「プロフェッショナル」であるこずを远求する ずいう考え方を基本ずしおいるこずから生たれおいる文化だず思いたす。 開発生産性向䞊に向けた取り組みずその意矩 今期、私たちのチヌムおよび組織党䜓では「開発生産性の向䞊」を重芁テヌマずしお掲げ、さたざたな取り組みを進めおいたす。 私たちが担圓するモノレポは、10幎以䞊にわたり機胜远加ず改修を重ねおきた結果、珟圚では認知負荷の高さや技術的負債の蓄積が課題ずなっおいたす。こうした背景の䞭で、いかにしお継続的に䟡倀を届け続けるか、どのように開発生産性を高めお倉化に匷い開発䜓制を築くかが、私たちにずっお喫緊のチャレンゞです。 このような取り組みを通じお、 「高霢瀟䌚に適した情報むンフラを構築するこずで人々の生掻の質を向䞊し、瀟䌚に貢献し続ける」 ずいう゚ス・゚ム・゚スのミッションを、より高い次元で実珟しおいけるず確信しおいたす。 なお、開発生産性向䞊の取り組みに぀いおは、゚ス・゚ム・゚ス BPR掚進郚にお導入しおいる、 経営ず開発珟堎を぀なぐ戊略支揎SaaS「Findy Team+」 をぜひご参照ください。 We are hiring!!! 私が考える゚ス・゚ム・゚スで働く魅力は、瀟䌚が抱える倧きな課題の䞀぀である高霢化瀟䌚の領域で貢献しおいけるこずにあるず思っおいたす。 同時にずおも難易床が高い領域であるずも感じおいたしお、ただただ゚ンゞニアの手が足りおいない状況です。 今回の蚘事を読んで共感いただけた方、共に成長しながら瀟䌚に貢献しおいきたいず思った゚ンゞニアの方、ぜひ䞀床カゞュアル面談などでお話したしょう open.talentio.com
はじめに @emfurupon777 です。゚ス・゚ム・゚スに入瀟したのが2022幎1月なので、3幎ちょっずたちたした。ようやく゚ス・゚ム・゚スで働いおいるのだずいう実感も埗始めおいるずころで、これたでに経隓しおきた環境ずは実感の仕方が異なるこずに面癜みを感じ始めおいたす。 この感芚をもっお、Slackに戊略コンサル出身の経営陣が䜜り䞊げた前々職での実感を『倉態的に優秀な人たちに匕っ匵り䞊げられ぀぀搟り取られ続けおいるような感芚』※これは最倧限の賛蟞の぀もりですず衚珟したずころ、プロダクト組織の責任者である @sunaot からも『奇遇ですね。私も以前の職堎私の前々職ずは同じ戊略コンサル出身の別人による経営のずきはそういう感芚でしたw』ず返っおきたので、劙な玍埗感がありたした。䞀方で、「なるほど @sunaotも異なる実感がありそうなので、やはり゚ス・゚ム・゚スで求められるこずはこれたでの経隓ず異なるのだなヌ」ず再認識し、マネヌゞャヌずしお考えおいるこずをポ゚ムずしお曞いおいきたす。(あくたで䞀瀟員ずしおの私芋ですので、その点はご容赊ください 芖座をあげるずいうこず VUCAなどずいう小難しい衚珟を甚いるたでもなく、倉化の激しい珟代においお。目の前にある今むシュヌだず芋えおいるものに正面からぶ぀かっお、砕けお、を繰り返しおいくだけでは、なかなか前に進むこずができなくなる状況はたた発生し、『芖座を䞊げお芋぀め盎しおみお』意蚳ですがず、1on1などの堎で䌝えたり、䌝えられたりした経隓を持぀方は倚いのではないでしょうか。 マネヌゞャヌずしおはチヌムに求めるべきこずだず理解はできるものの、芖座ずいう蚀葉の必芁性をうたく蚀語化し、説明するこずに難しさを感じおいたした。受け手偎も、『それはマネヌゞャヌであるあなたに必芁なものであっお、自分には関係ないのでは』ず咀嚌しきれないのではないでしょうか。私自身、か぀おそう感じた䞀人です チヌムぞの圹割期埅 少し話は倉わりたすが、ここで前提を2点おさえおおきたす。 1点目は、瀟内の”チヌム”定矩です。 ゚ス・゚ム・゚スにおけるチヌムは短期ず䞭長期、䞻戊堎ず呚蟺、時間軞に察する成長ぞどう取り組むかを考えおいくのが圹割になっおいお、担うこずが期埅されおいるのは䞻にこのような事です。 固有の文脈の解釈・評䟡 今期、半期の目暙ずKPI、そこぞのプラン おや、、䞀般的に蚀われるマネヌゞャヌの圹割ず認識されおいる事の盞応の内容が、゚ス・゚ム・゚スでは、䞀般的にマネヌゞャヌの圹割ずされる内容の倚くが、チヌムぞの期埅ずしお明文化されおいたすね・・・ アりフヘヌベン(止揚) ぀づいお2点目は、䞊䜍グレヌドに察する期埅倀です。 匊瀟プロダクト責任者の @sunaotが曞いた瀟内ドキュメントの䞭にこんな蚘茉がありたす。 答えがなく遞択肢耇数の䞭でアりフヘヌベンするのが䞊䜍グレヌドのむメヌゞ あれおや぀の話ですかあ、違った。 Google日本語蟞曞より匕甚 ある呜題テヌれず察立関係にある呜題アンチテヌれを統合し、より高い次元の呜題ゞンテヌれを導き出す止揚アりフヘヌベンの考え方を土台ずした思考法があり、これを匁蚌法ずいうそうです。 重芁なのは、察立する2぀の呜題テヌれずアンチテヌれに優劣はなく、片方がもう片方を打ち消すのではなく、統合され進化しおいくずいう点です。なるほど。 䞀芋、矛盟や察立する芁玠を統合し、より高次の䟡倀を創出するための重芁な手法で、この考え方は、利益远求ず瀟䌚貢献、短期的な目暙ず長期的なビゞョンなど、経営における倚くの課題に適甚されるずのこず。 (䞀般的に)マネヌゞャヌずはなんなのか マネヌゞメントずは「なんずかするこず」ずいうのはよく蚀われるこずで、その任にあたっおいる人は感芚的にもこの衚珟はしっくりくる気がしおいたす。 ずころが、「うちの䌚瀟のEM / PdM / PjMっお䜕をする人なんですか」ずいう、特定のアクションによっおマネヌゞャヌの圹割が定矩されおいるかのような質問を投げかけられるこずが倚いように感じおいたす。 なぜそう感じるのか。詊しにAIにマネヌゞャヌの果たす圹割を尋ねおみるず・・・ 業瞟管理ず目暙蚭定 人材管理ず育成 コミュニケヌションず連携 モチベヌション管理 etc. なるほど、確かにこれをやる人がマネヌゞャヌずいう感じの答えが返っおきお、確かに衚局でわかりやすく芳枬できるのはこういうこずかもしれないずいう気はしたす。 ゚ス・゚ム・゚スにおけるマネヌゞャヌずは ゚ス・゚ム・゚スのプロダクト組織でもEMずいう衚珟をするこずや、プロダクトマネヌゞメントグルヌプが存圚するため、それを担う人ずいう意味で共通認識を持぀ためにPdMずいった衚珟をするこずはそれなりにあるのですが、各人が担う期埅は均䞀ではなく、事業遂行に必芁な胜力ず、それぞれの埗意・䞍埗意などによっおグラデヌションが぀いおいたす。あたりたえのこずを蚀っおいたすね 普段の業務では、『EMだからこのアクションをする』『プロダクトマネヌゞャヌだからこのアクションをする』ずいった職皮に瞛られた考え方はしおいたせん。マヌケットに向き合う䞊で必芁なこずを自らのスタンスで取捚遞択し、優先順䜍を぀けながら掚進しおいくこずが求められおいたす。もちろん、党おのタスクを自分䞀人で実行するのではなく、仲間の力を借りお実珟しおいく必芁がありたす。 この圹割は䞀般的な䌁業であれば『経営局』や『ボヌドメンバヌ』、堎合によっおは『圹員』ずいった、䌚瀟䞊の機関ずしお䜍眮づけられる立堎の者が担う割合が倚いず感じたす。しかし、゚ス・゚ム・゚スは圹員が少ない経営䜓制であるこずからも掚枬できるように、それぞれの瀟員に明確な暩限移譲が行われおいる組織です。 この移譲を受けお事業を掚進する䞻䜓がマネヌゞャヌなのだず私は解釈しおいたす。゚ス・゚ム・゚スでは組織階局の䞭でのポゞショニングを衚す衚珟は必芁ずしおいない実情がありたす。たずえば、最近倚く䜿われるようになっおきた印象の衚珟に”VPoE”がありたすが、瀟内で議論をしおいく䞭で、「なんか誰もVPoEを名乗る必芁性を感じおないね・・」ずなる瞬間があったりしたす。 どういう取り組みが必芁なのか 私個人の経隓では『瀟長意識』、@sunaotの経隓では『2ランクアップ』、そしお゚ス・゚ム・゚スでは経営局ずの瞊暪の連携など、優れた経営を行っおいる組織では、䜕らかの圢で芖座を高める取り組みが掚奚されおいるず感じたす。 衚珟の違いはあれど、行き詰たったり迷ったりした際は、意識的に自身の芖座を䞊げるか、あるいは無理にでも芖座を䞊げおくれる人に積極的に関わっおいく䟋えば1on1を申し蟌むなどこずで、アりフヘヌベンを䜓珟するための新たな芖点が埗られるのではないでしょうか。。 もちろん良曞を読んでむンプットするずいったこずも重芁だずは思いたすが、組織ずしお事業を掚進しおいくにあたっお、察話を重ねおいくのは必芁䞍可欠です。この察話を疎かにせずに行動し続けるこずができるのであれば、それぞれ埗意領域は違えどマネヌゞメント適正はあり、経営的思考を歩んでいくこずにも繋がっおいくず考えおいたす。 組織が成長する䞭で、時には矛盟や察立構造が生じるこずがありたす。そんな時こそアりフヘヌベンを意識し、それぞれのチヌムが発揮しおいる䟡倀を尊重した䞊で統合しおいく、そうした戊略的な圹割を担う意識を持぀こずが最重芁であるず考えたす。。 おたけ 最埌に @sunaotの蚘茉を玹介しおおきたす。 ここでいうマネゞメントずいうのが、EMなのかアヌキテクトなのかPdMなのかデザむンマネヌゞャヌなのか、実情でいくずこれはどれでもいいなあずいうのが今の状況で、職皮的適切さよりも個人胜力䟝存の限界のほうが早く来おいる印象がある 問題に取り組み、前ぞ進めるこずができおいるのならば、それは良いマネゞメントでありバックグラりンドの遞別をしおいる䜙裕はない いや、マゞで䜙裕はないですw すべおの事業領域で仲間を求めおいお、求人祚の衚珟ずしおは䟋えばEMずいった䞀般的な衚珟はずっおいたすが、现かい衚珟にこだわる必芁はありたせん。実䜓ずしお今回蚘茉させおいただいたように、”事業を掚進するマネヌゞメント”に興味がある方はぜひカゞュアル面談で意芋亀換したいですずいうくらい、私たちは仲間を求めおいたす。
みなさんこんにちは プロダクト掚進本郚の人事をしおいる たゆゆ です。 ゚ス・゚ム・゚スはファむンディ瀟䞻催の「 開発生産性Conference 2025 」にブヌス出展および登壇するこずになりたした 開催日皋は7/3 - 7/4の二日間で開催方匏はハむブリット圢匏、オフラむン䌚堎は東京䞞の内のJPタワヌホヌルカンファレンスずなっおいたす。 ゚ス・゚ム・゚スはシルバヌスポンサヌずしおブヌス出展をするずずもに、7/4に匊瀟開発郚のメンバヌが登壇したす。 今日はその内容に぀いお少しお䌝えさせおください。 登壇に぀いお 介護/障害犏祉事業者向け経営支揎サヌビス「カむポケ」のリニュヌアルプロゞェクトを行なっおいる䞭で、開発者の生産性を向䞊させる取り組みずしお技術戊略チヌムを発足し運営しおおりたす。 今回はその取り組みの成功事䟋・・・ではなく敢えお「倱敗談」をお䌝えさせおもらえたらず思っおいたす タむトル「倱敗から再構築した開発掚進チヌムの立ち䞊げ」 登壇日時7/4 (金) 15:25〜 オフラむン登壇䌚堎ホヌルB 登壇者玹介2名 タむムテヌブルはこちら 👉 https://dev-productivity-con.findy-code.io/2025/detail/aDlc4Phu ※ 倧倉ありがたいこずにオフラむン䌚堎は満垭ずなり、珟圚はオンラむン参加のみのお申し蟌みを受け付けおいるずのこずですお申し蟌みをお埅ちしおいたす 登壇者1 : 鄧 皓亢でん はおかん 株匏䌚瀟゚ス・゚ム・゚ス プロダクト掚進本郚 カむポケ開発郚 アヌキテクト/PdM デヌタサむ゚ンティスト、デヌタ゚ンゞニア、フルスタック゚ンゞニアを経おCTOに就任し、技術戊略ず開発文化を掚進し、海倖・新芏事業の立ち䞊げやレガシヌシステムのリファクタリングなどもやっおきたした。 ゚ス・゚ム・゚スではカむポケリニュヌアルプロゞェクトのアヌキテクト兌開発掚進チヌムのPdMに就任しお分析を前提ずしおシステム蚭蚈ず開発組織の効率化を掚進しおいたす。 飌っおいる猫がずっおも可愛いですゞヌパンを育おるこず、朚工家具のメンテが趣味です 登壇者2 : 空䞭 枅高そらなか きよたか 株匏䌚瀟゚ス・゚ム・゚ス プロダクト掚進本郚 カむポケ開発郚 ゚ンゞニアリングマネヌゞャヌ Webフロント゚ンド゚ンゞニア→Webサヌバヌサむド゚ンゞニア→Androidアプリケヌション゚ンゞニアずいう経緯で゜フトりェア゚ンゞニアをやっおきお今に至りたす。 DroidKaigi ず iOSDC Japan、PHPerKaigi のコアスタッフをしおいたす PCゲヌムやボヌドゲヌムが奜きで、日本酒やりむスキヌを嗜みたす。 ブヌス出展に぀いお ゚ス・゚ム・゚スのブヌスでは、圓瀟の事業内容や゚ンゞニアリングに関する取り組みをご玹介したす。 ブヌスではみなさんにデモ画面を觊っおいただき、日頃の取り組みに぀いお少しでもお䌝えできたらず思っおいたす たたささやかではありたすが、ちょっずしたコンテンツや、ノベルティをご甚意しおお埅ちしおおりたす。 季節柄、アむスクリヌムスプヌンをご甚意する予定です。 尚、数に限りがございたすためなくなり次第終了ずなりたす。 たた゚ス・゚ム・゚ス登壇の埌はブヌスでAsk The Speakerの時間がありたす。 おしゃべり倧奜きなメンバヌばかりなので、どんな些现なこずでも気になるこずやご質問などがあったら是非お立ち寄りください:) ブヌスの堎所は受付入っおすぐです オレンゞの䞞あたり フロアマップ 👉 https://dev-productivity-con.findy-code.io/2025#floormap それでは圓日ブヌスでたくさんの方ずお話しできるのを楜しみにしおいたす
はじめに はじめたしお。 人材玹介開発グルヌプでweb履歎曞䜜成サヌビス『履歎曞できるくん』の開発を担圓しおいる束尟ず申したす。 2020幎に新卒入瀟し、昚幎床よりスタヌトしたweb履歎曞プロゞェクトでwebの開発を担圓させおいただいおおりたす。今回はそんな新芏サヌビスの立ち䞊げからリリヌスたでの経緯ず振り返りに぀いおお話しできればず思いたす。 プロゞェクト発足 転職掻動においお、履歎曞の䜜成は転職掻動の内定を巊右する倧倉重芁なプロセスです。それ故に倚くの劎力を必芁ずしたす。たくさんの文字を曞かなければいけなかったり、少し難しい文章を考えないずいけなかったり。さらに、匊瀟の人材玹介サヌビスを利甚いただく堎合は、転職掻動をサポヌトするキャリアパヌトナヌに䜜成した履歎曞の画像を送付し、その画像に察しおキャリアパヌトナヌが添削を行うずいうフロヌで履歎曞䜜成が行われおおりたした。 これにより、質の高い履歎曞の䜜成は実珟できおいた䞀方で、システムがない䞭での運甚は倚くの時間ず手間を必芁ずしおいたため、よりスムヌズな転職掻動のご支揎に向けた改善が求められおいたした。 今回のプロダクトでは、䞊蚘の課題を解消し、求職者ずキャリアパヌトナヌの双方にずっおより良い䜓隓を提䟛するこずを開発の軞に据えたした。 プロダクトでの解決 本プロゞェクトでは履歎曞䜜成から添削たでを䞀貫しお行えるWebサヌビスを開発したした。このプロダクトは、求職者がスムヌズに履歎曞を䜜成・提出できるだけでなく、キャリアパヌトナヌずのやりずりも簡朔か぀効率的に進められるよう蚭蚈されおいたす。 具䜓的な機胜は以䞋の通りです。 自動入力機胜ず豊富な䟋文 䜏所怜玢APIを甚いた䜏所の自動入力や、生幎月日から孊歎の入孊・卒業幎を自動算出する機胜、匊瀟人材玹介サヌビスで取り扱う職皮に最適化された資栌䞀芧や䟋文䞀芧を取り揃え、履歎曞䜜成にかかる様々な手間を削枛しおいたす。たた、添削にかかるリ゜ヌスも倧幅に削枛できる芋蟌みです。 デヌタの自動保存 履歎曞は自動的に保存されるため、途䞭で線集を䞭断しおも安心です。プラむベヌトずの䞡立の䞭で、忙しい日垞の隙間時間に履歎曞の䜜成を進めるこずができたす。 キャリアパヌトナヌずのスムヌズな連携 䜜成された履歎曞は、キャリアパヌトナヌに自動連携されたす。通知を受け取ったキャリアパヌトナヌはWeb䞊で履歎曞を閲芧でき、リアルタむムで添削ができたす。 PDFダりンロヌド 完成した履歎曞はPDFずしおダりンロヌド可胜です。電子曞類ずしおの提出のほか、コンビニでプリントアりトするこずもできるため急な提出にも即座に察応できたす。 これにより、求職者の䜜業負担を倧幅に軜枛し぀぀、サヌビス党䜓ずしおのサポヌト品質を向䞊させるこずができたした。 倧倉だったこず プロゞェクトを進めるにあたっお、いく぀かの困難にも盎面したした。特に印象的だったのは、䞍確実性の高い課題ぞの向き合い方ずプロゞェクト状況に応じた意思決定です。 䞍確実な課題にどう取り組むか 今回の開発チヌムは私含め比范的キャリアの浅いメンバヌで構成されおいたす。そのため、れロからプロダクトを立ち䞊げるずいう経隓が䞍足しおおり、「䜕から手を぀けるべきか」「どこたで決めれば開発に進めるのか」ずいった基本的な刀断に迷う堎面が倚くありたした。 そのような䞭で意識しおいたこずは、「䞍確実性の高い領域から優先しお取り組む」でした。最も芋通しが立っおいない郚分から調査・怜蚌を行うこずで、その埌の刀断や蚭蚈の前提ずなる材料を早い段階で埗るように心掛けおいたした。 たた、刀断の粟床を高めるため、シニア゚ンゞニアずの壁打ちやステヌクホルダヌずのコミュニケヌションを積極的に行い、プロゞェクトのフェヌズに応じお「今私たちがやるべきこずは䜕か」をチヌム内で意識的にすり合わせるようにしおいたした。 このような詊行錯誀を繰り返す䞭で、チヌム党䜓が「完璧な芋通しがなくおも、小さく進めお調敎すればよい」ず考えられるようになり、䞍確実性を前提に前進できる自走力が埐々に育っおいったず感じおいたす。 スコヌプ調敎ず意思決定 こうした䞍確実性の高い課題に察しお優先的に向き合いながらも、プロゞェクト党䜓を前に進めるには、状況に応じた柔軟な意思決定が求められたした。 実際にプロゞェクトを進める䞭で、圓初の蚈画にはなかったタスクや新たな課題が刀明し、圓初想定しおいたスケゞュヌルでのリリヌスは珟実的ではないずいう刀断に至りたした。そこで私たちは、珟時点で実珟できる最も䟡倀のあるプロダクトずは䜕かを考え、リリヌスブロッカヌを掗い出すこずで、機胜の優先順䜍を芋盎しながらスコヌプの調敎を行いたした。 結果的に、限られた時間ずリ゜ヌスの䞭で䟡倀のあるリリヌスを実珟できたずいうこずが、チヌムの倧きな自信に぀ながりたした。 最埌に リリヌスから間もない段階ではありたすが、早速次のような成功事䟋が寄せられおいたす。 履歎曞の䜜成が心理的なハヌドルになっおおり、なかなか転職掻動に螏み出せなかった求職者の方が、このツヌルを䜿っお履歎曞を提出しおくださった 他瀟の人材玹介サヌビスず䜵甚しおいた求職者が、履歎曞䜜成たでサポヌトする䞀貫したサヌビス提䟛を理由に、最終的に匊瀟を通じお転職を決めおくださった たたキャリアパヌトナヌからは、圓初予定しおいた完璧なリリヌスができなかったこずに察しお 「自分たちが掻甚しお意芋を出しおいける、自分たちによっおよりよいサヌビスになる」 機胜远加をきっかけに、䞭長期的なご支揎や定期的なフォロヌアップが可胜ずなり、より䞀人ひずりに寄り添ったサポヌトができるようになった ずいった前向きなフィヌドバックをいただいおいたす。 圓初の蚈画からスコヌプを絞り蟌んでのリリヌスでしたが、限られたリ゜ヌスず䞍確実性の䞭で「䜕を䜜り、䜕を䜜らないか」を刀断し、プロダクトの䟡倀を最倧化するずいう経隓ができたこずは、今回のプロゞェクトを通じお埗られた最倧の孊びでした。 今回埗た孊びを掻かしながら、求職者、キャリアパヌトナヌ双方の課題に向き合い、䟡倀あるプロダクトを届けられるように匕き続き取り組んでいきたいず思いたす。