今日も微速転進

ここではないどこかへ

Interface 2017年3月号のTensorFlow による機械学習入門がいい感じ(もうすぐ次の号が出るけど)

あくまでも独断と偏見ですが。

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 、MacLinuxの各環境向けの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を買わないとかいうわけではないですが。


食わず嫌いなのか、あるいは「老い」というやつなのか。結構ググればそれなりにその場しのぎになるからでしょうか。

それではまた。

*1:まだ買ってないですが評判はいいみたいです

*2:技術評論社にも言えることですが

*3:流通にやらせればいいのに

*4:ロケーションバー

*5:KitematicなどGUIツールをインストールしておくと楽

iOS 10/Swift3 関連本あれこれ(洋書編 .ver)

購入したものとそうでないもの、読み放題サービスで中身を眺めたもの、旧版を買ったが現行版は買わない、などいろいろ。

個人の独断と偏見によるものです。あしからず。

随時追記する予定。


目次のようなもの

オライリー

50%オフというパワーワードの前に抗う術を持ちませんでした。Deal with Day とかいうヤツ。

Learning Swift Second Edition

Learning Swift: Building Apps for Macos, Ios, and Beyond

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ページぐらいなのでやや広く浅くになりがちだけどお買い得感はある。

サンプルコードなどは、以下。

GitHub - thesecretlab/LearningSwift2Ed: Code for "Learning Swift, 2nd Edition", published by O'Reilly Media, on developing apps with Swift 3.

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

iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics

著者は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

iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics

※ 正式リリースはまだ。購入済み。先は長そう。

著者はMatt Neuburg氏。Swift 3の基礎的なことは書いてないので同じ著者のもう一方を読んでくれとのこと。Objective-Cの知識もあった方が良い。

サンプルコード:GitHub - mattneub/Programming-iOS-Book-Examples: Downloadable code examples for my books, “iOS 10 Programming Fundamentals With Swift” (bk1) and “Programming iOS 10” (bk2).

同じ著者でこのページ数を書き上げるあたりはすごいとしか言いようがない。

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

