物理のバス停 by salt22g

とある物理学見習いの備忘録。

Mac 理系大学生のための開発環境整備

Macの開発環境整備

「研究を始めたいけどどうやってツールを入れればいいかわからん!」
「ググっても専門用語と余計な知識が多すぎる!」
そんな初心者Macユーザーの皆さんにこの記事の使えるところを切り取って使っていただければ嬉しいです。

全体は長い記事ですが興味のないところは流し読み or Skipでお願いします。
(随時内容を追加・編集する予定)

はじめに

新型コロナウィルスが猛威をふるい、大学生や社会人の方は自宅待機が推奨されています。
そんな中、テレワーク、遠隔講義などで自前のPCを使うが増えています。
使い始めたばかりのPCでセットアップもままならないまま研究、会社での仕事が始まっている方もいるではないでしょうか。
特に、理系の学部4年や大学院1年の方の中には
「よし!!先生や先輩から技を盗んで研究を始めるぞー!」
と考えていた矢先、大学が閉鎖されてしまったという人もいるかもしれません。
論文の英訳なら一人でも始められますが、研究に関して必要なツールや開発環境を自分一人で揃えるのは難しい。
普通研究室の先輩の環境をコピーして徐々に理解し、自分のアレンジを加えていくと言うのが一般的です。(私もそうでした)

そこで「意味は全然わからないけど、とりあえず研究に必要そうな物を揃えたい!」
と言う人々を応援するために私のMac Catalinaでの開発環境整備をまとめて公開したいと思います。

筆者は何者?

物理学を研究している大学院生(博士課程)です。今はとある研究所にいます。
専門分野は原子核物理実験です。いろいろなことに興味があります。(知識は浅く広く)
研究のデータ解析のためにプログラミングを少々。主な使用言語はPython
 

筆者とMac

Mac遍歴

  • 親がMacユーザーだったこともあり大学入学時に買ってもらったラップトップがMacbook Air(2015)でした。
  • 学部3年までは特に使いこなしていたわけではなく、見た目がかっこいいので気に入って使っていました。
  • 研究室に所属し研究を始めるにあたり、博士課程に進学していた先輩がMacを使いこなして解析しているのに憧れ、見様見真似(設定のコピーアンドペースト)で解析ツールを使い始めます。
  • RAMメモリが4GBしかなかったAirの性能に限界を感じ、大学院1年の時にMacbook Pro(2017)を購入し現在もメインで使っています。
  • 研究費でiMac(2019)を購入してもらえたのでセットアップするついでに皆さんと情報を共有しようと思いブログを始めました。

 

Macの良いところ

  • かっこいい!! 以上!
  • 開発環境が楽に準備できる。(今回のメインテーマ)
  • 使っている人がそこそこ多いのでネットにも情報が豊富。
  • UIが鮮麗されており、人間が直感的に操作できるためストレスなく仕事ができる。(慣れの問題かも…)
  • Apple機器との連携が優れている。
  • かっこいい。それだけで使う価値がある。

Macのイマイチなところ

  • Windowsでしか動かないデバイスがある。
  • 高い(本体が)
  • カスタマイズがほぼ不可能

 
しかし物理の解析で用いられるツールがほぼ動き、サーバーに用いられるLinuxとも共通点が多いことから素粒子原子核物理解析を行う大学生のみなさんにおすすめです。
中途半端なPC買うと買い替えが必要になって余計に金がかかるし…


↓ここからが本編です↓

基本セットアップ

今回開発環境を整備したMacのスペック
OS:                          macOS Catalina 10.15.4
機種名:         iMac(21.5-inch, 2019)
プロセッサ:       3.2 GHz 6Core Intel Core i7
メモリ:         16 GB 2667 MHz DDR4
グラフィックス:  Radeon Pro 555X 2 GB
 

キーボード、マウス

プログラムの編集だけでなくメールやレポート作成の際、文字を素早く入力したり連続で消したり、矢印キーで目的の箇所へ素早く移動したいですよね。

まず、キーボードとマウスのレスポンスをあげましょう。

f:id:salt22g:20200506220431p:plain
アップルマークをクリックしてシステム環境設定へ
こちらのシステム環境設定からキーボードを選択。

f:id:salt22g:20200506215415p:plain
赤矢印の方向にカーソルを動かします。

ちなみに、ターミナル上でコマンドを入力することでさらに速度を早くできます。

#今の値がわかる。
defaults read -g InitialKeyRepeat
defaults read -g KeyRepeat
#さらに速く
defaults write -g InitialKeyRepeat -int 10
defaults write -g KeyRepeat -int 1

GUIアプリ

とりあえずブラウザはGoogle Chrome
www.google.com


ブラウザはなんでもいい。自分が慣れている物を使いましょう。
僕はスマホSafari、仕事のPCではChromeと使い分けています。

(履歴がry…)


テキストエディタとしてVSCode
code.visualstudio.com


