[{"data":1,"prerenderedAt":323},["ShallowReactive",2],{"recruit-jobs":3,"recruit-articles-all-1":157,"recruit-articles-categories":265,"recruit-article-entry-279":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":289},{"date":279,"publishedAt":280,"categoryName":163,"title":281,"heroImage":282,"body":283,"metaDescription":284,"tags":285},"2024.06.18","2024-06-18T00:00:00+09:00","RIZAPのエンジニアが、今年もRubyKaigi に参加してきました！（2024・那覇）【各講演のレポート集】","https://rizap-tech.g.kuroco-img.app/v=1775010953/files/user/recruit/contents/thumbnail/nb61a9c59ce4d_344df9e655b8c6b6d1a383bd3735d716.jpeg","\u003Cp name=\"b2628214-2afd-4974-be22-2f2d313f6e7e\" id=\"b2628214-2afd-4974-be22-2f2d313f6e7e\">&nbsp;\u003C/p>\u003Cfigure name=\"64988ac9-5c16-4cc5-945a-4792553c5336\" id=\"64988ac9-5c16-4cc5-945a-4792553c5336\">\u003Cblockquote>\u003Cp name=\"2b0f849e-1a40-4415-8cab-9d0d95e1207d\" id=\"2b0f849e-1a40-4415-8cab-9d0d95e1207d\">世界中からRubyを扱う「Rubyist」が集まる年次イベント、「RubyKaigi 」が今年５月、沖縄県那覇市で開催されました。\u003Cbr>昨年この「お祭り」に初参加させていただいた、われわれRIZAP、今年も若手エンジニアたちが参加してきました！　ここでは、会期中に開催された数々の講演について、メンバーがそれぞれの言葉で感想をまとめています\u003Cbr>（メンバー別⇒参加した講演別に目次を分けています）。\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"15af0393-0063-4f86-bd88-f7afec5a80c3\" id=\"15af0393-0063-4f86-bd88-f7afec5a80c3\">\u003Cstrong>↓↓↓ 現場レポートはこちら&nbsp;↓↓↓\u003C/strong>\u003C/p>\u003Cp name=\"02bdd670-40db-467b-b8a4-4eef88cfa700\">\u003Ca href=\"https://www.rizap-tech.co.jp/recruit/articles/entries/278\">https://www.rizap-tech.co.jp/recruit/articles/entries/278\u003C/a>\u003C/p>\u003Chr>\u003Cp name=\"52eb92df-adbc-43ec-a65e-bf31ff05a16f\" id=\"52eb92df-adbc-43ec-a65e-bf31ff05a16f\">\u003Cstrong>?プロフィール\u003C/strong>\u003Cbr>\u003Cstrong>梅田智大\u003C/strong>／プロダクト開発統括１部エンジニア\u003Cbr>\u003Cstrong>松永祐生\u003C/strong>／プロダクト開発統括１部エンジニア\u003C/p>\u003Chr>\u003Chr>\u003Cp name=\"33b757e2-54e9-4665-830d-19ecc21eb078\" id=\"33b757e2-54e9-4665-830d-19ecc21eb078\">&nbsp;\u003C/p>\u003Ch2 name=\"007f0fbb-c382-43f7-ba89-efd20edb38e8\" id=\"007f0fbb-c382-43f7-ba89-efd20edb38e8\">バックエンドエンジニア梅田智大の感想まとめ\u003C/h2>\u003Cp name=\"9c9e7519-7205-48d9-ba9b-206b1ab18b90\" id=\"9c9e7519-7205-48d9-ba9b-206b1ab18b90\">&nbsp;\u003C/p>\u003Cfigure name=\"48a8f259-d317-4aba-a0a8-cc36ee34bb56\" id=\"48a8f259-d317-4aba-a0a8-cc36ee34bb56\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/nb61a9c59ce4d_1718681302842-J8vB1znxz5.jpg\" alt=\"\" width=\"620\" height=\"325\">\u003C/p>\u003Cfigcaption>スポンサー会社一覧の中に弊社ロゴを発見！　右が私・梅田です\u003C/figcaption>\u003C/figure>\u003Cp name=\"7847e85e-efac-4d75-9c6b-6f3ea86cba50\" id=\"7847e85e-efac-4d75-9c6b-6f3ea86cba50\">&nbsp;\u003C/p>\u003Ch2 name=\"60b63a7b-f14b-44fd-bdbf-d87686f0a5c0\" id=\"60b63a7b-f14b-44fd-bdbf-d87686f0a5c0\">１．Writing Weird Code\u003C/h2>\u003Cp name=\"1f0cc1bf-d3b0-43ce-ba0e-b4f02455c053\" id=\"1f0cc1bf-d3b0-43ce-ba0e-b4f02455c053\">&nbsp;\u003C/p>\u003Cp name=\"a72f3359-9326-4d75-b983-d5ea3a7dc460\">\u003Ca href=\"https://rubykaigi.org/2024/presentations/tompng.html#day1\" target=\"_blank\" rel=\"noopener noreferrer\">https://rubykaigi.org/2024/presentations/tompng.html#day1\u003C/a>\u003C/p>\u003Cp name=\"c786fb69-0926-4280-8303-4647e208d19c\" id=\"c786fb69-0926-4280-8303-4647e208d19c\">\u003Cbr>登壇されたのは、「世にも奇妙なコード」を書くことで有名なTomoya Ishida（＠tompng 、通称：ぺん）さんです。ぺんさんは「TRICK（※）2022」で金賞を受賞された方です。&nbsp;\u003C/p>\u003Cfigure name=\"56600b62-6780-459a-800d-674f7677ecd0\" id=\"56600b62-6780-459a-800d-674f7677ecd0\">\u003Cblockquote>\u003Cp name=\"b1f3e0d1-7149-42d8-bb03-0f9a95ca9007\" id=\"b1f3e0d1-7149-42d8-bb03-0f9a95ca9007\">※TRICK…RubiyKaigiで開催される、奇妙なコードで競い合うプログラミングコンテスト。前回は（おそらく）2022に開催。\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"83454bec-399f-496e-ac0a-1b7b9efcd16e\">\u003Ca href=\"https://rubykaigi.org/2022/presentations/tric.html\" target=\"_blank\" rel=\"noopener noreferrer\">https://rubykaigi.org/2022/presentations/tric.html\u003C/a>\u003C/p>\u003Cp name=\"3dc4813a-61d4-499b-832e-04837ebab28f\" id=\"3dc4813a-61d4-499b-832e-04837ebab28f\">\u003Cbr>金魚が鉢の中を泳いでいるように見えるアニメーションをRubyコードで表現するだけでなく、一時停止をするとその場所から泳ぎを再開するという、まさに神業的なコードです（言葉で説明しても伝わらないと思うので、詳しくは下記をご確認ください…）。\u003C/p>\u003Cp name=\"ee694f92-d6dc-400d-ab0e-507f8969d294\">\u003Ca href=\"https://twitter.com/tompng/status/1582322388678549504\" target=\"_blank\" rel=\"noopener noreferrer\">https://twitter.com/tompng/status/1582322388678549504\u003C/a>\u003C/p>\u003Cp name=\"0687b144-1350-433e-827c-93150339d2e2\" id=\"0687b144-1350-433e-827c-93150339d2e2\">\u003Cbr>私も最初にこれを見たときは、「なんだかすごいことをやる人がいるのだな」と驚く程度でしたが、このセッションでは、奇妙なコードに隠されたテクニックと、その魅力が語られていました。\u003C/p>\u003Cp name=\"cc32a9aa-d22e-405a-ac8c-21ba329b75d0\" id=\"cc32a9aa-d22e-405a-ac8c-21ba329b75d0\">&nbsp;\u003C/p>\u003Cp name=\"c804182e-adb0-48a7-b6f0-f0d2ca20ee42\" id=\"c804182e-adb0-48a7-b6f0-f0d2ca20ee42\">\u003Cstrong>奇妙なコードに隠されたテクニック\u003C/strong>\u003C/p>\u003Cpre name=\"df4212a6-8809-4afb-9969-cb80dac8dd1c\" id=\"df4212a6-8809-4afb-9969-cb80dac8dd1c\">\u003Ccode class=\"language-plaintext\">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\u003C/code>\u003C/pre>\u003Cp name=\"305a8ace-bea7-4082-9c18-37f2c46f333b\" id=\"305a8ace-bea7-4082-9c18-37f2c46f333b\">このコードをご覧ください。一見意味をなさないヘンテコなコードに見えますが、実はRubyの構文としては正しく、実行結果は空文字列「\"\"」となります。\u003C/p>\u003Cp name=\"4382e484-bae5-4bc7-a525-71f4bb675b11\" id=\"4382e484-bae5-4bc7-a525-71f4bb675b11\">Rubyの「%」記号はさまざまなコンテキストで使われ、それぞれ異なる意味を持ちます。\u003C/p>\u003Cp name=\"835cb54d-ca4a-4620-96a9-1cfb785e6fb5\">\u003Ca href=\"https://docs.ruby-lang.org/ja/latest/doc/symref.html#per\" target=\"_blank\" rel=\"noopener noreferrer\">https://docs.ruby-lang.org/ja/latest/doc/symref.html#per\u003C/a>\u003C/p>\u003Cp name=\"d4d03f43-5bf0-47b8-b234-ac99f4d2a798\" id=\"d4d03f43-5bf0-47b8-b234-ac99f4d2a798\">先のコードは、こうした「%」記号が持つさまざまなコンテキストを組み合わせることで、Rubyとしてsyntax validなコードに仕上げているとのことでした。\u003C/p>\u003Cp name=\"b3604808-7c77-4d2b-8c0c-de1a2096eebc\" id=\"b3604808-7c77-4d2b-8c0c-de1a2096eebc\">ぺんさんは、こういった記号や文字がRubyではどのように解釈されるのか、複数並べたり、スペースを空けるとどう解釈が変わるかなどを一つ一つ解明していくことで、一見奇妙だけれどRubyとしてきちんと実行できるコードを生み出しています。\u003C/p>\u003Cp name=\"e6e0382e-e4f5-4aae-ae77-4796f339dc15\" id=\"e6e0382e-e4f5-4aae-ae77-4796f339dc15\">私には到底まねできない魔法だと思っていましたが、実はRubyを知り尽くして突き詰めていった境地であり、Rubyと実直に向き合っていった延長に過ぎないのだと気づかされました。\u003C/p>\u003Cp name=\"312c0799-c289-4ae2-8343-61fced19b5a7\" id=\"312c0799-c289-4ae2-8343-61fced19b5a7\">&nbsp;\u003C/p>\u003Cp name=\"5d56d26c-41ba-40ae-8409-6beead11928d\" id=\"5d56d26c-41ba-40ae-8409-6beead11928d\">\u003Cstrong>Self TRICK 2024\u003Cbr>\u003C/strong>今年はTRICKの開催はありませんでしたが、ぺんさんはこのKeynoteのためにいくつもの奇妙な作品を生み出し、それを発表されていました。\u003C/p>\u003Cp name=\"ce6cecb1-d4e1-49d7-8682-1a70a8339c47\" id=\"ce6cecb1-d4e1-49d7-8682-1a70a8339c47\">その作品はビットマップ画像でありつつ、Rubyのコードとして実行可能なものや、CRubyとcanvas APIを使ってブラウザでアニメーションを実行するもの、実物かのように泳いでいるクラゲをクリックすると、触手が動くというコードなど、非常にユニークかつテクニカルなものばかりでした。\u003C/p>\u003Cp name=\"c9ab53d8-f9c6-44b1-9bcf-922b36b65ab5\" id=\"c9ab53d8-f9c6-44b1-9bcf-922b36b65ab5\">中でも興味深かったのが、波の動きを再現したアニメーションです。金魚のように、アニメーションを一時停止すると途中から再開することが可能です。一見金魚と似たようなコードに見えますが、実は別のロジックを採用しており、波がどのような状態かという演出に意味を持たせることで、全く同じ状態を復元するのではなく、同じ演出を再実行することで厳密には同じ状態ではないけれど同じように見えるようにしています。\u003C/p>\u003Cp name=\"eddbf829-8b6b-48c1-a1c1-07d16b83294d\" id=\"eddbf829-8b6b-48c1-a1c1-07d16b83294d\">似たようなアウトプットでも、複数のアプローチができる。まさにRubyの自由度の高さと楽しさを表現した、素晴らしい作品だと感じました。\u003C/p>\u003Cp name=\"e9c07d80-0d0f-43bc-baaa-3dcb423f1f95\" id=\"e9c07d80-0d0f-43bc-baaa-3dcb423f1f95\">&nbsp;\u003C/p>\u003Cp name=\"1b3171ca-07f3-4947-aef1-b3fa51850665\" id=\"1b3171ca-07f3-4947-aef1-b3fa51850665\">\u003Cstrong>↓↓↓ 下記より作品をチェック！ ↓↓↓\u003C/strong>\u003C/p>\u003Cp name=\"ee82154c-abaa-4316-8da3-6c2840dc3f6e\">\u003Ca href=\"https://github.com/tompng/selftrick2024\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/tompng/selftrick2024\u003C/a>\u003C/p>\u003Cp name=\"9bea3ec3-b8d6-4137-8fba-f717ae6b615c\" id=\"9bea3ec3-b8d6-4137-8fba-f717ae6b615c\">&nbsp;\u003C/p>\u003Cp name=\"928234e0-fd8b-45a2-9656-13c62ea52489\" id=\"928234e0-fd8b-45a2-9656-13c62ea52489\">\u003Cstrong>【感想】\u003Cbr>\u003C/strong>「奇妙なコード」に隠されていたのは、Rubyへのひたむきな探究心でした。これは単なる遊びのカテゴリーに収まらず、Rubyを深く理解することが実務に生かされることを示しています。思考の幅を広げることで、新しいアプローチを発見でき、アプリケーションのパフォーマンスを向上させたり、予期しないバグや落とし穴に気がつきやすくなったりします。\u003C/p>\u003Cp name=\"7fd3a2ab-3fe0-40d8-a079-6aceb6e33fe8\" id=\"7fd3a2ab-3fe0-40d8-a079-6aceb6e33fe8\">会場が大盛り上がりした上に、初学者の心にも刺さるような内容で、まさにRubyKaigi 2024の開幕にふさわしい素晴らしいセッションでした！\u003C/p>\u003Cp name=\"a9575b35-c675-4ed1-bbf6-078f130f527c\" id=\"a9575b35-c675-4ed1-bbf6-078f130f527c\">&nbsp;\u003C/p>\u003Cp name=\"4cb3fc91-cb71-43db-b2c0-4f909ac0a120\" id=\"4cb3fc91-cb71-43db-b2c0-4f909ac0a120\">&nbsp;\u003C/p>\u003Ch2 name=\"ab402229-4a28-4c8c-994e-bb8e9f891ed7\" id=\"ab402229-4a28-4c8c-994e-bb8e9f891ed7\">２．An adventure of Happy Eyeballs\u003C/h2>\u003Cp name=\"ab9840d8-eff1-44b1-bc35-da9229640a75\" id=\"ab9840d8-eff1-44b1-bc35-da9229640a75\">&nbsp;\u003C/p>\u003Cp name=\"e10e0796-fec7-43e2-814f-aad02324a793\">\u003Ca href=\"https://rubykaigi.org/2024/presentations/coe401_.html#day1\" target=\"_blank\" rel=\"noopener noreferrer\">https://rubykaigi.org/2024/presentations/coe401_.html#day1\u003C/a>\u003C/p>\u003Cp name=\"79a5298e-ad9d-4745-8652-f911a308d162\" id=\"79a5298e-ad9d-4745-8652-f911a308d162\">\u003Cbr>昨年のRubyKaigi 2023にも登壇され、Rubyにインクリメント演算子を導入するテーマで、その試行錯誤のプロセスをユーモラスに、かつ熱意を込めて語られたShioiさん。私もそのセッションに参加し、その場の熱気に心を躍らせました。\u003Cbr>そのShioiさんが今年もステージに立ち、昨年を超える情熱を持って会場を盛り上げてくださいました！\u003Cbr>&nbsp;\u003C/p>\u003Cp name=\"96ff16b2-876e-42a6-8ef8-7b348592015c\" id=\"96ff16b2-876e-42a6-8ef8-7b348592015c\">\u003Cstrong>今年のテーマはなんと「RubyにHappy Eyeballsを導入する」\u003Cbr>\u003C/strong>今年のテーマは、「RubyにHappy Eyeballsをどう導入するか」というものでした。Happy Eyeballsはインターネット接続の問題を解決するアルゴリズムで、IPv4とIPv6のどちらが速く応答するかをテストし、最適な接続を選択します。このアルゴリズムは、ユーザーのオンライン体験をスムーズにし、IPv4とIPv6が利用可能な環境で、どちらのプロトコルが効率的に動作するかを迅速に判断します。\u003C/p>\u003Cp name=\"8fef36f9-805e-414c-a913-d48c540647f7\" id=\"8fef36f9-805e-414c-a913-d48c540647f7\">&nbsp;\u003C/p>\u003Cp name=\"abb0a92b-08ab-414f-b69d-7aefbaf4bf99\" id=\"abb0a92b-08ab-414f-b69d-7aefbaf4bf99\">\u003Cstrong>試行錯誤の末に行き着いた驚きの発見\u003Cbr>\u003C/strong>Happy Eyeballsの導入にも、数多くの困難に直面したそうです。\u003Cbr>特に難しかったのが、IPv4とIPv6のどちらを選択するかの複雑な条件分岐だったとのこと。\u003C/p>\u003Cp name=\"63366b3c-0906-4fbe-b89d-303193284c4c\" id=\"63366b3c-0906-4fbe-b89d-303193284c4c\">IPv4とIPv6のどちらに接続するのかはさまざまな条件によって決まり、ありとあらゆるケースを想定して条件分岐を組まないと、考慮漏れが発生してしまうため、何度も壁にぶつかったそうです。\u003C/p>\u003Cp name=\"2582f90e-7741-4d4c-a873-352ca3655977\" id=\"2582f90e-7741-4d4c-a873-352ca3655977\">試行錯誤の末に行き着いた結論が、リソースの状態によって適切に接続をしたりエラーハンドリングなどの処理をしたり、つまり状態管理であるというものでした。\u003C/p>\u003Cp name=\"002e4c4c-c6e8-4f0c-aae3-8d0b8414527b\" id=\"002e4c4c-c6e8-4f0c-aae3-8d0b8414527b\">この状態管理による解決策は、真の課題を抽象化し、それに基づいて解決策を考えるという、まさにエンジニアリングの精神そのものでした。Shioiさんの発想力にはただただ驚かされるばかりです。\u003C/p>\u003Cp name=\"6f490028-7bb1-49ab-8a91-297c46ebcb9b\" id=\"6f490028-7bb1-49ab-8a91-297c46ebcb9b\">&nbsp;\u003C/p>\u003Cp name=\"d5bdf1c0-273b-4e51-be62-957dd5c078e2\" id=\"d5bdf1c0-273b-4e51-be62-957dd5c078e2\">\u003Cstrong>Shioiさんに直撃インタビュー!!?\u003Cbr>\u003C/strong>このセッションには私自身非常に感銘を受けたこともあり、その感動をShioiさんご本人に直接伝えに行きました！\u003C/p>\u003Cp name=\"e8982917-95fe-4a5f-a0b5-9a54b840b1d1\" id=\"e8982917-95fe-4a5f-a0b5-9a54b840b1d1\">「Happy Eyeballsについても初めて知ったので、セッションの内容をきちんと理解しきれなかったですが、アプローチや思考力の素晴らしさに感動しました…！」と私がお伝えしたところ、Shioiさんは「私もHappy Eyeballsのことは全然知らなかったので大丈夫ですよ！」と優しく答えてくださいました（知らない訳ないのに、本当に親切でお優しいShioiさんに心から感謝です…）。\u003C/p>\u003Cp name=\"9461643e-7475-457a-b6a5-dcdc069ecae3\" id=\"9461643e-7475-457a-b6a5-dcdc069ecae3\">さらに、複雑な状態管理をどのように設計し、どう考慮漏れを防いでいるのかが気になったので、質問いたしました。\u003Cbr>するとなんと、\u003Cbr>\u003Cbr>\u003Cstrong>「セッションでは発表しきれなかったですが、実は全ての条件を片っ端からテキストで書き出しているんですよ…」\u003Cbr>\u003C/strong>\u003Cbr>と驚きの返答が（笑）。\u003Cbr>条件を書き出し続けたところ、途中から、大きく四つの前提に分類されることに気がつき、考慮漏れがなく全ての条件を洗い出すことに成功したそうです（実際に全ての条件を書き出したファイルを拝見させていただきましたが、本当にすさまじい文量でした）。\u003C/p>\u003Cp name=\"f097c789-9623-4a9f-9654-7b13d1011db9\" id=\"f097c789-9623-4a9f-9654-7b13d1011db9\">私もRubyKaigi 2024の半月ほど前、ちょっと複雑なビジネスロジックを組んだときに考慮漏れをしてしまい悩んでいたので、非常に勉強になりました。\u003C/p>\u003Cp name=\"2d1fa389-80a3-405e-9586-1db8c5fe6d46\" id=\"2d1fa389-80a3-405e-9586-1db8c5fe6d46\">&nbsp;\u003C/p>\u003Cfigure name=\"da48c1f9-3631-4a9a-9fda-3251526753e5\" id=\"da48c1f9-3631-4a9a-9fda-3251526753e5\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/nb61a9c59ce4d_1718682205661-Dm1gQDlE1c.jpg\" alt=\"\" width=\"620\" height=\"325\">\u003C/p>\u003Cfigcaption>ありがとうございました！\u003C/figcaption>\u003C/figure>\u003Cp name=\"f9ca99af-0a62-4827-a385-4229a03d84d3\" id=\"f9ca99af-0a62-4827-a385-4229a03d84d3\">\u003Cstrong>【感想】\u003Cbr>\u003C/strong>恥ずかしながら、このセッションを聴くまでHappy Eyeballsのことを知りませんでした。また、セッションの内容を完全に理解するのも難しかったのですが、エンジニアとしての思考プロセスを垣間見ることができ、非常に感動的な体験でした。\u003C/p>\u003Cp name=\"c3ef51f1-ab46-42ac-aa1b-de1f4672575e\" id=\"c3ef51f1-ab46-42ac-aa1b-de1f4672575e\">さらに、昨年の++メソッドは実際には採用されず、試行だけで終わりましたが、今年発表されたHappy Eyeballsは、なんとRuby3.4に導入が決まっているようです…！\u003Cbr>エンジニアとして躍進めざましいShioiさんの活躍ぶりに、ただただ尊敬の念を抱くばかりです。駆け出しエンジニアの私にとって、勇気づけられる非常に素晴らしいセッションでした！\u003C/p>\u003Cp name=\"457bbee3-61f9-40d2-922d-78edaffbf43b\" id=\"457bbee3-61f9-40d2-922d-78edaffbf43b\">&nbsp;\u003C/p>\u003Cp name=\"13599a50-4968-4703-ada9-1028ba8958cc\" id=\"13599a50-4968-4703-ada9-1028ba8958cc\">&nbsp;\u003C/p>\u003Ch2 name=\"d7a98a0c-6101-4a88-ab2b-40ec54f3ace8\" id=\"d7a98a0c-6101-4a88-ab2b-40ec54f3ace8\">３．Embedding it into Ruby code\u003C/h2>\u003Cp name=\"e0f08fc5-7b27-4760-91f0-2e5e99b95da5\" id=\"e0f08fc5-7b27-4760-91f0-2e5e99b95da5\">&nbsp;\u003C/p>\u003Cp name=\"539554b5-fa35-46cf-8b0a-a9a64b89dad7\">\u003Ca href=\"https://rubykaigi.org/2024/presentations/soutaro.html#day2\" target=\"_blank\" rel=\"noopener noreferrer\">https://rubykaigi.org/2024/presentations/soutaro.html#day2\u003C/a>\u003C/p>\u003Cp name=\"2e30a3f7-fe75-40a2-b28b-73e7c002076e\" id=\"2e30a3f7-fe75-40a2-b28b-73e7c002076e\">今回のセッションは、Rubyに型定義を導入できるOSS、RBSに関するものでした。RBSは、Rubyのクラスやモジュールの構造を定義するための言語で、メソッドの引数や変数などに型を指定できます。これにより、Rubyコードの型の安全性が向上し、プログラムの挙動をより正確に保証することが可能になります。\u003C/p>\u003Cp name=\"c744fa87-f2f4-4c7b-95e1-4c915d818a77\" id=\"c744fa87-f2f4-4c7b-95e1-4c915d818a77\">登壇された松本宗太郎さんは、RBSの主要なコミッターであり、昨年のRubyKaigi 2023のKeynoteスピーカーでもあります。\u003C/p>\u003Cp name=\"92de16ae-e1b7-43a0-9c7d-5046bd89311d\" id=\"92de16ae-e1b7-43a0-9c7d-5046bd89311d\">\u003Ca href=\"https://rubykaigi.org/2023/presentations/soutaro.html#day3\" target=\"_blank\" rel=\"nofollow noopener\">松本に始まり松本で終わる\u003C/a>\u003C/p>\u003Cp name=\"2680a423-0d41-4b1a-adaf-2e5164ffbbff\" id=\"2680a423-0d41-4b1a-adaf-2e5164ffbbff\">&nbsp;\u003C/p>\u003Cp name=\"7b2b2735-1105-4bd7-87c7-d763960b66a8\" id=\"7b2b2735-1105-4bd7-87c7-d763960b66a8\">\u003Cstrong>従来のRBS\u003Cbr>\u003C/strong>RBSは簡単に導入でき、gem install rbs コマンドでインストール後、以下のようにクラスの属性やメソッドの引数に型を指定します。\u003C/p>\u003Cpre name=\"4e73a4c1-12b9-406d-85b1-29ed1931bda3\" id=\"4e73a4c1-12b9-406d-85b1-29ed1931bda3\">\u003Ccode class=\"language-plaintext\">class User\n  attr_reader :login, :email\n&nbsp;\n  def initialize(login: String, email: String)\n    @login = login\n    @email = email\n  end\nend\u003C/code>\u003C/pre>\u003Cp name=\"5621b0bd-c6a5-4a06-9683-5b0e076dc768\" id=\"5621b0bd-c6a5-4a06-9683-5b0e076dc768\">型定義を完了した後、CLIで「rbs prototype」コマンドを実行すると、sig/ディレクトリにRBSファイルが自動生成されます。\u003C/p>\u003Cp name=\"28959008-f3c4-47b6-8978-32051c5abe7d\" id=\"28959008-f3c4-47b6-8978-32051c5abe7d\">この生成されたRBSファイルをもとに型チェックを行っており、別ファイルに書き出すことで、既存のコードを壊すことなく型定義ができるようにしているそうです。\u003C/p>\u003Cp name=\"242fc80e-c4b0-41bc-b71c-acd66b23f108\" id=\"242fc80e-c4b0-41bc-b71c-acd66b23f108\">&nbsp;\u003C/p>\u003Cp name=\"deedaf75-8bbe-469b-8474-99d78de68042\" id=\"deedaf75-8bbe-469b-8474-99d78de68042\">\u003Cstrong>ファイル分割の課題と革新的な解決策\u003Cbr>\u003C/strong>従来、型定義を別ファイルに分割することは、CLIコマンドを定期的に実行しなければならないという課題がありました。GitHubでコードのレビューを行った際にCLIを実行し忘れると、RBSファイルと実装コードの間に乖離（かいり）が生じ、型チェックが正常に機能しないという問題が起こっていたようです。\u003Cbr>そんな課題を解決すべく、今回の開発ではRBSコードをRubyファイル内のコメントとして埋め込むという画期的な方法を導入されたそうです。\u003C/p>\u003Cp name=\"e7e59314-ab7b-4ef6-9fd8-a910ac431834\" id=\"e7e59314-ab7b-4ef6-9fd8-a910ac431834\">具体的には、開発者は型情報をコメントで記述します。すると、Rubyを実行する際に、コメントを解析してrbsファイルを自動生成してくれるそうです。\u003Cbr>このアプローチにより、RBSファイルと型定義の乖離（かいり）を防ぎながら、開発の効率を大幅に向上させることができます。\u003C/p>\u003Cp name=\"04af0528-ecc4-493d-b414-c4b38d1d41ba\" id=\"04af0528-ecc4-493d-b414-c4b38d1d41ba\">&nbsp;\u003C/p>\u003Cp name=\"5380fdd0-33d5-4060-84da-1995d094cd49\" id=\"5380fdd0-33d5-4060-84da-1995d094cd49\">\u003Cstrong>YARDとの互換性も！\u003Cbr>\u003C/strong>さらに素晴らしいことに、YARDエコシステムとの互換性も持っており、ほとんどYARDを書いているのと同じ感覚でRBSの型定義を書けます。\u003C/p>\u003Cpre name=\"3680da4e-5a76-4cbf-9c9b-6d9324d1ae9c\" id=\"3680da4e-5a76-4cbf-9c9b-6d9324d1ae9c\">\u003Ccode class=\"language-plaintext\">YARD\n# @param size [Integer]\n\nRBS\n# @rbs size Integer\u003C/code>\u003C/pre>\u003Cp name=\"b6f8a7dc-c2fd-4ad1-9229-516e3076ed58\" id=\"b6f8a7dc-c2fd-4ad1-9229-516e3076ed58\">すでにYARDを採用しているチームがRBSを導入するハードルが下がりますし、初学者でも感覚的に理解できる読み味になるので、これは非常にうれしいです。\u003Cbr>&nbsp;\u003C/p>\u003Cp name=\"5dcd4f1f-f82c-484f-99ad-2b5308ba4cb1\" id=\"5dcd4f1f-f82c-484f-99ad-2b5308ba4cb1\">\u003Cstrong>【感想】\u003Cbr>\u003C/strong>私たちのチームでは、静的型付けをやっていませんでしたが、Copilotの予測精度を上げるために、型情報をコメントしても良いよねという会話をしていました。RIZAPではRBSを導入していないこともありYARDでコメントを書くことを検討していますが、RBSを導入することで型チェックまでできるということ自体は素晴らしいなと思いました…！\u003Cbr>ユーザーが使いやすいことを、常に心がけて開発をされている松本宗太郎さんの姿勢からは、学ぶことが尽きません！\u003C/p>\u003Cp name=\"c71d0dcf-4340-470e-a0c8-6cb5181e2d06\" id=\"c71d0dcf-4340-470e-a0c8-6cb5181e2d06\">&nbsp;\u003C/p>\u003Cp name=\"cc25cb8d-e35b-480d-8c2b-cb346ca83aed\" id=\"cc25cb8d-e35b-480d-8c2b-cb346ca83aed\">&nbsp;&nbsp;\u003C/p>\u003Ch2 name=\"168002c8-993e-4f8d-9138-cd09798d5c3a\" id=\"168002c8-993e-4f8d-9138-cd09798d5c3a\">バックエンドエンジニア松永祐生の感想まとめ\u003C/h2>\u003Cp name=\"6cecba78-498b-42aa-bac2-f92648f311ba\" id=\"6cecba78-498b-42aa-bac2-f92648f311ba\">&nbsp;\u003C/p>\u003Cfigure name=\"557841be-0303-4546-8bba-34aaa7781347\" id=\"557841be-0303-4546-8bba-34aaa7781347\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/nb61a9c59ce4d_1718682547969-zkYhT2N1VG.jpg\" alt=\"\" width=\"620\" height=\"325\">\u003C/p>\u003Cfigcaption>沖縄の夜を満喫中。中央が自分です\u003C/figcaption>\u003C/figure>\u003Cp name=\"837c33cb-5830-4fb2-a9c1-c0c5e3b980e4\" id=\"837c33cb-5830-4fb2-a9c1-c0c5e3b980e4\">&nbsp;\u003C/p>\u003Ch2 name=\"672a343c-d04f-46a6-b93a-1c8ade9de054\" id=\"672a343c-d04f-46a6-b93a-1c8ade9de054\">４．Good first issues of TypeProf\u003C/h2>\u003Cp name=\"49fb7360-2697-49f4-b989-b636ef99ac79\" id=\"49fb7360-2697-49f4-b989-b636ef99ac79\">&nbsp;\u003C/p>\u003Cp name=\"913ffed6-5631-4259-8bf8-0d71a08fee4d\">\u003Ca href=\"https://rubykaigi.org/2024/presentations/mametter.html#day2\" target=\"_blank\" rel=\"noopener noreferrer\">https://rubykaigi.org/2024/presentations/mametter.html#day2\u003C/a>\u003C/p>\u003Cp name=\"578e6a8a-dc79-437d-b858-2bffed30fb1f\" id=\"578e6a8a-dc79-437d-b858-2bffed30fb1f\">&nbsp;Yusuke Endoh (@mametter) さんによるセッションで、現在mametterさんが開発を主導しているTypeProfという型推論ツールの紹介でした。&nbsp;\u003C/p>\u003Cp name=\"4f73d920-0789-4a16-928a-635d7f5d4167\">\u003Ca href=\"https://github.com/ruby/typeprof\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/ruby/typeprof\u003C/a>\u003C/p>\u003Cp name=\"74685f81-d731-4ffd-9ed9-bcbf5b7e2375\" id=\"74685f81-d731-4ffd-9ed9-bcbf5b7e2375\">自分は今回のRubyKaigiに参加するにあたり、予習としてmametterさんの 『RubyでつくるRuby』という本を読んでいたので、ご本人にお会いできることをとても楽しみにしていました！\u003C/p>\u003Cp name=\"47718c7c-5d18-410e-b903-cca93a84f9ec\" id=\"47718c7c-5d18-410e-b903-cca93a84f9ec\">さて、気になるその内容ですが、TypeProfはvscodeなどのエディター上で動くツールだそうです。\u003C/p>\u003Cp name=\"e17b21e5-8356-4982-8942-5b699e1bf802\" id=\"e17b21e5-8356-4982-8942-5b699e1bf802\">例えば以下のようなコードがあるとします。\u003C/p>\u003Cpre name=\"36cabd6e-fa10-4351-98af-038f828409cd\" id=\"36cabd6e-fa10-4351-98af-038f828409cd\">\u003Ccode class=\"language-plaintext\">string = 'hoge' + 10\u003C/code>\u003C/pre>\u003Cp name=\"7a496e50-c9cc-44b8-adb0-0025e0b1dec2\" id=\"7a496e50-c9cc-44b8-adb0-0025e0b1dec2\">この場合、もちろんstringとintegerの加算はできないためエラーになりますが、TypeProfを入れていると、このようなときにエディターがバグとして警告を出してくれるそうです。 Typescriptで書いているときと同じですね。すごい！\u003Cbr>そのほか、強力な入力補完機能などもあるとのことでした。\u003C/p>\u003Cp name=\"58d354b8-5474-4737-a550-959e42532a59\" id=\"58d354b8-5474-4737-a550-959e42532a59\">セッションの最後では、開発に貢献してくれる人を探しているというお話もありました。そのため、「どのように開発しているか」や、「TypeProfの内部構造などの説明」、「今後実装していく機能」などについても説明がありました。\u003Cbr>&nbsp;\u003C/p>\u003Cp name=\"2f08bcce-f9a3-4e12-84eb-ed693e7bd723\" id=\"2f08bcce-f9a3-4e12-84eb-ed693e7bd723\">\u003Cstrong>【感想】\u003C/strong>\u003Cbr>TypeErrorに対して書いた時点でエディターが警告を出してくれるのは、すごくうれしいと感じました！　また、自分はRubyMineが好きなのですが、諸事情によりvscodeを使っているため、入力補完機能を備えていることもかなりうれしいです。\u003Cbr>まだまだ勉強不足なため、TypeProfの開発にすぐには貢献できませんが、今後ますます便利になるであろうTypeProfに、非常に期待しています！\u003C/p>\u003Cp name=\"f374bcc9-ad2d-4918-b29b-b44f36a29ecc\" id=\"f374bcc9-ad2d-4918-b29b-b44f36a29ecc\">&nbsp;\u003C/p>\u003Cp name=\"372b4764-5223-4991-b2d8-df7e587370de\" id=\"372b4764-5223-4991-b2d8-df7e587370de\">&nbsp;\u003C/p>\u003Ch2 name=\"9180b3ed-ee3e-4c89-bb01-deec71f5b8fc\" id=\"9180b3ed-ee3e-4c89-bb01-deec71f5b8fc\">５．Namespace, What and Why\u003C/h2>\u003Cp name=\"37346e8a-005e-42b0-aeed-35626e055cd6\" id=\"37346e8a-005e-42b0-aeed-35626e055cd6\">&nbsp;\u003C/p>\u003Cp name=\"3c6f43c1-7c94-47e5-bcc3-588549baf819\">\u003Ca href=\"https://rubykaigi.org/2024/presentations/tagomoris.html#day1\" target=\"_blank\" rel=\"noopener noreferrer\">https://rubykaigi.org/2024/presentations/tagomoris.html#day1\u003C/a>\u003C/p>\u003Cp name=\"7a28841b-f17f-4402-83d8-b2c3e0d0cc9b\" id=\"7a28841b-f17f-4402-83d8-b2c3e0d0cc9b\">Satoshi Tagomori(@tagomoris) さんによるセッションでした。\u003Cbr>Rubyの新しい機能として実装されているNamespaseの解説、使用例、そして将来に関する説明でした。\u003Cbr>&nbsp;\u003C/p>\u003Cp name=\"7a803311-408d-4912-be9b-747ca8985440\" id=\"7a803311-408d-4912-be9b-747ca8985440\">\u003Cstrong>Namespaseとは\u003Cbr>\u003C/strong>Namespase(名前空間)は、アプリやライブラリをカプセル化する仕組みです。それぞれの名前空間は独立した空間として機能し、他の名前空間やグローバル空間からの影響を受けないそうです。\u003C/p>\u003Cp name=\"0b99ce2b-b735-4878-be12-0bd2868d41e8\" id=\"0b99ce2b-b735-4878-be12-0bd2868d41e8\">これにより、以下のメリットがあるとのこと。\u003C/p>\u003Cul name=\"7008e589-95d6-4095-863c-ad92c8bfe3a4\" id=\"7008e589-95d6-4095-863c-ad92c8bfe3a4\">\u003Cli>\u003Cp name=\"dffc8d60-e488-4508-939e-8603d6fbac6d\" id=\"dffc8d60-e488-4508-939e-8603d6fbac6d\">依存関係の衝突回避: 異なるバージョンのライブラリを同時に使用可能です。\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"77dba18a-a518-4554-b55f-471132c62499\" id=\"77dba18a-a518-4554-b55f-471132c62499\">コードの分離: クラスよりも大きな単位で区切れ、各名前空間同士は影響し合いません。\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"9518d9ca-734a-49ec-afc4-2e170daeac52\" id=\"9518d9ca-734a-49ec-afc4-2e170daeac52\">開発効率の向上: 影響範囲を限定しやすく、モジュール単位での開発・デプロイが容易になります。\u003C/p>\u003C/li>\u003C/ul>\u003Cp name=\"f970647c-160b-4ac4-83ca-93ab592b925c\" id=\"f970647c-160b-4ac4-83ca-93ab592b925c\">モジュラーモノリスにすごく良さそうな機能ですよね！\u003Cbr>他の参加者の方からは「段階的なRails Upgradeが可能になるのでは」といった声もあり、これまできつかったさまざまな問題の解決につながりそうな機能だと思いました。\u003Cbr>&nbsp;\u003C/p>\u003Cp name=\"22435737-c597-4032-9d2d-b46bd64c5156\" id=\"22435737-c597-4032-9d2d-b46bd64c5156\">\u003Cstrong>【感想】\u003Cbr>\u003C/strong>これまでモジュラーモノリスをRailsでやるのにはいくつかの問題点がありました。\u003C/p>\u003Col name=\"d8f8a0dc-ce64-4893-94ac-fc33406d3016\" id=\"d8f8a0dc-ce64-4893-94ac-fc33406d3016\">\u003Cli>\u003Cp name=\"d7a43442-6f73-4f2d-8b7e-eba5f301a2b0\" id=\"d7a43442-6f73-4f2d-8b7e-eba5f301a2b0\">依存関係の管理\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"9012e435-d6f6-4022-b075-3b8caa728077\" id=\"9012e435-d6f6-4022-b075-3b8caa728077\">パフォーマンス\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"dc186bd8-9bc8-4483-8442-535ce8746fb9\" id=\"dc186bd8-9bc8-4483-8442-535ce8746fb9\">スケーラビリティ\u003C/p>\u003C/li>\u003C/ol>\u003Cp name=\"8a20a22f-1c33-4817-8723-ff63275a196e\" id=\"8a20a22f-1c33-4817-8723-ff63275a196e\">Namespaseはこれら全てを解決できる可能性を持つ、素晴らしい機能だと感じました。まだまだ開発途中だそうですが今後のRubyを左右する大きな機能で、聞いていてとてもわくわくするセッションでした。\u003C/p>\u003Cp name=\"90a82411-d807-4f2c-b654-68369d893bd9\" id=\"90a82411-d807-4f2c-b654-68369d893bd9\">&nbsp;\u003C/p>\u003Cp name=\"7b0bfb8b-049e-4b6d-aba1-cb0596b46f96\" id=\"7b0bfb8b-049e-4b6d-aba1-cb0596b46f96\">&nbsp;\u003C/p>\u003Ch2 name=\"094d3c7e-db1b-4f96-93ed-59f32c70ce0c\" id=\"094d3c7e-db1b-4f96-93ed-59f32c70ce0c\">６．Matz Keynote\u003C/h2>\u003Cp name=\"31b82d98-938e-430c-82c7-15d48c28960d\" id=\"31b82d98-938e-430c-82c7-15d48c28960d\">&nbsp;\u003C/p>\u003Cp name=\"b5df8a7c-e406-45c2-8b15-0fa4d53d11db\">\u003Ca href=\"https://rubykaigi.org/2024/presentations/yukihiro_matz.html#day3\" target=\"_blank\" rel=\"noopener noreferrer\">https://rubykaigi.org/2024/presentations/yukihiro_matz.html#day3\u003C/a>\u003C/p>\u003Cp name=\"61e539a6-dd9c-41c8-80f8-671e5af046ff\" id=\"61e539a6-dd9c-41c8-80f8-671e5af046ff\">最後はRubyの生みの親、MatzのKeynoteです！\u003Cbr>今回Matzは「パフォーマンス」に着目し、これからのRubyについて構想を語ってくれました。\u003C/p>\u003Cp name=\"404e918f-566e-42bf-a78d-8abca3557ba4\" id=\"404e918f-566e-42bf-a78d-8abca3557ba4\">Rubyはかつて「遅い言語」と言われてきました。\u003Cbr>しかし、YARV, MJITそして3.0ではYJITが追加され、今や大企業が使うに十分なレベルで速くなりました。その上で、今後Rubyをより良くしていくために、「メモリ効率」や「並列性」について挙げられました。\u003C/p>\u003Cp name=\"01823760-a7dd-4aed-9ae9-b234f02b55b9\" id=\"01823760-a7dd-4aed-9ae9-b234f02b55b9\">また、Ruby開発の高速化という点でRubyとその周辺ライブラリにおけるParserの統一についても話されており、今回のRubyKaigiでも度々登場したPrismとLramaが候補に挙がっているそうです。\u003C/p>\u003Cp name=\"4917d40b-7662-4b05-b2c0-7687f373254b\" id=\"4917d40b-7662-4b05-b2c0-7687f373254b\">APIはPrismのインターフェースを採用しようとしているようですが、MatzはPrismが手書きParserであることが気になっているそうで、最終的な決定は保留のようです。その他、夢の話としてRubyのシングルバイナリ化のためにAOTコンパイラが欲しいという話もありました。\u003C/p>\u003Cp name=\"c18ac72f-91b7-420d-993c-06a214c68bfc\" id=\"c18ac72f-91b7-420d-993c-06a214c68bfc\">&nbsp;\u003C/p>\u003Cp name=\"884f26fc-4a06-4ea3-9a6e-539c8e528688\" id=\"884f26fc-4a06-4ea3-9a6e-539c8e528688\">\u003Cstrong>【感想】\u003Cbr>\u003C/strong>とても面白くて、Rubyをやっていて良かったと思えるようなキーノートでした！ 技術的にはあまり理解できないところも多かったのですが、それでも聞き入ってしまう程いい話で、本当に面白かったです。Rubyの内部処理があまり理解できていないために、難しく感じるセッションもあったので、来年はRubyのもっと深いところまで勉強してから挑みたいと思います！\u003C/p>\u003Cp name=\"362dc8b7-7ab1-4d4b-bf5e-0538f03bac49\" id=\"362dc8b7-7ab1-4d4b-bf5e-0538f03bac49\">&nbsp;\u003C/p>\u003Cp name=\"87a735f7-2f7d-436a-87bc-a07d15e8d786\" id=\"87a735f7-2f7d-436a-87bc-a07d15e8d786\">&nbsp;\u003C/p>\u003Cp name=\"9ea0fdae-fed3-4119-a86f-9b550fada746\" id=\"9ea0fdae-fed3-4119-a86f-9b550fada746\">&nbsp;（了）\u003C/p>\u003Cp name=\"f2f4d082-8bf7-4dc8-a5ab-f2fea4667320\" id=\"f2f4d082-8bf7-4dc8-a5ab-f2fea4667320\">&nbsp;\u003C/p>","RIZAPテクノロジーズのエンジニアがRubyKaigi 2024（那覇）に参加。世界中のRubyistが集う年次イベントの各講演をメンバーがそれぞれの視点でまとめた講演レポート集。",[263,167,286,166],"RubyKaigi",[288],{"title":9,"to":11},[290,297,299,307,315,321],{"to":291,"image":292,"date":293,"label":163,"title":294,"tags":295},"/recruit/articles/entries/288","https://rizap-tech.g.kuroco-img.app/v=1775010960/files/user/recruit/contents/thumbnail/nea0a25307a2d_a02eb6de1cf5a94ad76072d09fd0676d.jpeg","2024.03.14","RIZAPも初登壇！STUDIO DESIGN AWARDに参加してきました！",[296,167,166],"UI/UXデザイナー",{"to":217,"image":218,"date":219,"label":163,"title":220,"tags":298},[169,186,166],{"to":300,"image":301,"date":302,"label":163,"title":303,"tags":304},"/recruit/articles/entries/226","https://rizap-tech.g.kuroco-img.app/v=1775010932/files/user/recruit/contents/thumbnail/n6bbaf24c7ce4_e9bf4e1aed7b4e4b2e661a747526b32c.jpeg","2025.10.10","エンジニア歴3年、Kaigi on Railsの舞台へ",[166,167,305,306,252],"Ruby on Rails","Kaigi on Rails",{"to":308,"image":309,"date":310,"label":163,"title":311,"tags":312},"/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にスタッフ参加！　現場で感じたイベント運営のやりがいと学び」",[313,314,166,167],"DroidKaigi","Android",{"to":316,"image":317,"date":318,"label":163,"title":319,"tags":320},"/recruit/articles/entries/265","https://rizap-tech.g.kuroco-img.app/v=1775010936/files/user/recruit/contents/thumbnail/n9b87b46b6e6f_82f65c68c61915cc193ec7ca34669665.jpeg","2024.10.08","RIZAPのエンジニアが、DroidKaigi 2024 に参加！ 【現場レポート】",[169,314,167,313,166],{"to":259,"image":260,"date":246,"label":163,"title":261,"tags":322},[166,263,169,251,252],1776738987217]