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.8k
Jetpack Compose Pagerを触ってみよう
imsaku
0
1.8k
Other Decks in Technology
See All in Technology
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
7
5.8k
AI工学特論: MLOps・継続的評価
asei
11
3.1k
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
700
AI Agent を本番環境へ―― Microsoft Foundry × Azure Serverless で作る Enterprise-Ready な基盤
shibayan
PRO
1
1k
AIエージェントに財布を渡す日 ― 承認付き"買い物エージェント"を作って実演
yama3133
1
110
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
130
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
390
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
4
630
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
32
27k
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
720
Claude Code並行開発環境の ムダ‧ムラ‧ムリを見直した話
muranakaaa
1
390
現場で使える AWS DevOps Agent 活用ノウハウ - Release Management 機能の検証結果を添えて / AWS DevOps Agent Release Management and Know-How
kinunori
5
840
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
450
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
620
Believing is Seeing
oripsolob
1
180
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
340
The SEO Collaboration Effect
kristinabergwall1
1
510
Faster Mobile Websites
deanohume
310
32k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
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)