ほとんどの掲載コードはiOSmacOSLinux、(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 10 SDK Development: Creating iPhone and iPad Apps with Swift by Chris Adamson with Janie Clayton | The Pragmatic Bookshelf

正式発売は年明けじゃないだろうか。

iOS 8版の時は一冊全体でTwitter クライアントをブラッシュアップしながら作るという本だった。サンプルソースを見る限り前半はPlaygroud でお勉強。後半からPodCast用のクライアントを作るのかな?

いちいちXcode のプロジェクトを作る必要がないという利点はあるけど、日本語の書籍のように一冊で複数アプリの作り方を解説というスタイルを期待していると肩透かしを食らう。

iOS 8版を踏襲しているとすると、順を追って機能を追加していくスタイルでちょっとまどろっこしい。せっかく写経したコードをバッサリ削除して次のステップへ、とか進化のなぞりかえしスタイルだったはず*2。音楽再生タイプのアプリを作りたいなら役に立つかも。

クリスマス前後とか元旦に割引キャンペーンがあると思う。ただし買う気はしない。

Raywenderlich.com

www.raywenderlich.com

ゲーム開発向けのチュートリアルで有名。

月額料金制のチュートリアルとは別に書籍も発行している。

購入したことがないのでなんとも言えないが、やや割高な印象。

日本語のレビューを見かけない……。誰かレビュー求む。

Big Nerd Ranch

www.bignerdranch.com

今まで購入したことはないのでなんとも。

macOS向けアプリ開発についての本(通称ヒレガス本)で有名。iOSよりmacOS向けの書籍に期待したい。

iOS Programming: The Big Nerd Ranch Guide (6th Edition)

iOS Programming Guide | Big Nerd Ranch

誰かレビュー求む。

Amazon.comのレビューは好評の模様。

所感など

本を買って満足、もしくは本の内容を把握して満足するという状態になっていて非常にまずい。

イギリスのPackt はちょっと自重しろよって感じです。昨年あたりから日本の方はRとPython本がバブル気味ですが、海外もProgramming 関連本はよく売れるんでしょうか。


インプット過剰気味なのでちゃんとアプリをリリースするところまでちゃんと持っていきたい今日この頃。

それではまた。

*1:個人の見解です。他の方が読み易いと感じるかどうかは語学力に依存すると思います。

*2:学習効果は高いと思うがなんかめんどい

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にインストール

Vine Linux - Beta

ベータ版の配布サイトからダウンロードして、VirtualBoxにインストールしてみます。

$ wget http://beta.vinelinux.org/65/Vine65b8-DVD-x86_64.iso

VirtualBox へのインストール

CPUはx86_64、メモリ1GB。あとはデフォルトのまま。"Other Linux 64bit"にしておけばいい。

f:id:atuyosi:20170221011330p:plain
“Install Vine Linux"を選択した状態で"Enter"。

f:id:atuyosi:20170221011423p:plain
従来どりのインストーラ

日本語キーボードを選ぶぐらいでパーティション分割もインストーラのデフォルトのまま。管理者アカウントと一般ユーザーのアカウントを追加するぐらい。

インストール時のカテゴリは「デスクトップ」(うろ覚え)にしたと思います*1

”Guest Additions” についてはVirtualBox側の"Insert Guest Additions CD Image"からすんなりインストールできた。

長所

  • Ubuntuの標準デスクトップより軽い
  • RPM向けのaptが使える
  • 初期状態で日本語フォントの表示が(非商用フォントにしては)綺麗
  • 追加設定なしで日本語入力できる
  • systemd ではなくsysvinit (?)

日本語入力まわりの設定とフォントの表示の設定がチューニング済みというのは大きいと思います。商用版からsudo apt-get dist-upgradeすればデフォルトが商用フォントになるはずです*2

全くの余談になりますが、他のディストリビューションの場合、日本語フォントの表示まわりはPlamo Linuxの設定ファイルを参考にするのも一つの方法。こっちもかなりチューニングされてるのと、各種パッケージが新しいので。

各種パッケージなど

f:id:atuyosi:20170221011258p:plain

デスクトップは従来通り。

日本語入力は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 のバージョンを見て一瞬、インストールディスクを取り違えたかと思った。

$ cat /etc/vine-release 
Vine Linux 6.5 (Poupille)

Pythonはともかく、さすがにRubyは 2.x にして欲しいところ。なお、Pythonpython3パッケージが提供されているようです。 rbenvなりDocker でどうにでもなるけどpyenvと両方入れるとシェルの起動時にもたつくのでつらい。

とは思ったものの、apt search dockerしてもDockerのパッケージがヒットしない?

ニューサイトにリリース告知が掲載された時に主要コンポーネントのバージョンを見てドン引きされそう……。

所感など

最初に遭遇したLinuxVine Linux 2.1.5の頃)なのでなんだかんだで思い入れはあります。

アスキーLinuxマガジンが健在だった頃ははかなりユーザーがいたはずなのですが、最近は検索してもサーバー構築事例を見かけなくなりました。

他のディストリビューションの日本語環境もかなり充実しているのと、サーバー用途なら特に日本語固有の問題は起きないから昔ほどの優位性はないように思います。
エラーメッセージでググった時にヒットするのは英語のページがほとんどで海外のユーザーの多い方ディストリビューションの方が困った時に圧倒的に楽……。

また、リリースサイクルが不安定なのはマーケティングの面からかなりマイナスだと思います。リリースのたびに雑誌やニュースサイトで取り上げられるFedoraUbuntuと比較すると認知度が段違い。

新しいパッケージを試したいならArch Linux、安定志向ならDebian系、企業ユーザーならRHELCentOSあたりが定番なので、何か特殊なニーズを掴まないと厳しい。

もう以前のように雑誌で特集が組まれたり解説本が発売される確率は低そうです。ちょっと寂しい感じがします。

まとめ

Vine Linux らしいというか、いつも通り手堅く仕上がっていると思います。Ubuntuの標準フレーバーより確実に軽快に動作します。

