[{"data":1,"prerenderedAt":335},["ShallowReactive",2],{"recruit-jobs":3,"recruit-articles-all-1":157,"recruit-articles-categories":265,"recruit-article-entry-306":277},{"list":4,"categories":146},[5,13,18,23,28,33,41,46,51,56,61,66,71,76,81,86,91,96,101,106,111,116,121,126,131,136,141],{"topics_id":6,"contents_type":7,"contents_type_nm":8,"name":9,"text":10,"url":11,"is_top":12},64,18,"新卒","WEBエンジニア職","事業・サービス・社内業務効率化に関わるプロダクト開発、システム開発、アプリ開発などDX推進を担当。","https://public.n-ats.hrmos.co/rizapgroup/jobs/2126894917723471872",true,{"topics_id":14,"contents_type":7,"contents_type_nm":8,"name":15,"text":16,"url":17,"is_top":12},65,"データサイエンティスト職","事業・サービスに関わるビッグデータに対して、横断的にデータ分析基盤を構築し、新しい提供価値を創造。","https://public.n-ats.hrmos.co/rizapgroup/jobs/2171814626636591104",{"topics_id":19,"contents_type":7,"contents_type_nm":8,"name":20,"text":21,"url":22,"is_top":12},66,"業務自動化エンジニア職","様々な業態・業務プロセスにおける、自動化や仕組み化の導入・開発を推進。","https://public.n-ats.hrmos.co/rizapgroup/jobs/2126896559415881728",{"topics_id":24,"contents_type":7,"contents_type_nm":8,"name":25,"text":26,"url":27,"is_top":12},67,"IoTエンジニア職","IoT事業の拡大に向け、ハード・ソフト両軸で新しい体験価値を創造。","https://public.n-ats.hrmos.co/rizapgroup/jobs/2156228450968444928",{"topics_id":29,"contents_type":7,"contents_type_nm":8,"name":30,"text":31,"url":32,"is_top":12},68,"セキュリティエンジニア職","従業員の働きやすさを支える、業務システムとITインフラの構築・管理。","https://public.n-ats.hrmos.co/rizapgroup/jobs/2179029856766332928",{"topics_id":34,"contents_type":35,"contents_type_nm":36,"name":37,"text":38,"url":39,"is_top":40},69,21,"中途","開発PM","Webサービスやモバイルアプリの要件定義・設計から開発チームのマネジメント、進捗・品質管理、定量定性分析による改善を担う。","https://hrmos.co/pages/rizapgroup/jobs/000003",false,{"topics_id":42,"contents_type":35,"contents_type_nm":36,"name":43,"text":44,"url":45,"is_top":40},70,"Webディレクター","WebページのディレクションからCMS運用、KPI設計・ABテスト・PDCAサイクルによるサイトグロースまで、幅広くWeb制作の進行を担う。","https://hrmos.co/pages/rizapgroup/jobs/000007",{"topics_id":47,"contents_type":35,"contents_type_nm":36,"name":48,"text":49,"url":50,"is_top":12},71,"シニアプロダクトマネージャー","アプリ・店舗IoT・タブレット等の複数プロダクト戦略策定から要件定義・UX設計・効果検証まで、経営層と連携しながら一貫してプロダクト開発を主導。","https://hrmos.co/pages/rizapgroup/jobs/000010",{"topics_id":52,"contents_type":35,"contents_type_nm":36,"name":53,"text":54,"url":55,"is_top":12},72,"IoTサーバーエンジニア(オープンポジション)","店舗デバイスのデータ収集・遠隔制御基盤からアルゴリズム、外部ベンダー管理まで幅広く担当。既存システム連携や新価値提案を通じ、デバイス活用の仕組み作りを担う。","https://hrmos.co/pages/rizapgroup/jobs/000015",{"topics_id":57,"contents_type":35,"contents_type_nm":36,"name":58,"text":59,"url":60,"is_top":40},73,"店舗IoT／ハードウェア企画・プロダクトマネージャー","グループ独自のサービスやシステムの企画、要件定義、開発管理を担う。PoCによる仮説検証を行うほか、外部ベンダー管理を含むプロジェクト全体の推進を行う。","https://hrmos.co/pages/rizapgroup/jobs/000019",{"topics_id":62,"contents_type":35,"contents_type_nm":36,"name":63,"text":64,"url":65,"is_top":40},74,"モバイルアプリエンジニア(Android)","Kotlinを用いたAndroidアプリの企画・設計・開発・運用を担当。PdM・デザイナー・バックエンドエンジニアと連携したチーム開発でサービス品質向上を推進する。","https://hrmos.co/pages/rizapgroup/jobs/000025",{"topics_id":67,"contents_type":35,"contents_type_nm":36,"name":68,"text":69,"url":70,"is_top":40},75,"データアナリスト","SQLや機械学習を活用し、サービスの新規開発・改善を支援する。KPI定義・可視化・データ分析基盤の構築を担当。","https://hrmos.co/pages/rizapgroup/jobs/000042",{"topics_id":72,"contents_type":35,"contents_type_nm":36,"name":73,"text":74,"url":75,"is_top":40},76,"Webデザイナー","WebサービスやアプリのUI/UXからLP・バナー等の広告クリエイティブ制作など、デジタル+リアルの顧客接点を意識したデザイン業務を担う。","https://hrmos.co/pages/rizapgroup/jobs/000061",{"topics_id":77,"contents_type":35,"contents_type_nm":36,"name":78,"text":79,"url":80,"is_top":40},77,"プロジェクトマネージャー・プロジェクトリーダー","RIZAPグループ全社のDX推進として、清掃管理システムやCTI/CRMリプレイス等のシステム導入プロジェクトを要件定義からリリースまで一貫してマネジメントする。","https://hrmos.co/pages/rizapgroup/jobs/100008",{"topics_id":82,"contents_type":35,"contents_type_nm":36,"name":83,"text":84,"url":85,"is_top":40},78,"Webディレクター（マネージャー候補）","WebディレクションやサイトグロースのPDCA推進に加え、ディレクター育成・目標設定・評価・アーキテクチャ選定など組織マネジメント全般を担うリーダー職。","https://hrmos.co/pages/rizapgroup/jobs/1971790520045400071",{"topics_id":87,"contents_type":35,"contents_type_nm":36,"name":88,"text":89,"url":90,"is_top":40},79,"開発PM（マネージャー候補）","Webサービス・モバイルアプリの開発方針策定からPMチームの育成・評価・組織運営まで担い、経営層・外部パートナーと連携しながらプロダクト開発を統括する。","https://hrmos.co/pages/rizapgroup/jobs/1971790520045400072",{"topics_id":92,"contents_type":35,"contents_type_nm":36,"name":93,"text":94,"url":95,"is_top":40},80,"DX戦略推進マネージャー","経営・事業戦略フェーズから参画し、AI/RPA活用を前提とした業務プロセス改革・システム要件定義・開発ディレクション・ステークホルダー調整を横断的に主導。","https://hrmos.co/pages/rizapgroup/jobs/1971790520045400083",{"topics_id":97,"contents_type":35,"contents_type_nm":36,"name":98,"text":99,"url":100,"is_top":40},81,"PL／PM","システム構築プロジェクトにおいて、進捗・課題・コスト管理から外部ベンダー交渉・社内調整まで幅広くプロジェクトのマネジメントを担う。","https://hrmos.co/pages/rizapgroup/jobs/1971790520045400102",{"topics_id":102,"contents_type":35,"contents_type_nm":36,"name":103,"text":104,"url":105,"is_top":40},82,"社内SE／インフラ・ネットワークアーキテクト","社内インフラ・ネットワークの要件定義・設計・リリースから基幹システムのリプレイス検討・保守運用改善まで、グループ全体の社内ITを包括的に担当。","https://hrmos.co/pages/rizapgroup/jobs/1971790520045400103",{"topics_id":107,"contents_type":35,"contents_type_nm":36,"name":108,"text":109,"url":110,"is_top":40},83,"電気エンジニア(オープンポジション)","店舗設置IoT機器の回路・基板設計・試作・評価・検証を行い、パートナーとの生産立ち上げや外部開発ベンダーのマネジメントまで手掛けるハードウェア開発職。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341962",{"topics_id":112,"contents_type":35,"contents_type_nm":36,"name":113,"text":114,"url":115,"is_top":40},84,"業務アプリケーション開発エンジニア・アーキテクト","クラウドを活用したRIZAPグループ各社の社内業務アプリを内製開発・運用し、現場ヒアリングから要件定義・自動化・効率化の実装まで一貫して担う。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341966",{"topics_id":117,"contents_type":35,"contents_type_nm":36,"name":118,"text":119,"url":120,"is_top":40},85,"組み込みエンジニア(オープンポジション)","センサーや無線通信を用いたIoT機器のファームウェア設計・実装・検証とセンサーデータ分析・制御アルゴリズム開発を担い、外部ベンダー共同開発も管理する。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341969",{"topics_id":122,"contents_type":35,"contents_type_nm":36,"name":123,"text":124,"url":125,"is_top":40},86,"機構エンジニア(オープンポジション)","店舗設置機器の機構部PoC・設計・試作・評価から樹脂成型・板金部品の量産化まで担い、生産パートナーと協力して製造立ち上げを主導するエンジニア職。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341970",{"topics_id":127,"contents_type":35,"contents_type_nm":36,"name":128,"text":129,"url":130,"is_top":40},87,"ハードウェア品質管理","既存マシンの品質課題解析や対策立案から、新デバイスの性能・信頼性評価、品質データ分析・工程管理まで一貫して担い、ハードウェアの品質保証と改善提案をリードする。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341973",{"topics_id":132,"contents_type":35,"contents_type_nm":36,"name":133,"text":134,"url":135,"is_top":40},88,"AI・データユニット（20代の第二新卒～ミドルクラス）","多角的な事業から得られる膨大なデータを活用し、ビジネスインパクトを最大化するためのデータ基盤構築およびAIソリューションの開発を担う。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341987",{"topics_id":137,"contents_type":35,"contents_type_nm":36,"name":138,"text":139,"url":140,"is_top":40},89,"修理工程プロセスエンジニア・現場監督","新規修理工程の立ち上げ・レイアウト設計・設備選定からSOP作成・進捗/品質/コスト管理・現場作業員の安全衛生監督まで一貫して担う製造現場リーダー職。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341990",{"topics_id":142,"contents_type":35,"contents_type_nm":36,"name":143,"text":144,"url":145,"is_top":40},90,"修理現場リーダー・作業員監督","新規修理工程にて、現場の労務・シフト管理や技術指導、進捗管理を一貫して担当。現場の課題を吸い上げ、プロセス改善や品質向上に向けた提案までを担う。","https://hrmos.co/pages/rizapgroup/jobs/2110665929241341991",[147,151,154],{"label":148,"value":149,"to":150},"すべて","all","/recruit/jobs",{"label":8,"value":152,"to":153},"18","/recruit/jobs/categories/18",{"label":36,"value":155,"to":156},"21","/recruit/jobs/categories/21",{"articles":158,"totalPageCnt":264},[159,170,180,187,197,202,210,216,222,228,233,238,243,253,258],{"to":160,"image":161,"date":162,"label":163,"title":164,"tags":165},"/recruit/articles/entries/199","https://rizap-tech.g.kuroco-img.app/v=1775010931/files/user/recruit/contents/thumbnail/n5cfaf3e31c72_73e97bd445fe0dfcbf6bbcdef8acc1f4.png","2026.02.05","技術・カンファレンス","AIエージェント時代を見据えた認証認可の未来 ─ Authlete Meetup 2025 参加レポート",[166,167,168,169],"イベントレポート","カンファレンス","Authlete","エンジニア",{"to":171,"image":172,"date":173,"label":174,"title":175,"tags":176},"/recruit/articles/entries/200","https://rizap-tech.g.kuroco-img.app/v=1775010935/files/user/recruit/contents/thumbnail/n9a33f80f8704_7728e1500e7c81f2e18fbd5accede9a9.jpeg","2026.01.19","インターン・採用","【RIZAPテクノロジーズ】27年卒向け　第9回3Daysエンジニアインターンを開催しました！",[169,177,178,179],"開発","新卒採用","インターン",{"to":181,"image":182,"date":183,"label":163,"title":184,"tags":185},"/recruit/articles/entries/201","https://rizap-tech.g.kuroco-img.app/v=1775010937/files/user/recruit/contents/thumbnail/n24f5b9c49390_6873514f9cb987e31f21d908e7882fc4.png","2026.01.08","RIZAPオフィスでProgateハッカソンを開催しました！",[178,186],"ハッカソン",{"to":188,"image":189,"date":190,"label":191,"title":192,"tags":193},"/recruit/articles/entries/203","https://rizap-tech.g.kuroco-img.app/v=1775010930/files/user/recruit/contents/thumbnail/n2f795844f152_90197213ae57cefa5c5b5bbfb90cc914.png","2025.12.26","インタビュー","内定者が聞く、RIZAPテクノロジーズ IoT統括部のリアル【後編】",[194,195,196],"社員インタビュー","IoT","仕事のリアル",{"to":198,"image":199,"date":190,"label":191,"title":200,"tags":201},"/recruit/articles/entries/202","https://rizap-tech.g.kuroco-img.app/v=1775010933/files/user/recruit/contents/thumbnail/n8a11235fd931_b14a9ca709c1ead3e54b9d46c46b3d4f.png","内定者が聞く、RIZAPテクノロジーズ IoT統括部のリアル【前編】",[194,195,196],{"to":203,"image":204,"date":205,"label":163,"title":206,"tags":207},"/recruit/articles/entries/204","https://rizap-tech.g.kuroco-img.app/v=1775010959/files/user/recruit/contents/thumbnail/ne6d110c0bec0_9577421efba8a564c17a6f9862c51c48.jpeg","2025.12.23","YAPC::Fukuoka 2025カンファレンスレポート【各講演の学び】",[166,167,169,208,209],"SRE","YAPC",{"to":211,"image":212,"date":213,"label":174,"title":214,"tags":215},"/recruit/articles/entries/205","https://rizap-tech.g.kuroco-img.app/v=1775010934/files/user/recruit/contents/thumbnail/n8ba7168ba394_0aa90eced3923259150a7e78b770d871.jpeg","2025.12.19","【RIZAPテクノロジーズ】27年卒向け　第8回3Daysエンジニアインターンを開催しました！",[169,177,178,179],{"to":217,"image":218,"date":219,"label":163,"title":220,"tags":221},"/recruit/articles/entries/206","https://rizap-tech.g.kuroco-img.app/v=1775010948/files/user/recruit/contents/thumbnail/n1843939c3a3c_8f61cafb8ad4218a615ec0751333945e.jpeg","2025.12.11","58ハッカソンにメンターとして参加しました！",[169,186,166],{"to":223,"image":224,"date":225,"label":191,"title":226,"tags":227},"/recruit/articles/entries/210","https://rizap-tech.g.kuroco-img.app/v=1775010930/files/user/recruit/contents/thumbnail/n3d479ba02fcc_c19c70a9c2415f376a3d6b83fce5a8b3.png","2025.12.04","未経験からバックエンドエンジニアに！　若手社員が語る、個人のスキルだけではいけない理由",[194,178,169,177],{"to":229,"image":230,"date":225,"label":191,"title":231,"tags":232},"/recruit/articles/entries/209","https://rizap-tech.g.kuroco-img.app/v=1775010952/files/user/recruit/contents/thumbnail/nb1b9e76e120b_df4b3f13b243d61bc3d303a0491524b7.png","エンジニアの力で社内の業務を自動化！　“to 社内向け”の仕事とは？",[194,169,178,196],{"to":234,"image":235,"date":225,"label":191,"title":236,"tags":237},"/recruit/articles/entries/208","https://rizap-tech.g.kuroco-img.app/v=1775010949/files/user/recruit/contents/thumbnail/n310208834a85_5857b502c7e40d1ce19340d831671b68.png","データアナリストとして成長途中のRIZAPを支える！　データを使った影響力のあるしごと",[194,178,196],{"to":239,"image":240,"date":225,"label":191,"title":241,"tags":242},"/recruit/articles/entries/207","https://rizap-tech.g.kuroco-img.app/v=1775010943/files/user/recruit/contents/thumbnail/n588feaae4af0_2ebd47200eaaa8ae0324c4b5d50428fe.png","デジタル化に留まらないDXを。 “攻め” の情報システム部とは？【内定者が若手社員に聞く！】",[194,178,196],{"to":244,"image":245,"date":246,"label":163,"title":247,"tags":248},"/recruit/articles/entries/213","https://rizap-tech.g.kuroco-img.app/v=1775010957/files/user/recruit/contents/thumbnail/ndbe0ad4c3c3b_881fecd27c29077dd8e3601cce3d06fc.jpeg","2025.12.03","Vue Fes Japan 2025 に登壇しました！",[166,167,249,250,251,169,252],"vue","nuxt","chocoZAP","登壇",{"to":254,"image":255,"date":246,"label":163,"title":256,"tags":257},"/recruit/articles/entries/212","https://rizap-tech.g.kuroco-img.app/v=1775010954/files/user/recruit/contents/thumbnail/nc0b63b0ba413_80f5027c4e0c8dc5adcdb46227fef03d.jpeg","Vue Fes Japan 2025  参加レポート",[166,167,249,250,169],{"to":259,"image":260,"date":246,"label":163,"title":261,"tags":262},"/recruit/articles/entries/211","https://rizap-tech.g.kuroco-img.app/v=1775010932/files/user/recruit/contents/thumbnail/n05f3262fccc7_bbdfb906499373c3a143a2b88638f2dd.jpeg","chocoZAPがRuby biz Grand prix 2025 大賞を受賞",[166,263,169,251,252],"Ruby",10,[266,268,271,274],{"label":148,"value":149,"to":267},"/recruit/articles",{"label":163,"value":269,"to":270},"32","/recruit/articles/categories/32",{"label":174,"value":272,"to":273},"33","/recruit/articles/categories/33",{"label":191,"value":275,"to":276},"31","/recruit/articles/categories/31",{"article":278,"relatedJobs":287,"relatedArticles":290},{"date":279,"publishedAt":280,"categoryName":163,"title":281,"heroImage":282,"body":283,"metaDescription":284,"tags":285},"2023.11.21","2023-11-21T00:00:00+09:00","RIZAP がKaigi on Rails2023にも初参戦！【各講演のレポート集】","https://rizap-tech.g.kuroco-img.app/v=1775010960/files/user/recruit/contents/thumbnail/nec9873b61ce1_3b884dcd104b4131a5276c3f66efe71b.jpeg","\u003Cp name=\"45166502-ba55-473f-a4a8-a65527db71cd\" id=\"45166502-ba55-473f-a4a8-a65527db71cd\">\u003Cstrong>↓↓↓ 現場レポートはこちら ↓↓↓\u003C/strong>\u003C/p>\u003Cp name=\"a8b65f5f-b3ca-4523-bf03-fab643aececd\">\u003Ca href=\"https://www.rizap-tech.co.jp/recruit/articles/entries/305\">https://www.rizap-tech.co.jp/recruit/articles/entries/305\u003C/a>\u003C/p>\u003Chr>\u003Ch2 name=\"9ade78d4-b64e-4f96-9ff1-595f46328b7d\" id=\"9ade78d4-b64e-4f96-9ff1-595f46328b7d\">梅田智大の感想まとめ&nbsp;\u003C/h2>\u003Cp name=\"f7352896-c3bb-4fdc-815b-6334f68f12dd\" id=\"f7352896-c3bb-4fdc-815b-6334f68f12dd\">&nbsp;\u003C/p>\u003Ch3 name=\"c4a438c9-69e9-4070-9017-2d935457c447\" id=\"c4a438c9-69e9-4070-9017-2d935457c447\">1.\u003Ca href=\"https://kaigionrails.org/2023/talks/fugakkbn/\" target=\"_blank\" rel=\"nofollow noopener\">初めてのパフォーマンス改善～君たちはどう計測す(はか)るか～ by Fu-ga - Kaigi on Rails 2023\u003C/a>\u003C/h3>\u003Cp name=\"7bfc2c09-fc78-4b4a-ad49-7b0c064245ed\">\u003Ca href=\"https://kaigionrails.org/2023/talks/fugakkbn/\" target=\"_blank\" rel=\"noopener noreferrer\">https://kaigionrails.org/2023/talks/fugakkbn/\u003C/a>\u003C/p>\u003Cp name=\"bdd8b64b-1585-4e22-895b-e58372f8de90\" id=\"bdd8b64b-1585-4e22-895b-e58372f8de90\">事業成長に伴う利用者増加によって、レスポンスに影響が出始めたため、パフォーマンス改善を図ったというお話でした。&nbsp;\u003C/p>\u003Cp name=\"efbf41eb-1596-4080-979c-3a86a97b980c\" id=\"efbf41eb-1596-4080-979c-3a86a97b980c\">chocoZAPもおかげさまで利用者が急増し、パフォーマンスの向上が日々の課題となっていたため、このセッションは非常に有意義なものでした！&nbsp;\u003Cbr>さらに、このセッションはユニークなスライド展開とともに要点が分かりやすくまとめられ、とある映画をオマージュしたユーモアあふれるタイトリングのセンスも含め、非常に素晴らしい内容でした。会場からは笑いと拍手が起こりました！&nbsp;\u003Cbr>&nbsp;\u003C/p>\u003Cp name=\"5d69b132-679c-4a4e-8201-a8f9b72f5d6e\" id=\"5d69b132-679c-4a4e-8201-a8f9b72f5d6e\">\u003Cstrong>パフォーマンス改善へのアプローチ　その1\u003C/strong>\u003Cbr>全体調査で原因っぽいところを把握する&nbsp;\u003C/p>\u003Col name=\"1cd8aa18-46dc-4f94-bd8f-8342bb7864eb\" id=\"1cd8aa18-46dc-4f94-bd8f-8342bb7864eb\">\u003Cli>\u003Cp name=\"f16d3b5c-d9f5-4d5a-bfdf-546b33a096fd\" id=\"f16d3b5c-d9f5-4d5a-bfdf-546b33a096fd\">APMを活用して、ざっくりどのページやアクションに原因がありそうかあたりをつける&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"e3ecde03-c10f-4ae3-958e-884d66bc5140\" id=\"e3ecde03-c10f-4ae3-958e-884d66bc5140\">どれぐらい遅いのか、実際に平均値や最大値を数値で計測&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"4d59110a-7d9d-4898-a4aa-c1abfd2fe57d\" id=\"4d59110a-7d9d-4898-a4aa-c1abfd2fe57d\">遅い箇所は何が原因っぽいかを想像する&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"56e17184-9ffe-49fe-a5f4-ee51bb9138e7\" id=\"56e17184-9ffe-49fe-a5f4-ee51bb9138e7\">改善が見込まれる箇所の対応優先順をつける&nbsp;\u003C/p>\u003C/li>\u003C/ol>\u003Cp name=\"3a8d3cdb-95da-4d58-9823-67c23cd4f6c3\" id=\"3a8d3cdb-95da-4d58-9823-67c23cd4f6c3\">&nbsp;\u003C/p>\u003Cp name=\"2eb34009-354b-4850-9ce1-f18295ed341c\" id=\"2eb34009-354b-4850-9ce1-f18295ed341c\">\u003Cstrong>パフォーマンス改善へのアプローチ　その2\u003C/strong>\u003Cbr>本格的に調査をして改善を図る&nbsp;\u003C/p>\u003Col name=\"842d5260-9ad6-4a20-9f1e-0b31ff994a53\" id=\"842d5260-9ad6-4a20-9f1e-0b31ff994a53\">\u003Cli>\u003Cp name=\"d0615eec-70a8-4a5a-a488-e69b9383cfb2\" id=\"d0615eec-70a8-4a5a-a488-e69b9383cfb2\">ボトルネックが何かと、それが単数なのか複数なのかを把握&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"0496aa63-a76b-4940-a6d8-932acce78c61\" id=\"0496aa63-a76b-4940-a6d8-932acce78c61\">改善後に振る舞いが変わらないことを担保するため、事前にテストを書いておく&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"462af776-e37d-401e-aa01-09b1df2bffc3\" id=\"462af776-e37d-401e-aa01-09b1df2bffc3\">&nbsp;計測結果をもとに改善の仮説を立てる。仮説を立てたら実際に改善をして計測。計測してダメなら次の案を試す&nbsp;&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"22cda501-099e-4b6f-8da8-a267271a208c\" id=\"22cda501-099e-4b6f-8da8-a267271a208c\">Githubのissuesなどを活用し、試した内容と結果の調査経緯をまとめておく&nbsp;&nbsp;\u003C/p>\u003C/li>\u003C/ol>\u003Cp name=\"6430d435-e5c7-4eb4-ad23-4b2be7f03e86\" id=\"6430d435-e5c7-4eb4-ad23-4b2be7f03e86\">\u003Cstrong>パフォーマンス改善へのアプローチ　その3\u003C/strong>\u003Cbr>リリース後に経過を観察する&nbsp;\u003C/p>\u003Col name=\"f0c0c8f6-1e20-46af-9f01-95b122abd0db\" id=\"f0c0c8f6-1e20-46af-9f01-95b122abd0db\">\u003Cli>\u003Cp name=\"55284b93-6c78-4f44-b5d6-ed3bd0d89c41\" id=\"55284b93-6c78-4f44-b5d6-ed3bd0d89c41\">リリース直後は数時間単位で状況を確認し、極端にパフォーマンスの劣化がみられたら切り戻しの判断をする&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"9682dbc4-462b-44a6-b70b-0c559ef32d65\" id=\"9682dbc4-462b-44a6-b70b-0c559ef32d65\">初動が問題なければ数日単位で観察を続ける&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"5475649b-b8ad-4c3d-abef-cca78bd38fcc\" id=\"5475649b-b8ad-4c3d-abef-cca78bd38fcc\">パフォーマンスに劣化があった場合は早めに切り戻す&nbsp;\u003C/p>\u003C/li>\u003C/ol>\u003Cp name=\"4aa383f1-0452-491e-8000-0d199581438e\" id=\"4aa383f1-0452-491e-8000-0d199581438e\">\u003Cstrong>\u003Cbr>【感想\u003C/strong>】\u003Cbr>パフォーマンス改善と一口に言われても、何から手をつければ…と悩んでしまいますし、実際に手をつけ始めてみても、時間をかけた割にイマイチ改善されなかったという状態に陥りがちです。&nbsp;\u003C/p>\u003Cp name=\"b6a3184e-0528-4336-8856-797c50e3a6dd\" id=\"b6a3184e-0528-4336-8856-797c50e3a6dd\">このセッションを通じて、最初に全体を把握し、原因のあたりをつけた後に対応の優先度を決めることで効率的に作業を進めるとともに、何を行った結果、どうなったかを数字で記録することで、もし改善が見られなかった場合も次につながるようにすることが非常に勉強になりました！&nbsp;\u003C/p>\u003Cp name=\"1a9fa994-1b7e-4ff5-bf2e-0ce6ba95eaa2\" id=\"1a9fa994-1b7e-4ff5-bf2e-0ce6ba95eaa2\">&nbsp;\u003C/p>\u003Ch3 name=\"14fc5d95-b8f2-4051-81b6-39233c1c96c9\" id=\"14fc5d95-b8f2-4051-81b6-39233c1c96c9\">2.\u003Ca href=\"https://kaigionrails.org/2023/talks/tebiki/\" target=\"_blank\" rel=\"nofollow noopener\">ペアプロしようぜ ～３人で登壇!? 楽しくて速いペアプロ/モブプロ開発～\u003C/a>\u003C/h3>\u003Cp name=\"6adc0a3d-3ed5-46ef-9477-9d9c2ad4411e\">\u003Ca href=\"https://kaigionrails.org/2023/talks/tebiki/\" target=\"_blank\" rel=\"noopener noreferrer\">https://kaigionrails.org/2023/talks/tebiki/\u003C/a>\u003C/p>\u003Cp name=\"5711f6f9-39cc-4771-9e14-e5467d18317d\" id=\"5711f6f9-39cc-4771-9e14-e5467d18317d\">今回聴講したセッションの中では、一番ドキドキハラハラしました…！&nbsp;\u003Cbr>その内容はなんと、ライブペアプロ…！実際にステージの上で三人が生で開発を行い、一つのissueを解決するまでを実践してくださいました。&nbsp;\u003Cbr>\u003Cstrong>\u003Cbr>ペアプロ/モブプロの良さ\u003C/strong>&nbsp;\u003Cbr>ペアプロでは自分が何をコーディングしようとしているかを話しながらコードを書いていったり、コーディング中にペアと意見が分かれるとその場で議論が発生したりするので、単純にコードを書くスピードはソロプロに劣ります。&nbsp;しかし、コードレビューで圧倒的な差が生まれます。&nbsp;\u003Cbr>私自身、レビューをする時に、開発の意図や目的が汲み取れずキャッチアップに時間がかかったり、diff が多いとどこからコードを見れば良いかもわからず迷ってしまったり、といった経験があります…&nbsp;。\u003C/p>\u003Cp name=\"7d87c2f6-f8b8-4b2d-b7a6-5d6677fee541\" id=\"7d87c2f6-f8b8-4b2d-b7a6-5d6677fee541\">さらに、レビューで欠陥に気づきほとんどコードを書き直すことになったことも。。\u003Cbr>このレビューの時間や手戻りの工数を含めると、トータルしてペアプロのほうが効率がよいという結論が出ているようです。&nbsp;\u003C/p>\u003Cp name=\"4d7de3ff-c5f1-4739-b2ef-b26fb05de44f\" id=\"4d7de3ff-c5f1-4739-b2ef-b26fb05de44f\">\u003Cstrong>ペアプロ導入の課題\u003C/strong>&nbsp;\u003Cbr>とはいえ、ペアプロをメインで開発するのはハードルが高いと感じてしまいます。&nbsp;tebikiさんも最初は、ペアプロを導入するまでは「何から始めてよいかわからない」、「お互いに何をしたいのかわからず迷走してしまう」、あげく「疲労コンパイルエラーが起きてしまう」…といった課題を抱えていたそうです。&nbsp;\u003Cbr>色々と試行錯誤された結果、下記の方法をとるのがおすすめとのことです。&nbsp;\u003C/p>\u003Cul name=\"b5afa21e-ca3f-4085-a633-465e9fc7cbd4\" id=\"b5afa21e-ca3f-4085-a633-465e9fc7cbd4\">\u003Cli>\u003Cp name=\"8b98fb02-5e76-4574-b059-ab1914bcebc9\" id=\"8b98fb02-5e76-4574-b059-ab1914bcebc9\">&nbsp;slackで画面共有をし、ペンツールを使いながら指示をする&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"fd06917e-37c5-4cff-b6b6-d2b0f5b03493\" id=\"fd06917e-37c5-4cff-b6b6-d2b0f5b03493\">&nbsp;開始前に何を開発するのかの方針を書き出しておく&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"91e20852-346a-41de-9d93-283dd7b47921\" id=\"91e20852-346a-41de-9d93-283dd7b47921\">1時間あたり10分を目安にこまめに休憩を入れる&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"89e9c23d-c1fb-47f7-852d-5829899e5a84\" id=\"89e9c23d-c1fb-47f7-852d-5829899e5a84\">タイマーを使って15～20分を目安に交代をする&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"1708f84e-6ef7-4b46-b727-592721446fec\" id=\"1708f84e-6ef7-4b46-b727-592721446fec\">1人が全部やってしまうのを避けるため、指示出しをするナビゲーターと、指示にしたがってコードを書くドライバーという役割に分ける&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"21b99f2d-7241-4dfa-834b-4d4f7635a7b7\" id=\"21b99f2d-7241-4dfa-834b-4d4f7635a7b7\">\u003Cstrong>ライブでペアプロ！\u003C/strong>&nbsp;\u003Cbr>これらの話を踏まえ、実際にステージでペアプロを実践してくださいました！&nbsp;要件としてはフォームにバリデーション機能を一つ追加するというもので、時間は11分。&nbsp;時間がかなり短いので、早速コードを書き始めるのかと思いましたが、要件の確認とTo-doの書き出しに半分以上の時間を使っていました。&nbsp;\u003C/p>\u003Cp name=\"d150dd01-33d1-4132-8c3c-39755614362f\" id=\"d150dd01-33d1-4132-8c3c-39755614362f\">ペアプロ導入の課題の中で話されていた通り、お互いに何をしているかがわからなくなる状態を防ぐために、事前の確認はしっかりと時間を使って行っているのだというのが伝わりました。&nbsp;\u003C/p>\u003Cp name=\"c78092b9-c6c5-44fb-afea-cc52d19c451a\" id=\"c78092b9-c6c5-44fb-afea-cc52d19c451a\">要件定義と設計を明確にしないままコードを書き始めると、後から手戻りが発生して結局作業が無駄になるというのは頭で分かっていても、ついつい要件を書き出さないまま手を動かしてしまいがちです。&nbsp;\u003C/p>\u003Cp name=\"e841d474-145e-476f-85da-d3c740b693e2\" id=\"e841d474-145e-476f-85da-d3c740b693e2\">今回のライブペアプロでも、対象となるモデルは何か、その変更によってどこに影響が出るか、テストは何を書くか、バリデーションのエラーメッセージは何にするかなど細かい点までしっかりと確認されていました。&nbsp;\u003C/p>\u003Cp name=\"c3152b5b-b169-4c4a-9968-5c2db261310c\" id=\"c3152b5b-b169-4c4a-9968-5c2db261310c\">コードを書く段階では、ナビゲーターとタイピストの役割がしっかりと守られており、タイピストは指示に間違っている点があっても勝手に修正したり、「こうやったほうがいい」と意見をしたりせず、「ここはどうしますか？」とナビゲーターに疑問を投げかけるだけにとどめていたのが素晴らしいなと感じました。&nbsp;\u003C/p>\u003Cp name=\"93d750ee-7b89-4936-9728-d2476285ad71\" id=\"93d750ee-7b89-4936-9728-d2476285ad71\">そして何と時間ぴったりで開発が終了！最後も無事にテストが通り、会場は拍手喝采でした。&nbsp;&nbsp;\u003C/p>\u003Cp name=\"cd8611f3-1c61-4386-a801-9310100e0c7c\" id=\"cd8611f3-1c61-4386-a801-9310100e0c7c\">\u003Cstrong>【感想】\u003C/strong>&nbsp;\u003Cbr>バリデーションを一つ追加するだけの軽微な修正であっても、11分でマージまでしてしまうスピード感は驚きでした。&nbsp;RIZAPでもペアプロをすることはありますが、ペアプロメインで開発はしていません。&nbsp;セッションの後は今すぐにでもペアプロをしたい…！という気持ちになりましたし、何より見ていて本当に面白いセッションでした。&nbsp;\u003C/p>\u003Cp name=\"829904e3-92f6-41a9-a0ad-ff3be6259624\" id=\"829904e3-92f6-41a9-a0ad-ff3be6259624\">もちろん、ペアプロの難しさや課題はあるかと思いますが、今回のセッションを参考に積極的に導入していきたいです！&nbsp;\u003C/p>\u003Cp name=\"1e50303c-322a-4af2-b3d6-4f36c7bf0983\" id=\"1e50303c-322a-4af2-b3d6-4f36c7bf0983\">&nbsp;\u003C/p>\u003Chr>\u003Ch2 name=\"03101856-e66c-4fe3-94f0-3daf084c3b62\" id=\"03101856-e66c-4fe3-94f0-3daf084c3b62\">松永祐生の感想まとめ\u003C/h2>\u003Ch3 name=\"da71bf6d-38fc-4273-90fb-e507ba1bd4a4\" id=\"da71bf6d-38fc-4273-90fb-e507ba1bd4a4\">3.\u003Ca href=\"https://kaigionrails.org/2023/talks/hirotea/\" target=\"_blank\" rel=\"nofollow noopener\">返金処理を通して学ぶ、カード決済電文の沼バトル\u003C/a>\u003C/h3>\u003Cp name=\"2c78a260-f520-475b-8e07-c16e8f32d66c\">\u003Ca href=\"https://kaigionrails.org/2023/talks/hirotea/\" target=\"_blank\" rel=\"noopener noreferrer\">https://kaigionrails.org/2023/talks/hirotea/\u003C/a>\u003C/p>\u003Cp name=\"b631fce9-8168-4e87-bee6-bd29a552ecaf\" id=\"b631fce9-8168-4e87-bee6-bd29a552ecaf\">SmartBankのエンジニア・\u003Ca href=\"https://twitter.com/nifuchi222222\" target=\"_blank\" rel=\"nofollow noopener\">hirotea\u003C/a>さんのセッションです。&nbsp;\u003Cbr>クレジットカードの返金処理は、フローのパターンが多数ある上に部分返金や海外事務手数料、為替変動など考慮するべきことが多く、甘く見積もって痛い目にあったという内容でした。&nbsp;\u003C/p>\u003Cp name=\"7e769dfb-feca-4694-83df-bcaf03cdac54\" id=\"7e769dfb-feca-4694-83df-bcaf03cdac54\">例えば返金処理の基本的なフローが以下だったとして\u003C/p>\u003Cfigure name=\"55633edf-95e5-4a5a-a945-d08b733c16f3\" id=\"55633edf-95e5-4a5a-a945-d08b733c16f3\">\u003Cblockquote>\u003Cp name=\"fdc53776-9006-4411-b0cc-a4ca9005d1de\" id=\"fdc53776-9006-4411-b0cc-a4ca9005d1de\">売上オーソリ → 売上クリアリング → 返金オーソリ → 返金クリアリング&nbsp;\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"55eb1ddb-9e61-4f5f-8cbc-5241b2197d9b\" id=\"55eb1ddb-9e61-4f5f-8cbc-5241b2197d9b\">以下のようなフローになることもあり&nbsp;\u003C/p>\u003Cfigure name=\"5828f2cd-f416-4b80-b2eb-b67e18fbdc39\" id=\"5828f2cd-f416-4b80-b2eb-b67e18fbdc39\">\u003Cblockquote>\u003Cp name=\"d57d29e9-89f2-4eb3-881f-10d5f2a7e08f\" id=\"d57d29e9-89f2-4eb3-881f-10d5f2a7e08f\">売上オーソリ → 売上クリアリング → 返金クリアリング&nbsp;\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"ac8c32aa-bbef-4c09-9dcc-8e530fcce010\" id=\"ac8c32aa-bbef-4c09-9dcc-8e530fcce010\">以下のようなフローになることもある?！\u003C/p>\u003Cfigure name=\"3d3feb3e-9809-4fd7-8b3d-c317592caf6f\" id=\"3d3feb3e-9809-4fd7-8b3d-c317592caf6f\">\u003Cblockquote>\u003Cp name=\"bf56129f-a634-4ba3-8ddf-4c0fa0db0c7f\" id=\"bf56129f-a634-4ba3-8ddf-4c0fa0db0c7f\">売上オーソリ → → 返金オーソリ → 売上クリアリング → 返金クリアリング&nbsp;\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"f48b4043-9b23-4118-a394-4b4ed4a86122\" id=\"f48b4043-9b23-4118-a394-4b4ed4a86122\">…と、何パターンもあるそうです。。。&nbsp;\u003Cbr>さらに追い打ちをかけるように、部分返金や海外事務手数料、為替変動、その他さまざまな「面倒な仕様」があるとのこと。&nbsp;想像しただけで苦笑いです。hiroteaさんはデータの流れの可視化や電文到着全パターンの書き出しを行い、解決していったとのことでした。\u003C/p>\u003Cp name=\"71e59f44-e691-48fb-bf0a-8ce25549d834\" id=\"71e59f44-e691-48fb-bf0a-8ce25549d834\">\u003Cstrong>【感想】\u003C/strong>&nbsp;\u003Cbr>クレジットカードの返金周りの沼を面白おかしく説明されていて、あまり決済に関わることがないエンジニアでも楽しく聴けるセッションでした。データの流れの可視化や全パターンの書き出しなどの設計工程は基本的なことですが、RIZAPのようなスピード感がある事業会社ではサボりがちなことでもあります。\u003Cbr>「設計→設計レビュー」の大切さが再確認できてよかったです。&nbsp;\u003C/p>\u003Cp name=\"383d5d4c-b172-4709-b146-aac12c40543c\" id=\"383d5d4c-b172-4709-b146-aac12c40543c\">&nbsp;\u003C/p>\u003Ch3 name=\"ce5c51ae-d627-4b4f-83d4-f2f87ee77260\" id=\"ce5c51ae-d627-4b4f-83d4-f2f87ee77260\">4.\u003Ca href=\"https://kaigionrails.org/2023/talks/zuckey/\" target=\"_blank\" rel=\"nofollow noopener\">事業の試行錯誤を支える、コードを捨てやすくしてシンプルなシステムの設計と工夫\u003C/a>\u003C/h3>\u003Cp name=\"5da5362e-53a4-444b-b737-26b03a1ee88c\">\u003Ca href=\"https://kaigionrails.org/2023/talks/zuckey/\" target=\"_blank\" rel=\"noopener noreferrer\">https://kaigionrails.org/2023/talks/zuckey/\u003C/a>\u003C/p>\u003Cp name=\"f4200ff0-83cc-4d24-b78a-3f4a530c0887\" id=\"f4200ff0-83cc-4d24-b78a-3f4a530c0887\">株式会社スタディストのPMをされておられる\u003Ca href=\"https://twitter.com/zuckey_17\" target=\"_blank\" rel=\"nofollow noopener\">@zuckey\u003C/a>さんによるセッションです。&nbsp;新規事業にリードエンジニアとして参画し、開発を行ってきた経験から、スピード感のある事業を支えるための設計について話されました。&nbsp;\u003C/p>\u003Cp name=\"c95aad57-92ba-427a-821f-eca8ff479938\" id=\"c95aad57-92ba-427a-821f-eca8ff479938\">新規事業では試行錯誤・方向転換が多々あるため、作った機能が何年も使われるとは限りません。そのため、コードや機能を簡単に捨てられるシンプル(素結合)なシステムを目指したそうです。\u003C/p>\u003Cp name=\"aba7779a-bf08-49b1-8529-62f54ad106f1\" id=\"aba7779a-bf08-49b1-8529-62f54ad106f1\">&nbsp;一つ目の事例では一つのテーブル(scheme_summaries)を用途に応じて別個のテーブル(scheme_progresses、scheme_stats、scheme_sales_reports)に分割し、それぞれにモデルを対応させるというアプローチをとり、&nbsp;それにより責任範囲がクリアになり、削除のハードルを下げることができるようになったそうです。&nbsp;\u003C/p>\u003Cp name=\"2abce548-9cc5-41c5-a940-fd49043e82a9\" id=\"2abce548-9cc5-41c5-a940-fd49043e82a9\">&nbsp;二つ目の事例では小売企業とメーカー企業を管理する際に販売店テーブル(retailers, retailer_users, retailer_user_authentications)を作り、ポリモーフィック的に小売とメーカーを切り分けるところを小売企業テーブル(retailers, retailer_users, retailer_user_authentications)とメーカー企業テーブル(makers, mader_users, maker_user_authentications)の２セットに分けて、それぞれにmodel, controllerを作成することで削除しやすくしたそうです。&nbsp;\u003C/p>\u003Cp name=\"1fa8a071-70a5-43e7-a9a7-50b0c7d63d23\" id=\"1fa8a071-70a5-43e7-a9a7-50b0c7d63d23\">また、使われていない機能を捨てることを事業側に理解してもらうため、開発者から意思決定を促すアプローチも大切という話もされていました。&nbsp;\u003C/p>\u003Cp name=\"3ec0f4d5-26fa-4dc5-bcad-d942e0d8ef33\" id=\"3ec0f4d5-26fa-4dc5-bcad-d942e0d8ef33\">\u003Cstrong>【感想】\u003Cbr>\u003C/strong>スピード感のある事業には試行錯誤や方向転換がよくあるという点で、chocoZAPと境遇が似ており共感が多く、とても参考になるセッションでした。&nbsp;\u003Cbr>・一つ目の事例は特定のシナリオにおいてはかなり有効な戦略だと感じました。一般的なRailsの概念とはかけ離れているため新鮮な考え方で面白かったです。&nbsp;\u003Cbr>・二つ目の事例においてもDRYの原則に従ってコードを書いているだけだと見えない設計だと感じ、すごく勉強になりました。&nbsp;\u003Cbr>zuckeyさんのセクションを聞いて事業にとってのベストな設計は、時にRails wayを大きく外れることもあるというのを感じました。視野の広い設計を心がけたいです。&nbsp;\u003Cbr>&nbsp;\u003C/p>\u003Ch3 name=\"7b5d0833-f1ec-4e30-8ac3-a7b43693be93\" id=\"7b5d0833-f1ec-4e30-8ac3-a7b43693be93\">5.\u003Ca href=\"https://kaigionrails.org/2023/talks/ShoheiMitani/\" target=\"_blank\" rel=\"nofollow noopener\">32個のPRでリリースした依存度の高いコアなモデルの安全な弄り方&nbsp;\u003C/a>\u003C/h3>\u003Cp name=\"247bb4ec-cc02-443b-a495-77273e34811b\">\u003Ca href=\"https://kaigionrails.org/2023/talks/ShoheiMitani/\" target=\"_blank\" rel=\"noopener noreferrer\">https://kaigionrails.org/2023/talks/ShoheiMitani/\u003C/a>\u003C/p>\u003Cp name=\"20a4eec3-6c78-49c7-ab2b-f2793eaa0371\" id=\"20a4eec3-6c78-49c7-ab2b-f2793eaa0371\">&nbsp;SmartBankのバックエンドエンジニア: Shohei Mitani さんのセッションです。&nbsp;Read/Writeが非常に多く、依存度が高いモデルの変更を無停止でリリースした話をされました。&nbsp;以下、大まかな概要です。&nbsp;\u003C/p>\u003Cp name=\"89e26ac3-c041-476b-a9c0-af2811ba26ef\" id=\"89e26ac3-c041-476b-a9c0-af2811ba26ef\">MySQLのオンラインDDLを使うことでサービス否停止で行うことができます。&nbsp;\u003Cbr>しかし、オンラインDDLにはエラーとなるケースも無数に存在し、検証環境で十分な検証を行う必要があるとのことでした。&nbsp;\u003Cbr>また、いくらオンラインDDLでもカラム名の変更を行うと、デプロイ時にDBとAPPに状況不一致期間が生まれるため、カラム名の変更ではなく以下のような追加を軸にしたフローにすることで、安全に対処ができたそうです。&nbsp;\u003C/p>\u003Cul name=\"82a7de5a-ded8-4854-a650-0e1e29999933\" id=\"82a7de5a-ded8-4854-a650-0e1e29999933\">\u003Cli>\u003Cp name=\"52e18042-6d50-4c23-a7e1-1fe58021e53e\" id=\"52e18042-6d50-4c23-a7e1-1fe58021e53e\">カラムの追加 → 役割の置き換え → 古いカラムの削除&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"dcd6fd83-45c3-42c0-b7fb-c02529265a97\" id=\"dcd6fd83-45c3-42c0-b7fb-c02529265a97\">実際に採用されたリリース手順は以下です。&nbsp;\u003C/p>\u003Col name=\"6259bae2-a0ea-4794-b5d9-31f3883402b3\" id=\"6259bae2-a0ea-4794-b5d9-31f3883402b3\">\u003Cli>\u003Cp name=\"7ab60d83-9054-49f8-9ca2-2f733e899825\" id=\"7ab60d83-9054-49f8-9ca2-2f733e899825\">カラム追加&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"61bca535-dbf2-4746-99b4-67b6fd76b1f5\" id=\"61bca535-dbf2-4746-99b4-67b6fd76b1f5\">値の同期 (既存のカラムと追加したカラムどちらにも同じ値が入るようにコード修正)&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"5f08f093-4a5f-465f-b9da-be42fac8763f\" id=\"5f08f093-4a5f-465f-b9da-be42fac8763f\">バックフィル (過去のデータの新旧カラムを同期させる)&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"413aec95-75c4-4450-9084-88ed40c78dbe\" id=\"413aec95-75c4-4450-9084-88ed40c78dbe\">Not null制約の追加&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"f2bac82c-49cc-4b35-af67-286a267f676d\" id=\"f2bac82c-49cc-4b35-af67-286a267f676d\">参照の置き換え&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"85c62b64-36d3-4afe-9df3-846f3b0058f8\" id=\"85c62b64-36d3-4afe-9df3-846f3b0058f8\">同期の停止 (2で追加したコードを削除する)&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"54f85db5-9229-4adc-a07e-08c617e590f8\" id=\"54f85db5-9229-4adc-a07e-08c617e590f8\">ignored_columns (特定のカラムに対するCRUDをモデルレベルでスキップさせる)&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"4de3780c-8319-4938-906f-cf03d970cbdd\" id=\"4de3780c-8319-4938-906f-cf03d970cbdd\">カラム削除&nbsp;\u003C/p>\u003C/li>\u003C/ol>\u003Cp name=\"56c8fc16-cfac-4151-9ff3-3a634d250c3f\" id=\"56c8fc16-cfac-4151-9ff3-3a634d250c3f\">&nbsp;\u003Cstrong>【感想】\u003Cbr>\u003C/strong>何も考えずに変更をリリースするだけなら一つのPRで対応できる内容ですが、あえて32個のPRに分けて段階的にリリースすることで、可用性や完全性を満たすというのは目からうろこでした。&nbsp;\u003Cbr>段階ごとに影響を監視することで致命的なエラーが発生するリスクが減りますし、ロールバックがしやすいです。&nbsp;chocoZAPも24時間サービスなので今後似たような要件が出てくることが予想でき、DBの変更に関してかなり参考にできそうだと感じました&nbsp;\u003C/p>\u003Cp name=\"d180a15a-5375-4fd6-83ca-5a85825b2ba5\" id=\"d180a15a-5375-4fd6-83ca-5a85825b2ba5\">&nbsp;\u003C/p>\u003Chr>\u003Ch2 name=\"04c00f7c-5606-41be-8d6d-ff642cf09233\" id=\"04c00f7c-5606-41be-8d6d-ff642cf09233\">栗原敦巳の感想まとめ\u003C/h2>\u003Ch3 name=\"c8789e8d-22e8-4efa-ad07-69b63a3dcfa5\" id=\"c8789e8d-22e8-4efa-ad07-69b63a3dcfa5\">6.\u003Ca href=\"https://kaigionrails.org/2023/talks/kubo/\" target=\"_blank\" rel=\"nofollow noopener\">やさしいActiveRecordのDB接続のしくみ\u003C/a>\u003C/h3>\u003Cp name=\"7c839371-2861-40b9-90dc-a53c34fba763\">\u003Ca href=\"https://kaigionrails.org/2023/talks/kubo/\" target=\"_blank\" rel=\"noopener noreferrer\">https://kaigionrails.org/2023/talks/kubo/\u003C/a>\u003C/p>\u003Cp name=\"712c5f94-04d1-4508-b057-fd3d81cb4392\" id=\"712c5f94-04d1-4508-b057-fd3d81cb4392\">普段はdatabase.ymlに必要情報を記述し、適当なモデルのfind/whereメソッドを使うことでDB接続の確立がなされて、簡単にデータの取得ができます。スライドでは3つのセクションに分けて解説されていて、なかなか触れることのない領域を知れてとても興味深い内容でした。\u003C/p>\u003Cp name=\"8883303d-88e7-4bff-8ff4-295ec21b0141\" id=\"8883303d-88e7-4bff-8ff4-295ec21b0141\">\u003Cstrong>ActiveRecordの接続までの主要なクラス\u003C/strong>&nbsp;\u003Cbr>\u003Cbr>Mysql2Adapters&nbsp;\u003C/p>\u003Cul name=\"b4e74ca3-0107-4ded-9802-cf7e0c56d565\" id=\"b4e74ca3-0107-4ded-9802-cf7e0c56d565\">\u003Cli>\u003Cp name=\"ad5d2d4b-cd35-4157-a75f-86186ca60ad3\" id=\"ad5d2d4b-cd35-4157-a75f-86186ca60ad3\">実際にmysql2アダプターを呼び出すクラス&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"e231b7df-c47a-4acf-9905-0d119bba393c\" id=\"e231b7df-c47a-4acf-9905-0d119bba393c\">Mysql2::Clientインスタンスが作成&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"244727d5-05d4-461f-b979-13d971cd7329\" id=\"244727d5-05d4-461f-b979-13d971cd7329\">initializeメソッドでdatabase.ymlの情報を元に接続要求&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"682e09fb-9c43-464d-bf61-ef608447fcde\" id=\"682e09fb-9c43-464d-bf61-ef608447fcde\">ConnectionPool&nbsp;\u003C/p>\u003Cul name=\"e56df0cb-09f0-4492-913a-b3c169cb976c\" id=\"e56df0cb-09f0-4492-913a-b3c169cb976c\">\u003Cli>\u003Cp name=\"e6dd23bb-8fa0-4e7d-9b9c-bfd870a8b4b7\" id=\"e6dd23bb-8fa0-4e7d-9b9c-bfd870a8b4b7\">接続を管理するクラス&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"ee28bdf4-0075-4e9c-a0bc-9da75dfa7d19\" id=\"ee28bdf4-0075-4e9c-a0bc-9da75dfa7d19\">接続プールからの接続の調節（新規作成かプールからの再利用）&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"c9c434be-bb2e-455b-b321-77dd8f119ffa\" id=\"c9c434be-bb2e-455b-b321-77dd8f119ffa\">def new_connection&nbsp;&nbsp;\u003Cbr>?database.ymlに記載されている情報を元にアダプタークラスとインスタンスが作成される&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"73897d48-5350-43ae-b2d9-c0d0608e091c\" id=\"73897d48-5350-43ae-b2d9-c0d0608e091c\">ConnectionHandler&nbsp;\u003C/p>\u003Cul name=\"224e8975-15a3-4500-89c2-c09c39a3d0ac\" id=\"224e8975-15a3-4500-89c2-c09c39a3d0ac\">\u003Cli>\u003Cp name=\"3449cad3-b56a-4884-acee-9b3f7690e1ca\" id=\"3449cad3-b56a-4884-acee-9b3f7690e1ca\">接続プールを管理するクラス&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"0895201c-a14d-449e-93c6-7b203e0487b4\" id=\"0895201c-a14d-449e-93c6-7b203e0487b4\">データベースごとに接続プールを保持している&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"1f4a8127-e43c-421a-bca2-f4a471a5d294\" id=\"1f4a8127-e43c-421a-bca2-f4a471a5d294\">def checkout&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"87a666e1-e6b9-4b91-9197-7df7609d7804\" id=\"87a666e1-e6b9-4b91-9197-7df7609d7804\">\u003Cstrong>【感想】\u003C/strong>&nbsp;\u003C/p>\u003Cul name=\"dd1f6921-bb8c-4ec7-959a-e9ed5d896b1d\" id=\"dd1f6921-bb8c-4ec7-959a-e9ed5d896b1d\">\u003Cli>\u003Cp name=\"455a3d0e-e09d-421c-9415-ad8a32fe8818\" id=\"455a3d0e-e09d-421c-9415-ad8a32fe8818\">エラー原因の切り分け方法&nbsp;\u003Cbr>・エラーを見ても原因箇所の想像がつかない場合があった&nbsp;\u003Cbr>・注目すべきポイントがどこなのか原因を切り分けることができれば、あたりをつけやすい&nbsp;\u003Cbr>&nbsp;・new_clientメソッド以前のエラーは接続確立前のアプリ側の問題&nbsp;\u003Cbr>&nbsp;・new_clientメソッド時点のエラーは接続確立する時の問題&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"0db21f8a-4a90-4d4d-b0f8-dea2abb469f4\" id=\"0db21f8a-4a90-4d4d-b0f8-dea2abb469f4\">Mysql2Adaptersのクライアントインスタンスはdatabase.ymlの情報を保持している&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"356209cf-1c44-4cc0-8bad-43bd504f43db\" id=\"356209cf-1c44-4cc0-8bad-43bd504f43db\">DBホストの変更を行う際はプールで保持されている変更以前のホストの接続が利用される可能性がある&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"3046d8da-bd90-42be-abb6-7c932af304e8\" id=\"3046d8da-bd90-42be-abb6-7c932af304e8\">環境構築の際にmysql2でちょくちょくエラーになったことがありましたが、そのような時に今回のような深掘りをしているかいないかで、エラーへの対応力が大きく変わってくると思いました。&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/p>\u003Cp name=\"7518985b-4107-49ab-b0a0-4cdf2df92081\" id=\"7518985b-4107-49ab-b0a0-4cdf2df92081\">&nbsp;\u003C/p>\u003Ch3 name=\"ac46bc67-aec4-4a22-a12b-1011a421f65c\" id=\"ac46bc67-aec4-4a22-a12b-1011a421f65c\">7.\u003Ca href=\"https://kaigionrails.org/2023/talks/lni_T/\" target=\"_blank\" rel=\"nofollow noopener\">Turbolinksアレルギー患者に捧げるTurbo &amp; Stimulusでの時短実装術&nbsp;\u003C/a>\u003C/h3>\u003Cp name=\"5a1d75e1-4575-49ce-9b72-e691a4efb5a9\">\u003Ca href=\"https://kaigionrails.org/2023/talks/kubo/\" target=\"_blank\" rel=\"noopener noreferrer\">https://kaigionrails.org/2023/talks/kubo/\u003C/a>\u003C/p>\u003Cp name=\"2a0fbba6-c8bf-4528-9579-2dfda015c296\" id=\"2a0fbba6-c8bf-4528-9579-2dfda015c296\">&nbsp;Rails開発者の知る人は知っている「Turbolinks」の過去の話から、それらの上位互換として登場したHotwireを実際のプロダクト開発に採用することで得た知見と苦難についてのトークでした。&nbsp;\u003C/p>\u003Cp name=\"da724129-1d6b-43aa-95d1-ec2a10ea72a0\" id=\"da724129-1d6b-43aa-95d1-ec2a10ea72a0\">\u003Cstrong>Turbolinks&nbsp;\u003Cbr>\u003C/strong>Trubolinksはページ遷移を高速化する用途として、当時Railsでは標準として実装された機能でしたが、使いこなすのが難しいライブラリでした。\u003Cstrong>&nbsp;\u003Cbr>\u003C/strong>特にjQuery、JavaScriptとの相性が悪く、特定のライブラリが動作しなかったり、JavaScriptのライフサイクル機能が動作しなかったりと色々と問題がありました・・・\u003Cstrong>&nbsp;。\u003C/strong>\u003C/p>\u003Cp name=\"876b7052-f0e9-4685-b78d-c9eff39309e4\" id=\"876b7052-f0e9-4685-b78d-c9eff39309e4\">\u003Cstrong>Hotwire&nbsp;\u003Cbr>\u003C/strong>tubo+stimulus+stradaの3ライブラリの総称&nbsp;\u003Cbr>RailsだけでSPAライクなページをシンプルに実装できる機能です。&nbsp;\u003C/p>\u003Cul name=\"97289281-a919-40a7-9f65-0ace539dfa8d\" id=\"97289281-a919-40a7-9f65-0ace539dfa8d\">\u003Cli>\u003Cp name=\"ffa42f85-a4a9-433c-9e2f-472295bf8cf3\" id=\"ffa42f85-a4a9-433c-9e2f-472295bf8cf3\">turbo&nbsp;\u003Cbr>・JSを書かずにSPAっぽいことができる&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"7ea4b5f5-d03e-4388-9b0e-2a56ac96f847\" id=\"7ea4b5f5-d03e-4388-9b0e-2a56ac96f847\">stimulus&nbsp;\u003Cbr>・turboで対応しきれない制御をサポート&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"f611b6a9-fd47-4ba6-ac14-02aeecfdcf7c\" id=\"f611b6a9-fd47-4ba6-ac14-02aeecfdcf7c\">strada&nbsp;\u003Cbr>・主にモバイル向けの機能&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"db4bb89b-08b7-425d-9f22-a68de7a04c66\" id=\"db4bb89b-08b7-425d-9f22-a68de7a04c66\">\u003Cstrong>確認画面実装って大変&nbsp;\u003Cbr>\u003C/strong>Railsで登録画面の実装をする場合、def newを用意する場合&nbsp;\u003C/p>\u003Cul name=\"c673a6cd-9299-435d-890c-cf955e6b2a2f\" id=\"c673a6cd-9299-435d-890c-cf955e6b2a2f\">\u003Cli>\u003Cp name=\"2255d374-42a5-4885-9509-a040d06bba45\" id=\"2255d374-42a5-4885-9509-a040d06bba45\">入力途中の情報はどう保持する&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"db9b3c52-bd02-4faa-8dd4-1ac9e7bb7671\" id=\"db9b3c52-bd02-4faa-8dd4-1ac9e7bb7671\">railsのviewだけだと画面全体が切り替わっちゃう&nbsp;\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"1cc4872d-f556-4a4b-b9be-56df0e0d6983\" id=\"1cc4872d-f556-4a4b-b9be-56df0e0d6983\">キャンセルなどフローが増える&nbsp;\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"1e610f42-5a38-4b6e-b790-dc03fc223f31\" id=\"1e610f42-5a38-4b6e-b790-dc03fc223f31\">など、意外と考慮することが多く大変です。&nbsp;\u003Cbr>hotwireなら、確認ページをモーダル実装にすることで、確認画面を別で用意して情報を用意することなくその場で利用でき、このあたりの問題をカバーできます。&nbsp;\u003C/p>\u003Cp name=\"35c6dc3e-d94b-438e-9ab6-42aca9499285\" id=\"35c6dc3e-d94b-438e-9ab6-42aca9499285\">\u003Cstrong>【感想\u003C/strong>】\u003Cbr>自分自身が過去にTubolinksに苦しめられた経験があったので、聴講していて非常に面白いと感じたセッションでした。&nbsp;\u003Cbr>HotwireはJSを書く労力が最小限でSPAを導入できます。一方でVueやReactほど複雑で細かい実装には向いていないため、プロダクト要件に基づいて柔軟に採用の意思決定に持っていきたいと思いました。&nbsp;\u003C/p>\u003Chr>\u003Cp name=\"60eb1327-5803-4931-ace3-92433a2700be\" id=\"60eb1327-5803-4931-ace3-92433a2700be\">\u003Cbr>メンバーの感想は以上となります。\u003Cbr>もりだくさんの内容で、大盛況に終わったKaigi on Rails2023。\u003Cbr>ここで得た学びをメンバーがどのように生かしていくのか、今後のRIZAPにご注目ください！\u003C/p>","RIZAPテクノロジーズがKaigi on Rails 2023に初参戦。パフォーマンス改善や設計パターンなど各講演をchocoZAP開発にも活かせる視点でメンバーがまとめた講演レポート集。",[169,286,167,166],"Kaigi on Rails",[288,289],{"title":9,"to":11},{"title":113,"to":115},[291,298,305,313,321,328],{"to":292,"image":293,"date":294,"label":163,"title":295,"tags":296},"/recruit/articles/entries/313","https://rizap-tech.g.kuroco-img.app/v=1775010951/files/user/recruit/contents/thumbnail/naf2d2872d581_6f06e2b038a04c77f186ddef178955d9.jpeg","2023.05.19","RIZAP がRubyKaigi 2023に初参戦！【新卒メンバー現場レポート】",[263,297,167,166],"RubyKaigi",{"to":299,"image":300,"date":301,"label":163,"title":302,"tags":303},"/recruit/articles/entries/231","https://rizap-tech.g.kuroco-img.app/v=1775010931/files/user/recruit/contents/thumbnail/n5b815f6225c1_7c4443a950539d8845a478f286344c77.png","2025.08.21","GoogleCloudNextTokyo25参加レポート",[167,166,304],"データエンジニア",{"to":306,"image":307,"date":308,"label":163,"title":309,"tags":310},"/recruit/articles/entries/224","https://rizap-tech.g.kuroco-img.app/v=1775010955/files/user/recruit/contents/thumbnail/nc123cf696a1a_10ac747bb44c1b1fae364813f5887cd4.jpeg","2025.10.15","「DroidKaigi 2025にスタッフ参加！　現場で感じたイベント運営のやりがいと学び」",[311,312,166,167],"DroidKaigi","Android",{"to":314,"image":315,"date":316,"label":163,"title":317,"tags":318},"/recruit/articles/entries/282","https://rizap-tech.g.kuroco-img.app/v=1775010958/files/user/recruit/contents/thumbnail/nddbc60837284_e737cc739717b4992be1867fe72c0131.jpeg","2024.04.22","RIZAP がtry! Swift Tokyo 2024にも初参戦！【各講演のレポート集】",[167,319,166,320],"tryswift","iOS",{"to":322,"image":323,"date":324,"label":163,"title":325,"tags":326},"/recruit/articles/entries/257","https://rizap-tech.g.kuroco-img.app/v=1775010948/files/user/recruit/contents/thumbnail/n97925780edf5_60fab9f772e0dc6b985ea967c57ca32d.png","2024.11.25","KINTOテクノロジーズ×RIZAPテクノロジーズ Mobile Tipsを開催しました！！",[169,177,327,166],"勉強会",{"to":329,"image":330,"date":331,"label":163,"title":332,"tags":333},"/recruit/articles/entries/269","https://rizap-tech.g.kuroco-img.app/v=1775010956/files/user/recruit/contents/thumbnail/nce2d4d804ea7_3c53f87c8f3cf7006140ffcf566500e8.jpeg","2024.08.15","RIZAPのエンジニアが、SRE NEXT 2024に初参戦！ 【各講演のレポート集】",[169,167,208,334,166],"SRE Next",1776738990846]