Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Managed Configurations - Enterprise向け設定機能を知る
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yusaku Tanaka
March 02, 2023
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Managed Configurations - Enterprise向け設定機能を知る
DeNA.apk #4
Yusaku Tanaka
March 02, 2023
More Decks by Yusaku Tanaka
See All by Yusaku Tanaka
ビジネス向けアプリを開発するときに知っておくべきAndroid Enterpriseの世界
imsaku
1
3.7k
Jetpack Compose Pagerを触ってみよう
imsaku
0
1.8k
Other Decks in Technology
See All in Technology
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
220
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.1k
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
310
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
110
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
260
Snowflakeと仲良くなる第一歩
coco_se
4
480
Claude Codeとのおしゃべりでセマンティックモデルの定義からダッシュボード作成まで完成させる
nic_sugiyama
0
120
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
120
AIはどのように 組織のアジリティを変えるのか?
junki
3
930
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
0
2.3k
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
0
100
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
ラッコキーワード サービス紹介資料
rakko
1
3.7M
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
KATA
mclloyd
PRO
35
15k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
Crafting Experiences
bethany
1
180
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Writing Fast Ruby
sferik
630
63k
Unsuck your backbone
ammeep
672
58k
Transcript
Managed Configurations Enterprise 向けの設定機能を知る 2023-03-02 DeNA.apk #4 Yusaku Tanaka (@imsaku)
About me Yusaku Tanaka (@imsaku) DeNA Co., Ltd. Android Enterprise
にちょっとだけ詳しい https://g.dev/imsaku Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 2
今回話すこと Managed Configurations って何... ? サンプルコードとその説明 Managed Configurations - Enterprise
向けの設定機能を知る Yusaku Tanaka (@imsaku) 3
Managed Configurations って ... ? 管理された Android デバイス上の、 Managed Configurations
が実装されたアプリに対して、 IT 管理者が、 設定値を配布できる機能。 Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 4
管理された Android デバイス モバイルデバイスを管理するための製品・サービスが存在する MDM (Mobile Device Management) EMM (Enterprise
Mobility Management) 例) Google Workspace のエンドポイント管理機能 ユースケース 会社が所有しているデバイスを従業員に配布する 従業員個人が所有しているデバイスを業務で利用する(BYOD ) Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 5
IT 管理者 企業の情報システム部門担当者など 一般的に、MDM/EMM が提供するWeb 上の管理画面からデバイス を管理する 例)Google Workspace の管理コンソールから、デバイスのセキ
ュリティポリシーを定めたり、業務で使用するアプリを自動イン ストールしたりする Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 6
設定値の配布 Managed Configurations の機能そのもの 例えば... ブラウザアプリで、従業員向けのページをまとめたブックマークフ ォルダを配布する 業務用のアプリで、一部機能を有効化・無効化する 例)Chrome https://chromeenterprise.google/policies/
Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 7
アプリ側がやること 3 つだけ。 設定のスキーマをXML で定義する 設定値を RestrictionsManager から取得する 設定値の変更を BroadcastReceiver
で検知する MDM/EMM 側とはどうやってやり取りするの・・・? → Google Play が提供するAPI を通じて、MDM/EMM 側がスキーマの 取得や設定値の配布を行なってくれる。 Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 8
設定のスキーマを定義する AndroidManifest.xml Managed Configurations の使用を宣言する。 <application> <meta-data android:name="android.content.APP_RESTRICTIONS" android:resource="@xml/app_restrictions" />
... Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 9
設定のスキーマを定義する res/xml/app_restrictions.xml res/xml に app_restrictions.xml を作成し、構成を定義する。 <?xml version="1.0" encoding="utf-8"?> <restrictions
xmlns:android="http://schemas.android.com/apk/res/android"> <restriction android:key="my_feature_enabled" android:restrictionType="bool" android:defaultValue="false" android:title="@string/title_my_feature" android:description="@string/description_my_feature"/> <restriction ... /> ... Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 10
設定のスキーマを定義する app_restrictions.xml で使用する主な属性値 Attribute Description android:key 設定値を識別するKey android:restrictionType 設定値の型 android:defaultValue
デフォルト値 android:title MDM 側に表示するタイトル android:description MDM 側に表示する説明文 Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 11
設定のスキーマを定義する android:restrictionType でサポートされている主な型 Type Description bool true, false のbool 値
string 文字列 integer int 型の整数値 choice 単一選択のリスト multi-select 複数選択可能なリスト bundle, bundle-array 設定をネストするためのBundle やその配列 Managed Configurations - Enterprise 向けの設定機能を知る 12
設定値を取得する 設定値はGoogle Play services を介してAndroid デバイスに保存され る アプリはシステムサービスの RestrictionsManager を使って、任意の
タイミングで設定値を Bundle として受け取ることができる android:defaultValue が Bundle に含まれているとは限らない Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 13
設定値を取得する val manager = activity.getSystemService( Context.RESTRICTIONS_SERVICE) as RestrictionsManager // applicationRestrictions
はBundle? 型 val restrictions = manager.applicationRestrictions ?: return // android:key を指定して設定値を取得する val myFeatureEnabled = if (restrictions.containsKey("my_feature_enabled")) { restrictions.getBoolean("my_feature_enabled") } else { defaultValue } // 設定値を元にビジネスロジックを処理する doSomething(myFeatureEnabled) Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 14
設定値の変更を検知する アプリの実行中に設定値が変更された場合は、 BroadcastReceiver で変更通知を受け取ることができる このとき BroadcastReceiver はmanifest-declared ではなく、 context-registered である必要がある
AndroidManifest.xml に宣言するのではなく、Context から動的 に登録する必要がある Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 15
設定値の変更を検知する class RestrictionsReceiver : BroadcastReceiver() { override fun onReceive(context: Context,
intent: Intent) { // 設定値の取得や設定変更に伴うビジネスロジックの処理 } } val receiver = RestrictionsReceiver() val intentFilter = IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED) registerReceiver(receiver, intentFilter) Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 16
より具体的な内容に興味のある人は ... Google のサンプルを利用してローカルで試すことができる 1. TestDPC*1 で管理されたAndroid デバイスをセットアップする Google Play
ストアからインストール可能 2. Managed Configurations のサンプルアプリ*2 をインストール 自分で同様のアプリを実装してもOK 3. 2. でインストールしたアプリの設定をTestDPC で変更する *1: https://github.com/googlesamples/android-testdpc *2: https://github.com/android/enterprise-samples/tree/main/ManagedConfigurations Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 17
まとめ MDM/EMM との併用を前提としたEnterprise 特化の設定機能を実装 できる 設定のスキーマや実際の設定値はGoogle Play を介してAndroid デバ イスとMDM/EMM
の間でやりとりされる アプリ側では、RestrictionsManager からBundle として設定値を取 得したり、BroadcastReceiver で設定値の変更を受信したりできる Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 18
参考資料 https://developer.android.com/work/managed-configurations https://developer.android.com/reference/android/content/Restrict ionsManager https://developer.android.com/reference/android/content/Restrict ionEntry https://github.com/android/enterprise-samples https://developers.google.com/android/management/managed- configurations-iframe Managed
Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 19
Managed Configurations Enterprise 向けの設定機能を知る 2023-03-02 DeNA.apk #4 Yusaku Tanaka (@imsaku)