Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Managed Configurations - Enterprise向け設定機能を知る
Search
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
4.1k
Jetpack Compose Pagerを触ってみよう
imsaku
0
1.8k
Other Decks in Technology
See All in Technology
こんにちは!SORACOM です & IoT とは【SORACOM UG 東北 in 八戸】
soracom
PRO
0
170
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
160
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
220
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
220
Optunaの最新リリースv5.0について
pfn
PRO
0
130
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
180
How to Design Configuration for Rails Applications
willnet
1
1.1k
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
140
AI駆動開発におけるハーネスエンジニアリングの勘所
tsukuboshi
1
410
導入から定着へ ~コーディングエージェントを日常業務に組み込む実践知~
yukisakai1225
0
170
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
940
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
210
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
The Limits of Empathy - UXLibs8
cassininazir
2
730
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
310
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
Tell your own story through comics
letsgokoyo
1
1.1k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Odyssey Design
rkendrick25
PRO
2
880
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
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)