私はターミナル上でテキストやスクリプトを編集する際はemacsを使っていますが、
大掛かりなプロジェクトや人が書いたコードを解析するときにはVSCodeを使っています。
現在最も開発が盛んなテキストエディターで、新機能がどんどん追加されています
一部を除きほとんどの機能がWindows, Mac, Linuxで共通なのが嬉しいですね。
拡張機能が多すぎて追いつけていないので勉強中です。

インストールしたら⌘ + Shift + Pでコマンドパレットを開いて>codeと入力。

f:id:salt22g:20200506220903p:plain
vscode コマンドパレット
これでターミナルからもvscodeを起動できるようになります。

code {ファイル名}

ターミナル

ここからが研究用の開発環境整備です。
まずこの開発環境整備の軸を担うHomebrewというパッケージ管理機能をインストールします。
この機能だけでもMacを選ぶ価値があると考えています。

brew.sh

Homebrewとは登録されている開発研究用のパッケージをその機能を使うために必要な周辺環境も含めてインストールしてくれる非常に便利な機能です。
例えば「ROOTというパッケージを使ってデータ解析がしたい!」
と思った場合、通常であればROOTを使うために必要な様々な依存パッケージをインストールし、それらを自分でセットアップする必要があります。

Homebrewはそれらを自動で検知し、依存関係にあるパッケージを自動でインストールし、使える状態にしてくれます。
初心者でもネットからコマンドをコピーして貼り付けるだけで狙ったツールが使えるようになります。

ターミナルを開き以下のコマンドを入力します。

xcode-select --install

インストールをクリックし、xcodeとコマンドツールとやらを手に入れる(くそ時間がかかる) 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following new directories will be created:
/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
==> The Xcode Command Line Tools will be installed.
Press RETURN to continue or any other key to abort
Password:
#PCのパスワードを入力

すると自動的にコマンドラインツールのインストールが始まります。
インストールが終わったら以下のコマンドを

brew doctor
Your system is ready to brew.

 
ビールが飲みたくなりますね。

次にこちら

brew install cask

通常、homebrewはコマンドラインツール(ターミナル上で動くアプリケーション)を中心に扱いますがcaskをinstallすることでchromeやこの後紹介するiTremなどのGUIアプリケーションもインストールできるようになります。

brew search iterm2

このコマンドでインストール可能なパッケージがあるか教えてくれます。

brew cask install iterm2

インストールが終わったらデフォルトのターミナルとはおさらばです。

f:id:salt22g:20200506220109p:plain
Launchpad画面にもcaskで追加したアプリが表示されます。

Catalinaからデフォルトのshellがzshになりましたがbrewでインストールしたzshを使います。
(意味はないけれど)

brew install zsh

zshの導入

brew install zsh
sudo emacs /etc/shells

で中身を編集。

最後の行に/usr/local/bin/zshを加える

#デフォルトのshellをインストールしたzshにする。
chsh -s /usr/local/bin/zsh

homeに.zshrcを作り以下の内容をコピペ。 

emacs .zshrc

(.が先頭につくファイルは隠しファイル)

gist.github.com

この設定ファイルを読み込むとzshがめちゃくちゃ便利に使えます。
履歴の呼び出しやコマンドの補完、大文字小文字の自動認識など…
作者の方には頭が上がりません。

shellの見た目をよくする

tmuxの導入

brew install tmux

なんかかっこいいから入れてる。

itermを再起動
するとこんな文章が

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

なんか出てくるので調べてみると

qiita.com

どうやら権限の問題で警告が出ているらしい

compaudit
/usr/local/share/zsh/site-functions
/usr/local/share/zsh

どうやらこの二つのファイルが問題らしいので以下のコマンドを実行(権限を変更)

chmod 755 /usr/local/share/zsh/site-functions
chmod 755 /usr/local/share/zsh

tmuxの拡張機能
ここにあるファイルを展開して
home dirの .tmux/の下にコピー

mkdir .tmux
cd .tmux/

設定ファイル.tmux.confにこれをコピー

set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'tmux-plugins/tmux-online-status'
set -g @plugin 'tmux-plugins/tmux-cpu'

# tmuxを256色表示できるようにする
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

# prefixキーをC-tに変更
set -g prefix C-t

# C-bのキーバインドを解除
unbind C-b

# ステータスバーをトップに配置する
set-option -g status-position top
# window-status を中央揃えで配置する
set-window-option -g status-justify "centre"

# #P => ペイン番号
# status-left の最大の長さを指定する。
set-option -g status-left-length 30
# 最左に表示
set-option -g status-left '#H:[#P]'


# status-right の最大の長さを指定する。
set-option -g status-right-length 100
# Wi-Fi、バッテリー残量、現在時刻
#set-option -g status-right '#(battery) #(getwifi.sh) %m/%d %H:%M:%S#[default]'
set -g status-right "Batt: #{battery_icon} #{battery_percentage} #{battery_remain} | Online: #(getwifi.sh) | CPU: #{cpu_icon} #{cpu_percentage} | %m/%d %H:%M:%S#[default] "
# status line の文字色を指定する。
set-option -g status-fg "colour255"

# status line を更新する間隔を 1 秒にする
set-option -g status-interval 1

# status line の背景色を指定する。
set-option -g status-bg "colour238"

