iOSDC 2019 に Mac の環境構築に関する内容で登壇してきました

iOSDC 2019 に Mac の環境構築の内容で LT 登壇します で書いていましたが、ルーキーズ LT に登壇してきました。 普段からトレーニングで話してはいますが、全くの別物なのでずっと緊張してました。

若干のミス(残り時間を間違えて、 15 秒余らせたまま最後の部分を省略してしまった)はあったものの、お伝えできたかなと思います。

公式サイト、ハッシュタグなど

発表スライド

Speaker Deck に上げたので、ぜひご覧ください。

モチベーション

トレーニングの環境作成って、とても気をつかいます。特に、 Mac を使うトレーニングの場合、多くの受講者が Windows しか触ったことがないです。 そのため、トレーナーがデモしている環境と、受講者の環境にちょっとでも差があると、受講者はとても戸惑います。 なので、環境は少しの違いもなく揃えておく必要があります。

ただし、全部手作業で行うのは効率的ではなく、ミスも発生します。それに、セットアップ自体は技術に長けた我々トレーナーではなく、別の部隊です。なので、技術的に難しい手順は踏ませられません。

話したこと

いかにミスを防ぎ、大量の Mac を素早く正確にセットアップするかという点について、これまで取ってきた様々な手法についてお話ししました。 現在、残念ながら以前と比較して手間のかかる方式で行わざるを得ず、まだ模索している状況です。 それも含め、現状をお伝えしました。

紹介した技術

Apple の提供する機能

NetRestore

  • macOS Server の 1 機能として提供されていました
    • Apple の「モノリシックイメージからのリストアは推奨しない」方針により、現在は利用できません
    • macOS Server にはまだ機能が残っていますが、 GUI の画面は削除されました
    • 2018 年以降(T2 Security Chip搭載)の Mac ではネットワークブート機能が削除されたため、 NetRestore が機能したとしても、各 Mac からは NetRestore イメージにはアクセスできません
  • 事前に作成しておいたシステムイメージと完全に同じ環境がリストアできます
  • とても素早い(リストア開始から完了まで 5,6 分)

Time Machine

  • 履歴を持ったバックアップを取れる機能です
  • 基本的に、同じバックアップから複数の Mac をリストアすることは前提にしていません
    • そのためか、複数の Mac から同時にリストアできません
  • Time Machine からのリストアは、 NetRestore のようなブロックコピーではないので時間がかかります

MDM(Mobile Device Management)

  • 社内で iOS を集中管理する際などに利用しますが、 macOS にも対応しています
  • Configuration Profile に設定を記述し、それをサーバからプッシュすることで設定を強制します
  • Apple Business Manager(ABM) と連携することで、 VPP(Volume Purchase Program) で購入した App Store のアプリのインストールを各クライアントに強制できます
    • ただし、 App Store にある最新のアプリがインストールされるため、「チームで Xcode のバージョンを固定している」場合などには別の策を取る必要があります
  • ABM は、 VPP と DEP を統合したものです
    • VPP(Volume Purchase Program)
    • DEP(Device Enrollment Program)

ASR(Apple Software Restore)

  • 今回紹介した技術の中では NetRestore 以外唯一、インストールではなくイメージのコピーを行う技術
    • なので、リストアは速いです(数分)
    • ただし、イメージは各 Mac に個別にコピーしておく必要があります
  • Disk Utility を利用してシステムのイメージを DMG ファイルとして作成し、それをもとに macOS Recovery 上でコマンドラインからリストアします
  • macOS 10.14 Mojave まではうまく動作したのですが、 10.14.1 以降必ず失敗するので、断念しました
    • 原因は追い切れていないので、場合によってはまた利用できるかもしれません

サードパーティの機能

AutoDMG

  • 現在、暫定的に利用している機能です
  • macOS のインストーラをカスタマイズし、/Applications へ配置したいアプリケーションなどはあらかじめ仕込んでおくことができます
    • 通常手順での Xcode のインストールなどは非常に時間がかかる(ダウンロード、 xip の展開)ので、その時間をなくすことができます
    • そのため、「クリーンインストールして、アプリを手動インストール」よりはだいぶマシです
  • 各種設定はできない(クリーンインストールと同じで、 macOS インストール後のユーザの作成から先は手作業)ので、 Configuration Profile やシェルスクリプト で対応しています
  • macOS の設定を行うコマンドとしては、以下などを利用しています
    • defaults コマンド
      • ユーザの設定を管理するコマンド
    • scutil コマンド
      • システムの設定を管理するコマンド

登壇した感想

内容的にあまり刺さる方はいないだろうな、とは思っていましたが、 Twitter や対面で感想を頂くことができました。 誰か 1 人でも、役に立った(もしくは面白かった)と思って頂けたなら、話した意味はあったのかな、と思います。

また、特にルーキーズ LT では、事前に運営側主催で練習会を開いて頂き、アドバイスも頂けました。 その際に、練習会参加者同士の繋がりも生まれ、良い仲間ができました。

運営側、そしてルーキーズ仲間には本当に感謝しています。もちろん、私の LT を聞いて頂いた皆さま、このポストを読んで下さった皆さま、ありがとうございます。

本当に iOSDC は楽しいので、次はあなたもぜひトークに応募してみてください!

勉強会会場&機材お貸ししてます

都内で勉強会を開きたい方、ご連絡ください! セミナールームだけではなく、 MacBook Pro や iPad などもご利用頂けます。 try! Swift のワークショップでご利用頂いた実績もあります。どうぞ、お気軽に声をかけてください。