ただ、どうしても一般ユーザーへのアピールポイントに乏しいという印象です。Ubuntu の日本語Remixのような競合が存在する中であえてVine にするかと言われると厳しいと思いました。セキュリティ修正パッケージの提供が遅いという悪評が定着しているようなのでLANの外でサーバー用途に使うのは流石に不安。

元祖国産ディストリビューションとして頑張って欲しいとは思うけど、Plamo Linuxの方がセキュリティ修正パッケージの提供は頑張っているように見える。
早いところ 7.x のリリースして巻き返して欲しいと思います。


3月のOSC Tokyoに6.5が間に合うと(マーケティング的に)何かと都合が良いと思うんですが、どうなんでしょう。

それではまた。

*1:ワークステーションだったかも」

*2:やってません

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 版が公開されています(まだテスト用扱い)。

inkscape.org

例によって例のごとく、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環境です。

まずはMacPortsのインストール先を環境変数にセット。

もし同一マシンで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.appdmgファイルが生成されているので動作確認する。

f:id:atuyosi:20170217153418p:plain

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 版です。

www.dropbox.com

起動スクリプトのバグ修正を含みます。

変更点など

過去記事のビルドとの変更点は、以下のとおり。 独自のパッチ

  • CMake ではなく従来どおりのautotoolsによるビルド方式
  • Extension の動作に必要なファイルが追加(されたはず)

上述したとおり、独自の修正を含んでいます。

  • 日本語ロケールで起動時に「内部エラーが発生しました」というダイアログが表示されて起動できない問題
  • 特定の環境でビルドしたバイナリをSierraで実行すると起動できない

あとは冒頭のリンク先と同じです。

スクリーンショット

f:id:atuyosi:20170217200448p:plain

こんな感じ。


おしまい。

*1:確かにRC相当のプレリリース版はその辺の日付だった。

VirtualBox のゲストとしてMavericks (OS X 10.9) をセットアップしたメモ

外付けストレージとのデュアルブート構成にしていたのですが、やはり不便なので仮装環境上にMavericksをインストールすることにしました。

Sierraではない理由はできるだけ古いOS X環境にしたいからです。

本来は手元のMacBook Air にインストール可能な最も古いバージョンであるMountain Lionにしたいところですが、リカバリ用のユーティリティからはインストールできても、 インストーラーそのものは手に入らないようなので。


基本的に以下のページと同じです。

qiita.com

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.dmgVirtualBoxの起動ディスク(CD-ROM扱い)に指定すればインストーラーを起動できる。

仮想マシンの作成

VirtualBox 側で仮想マシンを作成します。「新規」をクリックするとウィザードが起動するので、仮想マシンの名称の箇所でmacOSOSX)っぽい名前を入れると中央のプルダウンメニューがそれらしき候補に変化します。

f:id:atuyosi:20170216154310p:plain

Linux系の場合より多くのメモリが必要なようです(結局、2GBに設定)。

その他、細かい設定は以下を参考にしました。

VirtualBox -仮想環境”OS X 10.9 Mavericks”を作成- | External storage

サイトによってはチップセットの変更に言及されていますが、ICH9でも動作するようです。私はビデオメモリ64MB、CPU数 2としています。

ゲストOS(Maverics) のインストール

仮想マシンを起動すると起動ディスクを指定するためのダイアログが表示されるので、前述のOutput.dmgをセットして続行。

注意点は、OS Xインストーラーはフォーマット済みのディスクしかインストール先として認識しないという点。

初回は仮装ハードディスクを認識するものの、フォーマットされていない状態なので、ディスクユーティリティに切り替えて「消去タブ」からパーティションをつくる必要がある。

なお、OSXEULAには仮装環境でのインストールは2台までと記載されています。もちろんApple製のハードウェア上で仮想化ホストOSが実行されている前提。

f:id:atuyosi:20170216154033p:plain

Xcode

Mavericks 用なのでXcode 6.1.1をインストール。対応するバージョンのComandlineToolsもインストールする。

どちらも入手はApple Developer のサイトから(要ログイン)。

制限事項

VirtualBoxのマニュアルにmacOSOS 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について」というメニューからハードウェアの詳細を確認しようとするとログイン画面にフォールバックする

参考URL

広告