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
Apple_Siliconへの移行_完全に理解した.pdf
Search
Yusaku-T
October 04, 2021
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apple_Siliconへの移行_完全に理解した.pdf
Yusaku-T
October 04, 2021
More Decks by Yusaku-T
See All by Yusaku-T
_実録_フレッツのIPv6_完全に理解した.pdf
yusakutnk
0
41
Apple Siliconへの移行 完全に理解した
yusakutnk
0
390
【実録】フレッツのIPv6 完全に理解した
yusakutnk
0
480
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
520
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Invisible Side of Design
smashingmag
301
52k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Exploring anti-patterns in Rails
aemeredith
3
450
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Transcript
Apple Siliconへの移行 完全に理解した 2020/6/25 Yusaku-T
自己紹介 • Yusaku-T • 某社ITエンジニア ◦ サーバーサイドがメインですが、フロントエンドやインフラも多少 • 某社インターネット老人会会長 ◦
そろそろ公式ハンドルをkaichoにしようかとも思ってます
発表内容 • 当初は自宅のOCNフレッツ回線をIPoE(IPv4 over IPv6)に移行した話をする予定でした ◦ 「フレッツのIPv6完全に理解した」 • 6/23にMacのCPU移行のニュースが流れてきて、軽く調べたり気になったことをメモしてい たら「タイムリーだしこっちを話した方が良いんじゃ…?」と思い、急遽内容変更しました
◦ 勢いでまとめたので事実誤認や後になって判明する新事実等あるかもしれません ◦ 主にITエンジニアに対する影響について話します • IPoE(IPv4 over IPv6)については来月お話しします ◦ ここ数日で状況が変化したのでそれを反映 &検証を追加します
Apple Siliconとは? • 先日(現地時間6/22)のWWDC 2020で発表 されたMac用の新しいApple独自CPU • 開発キット機にはApple A12Z(iPad Pro
2020 と同じCPU)が搭載 • 実際のMacには別なCPUが搭載される事と 考えられるが、基本的にはiPhone/iPadで使 われるApple Aシリーズと同じ64bit ARMアー キテクチャのCPUになるはず 基調講演 https://developer.apple.com/videos/play/wwdc2020/101/ より
Macの歴史はCPU変更の歴史(1/2) • 一社提供だからできる荒技(ある意味ゲーム機に近い) • 時代時代に応じて最適(と思われる)CPUを選択してきた Motorola MC68000 (MEGA DRIVE, NEOGEO)
IBM PowerPC (Wii, PS3, Xbox 360) Intel x86/x64 (PS4, PS5, Xbox One) Apple Silicon(ARM) (Nintendo Switch, PS Vita) 1994 2006 1984 2020
Macの歴史はCPU変更の歴史(2/2) • ITエンジニア(特にWeb系やインフラ系)にMacが大きく広がったのはIntel CPU以降 • 多くのITエンジニアにとっては初のCPU変更になる! Motorola MC68000 (MEGA DRIVE,
NEOGEO) IBM PowerPC (Wii, PS3, Xbox 360) Intel x86/x64 (PS4, PS5, Xbox One) Apple Silicon(ARM) (Nintendo Switch, PS Vita) 1994 2006 1984 2020
何が問題? • プログラムは最終的にはCPUが直接理解できる機械語に変換されて実行される ◦ PythonやJavaScriptなどのスクリプト言語も • 今までのMacのIntel系CPU(x86/x64)とApple Silicon(ARM)では、この機械語の形式が 全く違う! ◦
そもそもCISCとRISCという大まかな区切りからして異なる • 今までのMacで動いていたプログラムが動作しない!
移行のためのサポート • Universal 2 ◦ 1つのプログラムファイルの中に Intel版とApple Silicon版を含める仕組み • Rosetta
2 ◦ Intel版の実行バイナリ(プログラム)を変換して Apple Siliconで実行する仕組み ◦ インストール時の一括変換と実行時の動的変 換の二種類の動作をサポート? ▪ https://news.mynavi.jp/article/osxhack -266/ • 「2」とあるのは元々PowerPC→Intel CPUへ の移行の際に使われた技術だから プラットフォーム講演よりRosetta 2の説明 https://developer.apple.com/videos/play/wwdc2020/101/ より
とはいえ… • パフォーマンス等を考えるとApple Silicon(64bit ARM)ネイティブで動く方が ありがたい • ARM版LinuxやARM版Windows 10用の バイナリが提供されているオープンソース
ソフトウェアは比較的早期に対応すると思 われる • プラットフォーム講演でもMacはITエンジニ アにとって非常に人気があるとの言及あり 「OSSへの移行を支援しパッチを提供する」と表明した場面で表 示されたリスト https://developer.apple.com/videos/play/wwdc2020/102/ より
Apple純正のアプリ • Safari, iWork(Pages, Keynote, Numbers), Xcodeなど • 流石にこれらはApple Siliconネイティブで動くものが新Mac/Bug
Surと同時に提供される はず • 動画編集のFinal Cut Pro Xや音楽編集のLogicといった重いアプリのデモを流すなど Appleの新CPUへの自信が伺える ◦ いきなりApple Silicon搭載のMacbook ProやMac Proあたりが出るかも?
Microsoft(Office), Adobe(Creative Cloud) • WWDCの基調講演でデモ • レガシーな機能をフルサポートしてくれるか? ◦ Office 2003までの旧形式ファイルとか
VBAとか ◦ Adobeについては最近バージョンのアプリから対応 ▪ Lightroom Classicとかは非対応(らしい)
Webブラウザ • Google Chrome, FirefoxはいずれもARM版Windows 10のバイナリの提供あり • Adobe Flashなど各種プラグインが必要なWebページを見ることは難しそう ◦
今年いっぱいでサポート終了ですが …
Homebrew • ベースとなっているUNIX系のOSSは多くはARM版Linuxでも動くので対応するはず ◦ 前述の通りプラットフォーム講演でもサポートを発表 • PowerPC版のHomebrewであるTigerbrewなるものがあり、未だにメンテされている! ◦ https://github.com/mistydemeo/tigerbrew
Electronベースのデスクトップアプリ • VS Code, Postman, Slackクライアント, Discordクライアントなど • ベースとなるElectronは7.0からARM版Windowsに対応 ◦
https://forest.watch.impress.co.jp/docs/news/1214252.html • VS Codeについては1.46からARM版Windows 10に対応 ◦ https://code.visualstudio.com/insiders/#win
開発言語(1/2) • Python, Ruby, Node.js等のスクリプト言語 ◦ 多くのインタプリタがARM版Linuxで動作 ◦ Python, Rubyあたりは新OSのBig
SurにApple Silicon対応版がバンドルされるはず ◦ ライブラリによってはCなどで書かれたネイティブコードを含むので要注意 • Java ◦ ARM版Linuxで動くOpenJDKが提供ずみ ▪ https://adoptopenjdk.net/releases.html ◦ ネイティブコードを含むライブラリについては同上
開発言語(2/2) • Go, Rustなどの(ネイティブコード)コンパイラ型言語 ◦ Go, RustはARM版Linuxのコンパイラがあり ▪ Go: https://golang.org/dl/
▪ Rustに関してはTier 2: https://forge.rust-lang.org/release/platform-support.html • いずれの言語も過去のバージョンに遡ってApple Silicon版Macにネイティブ対応する か? ◦ Python 2.7やJava 8など ◦ 保守案件などで地味に問題になる可能性 ◦ Rosetta 2経由で実行するか非公式バイナリを利用するか ▪ 頑張って自力ビルドすると言うのももちろんアリ
仮想化・コンテナ • 今回のCPU変更で大きな影響 があると考えられる • 基調講演でParallelsやDocker のデモ画面が登場 • 「Virtualization」なる仮想化フ レームワークがBig
Surで追加さ れる https://developer.apple.com/videos/play/wwdc2020/101/ より
どっちの方式? 1. CPUエミュレーションを行わず、ARM版の仮想OSやコンテナを実行する 2. CPUエミュレーションを行い、Intel CPU版の仮想OSやコンテナを実行する
1.の方式の模様 • プラットフォーム講演で「ARM版の Debian Linuxを動かしている」発 言および画面あり ◦ https://applech2.com/archives/ 20200623-apple-silicon-mac-ne w-hypervisor-virtualization.html
◦ https://developer.apple.com/vid eos/play/wwdc2020/102/ https://developer.apple.com/videos/play/wwdc2020/102/ より
ARM版Dockerコンテナで発生する問題点 • DockerHubでARM版のコンテナイメージが提供されていない場合がある ◦ 多くは対応しつつあるが、例えば MySQL(公式)などは現時点で未対応 • 開発環境と運用環境で動かすコンテナイメージに差異が発生する ◦ レンタルサーバーや各種クラウドのサーバーが
Intel/AMDからARM系に一気に切り替わることは ないはず ▪ 運用環境向けのコンテナは Intel CPU向けに再構築・再検証が必要になる • JenkinsやCircle CI等でCI/CDを組んでいる場合は今まで通り ◦ トラブル発生時の問題の切り分けで考慮する要素が増える ◦ 運用環境で問題が起きたイメージを引っ張ってローカルの Macで検証…といったことができなくなる
Intel CPU版Dockerコンテナで発生する問題点 • 現在Mac版DockerにはQEMUを使ってARMやPowerPCなどをエミュレーションする機能 がある ◦ https://qiita.com/hnw/items/99e207d16b313f027528 • これを逆に適用する事でIntel CPU版のDockerイメージが動く?
◦ Rosetta 2の機能は使えなさそう? • ただでさえ重いMacのDockerがさらに重くなるという問題
アンチウイルスソフトウェア(追記) • 今の所ARM版LinuxやARM版Windowsに対応した製品は見当たらず ◦ OSSのClamAVが動作する程度? • 個人開発よりもチーム開発や企業での大量導入(後述)の際に問題になる ◦ アンチウイルスソフトウェアが導入されていない(導入できない) PCはISMSや社内セキュリティポリ
シーに抵触する可能性 ◦ 例えApple SiliconのMacに影響は及ぼさなくとも、他プラットフォームで動作するマルウェアが見 逃されてローカルストレージに保存される可能性がある
機械学習 • 全く理解してないです • NumPy, TensorFlow, PyTorchと言ったライブラリはPythonベースとはいえC言語のコード も含まれているので、ライブラリ個別の対応も必要 ◦ Raspberry
PiなどARM版Linuxで動かしてるケースあり • CPUはApple Siliconに変わるが、GPUはどうなる? ◦ AMDを使い続ける? ◦ NVIDIAに移行する? ◦ まさかGPUもApple独自開発になる?
スマートフォンアプリ開発 • 全く理解してないです • iOSアプリ開発 ◦ XCodeは流石にApple Siliconネイティブ対応するはず • Androidアプリ開発
◦ Android StudioはJavaベース(IntelliJベース)なので、Javaがネイティブ対応すればなんとかなる はず • クロスプラットフォーム開発(Flutter, Xamarinなど) ◦ わからないです
ゲーム開発 • 全く理解してないです • Unityの開発ツールのデモが登場 https://developer.apple.com/videos/play/wwdc2020/102/ より
チーム開発(1/2) • 開発用の貸与PCとしてMacを大量導入している企業など • 移行期間中はIntelとApple SiliconのMacが企業内・開発チーム内などで混在する事に なる ◦ 全部Apple SiliconのMacに移行する?
▪ 費用面・互換性の問題 ◦ Intel CPUのMacを購入し続ける? ▪ 移行期間は2年 ▪ Intel CPU版MacはmacOSの更新に追従できなくなる • PowerPC→Intel CPUの時は移行後の次のバージョン (OS X 10.6)が最終 ◦ いっそWindowsに移行する? ▪ 既存MacにはBootCampでWindowsを導入し新たにWindows PCを買い足していく ▪ Dockerやターミナルなど、Windowsの開発者サポートも充実しつつある
チーム開発(2/2) • トラブルが起きた時の問題の切り分けが難しくなる ◦ 新卒がApple SiliconのMacを持ってきて「これ動かないんですけど …」と言ってきたときどうする? • 開発環境の構築手順書なども、両方のCPU環境を考慮して書く必要が出てくる ◦
各種アプリのインストールに関しては前述の Universal 2である程度は一本化できるはず • 新卒には安定したIntel CPUのMacを貸与し、開発経験の長いITエンジニアにApple SiliconのMacを貸与して問題点を洗い出してもらう、といった工夫も必要かも? ◦ 人の金ではやくApple SiliconのMacを使いたいと言っているわけではない
まとめ • MacのCPUがApple Siliconに変わると(そのままでは)今までのプログラムが動かなくな るよ • 公式の移行サポートもあるし、ARM版Windows/Linuxにネイティブ対応しているアプリは 近いうちにApple SiliconのMacにも対応すると思うよ(期待) •
仮想化・コンテナを使った開発はちょっと影響が大きそうだよ • チーム開発ではCPUが統一されてない事によるトラブルが起きうるから、運用・ドキュメン ト・ツールなどでカバーする必要がありそうだよ