Interface 2017年3月号のTensorFlow による機械学習入門がいい感じ(もうすぐ次の号が出るけど)
あくまでも独断と偏見ですが。
Interface(インターフェース) 2017年 03 月号
- 出版社/メーカー: CQ出版
- 発売日: 2017/01/25
- メディア: 雑誌
- この商品を含むブログを見る
TensorFlowで機械学習を始めるにはイメージがしやすい内容に仕上がってると思う。
理論とか数学的な詳細はスルーして、とりあえず動かしてみる、という場合には最適。
理論とかそっちは後でオライリーの「ゼロから作るDeep Learning」を読めばいいと思う*1。
紙媒体ではなくPDFを購入しました。
Tech Village: Interface 2017年3月号 ラズパイにON!Google人工知能/Google人工知能 TensorFlow初体験ガイド【PDF版】
残念ながらこのPDF、パスワードロックがかかっていてテキストがコピーできないようです。
電子版と紙媒体版、同じ価格にする必要はないと思うんですがどうなんでしょう*2。
トラ技と違って基板の類はついてこないのでどんどん電子化してもらって問題ないはず。
概要など
第1特集がTensorFlowを使ったキュウリの等級判定。
第2特集がJupyter Notebook とDocker による TensorFlow のセットアップと基礎。
第1特集
まずキュウリは長さとか曲がり具合などにより等級が存在し、出荷時に農家が手作業で仕分けしているとのこと*3。
まず手作業で分類したキュウリに対して上下と横から見た状態の三方向から撮影して画像を用意。
この画像をグレイスケール化するなど加工したうえでニューラルネットワークをトレーニングさせて、その学習データを使ってノートパソコン上で判定処理を実行。
その後同じ判定処理をラズパイ、Google Cloud MachineLearningで実行させるまでの一部始終。
TensorFlow のチュートリアルを実行して終わりではなくて、改造した上でUIとサーボーモーター制御のサンプルを追加している。
以下、ちょっとした疑問と改善案。
- きゅうりが撮影台に載っているかどうかを人工知能にさせなくても、普通にOpenCVの物体検出(動態検出)で良いのでは
- 実際の仕分け現場では精度が8割まで低下したとのことで、原因として周囲の環境光が挙げられていた。周囲の環境光が原因だとするなら、撮影台に外部からの光を遮るようなシャッターのようなものを取り付ければいいのでは
第2特集
TensorFlow とJupyter Notebook のセットアップ済みのDocker イメージででTensorFlowセットアップして遊んでみようという記事。
Window 、Mac 、Linuxの各環境向けのPythonのセットアップ手順から解説されている。
Docker for Mac で実行してみたがちゃんと動作した。
Python はインストール済みであるものとして、Docker for Mac ( or Windows ) をインストールして下記のコマンドを実行。
$ docker run -it -p 8888:8888 -p 6006:6006 --name tf gcr.io/tensorflow/tensorflow /bin/bash
ダウンロード完了後、自動的にシェルが起動する。
初期状態でNotebookApp
という名称のディレクトリにいるのでそのままJupyter Notebookを起動する。
# jupyter notebook
コンソールに下記のメッセージとともにURLが表示されるのでブラウザのアドレスバー*4にコピーアンドペースト。
Copy/paste this URL into your browser when you connect for the first time, to login with a token:
初回だけアクセストークン付きの長いURL。2回目以降はhttp://localhost:8888
でOK。
ブラウザから接続すると特集記事のサンプルを動かせる。
[f:id:atuyosi:20170222024118p:plain]
特集記事の本文にある通り、一度コンテナを停止させた後で再度実行する場合はdocker start
コマンドでコンテナを指定して実行する。
$ docker start -I tf
停止時はdocker stop
を使う*5。
$ docker stop tf
Docker の概要と基本操作はPaizaの解説ページが綺麗にまとまっている。
Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き) - paiza開発日誌
あとは実際に手を動かしていくだけ。
まとめ
一昨年ぐらいからTensorFlowに手を出そうと意識はしていたものの、今までろくに試せていなかったので最初のとっかかりとしては十分すぎる内容。
Interfaceという雑誌、組み込み機器などハード寄りのイメージの強い雑誌ですが、意外と侮れないと言う感想。
以前は技術評論社の雑誌を毎号購入していた時期がありましたが、最近は購買欲がわかない特集が多いです。その点、CQ出版のトラ技とこのInterfaceの方が興味をそそる内容の特集が多いような気がします。
別にSoftware DesignなりWeb+DB PRESSを買わないとかいうわけではないですが。
食わず嫌いなのか、あるいは「老い」というやつなのか。結構ググればそれなりにその場しのぎになるからでしょうか。
それではまた。
iOS 10/Swift3 関連本あれこれ(洋書編 .ver)
購入したものとそうでないもの、読み放題サービスで中身を眺めたもの、旧版を買ったが現行版は買わない、などいろいろ。
個人の独断と偏見によるものです。あしからず。
随時追記する予定。
目次のようなもの
- オライリー
- Packt Publishing
- Test-Driven iOS Development with Swift 3
- Swift 3 Game Development - Second Edition
- Mastering Swift 3
- Mastering Swift 3 - Linux
- Swift 3 Object Oriented Programming - Second Edition
- Swift 3 Protocol-Oriented Programming - Second Edition
- Swift 3 Functional Programming
- Swift 3 Programming Cookbook
- Swift 3 Programming for Kids
- Pragmatic Bookshelf
- Raywenderlich.com
- Big Nerd Ranch
- 所感など
オライリー
50%オフというパワーワードの前に抗う術を持ちませんでした。Deal with Day とかいうヤツ。
Learning Swift Second Edition
Learning Swift: Building Apps for Macos, Ios, and Beyond
- 作者: Jon Manning,Paris Buttfield-addison,Tim Nugent
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2017/04/27
- メディア: ペーパーバック
- この商品を含むブログを見る
Learning Swift 3 - O'Reilly Media
まずmacOS向けのアプリを作成し、その後でiOSアプリを作るというアプローチ。これはこれで良心的な気がする。
旧版とタイトルが紛らわしいので注意。
あと、正式タイトルが"Learning Swift"の2nd editionなのか、Learning Swift 3なのかはっきりして欲しい。Packt からも似たようなタイトルのSwift 2.x向けが存在しているという。
例によって例の如く、"Early Release" 版の時点で購入しています。
- プログラミング経験者が対象
- Swift およびObjective-Cの経験はないと仮定
- macOS/iOSの開発経験はないと家庭
- Swift にフォーカス(つまりObjective-Cの話は出てこない)
- 英語の本にしては画像多め
- iCloud連携に関してはDeveloper License が必要なので注意されたし
- 他のオライリー本より英文が平易で読み易い*1
最大の特徴は4部構成となっていること。それぞれSwift の解説(シンプルなiOSアプリ)、macOSアプリ作成、iOSアプリ作成、アプリの拡張(iOSアプリへのwatchOSアプリ追加、パフォーマンス改善)となる。
500ページぐらいなのでやや広く浅くになりがちだけどお買い得感はある。
サンプルコードなどは、以下。
iOS 10 Programming Fundamentals with Swift
iOS 10 Programming Fundamentals with Swift - O'Reilly Media
iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics
- 作者: Matt Neuburg
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/09/26
- メディア: Kindle版
- この商品を含むブログを見る
著者はMatt Neuburg氏。
前半がSwift 3の基礎で後半はiOSの新機能中心。
Programming iOS 10
Programming iOS 10 - O'Reilly Media
iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics
- 作者: Matt Neuburg
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/09/26
- メディア: Kindle版
- この商品を含むブログを見る
※ 正式リリースはまだ。購入済み。先は長そう。
著者はMatt Neuburg氏。Swift 3の基礎的なことは書いてないので同じ著者のもう一方を読んでくれとのこと。Objective-Cの知識もあった方が良い。
同じ著者でこのページ数を書き上げるあたりはすごいとしか言いようがない。
Packt Publishing
Mapt経由による。
Test-Driven iOS Development with Swift 3
Test-Driven iOS Development with Swift 3 | PACKT Books
200ページ程度で分量はそれほど多くない。チュートリアル系。
本文の説明に従ってテストを書く、コンパイルエラーに対処、テストを満たすコードを書く、という作業を繰り返していくとToDoアプリが完成するという内容の本。
写経していると退屈になってくるという意味ではつらい。
UIのテストの話は出てこないので注意。
Swift 3 Game Development - Second Edition
Swift 3 Game Development - Second Edition | PACKT Books
同じ著者で過去にもゲーム作成の本を書いているのでまともな内容だろうと思う。
Mastering Swift 3
Mastering Swift 3 | PACKT Books
簡単なサンプルを作ってそこからリファクタリングしながら解説する形式だったと思う(うろ覚え)。
Mastering Swift 3 - Linux
Mastering Swift 3 - Linux | PACKT Books
タイトルの通りLinux版のSwiftをターゲットにしている。珍しい。
Swift 3 Object Oriented Programming - Second Edition
Swift 3 Object Oriented Programming - Second Edition | PACKT Books
Swift 3 Protocol-Oriented Programming - Second Edition
Swift 3 Protocol-Oriented Programming - Second Edition | PACKT Books
ほとんどの掲載コードはiOS、macOS、Linux、(IBMが提供する)Webブラウザ経由で実行するSwiftで動作するらしい。
Swift 3 Functional Programming
Swift 3 Functional Programming | PACKT Books
2016年の6月に出ている、要するにDeveloper preview versionのSwift をベースに書かれている。そのため微妙に正式リリース版のSwift 3と違う部分があるかも。
Swift 3 Programming Cookbook
Swift 3 Programming Cookbook | PACKT Books
3月発売予定。Cookbookは当たり外れが大きいので目次をよく確認することを推奨。
Swift 3 Programming for Kids
Swift 3 Programming for Kids | PACKT Books
3月発売予定。子供がよろこぶようなプログラム、なのか、子供と一緒にプログラミングなのか不明。
Playgrounds で文法を学びつつサンプルアプリを仕上げるようなタイプに見える。
Pragmatic Bookshelf
Rails 関連本とかヘルシープログラマの原著を発売した出版社。
iOS 10 SDK Development
サブタイトルは"Creating iPhone and iPad Apps with Swift"。
正式発売は年明けじゃないだろうか。
iOS 8版の時は一冊全体でTwitter クライアントをブラッシュアップしながら作るという本だった。サンプルソースを見る限り前半はPlaygroud でお勉強。後半からPodCast用のクライアントを作るのかな?
いちいちXcode のプロジェクトを作る必要がないという利点はあるけど、日本語の書籍のように一冊で複数アプリの作り方を解説というスタイルを期待していると肩透かしを食らう。
iOS 8版を踏襲しているとすると、順を追って機能を追加していくスタイルでちょっとまどろっこしい。せっかく写経したコードをバッサリ削除して次のステップへ、とか進化のなぞりかえしスタイルだったはず*2。音楽再生タイプのアプリを作りたいなら役に立つかも。
クリスマス前後とか元旦に割引キャンペーンがあると思う。ただし買う気はしない。
Raywenderlich.com
ゲーム開発向けのチュートリアルで有名。
月額料金制のチュートリアルとは別に書籍も発行している。
購入したことがないのでなんとも言えないが、やや割高な印象。
日本語のレビューを見かけない……。誰かレビュー求む。
Big Nerd Ranch
今まで購入したことはないのでなんとも。
macOS向けアプリ開発についての本(通称ヒレガス本)で有名。iOSよりmacOS向けの書籍に期待したい。
iOS Programming: The Big Nerd Ranch Guide (6th Edition)
iOS Programming Guide | Big Nerd Ranch
誰かレビュー求む。
Amazon.comのレビューは好評の模様。
所感など
本を買って満足、もしくは本の内容を把握して満足するという状態になっていて非常にまずい。
イギリスのPackt はちょっと自重しろよって感じです。昨年あたりから日本の方はRとPython本がバブル気味ですが、海外もProgramming 関連本はよく売れるんでしょうか。
インプット過剰気味なのでちゃんとアプリをリリースするところまでちゃんと持っていきたい今日この頃。
それではまた。
Vine Linux 6.5 Beta 8 の感想など
鮭という魚は生まれた川を遡上するらしいですね。
まあそういう訳で久しぶりにVine Linux のベータ版を試してみました。
6.x の商用版購入したのはかなり前で、インストールした仮想マシンのデータが破損して以来、綺麗に放置してました。
そもそもLaTeX使う訳でもないし、サブマシンのつもりだったMacBook Air が結果的にメインのマシンになっていますし。
ベータ版についての情報は以下より。
Vine Linux News - Vine Linux 6.5 beta8 (final予定) を公開
開発者向けのMLを見る限り、3月上旬にリリースされそうな雰囲気だけど、開発版のMLでメンテナのお一人が離脱を宣言しているように見える。ものすごく心配。
[VineSeed:028367] Vine Linux 6.5 リリーススケジュール
3月に6.5をリリースしたとして、7.xのリリースした後で6.x系もメンテするつもりなんだろうか。そんなリソースあるとは思えないので強引にでも7.xに移行して6.xはサポート終了の方が良かったのではないですかね。
インストールしてみる
手元に未使用のマシンはないのでVirtualBoxにインストール。
ベータ版の配布サイトからダウンロードして、VirtualBoxにインストールしてみます。
$ wget http://beta.vinelinux.org/65/Vine65b8-DVD-x86_64.iso
VirtualBox へのインストール
CPUはx86_64、メモリ1GB。あとはデフォルトのまま。"Other Linux 64bit"にしておけばいい。
“Install Vine Linux"を選択した状態で"Enter"。
従来どりのインストーラ。
日本語キーボードを選ぶぐらいでパーティション分割もインストーラのデフォルトのまま。管理者アカウントと一般ユーザーのアカウントを追加するぐらい。
インストール時のカテゴリは「デスクトップ」(うろ覚え)にしたと思います*1。
”Guest Additions” についてはVirtualBox側の"Insert Guest Additions CD Image"からすんなりインストールできた。
長所
- Ubuntuの標準デスクトップより軽い
- RPM向けの
apt
が使える - 初期状態で日本語フォントの表示が(非商用フォントにしては)綺麗
- 追加設定なしで日本語入力できる
- systemd ではなくsysvinit (?)
日本語入力まわりの設定とフォントの表示の設定がチューニング済みというのは大きいと思います。商用版からsudo apt-get dist-upgrade
すればデフォルトが商用フォントになるはずです*2。
全くの余談になりますが、他のディストリビューションの場合、日本語フォントの表示まわりはPlamo Linuxの設定ファイルを参考にするのも一つの方法。こっちもかなりチューニングされてるのと、各種パッケージが新しいので。
各種パッケージなど
デスクトップは従来通り。
日本語入力はiBus + mozc。最初からきっちり設定されている。
fcitx + mozc のような、英語配列用の設定を除去する作業は不要。
$ uname -a Linux localhost.localdomain 4.4.49-1vl6 #1 SMP Sat Feb 18 02:12:32 JST 2017 x86_64 x86_64 x86_64 GNU/Linux
- Ruby 1.8.7
- Python 2.6.6
- gcc 4.9.3
- Vim 7.4
- Emacs 23.3.1
- glibc 2.23
- LibreOffice 5.2
- Inkscape 0.48.5
- PHP 5.5.36
Ruby のバージョンを見て一瞬、インストールディスクを取り違えたかと思った。
$ cat /etc/vine-release Vine Linux 6.5 (Poupille)
Pythonはともかく、さすがにRubyは 2.x にして欲しいところ。なお、Pythonはpython3
パッケージが提供されているようです。
rbenv
なりDocker でどうにでもなるけどpyenv
と両方入れるとシェルの起動時にもたつくのでつらい。
とは思ったものの、apt search docker
してもDockerのパッケージがヒットしない?
ニューサイトにリリース告知が掲載された時に主要コンポーネントのバージョンを見てドン引きされそう……。
所感など
最初に遭遇したLinux (Vine Linux 2.1.5の頃)なのでなんだかんだで思い入れはあります。
アスキーのLinuxマガジンが健在だった頃ははかなりユーザーがいたはずなのですが、最近は検索してもサーバー構築事例を見かけなくなりました。
他のディストリビューションの日本語環境もかなり充実しているのと、サーバー用途なら特に日本語固有の問題は起きないから昔ほどの優位性はないように思います。
エラーメッセージでググった時にヒットするのは英語のページがほとんどで海外のユーザーの多い方ディストリビューションの方が困った時に圧倒的に楽……。
また、リリースサイクルが不安定なのはマーケティングの面からかなりマイナスだと思います。リリースのたびに雑誌やニュースサイトで取り上げられるFedoraやUbuntuと比較すると認知度が段違い。
新しいパッケージを試したいならArch Linux、安定志向ならDebian系、企業ユーザーならRHELかCentOSあたりが定番なので、何か特殊なニーズを掴まないと厳しい。
もう以前のように雑誌で特集が組まれたり解説本が発売される確率は低そうです。ちょっと寂しい感じがします。
まとめ
Vine Linux らしいというか、いつも通り手堅く仕上がっていると思います。Ubuntuの標準フレーバーより確実に軽快に動作します。
ただ、どうしても一般ユーザーへのアピールポイントに乏しいという印象です。Ubuntu の日本語Remixのような競合が存在する中であえてVine にするかと言われると厳しいと思いました。セキュリティ修正パッケージの提供が遅いという悪評が定着しているようなのでLANの外でサーバー用途に使うのは流石に不安。
元祖国産ディストリビューションとして頑張って欲しいとは思うけど、Plamo Linuxの方がセキュリティ修正パッケージの提供は頑張っているように見える。
早いところ 7.x のリリースして巻き返して欲しいと思います。
3月のOSC Tokyoに6.5が間に合うと(マーケティング的に)何かと都合が良いと思うんですが、どうなんでしょう。
それではまた。
Inkscape 0.92.1 のパッケージ(gtk/quartz backend)をつくる
Inkscape 0.92.1 がリリースされています。
Release notes/0.92.1 - Inkscape Wiki
日付が2月13日なのは少し疑問ですが、まあいいでしょう*1。
相変わらずMac向けの公式バイナリはリリースされていませんが、次のリリースに向けてなんとかしようという動きはあるようです。
Tim Sheridan 氏によるビルド用のパッケージ作成スクリプトの修正版(ただしExperimental 扱い)が公開されています。
0.92.x_mac_packaging : Code : Inkscape
XQuartz 版が公開されています(まだテスト用扱い)。
例によって例のごとく、XQuartzなしで動くバージョンが欲しいので、自前でビルドします。
そのうちMacPortsからsudo port install inkscape +quartz
で最新版がインストールできるようになるはずです。
わざわざビルドする理由は、dmg形式にしておくとOSリカバリの時にビルドし直さなくていいよねってだけの話です。
自前でビルドしてみる
パッケージ作成スクリプトの修正版はまだメインのリポジトリに反映されていません。
素直に開発版のリポジトリから入手しようかと思いましたが、MacPortsをバージョンアップしたところ、bazaar(bzr
)の挙動がおかしいので断念。
手っ取り早く最新のリビジョンを探し、”download tarball"のリンクをクリックしてダウンロード。差分だけ取得して0.92.1のソースに適用するのも可。
~tghs/inkscape/0.92.x_mac_packaging : revision 15379
今回はリビジョン15379
。
$ tar zxf ~tghs_inkscape_0.92.x_mac_packaging-r15379.tgz $ cd ~tghs/inkscape/0.92.x_mac_packaging
移動した先のディレクトリの、README.txt
ファイルを参考にしてQuartz版を作成します(packaging/macosx/README.txt
)。
ビルド
ビルド環境は過去記事でセットアップしたMavericks環境です。
もし同一マシンでX11版とQuartz版を作り分けたい場合は、MacPortsのインストール先を区別できるようにするといいと思います。
$ export MP_PREFIX=/opt/local $ cd ~tghs/inkscape/0.92.x_mac_packaging/packaging/macosx/
独自のPortfileを使用して追加パッケージをインストールすることが前提になっています。
そのためにMacPortsの設定ファイルを編集する必要があります。
$ sudo sed -e '/^rsync:/i\'$'\n'"file://$(pwd)/ports" -i "" "$MP_PREFIX/etc/macports/sources.conf"
現在のディレクトリのパスと、$MP_PREFIX
の値を埋め込むので注意が必要です。
$ less "$MP_PREFIX/etc/macports/sources.conf"
最終行の一行上にPortfileの配置ディレクトリのための設定が追加されていればOK。
続いてパッケージのインデックスを更新。
$ (cd ports && portindex)
同じ要領でMacPorts全体のビルド設定(variants)を修正。以下はあくまでもQuartzバックエンドとしてビルドするためのものです。
$ sudo sed -e '$a\'$'\n''-x11 +quartz +no_x11 +rsvg +Pillow -tkinter +gnome_vfs' -i "" "$MP_PREFIX/etc/macports/variants.conf"
依存パッケージを一式インストール。それなりに時間がかかります。
$ sudo sed -e '$a\'$'\n''-x11 +quartz +no_x11 +rsvg +Pillow -tkinter +gnome_vfs' -i "" "$MP_PREFIX/etc/macports/variants.conf"
configure
のバグを回避するため、osx-build.sh
を修正。
$ vim osx-build.sh
267行目の下に以下の二行を追加(250行目と251行目をコピーした結果)。
# Workaround for https://bugs.launchpad.net/inkscape/+bug/1606018 CONFFLAGS="--disable-strict-build $CONFFLAGS"
もしMountain Lion やYosemite以降でビルドするなら対応する箇所に修正が必要だと思う。いまのところMavericksでしか試していません。
起動時にエラーが表示される例のバグを回避するパッチを適用。
$ patch ScriptExec/launcher-quartz-no-macintegration.sh fix_lp476678.patch
パッチは以下の通り。
--- ScriptExec/launcher-quartz-no-macintegration.sh.bak 2017-01-08 02:56:39.000000000 +0900 +++ ScriptExec/launcher-quartz-no-macintegration.sh 2017-01-08 02:58:25.000000000 +0900 @@ -143,7 +143,7 @@ export LANG="en_US.UTF-8" else tmpLANG="`grep \"\`echo $LANGSTR\`_\" /usr/share/locale/locale.alias | \ - tail -n1 | sed 's/\./ /' | awk '{print $2}'`" + tail -n1 | awk '{print $2}' | sed 's/\./ /' | awk '{print $1}'`" if [ "x$tmpLANG" == "x" ] then # override broken script
一気にdmgファイルまでビルド。
$ LIBPREFIX="$MP_PREFIX" ARCH="x86_64" ./osx-build.sh a c b -j 5 i p -s d
Inkscape.app
とdmgファイルが生成されているので動作確認する。
Sierra 対策
Mavericks でビルドしたバイナリをSierraで動かすと内部エラーで起動しない……。Mavericksでは普通に動くのに。
以前から知られている問題と同じようなので、その場しのぎの対応ですが、小細工で回避。
前述のパッチと同じ要領で、パッチを適応してdmgファイルだけ作り直す。
作業ディレクトリに戻ったうえで下記を実行。
$ patch Inkscape.app/Contents/MacOS/inkscape fix_SierraBuild.patch patching file Inkscape.app/Contents/MacOS/inkscape Hunk #1 succeeded at 154 (offset 3 lines).
dmgファイルの生成。
$ ./osx-dmg.sh -p Inkscape.app
外付けディスプレイは外して置いたほうがいいかもしれない。
Inkscape.dmg
が生成されるのでこれをインストール対象のマシンに持っていく。なお、修正パッチは下記の通り。
--- ScriptExec/launcher-quartz-no-macintegration.sh.bak 2017-01-08 02:56:39.000000000 +0900 +++ ScriptExec/launcher-quartz-no-macintegration.sh 2017-01-08 02:58:25.000000000 +0900 @@ -151,6 +151,10 @@ export LANG="$tmpLANG.UTF-8" fi fi + +if [ $OSXMINORNO -gt 11 ]; then + export LANG="$(echo $LANG | cut -d. -f 1)" +fi [ $_DEBUG ] && echo "Setting Language: $LANG" 1>&2 export LC_ALL="$LANG"
実行時にセキュリティがらみの警告が出る場合は、Application
フォルダに移動して右クリックメニューから実行すればよかったはず。
もしくは環境設定からセキュリティまわりの設定を変更。
Maverciks からデフォルトのstdlibまわりが変更になっているので、コンパイラの最適化との関係で何かまずいんだろうと思う。
完成品
あまり需要がなさそうですが一応、置いておきます。 XQuartzなしで動くQuartz
版です。
起動スクリプトのバグ修正を含みます。
変更点など
過去記事のビルドとの変更点は、以下のとおり。 独自のパッチ
- CMake ではなく従来どおりの
autotools
によるビルド方式 - Extension の動作に必要なファイルが追加(されたはず)
上述したとおり、独自の修正を含んでいます。
- 日本語ロケールで起動時に「内部エラーが発生しました」というダイアログが表示されて起動できない問題
- 特定の環境でビルドしたバイナリをSierraで実行すると起動できない
あとは冒頭のリンク先と同じです。
スクリーンショット
こんな感じ。
おしまい。
*1:確かにRC相当のプレリリース版はその辺の日付だった。
VirtualBox のゲストとしてMavericks (OS X 10.9) をセットアップしたメモ
外付けストレージとのデュアルブート構成にしていたのですが、やはり不便なので仮装環境上にMavericksをインストールすることにしました。
Sierraではない理由はできるだけ古いOS X環境にしたいからです。
本来は手元のMacBook Air にインストール可能な最も古いバージョンであるMountain Lionにしたいところですが、リカバリ用のユーティリティからはインストールできても、 インストーラーそのものは手に入らないようなので。
基本的に以下のページと同じです。
iESDというコマンドを使う。メンテされてないようですが、インストール対象のゲストOS自体が古いので問題ないと判断しました。
GitHub - ntkme/iesd: Customize OS X InstallESD.
参考(Sierraの場合): [VirtualBox]仮想環境で macOS Sierra を導入(isoイメージ作成)[Sierra] - Qiita
最初は安直にcreateinstallmedia
コマンドの引数に空のdmg
ファイルを指定したらできるかと思いましたが、VirtualBox側が受け付けてくれませんでした。
ツールの入手と実行
githubからclone。
$ git clone https://github.com/ntkme/InstallESD.dmg.tool $ cd InstallESD.dmg.tool $ ls LICENSE.md README.md bin iesd.gemspec lib
インストール用ディスクのイメージをマウントしていると途中でこけるのでアンマウントされていることを確認してから実行。
$ bin/iesd -t BaseSystem -i /Volumes/DSHGST/Data_Sub/resources/apple/Marvericks/Install\ OS\ X\ Mavericks.app/Contents/SharedSupport/InstallESD.dmg -o Output.dmg
十数分はかかったはず。
ここで生成されたOutput.dmg
をVirtualBoxの起動ディスク(CD-ROM扱い)に指定すればインストーラーを起動できる。
仮想マシンの作成
VirtualBox 側で仮想マシンを作成します。「新規」をクリックするとウィザードが起動するので、仮想マシンの名称の箇所でmacOS(OSX)っぽい名前を入れると中央のプルダウンメニューがそれらしき候補に変化します。
Linux系の場合より多くのメモリが必要なようです(結局、2GBに設定)。
その他、細かい設定は以下を参考にしました。
VirtualBox -仮想環境”OS X 10.9 Mavericks”を作成- | External storage
サイトによってはチップセットの変更に言及されていますが、ICH9でも動作するようです。私はビデオメモリ64MB、CPU数 2としています。
ゲストOS(Maverics) のインストール
仮想マシンを起動すると起動ディスクを指定するためのダイアログが表示されるので、前述のOutput.dmg
をセットして続行。
注意点は、OS Xのインストーラーはフォーマット済みのディスクしかインストール先として認識しないという点。
初回は仮装ハードディスクを認識するものの、フォーマットされていない状態なので、ディスクユーティリティに切り替えて「消去タブ」からパーティションをつくる必要がある。
なお、OSXのEULAには仮装環境でのインストールは2台までと記載されています。もちろんApple製のハードウェア上で仮想化ホストOSが実行されている前提。
Xcode
Mavericks 用なのでXcode 6.1.1をインストール。対応するバージョンのComandlineToolsもインストールする。
どちらも入手はApple Developer のサイトから(要ログイン)。
制限事項
VirtualBoxのマニュアルにmacOS(OS X)ゲストについての制限事項の記載があります。
参考:http://download.virtualbox.org/virtualbox/5.1.14/UserManual.pdf
セクション14.2あたりを確認。
- 仮想マシンに割り当てられた一つのCPUで動作する(ホストのCPUクロックより高いクロック周波数のCPU扱いになる)
- guest addon はmacOSゲストには提供されない(つまり、VirtualBox側のファイル共有手段が使えない)
- 初期状態では画面解像度が1024x768(VirtualBoxが提供するコマンドで変更可能)
遭遇した問題など
- USBデバイスの共有機能を使ってUSBメモリからファイルをコピーしようとするとなぜか途中でUSBメモリを見失って失敗する
- 「このMacについて」というメニューからハードウェアの詳細を確認しようとするとログイン画面にフォールバックする