macbook pro (M1 pro chip)が活動開始
このところのHackintoshプロジェクトにより、いろいろ止まっていたものが動き出した感じがある。ASUSノートPCが蘇生され、VAIO-ubuntuがひさびさに起動され、そしてついに埃をかぶっていたM1チップ搭載のmacbook proに光が灯ったのである! (このブログもM1 macbook proで執筆している。)
かねてからの懸念事項だった(i)強化されたSIP(ii)CPUアーキテクチャ変更による大きな混乱(今回はrosettaというのを利用するらしい)の2つについてはまだ完全に乗り越えたわけではないが、少しずつ慣れていくはずである。いつまでもmojaveというわけにはいかないのだ。
とはいえ、M1 macbook proを購入したのは、もう2年ほど前のことである。このマシンですら「古い」のだから、世の中の動きは本当に早いと実感する。
さて、購入してから初めてまともに動かしてみたのだが、デフォルトで入っていたmacOSは(先日外部ディスクにインストールして動きが鈍くてストレスが溜まった)montereyであった。
カーネルの情報を確認してみた。
$uname -prsv Darwin 21.4.0 Darwin Kernel Version 21.4.0: Mon Feb 21 20:35:58 PST 2022; root:xnu-8020.101.4~2/RELEASE_ARM64_T6000 arm
XNUというのはDarwinの一部だという。 wikipediaによれば、DarwinはmacOSのコア部分であり、XNUはそのカーネルだという(unameの出力には"Darwin Kernel Version"と書いてあるけど...)。 カーネルの対応がARM64になっているのが、Apple M1チップ搭載マシンであることを示唆している。Intel Core系のmacbook proの場合はx86_64 i386と出る。
CPUのパフォーマンスのベンチマーク
まずはCPUの性能をベンチマークしてみよう。利用するのは最近知ったbcである。montereyのメインシェルはzshである(これはcatalinaからそうなので、それほどショックではない)。とはいえ、パフォーマンスを比較するのはmojaveなので、bashに切り替えてから実行することにする。
実行するのは
% bash % time echo "scale=5000; a(1.0)*4.0" | bc -ql
である。円周率を5000桁まで計算させるベンチマークである。まずは、M1 mackbook pro (M1-mbp)から。
3.141592653589793238462643383279502884197169399375105820974944592307\ 81640628620899862803482534211706798214808651328230664709384460955058\ 22317253594081284811174502841027019385211055596446229489549303819644\ 28810975665933446128475648233786783165271201909145648566923460348610\ 45432664821339360726024914127372458700660631558817488152092096282925\ 40917153643678925903600113305305488204665213841469519415116094330572\ 70365759591953092186117381932611793105118548074462379962749567351885\ 75272489122793818301194912983367336244065664308602139494639522473719\ 07021798609437027705392171762931767523846748184676694051320005681271\ 45263560827785771342757789609173637178721468440901224953430146549585\ 37105079227968925892354201995611212902196086403441815981362977477130\ ...途中省略... 74351362222477158915049530984448933309634087807693259939780541934144\ 73774418426312986080998886874132604720 real 0m9.082s user 0m8.985s sys 0m0.084s
10秒を切った。
同じコマンドをMojave, そしてCatalinaでやってみた。
macOS Mojave (ver.10.14.6) (3.3GHz, Intel core i7): real 0m19.391s user 0m19.214s sys 0m0.044s macOS Catalina (ver.10.15.7) (1.4GHz, Intel core i5): real 0m14.638s user 0m14.590s sys 0m0.032s 参考:VAIO Linux Ubuntu (20.04.2 LTS, Focal Fossa) (1.6GHz, Intel core i5): real 0m14.968s user 0m14.965s sys 0m0.000s
さすがに「新しい」マシンほど順に速くなっているが、Catalina搭載のmacbookやVAIOのCPUが「やや非力」である点は注意が要るだろう。とはいえ、10年かけて倍速になったという程度であり、これは想像の範囲内である。驚きはない。
ちなみに、M1 chipの仕様には「周波数」は表示されないようである。
M1のアークテクチャはARMを基本にしているとのことであるが、 そういえば、iPhoneやRaspberry piなどもARM系列である。 Intel一強だったのが、数年前から次第にARMやnvidiaなどに移ってきたのであろうか? また、AMDの最近の動向はどうなのであろうか? まだまだ「浦島状態」は続く。
最初のインストールアプリ群
最初にインストールしたのはfirefoxである(ver.102.0.1)。これはdmgでダウンロードしてそのままコピーしただけ。何の問題もない。
次にインストールしたのはhomebrewである。firefoxでhomebrewのHPに行き、指示通りにスクリプトを走らせる。それほど時間はかからない。PATHを/opt/homebrew/binに通すために、2つほどコマンドを(やはり指示通りに)打つ。これでbrewが使えるようになった。
プログラミング言語を確認する。
$gcc --verion Apple clang version 13.1.6 (clang-1316.0.21.2.5) Target: arm64-apple-darwin21.4.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Cだけでなく、C++やObjective-Cも一緒に処理してくれるclangというコンパイラになっているそうである。
$ python3 --version Python 3.8.9
pythonはすぐに使えそうである。
$ javac The operation couldn’t be completed. Unable to locate a Java Runtime. Please visit http://www.java.com for information on installing Java. $ which javac /usr/bin/javac $ which java /usr/bin/java
javaもjavacもインストールされているが使えない状態にあるようだ。
homebrewで調べてみる。
$ brew search java ==> Formulae google-java-format java11 jslint4java java ✔ javacc libreadline-java java-service-wrapper javarepl pdftk-java ==> Casks ava eclipse-java eclipse-javascript oracle-jdk-javadoc If you meant "java" specifically: It was migrated from homebrew/cask to homebrew/core.
このメッセージをみると「すでにインストールされている?」という感じが何となくする。 とはいえ、javaは最近利用してないので、後回しにしよう。
もっと重要なのはgfortranである。こちらはまちがいなくインストールされてないので、確認不要でまずはインストールである。
brew install gfortran
gccの拡張パッケージのような扱いになっているので、これはgccのバージョンと同じになる。
$ gfortran --version GNU Fortran (Homebrew GCC 13.2.0) 13.2.0 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
次はTeX環境である。どうもMacTeXというパッケージをいれたらよかったらしいが、思いつきでやってしまったのでtexliveから入れてしまった。いずれにせよフォントの準備など結構時間がかかるが、問題なく終了して安堵である。
mactexとtexliveは設定が競合する場合もあるようなので注意が必要らしい。私は次のような順番でやったところまではうまく行った。
$brew install texlive $brew install mactex $sudo tlmgr update --self --all
しかし、指示にあった次のコマンドでエラーが出た。
$tlmgr paper a4 tlmgr: action not allowed in system mode: paper
texliveではこの設定はすでにやってあるらしく、あまりいじらない方がいいみたいである。試しにいろいろなオプションで文書作成してみたが、違いはあまりないようである。デフォルトで紙の大きさをA4に固定するのは、これ以上追求しないことにした。
3つ目はgimpである。ブログで画像を表示するとき、個人情報などにblurをかけるときがあるので、gimpは最初に入れたいツールの一つである。 これも簡単に終了。ちなみにhomebrewでインストールすると直接起動できる。つまり、
$ open -a gimp $ gimp
どちらでも可能だが、なんとなく(これまで通りの)前者の方法の方が起動が早かった気がする。
4つ目はgnuplotである。このブログでも頻繁に利用しているから必須アプリである。これも問題なし。
日本語のコード変換をやってくれるnkfも(ある意味)必須であるからインストールしてしまう。
brew install gnuplot brew install nkf
ここからが問題であった。エディタである。emacsをずっと使ってきたが、コロナウイルスが蔓延り始めたころから、atomも併用するようになった。2つともインストールしたいが、つまづいた。
emacsのインストール
emacsのインストールでは多少の問題があったが、すぐに解決できたので、終わりよければ全てよし、の状態である。
まず間違えたのが、
brew install emacs
である。terminalで起動し、利用するだけなら、これでもいいのだが、GUIベース(Cocoa?というのだろうか?)のバージョンを利用することもときどきある。
本来、そちらは、
brew install emacs --cask
でインストールできるのだが、先にcaskなしでインストールしてしまうと、次にcaskをやろうとしても「すでにemacsはインストールされており、これ以上なにもできません」みたいなエラーメッセージが出てしまい、先へ行かなくなってしまうのである。
この状態に陥ったら、いったんuninstallした後に、cask付きでインストールをやり直すのが良い。
brew uninstall emacs brew install emacs --cask
これでGUI版が起動されることになる。
GNU emacsのHPにM-x tetrisでテトリスが動く、という説明があったので、さっそくやってみた。
「こういうのはGUIじゃなくちゃ不可能だよね」と書きたかったのだが、CLIでもテトリスが起動してしまって驚いた次第である。
atomエディタのインストール
emacsは大学院の頃から使っている「古道具」であるが、atomは数年前に使い出した新しい道具である。emacsと同じキーバインドにして利用している。特に便利なのは、md(markdown)文書を自動表示してくれる点である。htmlやpdfへの変換もやってくれて便利だなと感じ始めたのが、つい最近のことである。
ところがである。atomは昨年の頭に開発が中止となったというニュースを知ったのである。
上のHPのアナウンスによると、2022の夏頃にatomの開発陣は、更なる発展の見込みがないと判断し、atomの開発を中止するという決断をしたという。その背景には、Microsoft Visual Studioの登場(その基本技術はatomからの移譲によるものらしいが)によってAtomの利用者が減少したこともあるようだ。さらに、同年の年末にatom editorのgithubページに不正アクセスもあった(分析の結果、悪意のある機能は紛れてないそうだが)。
もともとatomを開発したのは団体としてのgithubだったこともあり、不正アクセスの分析はgithubのサイトとatomのコード両者に対して実行された。その結果「githubのサイトとそのシステムには異常がない」という結論が出た。その上で「atomのコードも大丈夫だ」というコメントが出た。これはこれで大変信頼できるコメントではあるが、atomの開発陣とgithubの中心メンバーたちは「atom開発へのエネルギー注入をやめて、その分をgithubの開発とメンテナンスに力を集約すべき」という結論に傾いたようである。
ただし、不正アクセスの可能性があったバージョンよりも古いバージョンのatomのバイナリとコードは、アーカイブされて公開され続けるそうであるから、利用しようと思えば継続することが可能である。
git cloneしてからコンパイルしてみたが、エラーメッセージが出て動かなかった。brew install atomもインストール自体はうまくいくのだが、起動を試みると同じエラーメッセージが出て、やはり動かなかった。
The application /Applications cannot be opened for an unexpected reason, error=Error Domain=NSOSStatusErrorDomain Code=-10827 "kLSNoExecutableErr: The executable is missing" UserInfo={_LSLine=3845, _LSFunction=_LSOpenStuffCallLocal}
そこで、古いバージョンのバイナリファイルをダウンロードし、解凍して、直接起動させてみることにした。
すると、rosettaをインストールしてください、というメッセージが出た。
Rosettaをインストールした後に、atomのバイナリファイルをクリックすると、どうやら起動できた。しばらくはatomで文書作成やコード作成ができそうである。まあ、一安心である。
調査を続けると、次のような情報が出てきた。
この文書にatomが開発中止となった理由が書いてあった。「ライバル会社」にgithub自体が買収されてしまい、atomはコードと人材を根こそぎ持っていかれてしまったということである。そして、この「ライバル会社」こそがマイクロソフトだったということで、MS visual studio code(VSCode)にatomの技術がまるまる盗まれてしまったのであった。多くのユーザーは、いいものができるならいいじゃないか、ということで、あっさりとVSCodeに乗り換えてしまったらしい。
多くの開発者たちがatomを見限った影響は大きく、特にプラグインの多くがatom向けの開発をやめてしまったのはダメージである。(個人的には、markdown-preview-enhancedが使えなくなったのが非常に残念)
しかし、atomの良い点は、誰もが開発に参加でき、内容がオープンであり、誰もが機能追加を自由にやってよいという点であった。emacsのキーバインドなんかも、その流れで開発されたものであるし、これこそがgithubの精神のど真ん中であったと思う。ハッカーの一部は、この文化を維持するために、pulsar editorと名前を変えて、開発を継続しているとのことである。 ということで、試しにインストールしてみた(といってもバイナリのダウンロードのみ)。
起動した直後の状態をスクリーンショットしてみたが、ロゴマークが変わっただけで、ほとんどatomと同じ。
基本的な機能は維持されているし、emacs-keybindingも簡単にプラグインできた。しかし、残念ながらまともに動くmarkdown-previewのプラグインは見つからなかった。特にMathJax系列の数式の表示に関しては、我々理系人間には必須の機能であるが、これがまともに表示できないのではmarkdown editorとしては候補から外さねばなるまい。
仕方ないので、以前から使っているMojaveのatom editorのプラグイン環境をM1-macbookにコピーし、atomの最後のバージョンに読み込ませて使うことにした。残念ながら、最後のバージョンで直接プラグインをダウンロードし組み込むのは困難な状況になっている。多くの貢献者たちがatom向けのメンテナンスをやめてしまったため、エラーが出て先にいけないのだ。「もはや、atomは死んだ」とか、「ゴーストタウンのようだ」というメッセージが、多くの開発者のブログに書かれていて衝撃を受けた。たぶん、atomが死ぬのは時間の問題だと思われる。せっかく、emacsの後継エディタの有力候補だったのに、あっというまにいなくなってしまいそうである。ということで、今はemacsに戻るのが正解であると考えている。