[{"data":1,"prerenderedAt":329},["ShallowReactive",2],{"recruit-jobs":3,"recruit-articles-all-1":157,"recruit-articles-categories":265,"recruit-article-entry-261":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":289,"relatedArticles":292},{"date":279,"publishedAt":280,"categoryName":163,"title":281,"heroImage":282,"body":283,"metaDescription":284,"tags":285},"2024.10.24","2024-10-24T00:00:00+09:00","chocoZAPを支えるAndroidアプリ開発技術とチーム","https://rizap-tech.g.kuroco-img.app/v=1775010935/files/user/recruit/contents/thumbnail/n8ef41682ec0f_1ba21f4836d87546676759c53832db94.jpeg","\u003Cfigure name=\"a12d7300-72a9-4777-96b2-1dc716b99eb4\" id=\"a12d7300-72a9-4777-96b2-1dc716b99eb4\">\u003Cblockquote>\u003Cp name=\"5728ba12-292c-44e2-b44f-dd305bcc0661\" id=\"5728ba12-292c-44e2-b44f-dd305bcc0661\">こんにちは、 プロダクト開発統括1部 で chocoZAPのAndroidアプリ開発 を担当している 藤井 です。\u003Cbr>\u003Cbr>先日のDroidKaigi 2024はお祭り感が楽しかったですね。Speakerのみなさんによる様々なセッションから知見を共有いただき、また各社様のブースでは個性的なコンテンツやノベルティで楽しませていただきました。弊社でもブースを出しており、多くの方々とお話をする機会をいただきました。\u003Cbr>\u003Cbr>そこで今回は、ブースで展示していた資料を見ながらAndroidアプリ版のchocoZAPで使われている技術と関わるチームについて、説明していきます。\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"d7d36d9d-2c0d-4079-b3d0-fbd7116a2c09\" id=\"d7d36d9d-2c0d-4079-b3d0-fbd7116a2c09\">▼RIZAPが協賛した「DroidKaigi」の様子はこちらでご紹介しています！\u003C/p>\u003Cp name=\"22bb7a4d-8f73-44da-be86-77947a9c4cc5\">\u003Ca href=\"https://www.rizap-tech.co.jp/recruit/articles/entries/265\">https://www.rizap-tech.co.jp/recruit/articles/entries/265\u003C/a>\u003C/p>\u003Cp name=\"6a514ab6-3c10-49bd-808b-df6465f6c3bb\">\u003Ca href=\"https://www.rizap-tech.co.jp/recruit/articles/entries/264\">https://www.rizap-tech.co.jp/recruit/articles/entries/264\u003C/a>\u003C/p>\u003Chr>\u003Ch2 name=\"275dc01c-3a36-41df-8043-d85168881798\" id=\"275dc01c-3a36-41df-8043-d85168881798\">技術スタックについて\u003C/h2>\u003Cfigure name=\"8d5f73fc-f870-4a9a-8aa0-5022468baf2a\" id=\"8d5f73fc-f870-4a9a-8aa0-5022468baf2a\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/n8ef41682ec0f_1728356831-cqD6znWLEoh90Pf8AU4HCisN.png\" alt=\"\" width=\"620\" height=\"349\">\u003C/p>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"358791a6-bb93-48e2-a2fe-ea6e60db5ea7\" id=\"358791a6-bb93-48e2-a2fe-ea6e60db5ea7\">まずは技術スタックの紹介 1ページ目です。\u003C/p>\u003Cp name=\"99555087-559a-40db-94ef-81156b528751\" id=\"99555087-559a-40db-94ef-81156b528751\">chocoZAPアプリは、2023年12月にFlutterアプリ1本からAndroid/iOSのネイティブアプリ2本へと生まれ変わってリリースされました。新しく作られたアプリであることから、全面的にKotlinとJetpack Composeを採用しての開発に振り切っています。\u003C/p>\u003Cp name=\"db6f104b-1209-49bf-8cb3-5397ebcf9817\" id=\"db6f104b-1209-49bf-8cb3-5397ebcf9817\">今では様々な技術資料がこれらを用いて記載されているため、新しいことを取り入れやすい土台があります。また、JavaとViewは使っていないため共存させるための考慮が少なくて済む点も良い環境です。\u003C/p>\u003Cp name=\"57f55e8c-7c37-4aa4-9dbd-a3926c497efc\" id=\"57f55e8c-7c37-4aa4-9dbd-a3926c497efc\">ちなみにKotlinのバージョンについて、 DroidKaigi 2024開催当時に使用していたバージョンは 1.9.23 でしたが、現在は 2.0.20 を使用しています。\u003C/p>\u003Cp name=\"ebd77435-74ce-4b56-94a9-bef108f8f38b\" id=\"ebd77435-74ce-4b56-94a9-bef108f8f38b\">通信はOkHttpとRetrofitというよく見るライブラリたちですが、シリアライズはMoshiとKotlin Serializationが同居しています。もともとはMoshiだけでしたが、最近はKotlin Serializationも導入しており、移行している途中です。\u003C/p>\u003Cfigure name=\"8e9d390e-6fc6-40ed-9898-2734f87109cd\" id=\"8e9d390e-6fc6-40ed-9898-2734f87109cd\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/n8ef41682ec0f_1728357021-ZvKVUmPTySYQOIbpGwzNJgWA.png\" alt=\"\" width=\"620\" height=\"345\">\u003C/p>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"49cd5a21-b2fd-4e21-9bbb-f846f80bb2c5\" id=\"49cd5a21-b2fd-4e21-9bbb-f846f80bb2c5\">続いて技術スタックの紹介 2ページ目です。\u003C/p>\u003Cp name=\"353cf98d-9e11-4615-912b-76cdfeae8912\" id=\"353cf98d-9e11-4615-912b-76cdfeae8912\">残念ながらテストについてはあまり書けていない状態ですが、後述のアーキテクチャの紹介で登場するUseCaseについてはある程度テストを書けています。将来的にはスクリーンショットテストもやっていきたいと考えており、DroidKaigi 2024で仕入れた情報を参考に着手していきたいです。\u003C/p>\u003Cp name=\"a29d7aa4-c3b6-4a06-8999-d427edb8930b\" id=\"a29d7aa4-c3b6-4a06-8999-d427edb8930b\">chocoZAPアプリでは外部デバイス連携として、chocoZAPに入会された方へ配布しているスターターキット(※1)からデータ取得する機能があります。その際にBluetooth通信を使用しているのですが、アプリでは生データを扱うのではなく、ベンダーから提供されたSDKを介してデータ取得しています。\u003C/p>\u003Cp name=\"0917296e-8e15-4d39-968f-c5943111dfe4\" id=\"0917296e-8e15-4d39-968f-c5943111dfe4\">アプリの構成としてはMulti Moduleで組まれており、Convention Pluginsで独自のGradle Pluginを作成して設定を共通化しています。chocoZAPアプリはModuleが30以上あるため、Gradleの記述を楽にするために導入しました。\u003C/p>\u003Cp name=\"2556c482-2922-4317-bfc8-98c2210524d8\" id=\"2556c482-2922-4317-bfc8-98c2210524d8\">他に特徴的な点としてはGoogle MapやGoogle Fitの利用があります。Google Mapは店舗を検索する際の地図表示として使用しています。Google Fitは連携することで、現在は歩数のみですがアプリに表示することができます。\u003C/p>\u003Ch2 name=\"dd5360e1-cf28-4d4f-ba54-cfdc91426963\" id=\"dd5360e1-cf28-4d4f-ba54-cfdc91426963\">アーキテクチャについて\u003C/h2>\u003Cfigure name=\"180b27dd-388a-472f-9c6d-0b75cfe878ee\" id=\"180b27dd-388a-472f-9c6d-0b75cfe878ee\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/n8ef41682ec0f_1728357162-GdAQxcaMUpYFvVoewt1mN56J.png\" alt=\"\" width=\"620\" height=\"346\">\u003C/p>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"6db1ad55-a2b9-4527-b6df-d01883ca778a\" id=\"6db1ad55-a2b9-4527-b6df-d01883ca778a\">ここからはchocoZAPアプリのアーキテクチャの紹介となり、まずは1ページ目です。 まずこちらは簡略的なModule構成です。実際は完全にこの通りに分類して運用できてはいないですが、細かいModuleを分類していくとこの範囲に収まる、といったものです。\u003C/p>\u003Cp name=\"54f63434-bc9e-4b9b-9e4c-db7e099cfadd\" id=\"54f63434-bc9e-4b9b-9e4c-db7e099cfadd\">基本はAndroid Developersにて紹介されている アプリ アーキテクチャ ガイド(※2) を踏襲しています。 補足が必要と思われるModuleを説明しますと、featureが各機能たち、uiが共通のComposableを配置しているなどのUI向け共通処理です。\u003C/p>\u003Cp name=\"3e298f09-0587-4cff-a097-55efbb3a3420\" id=\"3e298f09-0587-4cff-a097-55efbb3a3420\">serviceは外部デバイス連携に関する処理や、一部ライブラリのwrapperなどをModuleにしたものが配置されています。 commonにはアプリ全体向けの共通処理が置かれ、configは定数のみが集まっています。 repositoryは依存性逆転の原則を意識して作成しています。\u003C/p>\u003Cp name=\"aaf0598d-d343-4acd-a049-5a1012928f23\" id=\"aaf0598d-d343-4acd-a049-5a1012928f23\">DroidKaigi 2024のブースでみなさんとお話しした際に、多くの方から「ウチもこんな感じです」といった反応をいただきました。 そのため、Android Developersのアプリ アーキテクチャ ガイドを押さえておけば、多くの場所で通用するという印象を受けました。\u003C/p>\u003Cfigure name=\"c7efdd95-6ae2-4e10-8d83-f0e81178011d\" id=\"c7efdd95-6ae2-4e10-8d83-f0e81178011d\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/n8ef41682ec0f_1728357285-87XkQrmPf3lTaK9iHgsRCb2O.png\" alt=\"\" width=\"620\" height=\"348\">\u003C/p>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"e476362b-f299-48e7-8869-a3595081875b\" id=\"e476362b-f299-48e7-8869-a3595081875b\">次はアーキテクチャの紹介 2ページ目として、呼び出しの流れを示した図です。\u003C/p>\u003Cp name=\"763d6634-ee8f-4108-b64f-57cf525de108\" id=\"763d6634-ee8f-4108-b64f-57cf525de108\">厳密にはApplicationからActivityへの明示的な呼び出しはしていませんが、立ち上がる順番的に、流れを補助するものとして矢印を伸ばしています。\u003C/p>\u003Cp name=\"61d9582d-8025-4abc-a637-0b049b3c9411\" id=\"61d9582d-8025-4abc-a637-0b049b3c9411\">chocoZAPアプリは単一のActivityのみを使っており、そこでScreenと命名された各画面を表すComposable関数を呼び出しています。ActivityやComposable関数からはViewModel、UseCase、Repositoryと呼び出していきますが、ViewModelからRepositoryを呼び出している箇所もあります。\u003C/p>\u003Ch2 name=\"ad93ad90-d688-474a-a33e-47be717b7c5c\" id=\"ad93ad90-d688-474a-a33e-47be717b7c5c\">開発組織・働き方について\u003C/h2>\u003Cfigure name=\"9abee8fa-f4cd-4792-81d4-ac07790e2baa\" id=\"9abee8fa-f4cd-4792-81d4-ac07790e2baa\">\u003Cp>\u003Cimg src=\"https://stg-rizap-tech.g.kuroco-img.app/files/user/recruit/contents/body/n8ef41682ec0f_1728357338-RnjevlItwSs9LarpC7dOHJPQ.png\" alt=\"\" width=\"620\" height=\"346\">\u003C/p>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"bcf11ec4-c9b7-44ae-b2a4-d506b1450a4a\" id=\"bcf11ec4-c9b7-44ae-b2a4-d506b1450a4a\">最後はチームの体制と業務のフローについての紹介です。\u003C/p>\u003Cp name=\"54bd026d-f0ff-4e66-ac91-9ec9aed03ed5\" id=\"54bd026d-f0ff-4e66-ac91-9ec9aed03ed5\">chocoZAPは企画部署と開発部署に分かれており、開発としてはPM(Project Manager)/デザイナー/エンジニア/QAがひとまとまりとなっています。エンジニア目線では、PMとタスクや仕様の調整、デザイナーとはデザインの調整、QAとは動作確認のやりとりを行っています。\u003C/p>\u003Cp name=\"d6d78c67-a4cc-4653-acef-61a804fed78d\" id=\"d6d78c67-a4cc-4653-acef-61a804fed78d\">補足として、弊社は各職ともフルリモートでの作業ですが、Android/iOS含めたモバイルアプリのエンジニアメンバーは「オフィスアワー」と銘打ったSlackのHuddle集会を毎朝行っています。\u003C/p>\u003Cp name=\"9a4f7a94-19cd-4cfc-a1d0-08401f4792b9\" id=\"9a4f7a94-19cd-4cfc-a1d0-08401f4792b9\">そこで作業の相談、モブプロ、雑談などをしており、コミュニケーションが滞ることなく開発を進めることができています。チーム間で行う定期的なMTGとしては、モバイルチームで日々PMと進捗確認や相談を行い、週次で次回リリースの確認会を行っています。\u003C/p>\u003Cp name=\"42aaf314-e93e-4a0b-939d-47377cb94042\" id=\"42aaf314-e93e-4a0b-939d-47377cb94042\">また、弊社はAndroidの技術顧問として あんざいゆきさん(※3)にご協力をいただいており、週次であんざいさんと弊社Androidエンジニアでお話をする場を設けています。先に述べたConvention Pluginsなど、この場であんざいさんから様々な技術情報をアドバイスいただいています。\u003C/p>\u003Chr>\u003Cp name=\"6973a22f-5873-46ea-bfd4-54163b169ad5\" id=\"6973a22f-5873-46ea-bfd4-54163b169ad5\">以上がDroidKaigi 2024で展示していた資料の説明です。\u003C/p>\u003Cp name=\"1dbd16f9-f2e9-4817-87e8-dfe1f7b61b5a\" id=\"1dbd16f9-f2e9-4817-87e8-dfe1f7b61b5a\">chocoZAPに興味を持たれたり、資料を見ていただいて「これなら担当できそうだ」と思われた方は、ぜひ一緒に開発を楽しみましょう。\u003Cbr>&nbsp;\u003C/p>\u003Cp name=\"306665df-ed2c-464f-9f9f-6f2ae834eb54\">\u003Ca href=\"https://www.rizap-tech.co.jp/recruit\">https://www.rizap-tech.co.jp/recruit\u003C/a>\u003C/p>\u003Chr>\u003Ch3 name=\"28bbda05-52d5-4b63-bf68-8c7f4f6703fd\" id=\"28bbda05-52d5-4b63-bf68-8c7f4f6703fd\">[注釈]\u003C/h3>\u003Cp name=\"ef22834f-20be-40d2-82a9-a1de278d4863\" id=\"ef22834f-20be-40d2-82a9-a1de278d4863\">\u003Cstrong>※1 スターターキット\u003C/strong>\u003Cbr>chocoZAPでは入会された方に「スターターキット」を配布しています。このキットにはヘルスウォッチと体組成計が同梱されており、どちらもBluetoothを用いてchocoZAPアプリと接続する機能を持っています。\u003C/p>\u003Cp name=\"a1c1eb22-2fbd-4382-acd0-45829ab01ade\" id=\"a1c1eb22-2fbd-4382-acd0-45829ab01ade\">chocoZAPアプリではこれらのデバイス開発元のベンダーから提供されているSDKを用いて、様々なデータを取得し記録することができます。\u003C/p>\u003Cp name=\"ba209a24-3fb5-4b03-aff0-6041485c7253\" id=\"ba209a24-3fb5-4b03-aff0-6041485c7253\">ユーザには記録されたデータをグラフなどの見やすい形で提供し、簡単に日々の成果を実感いただけるようになっています。\u003C/p>\u003Cp name=\"729e06ef-b4b2-4a05-b787-6c67599ae58a\">\u003Ca href=\"https://chocozap.jp/service/starter_kit\" target=\"_blank\" rel=\"noopener noreferrer\">https://chocozap.jp/service/starter_kit\u003C/a>\u003C/p>\u003Cp name=\"6c48333b-fdcb-4e39-ac5d-d9ce9da82a7b\" id=\"6c48333b-fdcb-4e39-ac5d-d9ce9da82a7b\">\u003Cstrong>※2 Android Developersにて紹介されている アプリ アーキテクチャ ガイド\u003C/strong>\u003C/p>\u003Cp name=\"7f5b398f-f159-48d5-abee-5ea9c6c16bd9\">\u003Ca href=\"https://developer.android.com/topic/architecture?hl=ja\" target=\"_blank\" rel=\"noopener noreferrer\">https://developer.android.com/topic/architecture?hl=ja\u003C/a>\u003C/p>\u003Cp name=\"e0badf31-37a7-4917-9466-6b2d90a2628b\" id=\"e0badf31-37a7-4917-9466-6b2d90a2628b\">\u003Cstrong>※3 Androidの技術顧問 あんざいゆき さん\u003C/strong>\u003C/p>\u003Cp name=\"d20216d5-7eb7-464d-a5d1-8cb54ad2be14\">\u003Ca href=\"https://www.rizap-tech.co.jp/recruit/articles/entries/293\">https://www.rizap-tech.co.jp/recruit/articles/entries/293\u003C/a>\u003C/p>\u003Cp name=\"21fe415e-04ae-4787-bc3d-c0efa4d082f7\" id=\"21fe415e-04ae-4787-bc3d-c0efa4d082f7\">&nbsp;\u003C/p>","RIZAPテクノロジーズがchocoZAPを支えるAndroidアプリ開発の技術スタックを公開。FlutterからKotlin＋Jetpack Composeのネイティブ開発へ移行した経緯や、チームの構成・開発体制を詳しく紹介。",[286,251,287,288],"Android","DroidKaigi","技術ブログ",[290,291],{"title":63,"to":65},{"title":9,"to":11},[293,299,307,313,319,327],{"to":294,"image":295,"date":296,"label":163,"title":297,"tags":298},"/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にスタッフ参加！　現場で感じたイベント運営のやりがいと学び」",[287,286,166,167],{"to":300,"image":301,"date":302,"label":163,"title":303,"tags":304},"/recruit/articles/entries/233","https://rizap-tech.g.kuroco-img.app/v=1775010946/files/user/recruit/contents/thumbnail/n36081f3903b6_b8d5ab303402c625c1e0a9e552112111.jpeg","2025.08.12","iOS/Android 合同勉強会  potatotips #92 に登壇しました",[166,305,286,306,169],"勉強会","iOS",{"to":308,"image":309,"date":310,"label":163,"title":311,"tags":312},"/recruit/articles/entries/222","https://rizap-tech.g.kuroco-img.app/v=1775010950/files/user/recruit/contents/thumbnail/na8c79be59c12_38e3fe23763930f34ee3cf2d953a6acf.jpeg","2025.10.20","エンジニアの祭典で得た、学びと挑戦―DroidKaigi 2025現地レポート",[169,286,287,167,166],{"to":314,"image":315,"date":316,"label":163,"title":317,"tags":318},"/recruit/articles/entries/248","https://rizap-tech.g.kuroco-img.app/v=1775010943/files/user/recruit/contents/thumbnail/n407e7df0b78c_e6fe889f228e70103cdcac26a88f8779.jpeg","2024.12.23","iOSアプリで任意のJavaScriptをWebビューに注入しWeb側で実行する方法",[251,306,288],{"to":320,"image":321,"date":322,"label":163,"title":323,"tags":324},"/recruit/articles/entries/289","https://rizap-tech.g.kuroco-img.app/v=1775010953/files/user/recruit/contents/thumbnail/nb49a1d88b23b_5d415aac2e18aa18d4053b1cf00e5dfb.png","2024.03.05","RIZAPのインターン生がJaSST ‘23 ２nd Tokai に参加してきました！",[325,326,167,166],"QAエンジニア","JaSST",{"to":254,"image":255,"date":246,"label":163,"title":256,"tags":328},[166,167,249,250,169],1776738988091]