[{"data":1,"prerenderedAt":330},["ShallowReactive",2],{"recruit-jobs":3,"recruit-articles-all-1":157,"recruit-articles-categories":265,"recruit-article-entry-249":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":288,"relatedArticles":291},{"date":279,"publishedAt":280,"categoryName":163,"title":281,"heroImage":282,"body":283,"metaDescription":284,"tags":285},"2024.12.19","2024-12-19T00:00:00+09:00","WindowSizeClassの取得方法について","https://rizap-tech.g.kuroco-img.app/v=1775010934/files/user/recruit/contents/thumbnail/n8bf7277b7c3c_8a9b7da664b00e9534821d889469be32.jpeg","\u003Cp name=\"0c8f62fe-88c9-4635-9084-b4365ee825df\" id=\"0c8f62fe-88c9-4635-9084-b4365ee825df\">みなさんこんにちは、DX推進本部/プロダクト開発統括1部、新卒1年目の彌永です。現在Androidエンジニアの研修を受けています。\u003C/p>\u003Cp name=\"17e4dd2d-bb55-48cd-888d-50c2ffef427d\" id=\"17e4dd2d-bb55-48cd-888d-50c2ffef427d\">さて私からは、アダプティブレイアウトを実装する際に大体の方がお世話になっているであろう \u003Cstrong>WindowSizeClass\u003C/strong> の取得方法について紹介していきます！\u003C/p>\u003Ch2 name=\"8be0c7db-2f15-47c4-9abe-900d3c513508\" id=\"8be0c7db-2f15-47c4-9abe-900d3c513508\">この記事を作成するに至った経緯\u003C/h2>\u003Cp name=\"36f749ed-bd06-4d18-9ce4-b1396363d316\" id=\"36f749ed-bd06-4d18-9ce4-b1396363d316\">Codelab（※1）でアダプティブレイアウトについて学んだ際、アプリの画面サイズを取得するために \u003Cstrong>calculateWindowSizeClass()\u003C/strong> を使っていたのですが、後日使い方を思い出そうとしても殆ど覚えていなかったということもあり、改めて検索したところ、\u003Cstrong>currentWindowAdaptiveInfo()\u003C/strong> という関数に出会いました。それを使用しているサンプルコード（※2）を確認したところ、アダプティブレイアウトを実装するために利用する関数であることがわかりました。\u003C/p>\u003Cp name=\"b27ddcdf-6974-4513-aa82-c999be965a87\" id=\"b27ddcdf-6974-4513-aa82-c999be965a87\">そこで、\u003Cstrong>calculateWindowSizeClass()\u003C/strong> と \u003Cstrong>currentWindowAdaptiveInfo()\u003C/strong> との使い分けをどのように行うべきなのか気になったので、追加で調査することにしました！\u003C/p>\u003Ch2 name=\"b7e6d2bc-797a-4f27-be46-3f0f52404bbc\" id=\"b7e6d2bc-797a-4f27-be46-3f0f52404bbc\">前提\u003C/h2>\u003Cul name=\"3a8ac8e7-88a0-400c-90ff-8d9528c5dcfd\" id=\"3a8ac8e7-88a0-400c-90ff-8d9528c5dcfd\">\u003Cli>\u003Cp name=\"d80f8a58-9915-4e07-8df2-a74f5e0069c1\" id=\"d80f8a58-9915-4e07-8df2-a74f5e0069c1\">\u003Cstrong>calculateWindowSizeClass()\u003C/strong> と \u003Cstrong>currentWindowAdaptiveInfo()\u003C/strong> は、どちらも返り値の型が\u003Cstrong>WindowSizeClass\u003C/strong>であるが、パッケージの異なる別クラスである\u003C/p>\u003C/li>\u003C/ul>\u003Ch2 name=\"99410ac1-1f00-4bb6-9034-3d420f3f4d1d\" id=\"99410ac1-1f00-4bb6-9034-3d420f3f4d1d\">calculateWindowSizeClass() の動作\u003C/h2>\u003Cul name=\"492979f0-53ff-4faf-82e2-0b74848845b3\" id=\"492979f0-53ff-4faf-82e2-0b74848845b3\">\u003Cli>\u003Cp name=\"c21158fd-0c6b-4ed3-87df-927e38e8eb59\" id=\"c21158fd-0c6b-4ed3-87df-927e38e8eb59\">この関数の引数 activity には \u003Cstrong>Activity\u003C/strong> を与える必要がある\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"b3caa6b5-2d86-411f-ba4e-24e86f938c03\" id=\"b3caa6b5-2d86-411f-ba4e-24e86f938c03\">\u003Cstrong>WindowSizeClass\u003C/strong> の \u003Cstrong>WindowWidthSizeClass\u003C/strong> または \u003Cstrong>WindowHeightSizeClass\u003C/strong> を用いることでアダプティブレイアウトを実現できる\u003C/p>\u003Cul name=\"66bf341d-a77d-4975-9397-72fe63da868f\" id=\"66bf341d-a77d-4975-9397-72fe63da868f\">\u003Cli>\u003Cp name=\"53483750-15d4-44a8-bc16-d5d3d8a75759\" id=\"53483750-15d4-44a8-bc16-d5d3d8a75759\">\u003Cstrong>Expanded\u003C/strong> 、\u003Cstrong>Medium\u003C/strong> 、\u003Cstrong>Compact\u003C/strong> が取得可能（パスカルケース）\u003C/p>\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Cp name=\"b55f35bf-4676-42b8-b77f-e359f5cfec43\" id=\"b55f35bf-4676-42b8-b77f-e359f5cfec43\">現在は、OptIn アノテーションに \u003Cstrong>ExperimentalMaterial3WindowSizeClassApi\u003C/strong> を指定しなければならない\u003C/p>\u003C/li>\u003C/ul>\u003Ch3 name=\"917384df-bc44-4bb7-b306-92b6cafd2b09\" id=\"917384df-bc44-4bb7-b306-92b6cafd2b09\">コード例\u003C/h3>\u003Cul name=\"da408aa5-8b31-4f54-8f68-a0b905685f3f\" id=\"da408aa5-8b31-4f54-8f68-a0b905685f3f\">\u003Cli>\u003Cp name=\"caf80592-e337-44b5-b076-a9058429135f\" id=\"caf80592-e337-44b5-b076-a9058429135f\">ライブラリは、\u003Cstrong>androidx.compose.material3:material3-window-size-class:1.3.1\u003C/strong> を使用\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"05e83778-13aa-4b18-b8c8-ca7d3ea7b937\" id=\"05e83778-13aa-4b18-b8c8-ca7d3ea7b937\">今回は \u003Cstrong>WindowWidthSizeClass\u003C/strong> を使っているが、\u003Cstrong>WindowHeightSizeClass\u003C/strong> でも同様の実装が可能\u003C/p>\u003C/li>\u003C/ul>\u003Cpre name=\"4c8ebaa0-4a3c-47c1-b83b-ffc1c0f0a79a\" id=\"4c8ebaa0-4a3c-47c1-b83b-ffc1c0f0a79a\">\u003Ccode class=\"language-plaintext\">val windowSize: WindowSizeClass = calculateWindowSizeClass(activity = activity)\n\n// windowSize.widthSizeClass は WindowWidthSizeClass という value class である\nval currentWindowSize = when (windowSize.widthSizeClass) {\n    WindowWidthSizeClass.Expanded -&gt; \"Expanded\"\n    WindowWidthSizeClass.Medium -&gt; \"Medium\"\n    WindowWidthSizeClass.Compact -&gt; \"Compact\"\n    else -&gt; \"Unknown\"\n}\u003C/code>\u003C/pre>\u003Ch2 name=\"f605028f-6182-466d-8cb4-1d84bdd6e4a4\" id=\"f605028f-6182-466d-8cb4-1d84bdd6e4a4\">currentWindowAdaptiveInfo()の動作\u003C/h2>\u003Cul name=\"69bdd9b4-f0d6-4e04-82d2-e80e0abf30f5\" id=\"69bdd9b4-f0d6-4e04-82d2-e80e0abf30f5\">\u003Cli>\u003Cp name=\"f5dc38af-82c8-4e18-8e83-bfd60a7d7751\" id=\"f5dc38af-82c8-4e18-8e83-bfd60a7d7751\">厳密には \u003Cstrong>WindowAdaptiveInfo\u003C/strong> を取得する関数であり、その中に \u003Cstrong>WindowSizeClass\u003C/strong> が含まれている\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"46e0d4d1-adc7-4aac-95bd-89cc7be71959\" id=\"46e0d4d1-adc7-4aac-95bd-89cc7be71959\">\u003Cstrong>WindowSizeClass\u003C/strong> の \u003Cstrong>WindowWidthSizeClass\u003C/strong> または \u003Cstrong>WindowHeightSizeClass\u003C/strong> を用いることでアダプティブレイアウトを実現できる\u003C/p>\u003Cul name=\"37dcf28d-e248-4f6f-86f9-b6a8dd85263f\" id=\"37dcf28d-e248-4f6f-86f9-b6a8dd85263f\">\u003Cli>\u003Cp name=\"b27cb69b-23f5-4d55-93c1-5495f12772d1\" id=\"b27cb69b-23f5-4d55-93c1-5495f12772d1\">\u003Cstrong>EXPANDED\u003C/strong> 、\u003Cstrong>MEDIUM\u003C/strong> 、\u003Cstrong>COMPACT\u003C/strong> が取得可能（アッパーケース）\u003C/p>\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Cp name=\"9efb2d7c-f124-476b-8ab6-1e0b40fa3d93\" id=\"9efb2d7c-f124-476b-8ab6-1e0b40fa3d93\">現時点で、\u003Cstrong>WindowWidthSizeClass\u003C/strong> または \u003Cstrong>WindowHeightSizeClass\u003C/strong> を用いた条件分岐含め、\u003Cstrong>WindowSizeClass\u003C/strong> で用意されている多くの関数が deprecated になっているため、アダプティブレイアウトを実現するための値取得方法が置き換わる可能性を感じている\u003C/p>\u003C/li>\u003C/ul>\u003Ch3 name=\"5965b735-4c94-477b-bf23-170af85936ce\" id=\"5965b735-4c94-477b-bf23-170af85936ce\">コード例\u003C/h3>\u003Cul name=\"b58e085b-b65b-4888-b20b-79b4c3d7bf00\" id=\"b58e085b-b65b-4888-b20b-79b4c3d7bf00\">\u003Cli>\u003Cp name=\"e147babc-5830-4be0-b05c-08608f4ff20f\" id=\"e147babc-5830-4be0-b05c-08608f4ff20f\">ライブラリは \u003Cstrong>androidx.window:window:1.3.0\u003C/strong> を使用\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"f5ee9881-f5b5-415a-a6da-1fbfee994ccd\" id=\"f5ee9881-f5b5-415a-a6da-1fbfee994ccd\">今回は \u003Cstrong>WindowWidthSizeClass\u003C/strong> を使っているが、\u003Cstrong>WindowHeightSizeClass\u003C/strong> でも同様の実装が可能\u003C/p>\u003C/li>\u003C/ul>\u003Cpre name=\"c37a0343-576f-4003-844f-0b88925a00da\" id=\"c37a0343-576f-4003-844f-0b88925a00da\">\u003Ccode class=\"language-plaintext\">val windowSize: WindowSizeClass = currentWindowAdaptiveInfo().windowSizeClass\n\n// windowSize.widthSizeClass は WindowWidthSizeClass という class である\nval currentWindowSize = when (windowSize.widthSizeClass) {\n    WindowWidthSizeClass.EXPANDED -&gt; \"Expanded\"\n    WindowWidthSizeClass.MEDIUM -&gt; \"Medium\"\n    WindowWidthSizeClass.COMPACT -&gt; \"Compact\"\n    else -&gt; \"Unknown\"\n}\u003C/code>\u003C/pre>\u003Ch2 name=\"437efa41-f242-46eb-b98b-047e2b120496\" id=\"437efa41-f242-46eb-b98b-047e2b120496\">結論\u003C/h2>\u003Cul name=\"e5a6603e-6bab-4707-a51a-0976a437e54c\" id=\"e5a6603e-6bab-4707-a51a-0976a437e54c\">\u003Cli>\u003Cp name=\"4c88279a-8937-49f3-b618-bcc94e678f5c\" id=\"4c88279a-8937-49f3-b618-bcc94e678f5c\">\u003Cstrong>calculateWindowSizeClass()\u003C/strong> と \u003Cstrong>currentWindowAdaptiveInfo()\u003C/strong> はどちらを利用してもアダプティブレイアウトを実現することは可能\u003C/p>\u003C/li>\u003Cli>\u003Cp name=\"1933ccd4-1c8c-4cdd-adfb-ef643e440f26\" id=\"1933ccd4-1c8c-4cdd-adfb-ef643e440f26\">\u003Cstrong>currentWindowAdaptiveInfo()\u003C/strong> では \u003Cstrong>WindowSizeClass\u003C/strong> 以外に \u003Cstrong>Posture\u003C/strong> も取得できるため、そちらを利用する目的があれば \u003Cstrong>currentWindowAdaptiveInfo()\u003C/strong> を、そうでなければ、\u003Cstrong>WindowWidthSizeClass\u003C/strong> または \u003Cstrong>WindowHeightSizeClass\u003C/strong> を用いた条件分岐が deprecated になっていない \u003Cstrong>calculateWindowSizeClass()\u003C/strong> を利用する、といった使い分けができそう\u003C/p>\u003C/li>\u003C/ul>\u003Ch2 name=\"686a456c-9fd3-4a47-8639-a6233ad0d990\" id=\"686a456c-9fd3-4a47-8639-a6233ad0d990\">調査を行っての所感\u003C/h2>\u003Cp name=\"1c1ed463-8dc3-4c8b-bfcc-00b90f616058\" id=\"1c1ed463-8dc3-4c8b-bfcc-00b90f616058\">私は今回の調査を通して、「公式ドキュメントを読む重要性」や「情報の取捨選択する際の判断軸」について学習できたと感じています。\u003C/p>\u003Cp name=\"04e22993-e137-424e-bb02-378863e1c8c7\" id=\"04e22993-e137-424e-bb02-378863e1c8c7\">現在、Androidエンジニアとしての研修を受けており、専門知識や経験がまだ十分でないと感じています。しかし、この研修を終え、実務に入った後は「多くの人から信頼されるAndroidエンジニア」になることを目指します！\u003C/p>\u003Cfigure name=\"6f3a628d-dfd4-437a-a1de-7f38415e3390\" id=\"6f3a628d-dfd4-437a-a1de-7f38415e3390\">\u003Cblockquote>\u003Cp name=\"d6c04e08-4429-4b00-909a-f21274908186\" id=\"d6c04e08-4429-4b00-909a-f21274908186\">\u003Cstrong>[参照]\u003C/strong>\u003Cbr>・\u003Ca href=\"https://developer.android.com/reference/kotlin/androidx/compose/material3/windowsizeclass/package-summary?_gl=1*11p4z3x*_up*MQ..*_ga*MTY4NzMxNTA2Mi4xNzMzMjk0MjY5*_ga_6HH9YJMN9M*MTczMzI5NDI2OC4xLjAuMTczMzI5NDI2OC4wLjAuOTk2NDMwOTcx#calculateWindowSizeClass(android.app.Activity)\" target=\"_blank\" rel=\"nofollow noopener\">calculateWindowSizeClass() - リファレンス\u003C/a>\u003Cbr>・\u003Ca href=\"https://developer.android.com/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowSizeClass\" target=\"_blank\" rel=\"nofollow noopener\">WindowSizeClass（androidx.compose.material3:material3-window-size-class） - リファレンス\u003C/a>\u003Cbr>・\u003Ca href=\"https://developer.android.com/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowWidthSizeClass?_gl=1*syjsuh*_up*MQ..*_ga*NjA0MjE2NjI4LjE3MzMyOTYzNDg.*_ga_6HH9YJMN9M*MTczMzI5NjM0Ny4xLjAuMTczMzI5NjM0Ny4wLjAuODg3MTQ2NjAw\" target=\"_blank\" rel=\"nofollow noopener\">WindowWidthSizeClass（androidx.compose.material3:material3-window-size-class） - リファレンス\u003C/a>\u003Cbr>・\u003Ca href=\"https://developer.android.com/reference/kotlin/androidx/compose/material3/adaptive/package-summary#currentWindowAdaptiveInfo()\" target=\"_blank\" rel=\"nofollow noopener\">currentWindowAdaptiveInfo() - リファレンス\u003C/a>\u003Cbr>・\u003Ca href=\"https://developer.android.com/reference/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo?_gl=1*cf5ekx*_up*MQ..*_ga*ODk5NDUzMzQzLjE3MzMyOTQxNTI.*_ga_6HH9YJMN9M*MTczMzI5NDE1MS4xLjAuMTczMzI5NDE1MS4wLjAuMTIwNTgxODc2MQ..\" target=\"_blank\" rel=\"nofollow noopener\">WindowAdaptiveInfo - リファレンス\u003C/a>\u003Cbr>・\u003Ca href=\"https://developer.android.com/reference/kotlin/androidx/window/core/layout/WindowSizeClass?_gl=1*ittfwh*_up*MQ..*_ga*NDc0MzEzMTU5LjE3MzMxMjQzODI.*_ga_6HH9YJMN9M*MTczMzEyNDM4MS4xLjAuMTczMzEyNDM5My4wLjAuNjA0NzkyNDAx\" target=\"_blank\" rel=\"nofollow noopener\">WindowSizeClass（androidx.window:window-core） - リファレンス\u003C/a>\u003Cbr>・\u003Ca href=\"https://developer.android.com/reference/kotlin/androidx/window/core/layout/WindowWidthSizeClass?_gl=1*2fiyjf*_up*MQ..*_ga*ODYzNTA0OS4xNzMzMzYzMjQw*_ga_6HH9YJMN9M*MTczMzM2MzIzOS4xLjAuMTczMzM2MzIzOS4wLjAuMzAyODk3Mjgz\" target=\"_blank\" rel=\"nofollow noopener\">WindowWidthSizeClass（androidx.window:window-core） - リファレンス\u003C/a>\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cfigure name=\"2ac40cee-2175-44bf-9b85-e49f35bb07c4\" id=\"2ac40cee-2175-44bf-9b85-e49f35bb07c4\">\u003Cblockquote>\u003Cp name=\"7d114217-c253-4c51-b073-e0fc29c1f5fd\" id=\"7d114217-c253-4c51-b073-e0fc29c1f5fd\">\u003Cstrong>[注釈]\u003C/strong>\u003Cbr>※1 Codelab\u003Cbr>\u003Ca href=\"https://developer.android.com/courses/pathways/android-basics-compose-unit-4-pathway-3?hl=ja&amp;_gl=1*d69840*_up*MQ..*_ga*MTUyNDA1MjAxMS4xNzMzMTI0OTQx*_ga_6HH9YJMN9M*MTczMzEyNDk0MC4xLjAuMTczMzEyNDk0MC4wLjAuOTEwMTkzNjU.\" target=\"_blank\" rel=\"nofollow noopener\">さまざまな画面サイズに適応する | Compose での Android の基礎 - アダプティブ レイアウト | Android Developers\u003C/a>\u003Cbr>\u003Cbr>※2 サンプルコード\u003Cbr>以下のリンク先に記載がありました\u003Cbr>\u003Ca href=\"https://developer.android.com/develop/ui/compose/layouts/adaptive/support-different-screen-sizes?hl=ja\" target=\"_blank\" rel=\"nofollow noopener\">各種の画面サイズのサポート | Jetpack Compose | Android Developers\u003C/a>\u003C/p>\u003C/blockquote>\u003Cfigcaption>&nbsp;\u003C/figcaption>\u003C/figure>\u003Cp name=\"f57f11a8-eac1-4810-bb9d-34f333293739\" id=\"f57f11a8-eac1-4810-bb9d-34f333293739\">&nbsp;\u003C/p>","RIZAPテクノロジーズのAndroidエンジニアが、アダプティブレイアウト実装時に使うWindowSizeClassの取得方法を解説。calculateWindowSizeClass()からcurrentWindowAdaptiveInfoへの変遷も紹介。",[286,287],"Android","技術ブログ",[289,290],{"title":63,"to":65},{"title":9,"to":11},[292,299,306,314,322,328],{"to":293,"image":294,"date":295,"label":163,"title":296,"tags":297},"/recruit/articles/entries/264","https://rizap-tech.g.kuroco-img.app/v=1775010933/files/user/recruit/contents/thumbnail/n6f3af1a646b3_3a79a10f824d381ed8c105d15f5a7e3a.jpeg","2024.10.08","DroidKaigi 2024カンファレンスレポート【各講演の学び】",[169,286,167,298,166],"DroidKaigi",{"to":300,"image":301,"date":302,"label":163,"title":303,"tags":304},"/recruit/articles/entries/246","https://rizap-tech.g.kuroco-img.app/v=1775010931/files/user/recruit/contents/thumbnail/n5c564894fae9_932f69eb3e12c745efd13f1b770a29b5.jpeg","2024.12.26","Ruby World Conferenceで登壇しました！",[169,263,167,252,305,166],"RubyWorld Conference",{"to":307,"image":308,"date":309,"label":163,"title":310,"tags":311},"/recruit/articles/entries/266","https://rizap-tech.g.kuroco-img.app/v=1775010952/files/user/recruit/contents/thumbnail/naf558637b52d_fe4287ece253d6a738d1a15bbe410eb3.jpeg","2024.09.05","iOSDC Japan 2024カンファレンスレポート【各講演の学び】",[169,166,167,312,313],"iOSDC","iOS",{"to":315,"image":316,"date":317,"label":163,"title":318,"tags":319},"/recruit/articles/entries/243","https://rizap-tech.g.kuroco-img.app/v=1775010945/files/user/recruit/contents/thumbnail/n7411b2f019a8_6060dcc9f3405ae03e79a0cc99978d46.jpeg","2025.04.24","技術と好奇心に火をつける場所──try! Swift 2025参加レポート",[320,321,313,167,166],"swift","tryswift",{"to":323,"image":324,"date":325,"label":163,"title":326,"tags":327},"/recruit/articles/entries/287","https://rizap-tech.g.kuroco-img.app/v=1775010929/files/user/recruit/contents/thumbnail/n2f283c400eaa_fb7d8b9df6bc2c53706c623934617a5a.jpeg","2024.03.21","RIZAP がYAPC::Hiroshimaにも初参戦！【各講演のレポート集】",[169,167,209,166],{"to":203,"image":204,"date":205,"label":163,"title":206,"tags":329},[166,167,169,208,209],1776738991297]