# status line の文字色を指定する。
set-option -g status-fg "colour255"

# window-status のフォーマットを指定する。
set-window-option -g window-status-format " #I: #W "

# カレントウィンドウの window-status のフォーマットを指定する
set-window-option -g window-status-current-format "#[fg=colour255,bg=colour27,bold] #I: #W #[default]"

# | でペインを縦分割する
bind | split-window -h

# - でペインを縦分割する
bind - split-window -v

# 番号基準値を変更
set-option -g base-index 1


# マウス操作を有効にする
set-option -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

set-option -g default-command "reattach-to-user-namespace -l zsh"

####
# コピーモードを設定する
#Setup 'C-@' to begin selection as in Emacs
bind-key -T copy-mode C-@ send -X begin-selection
bind-key -T copy-mode C-w send -X copy-pipe "reattach-to-user-namespace pbcopy"
bind-key -T copy-mode C-c send -X cancel

# Update default binding of `Enter` to also use copy-pipe
#unbind -T copy-mode Enter
#bind-key -T copy-mode Enter send -X copy-pipe "reattach-to-user-namespace pbcopy"
###
run '~/.tmux/plugins/tpm/tpm'
brew install reattach-to-user-namespace
tmux source-file ~/.tmux.conf

おまけに筆者のiTerm2の設定を写真で載せておきます。

f:id:salt22g:20200506221157p:plain
この画面から設定を変更できます。
f:id:salt22g:20200506221218p:plain
まずはターミナルと他のアプリとクリップボードを共有させます。
f:id:salt22g:20200506221306p:plain
スタート時にtmuxを起動するように設定。
f:id:salt22g:20200506221334p:plain
フォントと文字のデカさを変更
f:id:salt22g:20200506221611p:plain
透明度を上げて…

完成

Python

brew install python3

% python3
Python 3.7.3 (default, Mar 6 2020, 22:34:30)
[Clang 11.0.3 (clang-1103.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

これが出ればオーケイ
以降は

pip3 install {パッケージ名}
でパッケージをinstallできる。研究室や開発内容で必要なパッケージが異なるので確認をお願いします。
とりあえずpip3 自体をアップデート
>||
pip3 install --upgrade pip 
Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: 'RECORD'
Consider using the `--user` option or check the permissions.

 
なんか怒られたの。
末尾に--userをつけると良いらしい。

pip3 install --upgrade pip --user

今後使うパッケージもpip3でinstall。
pip"3"をつけ忘れるとpythonの2系用のパッケージをインストールしてしまうので注意しましょう。

 

ROOT, Geant4

素粒子原子核物理の解析パッケージとしてスタンダードとなっているROOT。
粒子のシミュレーションツールとして有名なGeant4。
調べるといろんなインストール方法が出てきます。
これらは使い方を覚えるのが大変なのでインストールの段階でつまずくとやる気がなくなります。
Homebrewを使って楽をしましょう。

brew install root6
brew install geant4

ホームディレクトリに作成済みの.zshrcのどこかに
以下の内容を記載する。

. /usr/local/Cellar/root/6.20.02_1/bin/thisroot.sh 
#数字はインストールされたversionに従って変更。
cd /usr/local/Cellar/geant4/10.5.1/bin 
#数字はインストールされたversionに従って変更。
source ./geant4.sh
cd - > /dev/null

versionによって数字が変わりますがbrewによってインストールされる場所は同じです。

ROOTが動くか確認。

% \root
   ------------------------------------------------------------------
  | Welcome to ROOT 6.20/02                        https://root.cern |
  | (c) 1995-2020, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for macosx64 on Mar 15 2020, 15:25:34                      |
  | From tags/v6-20-02@v6-20-02                                      |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q'       |
   ------------------------------------------------------------------

root [0]

Geant4についてはいつか解説したいです。(筆者が使いこなせるようになったら)

LaTeX編集環境

Overleafがあれば自分の環境にTeXコンパイル環境を作成しなくてもクラウド上で編集できるし便利である。
共同編集も楽々。
www.overleaf.com


 

その他

Xcode

Xcode

Xcode

  • Apple
  • 開発ツール
  • 無料
apps.apple.com
めっちゃくちゃ重たいけどとりあえず入れている。
ないと怒られる時があるので。

office365
https://apps.apple.com/jp/app-bundle/microsoft-365/id1450038993?l=en&mt=12&at=10l8JW&ct=hatenablogapps.apple.com
Macのpagesyakeynoteでも仕事はできるけれど
仕事での資料作成等で必ずmicrosoftのofficeを使うことが要求されつので諦めて買う。
職場や学校が法人契約してくれているとありがたいですね。

 
Clipy クリップボードの履歴を増やす
clipy-app.com
qiita.com



Auto desk Fusion360
www.autodesk.co.jp
3D cadアプリケーション
教育目的のライセンスなら無料でのライセンスなら無料で使える。操作に慣れればかなり便利。
2次元図面を作るのはちょっと難しい。

XQuartz
ssh先の画像やグラフを表示したりする奴。
問題が発生したのでこちらを参照願います。
salt22g.hatenablog.jp