Madogiwa Blog

主に技術系の学習メモに使っていきます。

M1 MacBook Pro を買ってある程度Dockerまわりとかセットアップしたのでメモ

M1 MacBook Pro 14インチ買ったのでセットアップしたこととかメモ

www.apple.com

開発用のツールまわり

ターミナル

デフォルトのzshでテーマはpreztoを使って、powerlevel10kにした。

github.com

github.com

prezto使ったことなかったけど、結構すっと設定できて良かった。

qiita.com

Editor

Visual Studio Code

azure.microsoft.com

brew caskでinstall

brew install --cask visual-studio-code

テーマはOne Dark Proにした

marketplace.visualstudio.com

Git

mac標準ではなくbrewで入れ直す

brew install git

以下を実行して設定

git config --global user.name my_name
git config --global user.email my_email
git config --global core.editor "code --wait"

以下を参考に自動補完の設定も入れた

zsh で git コマンドの補完を有効にする · GitHub

Ruby

rbenvを入れて複数バージョンで運用できるようにする

github.com

brew install rbenv
rbenv init
rbenv install 3.1.0
rbenv global 3.1.0

eval "$(rbenv init - zsh)".zshrcにも追記

以下のgemはglobalに入れといた

gem install solargraph
gem install dip

Node.js

nodebrewを入れて複数バージョンで運用できるようにする

github.com

brew install nodebrew
mkdir -p ~/.nodebrew/src
nodebrew install stable
nodebrew use stable

yarnもglobalに入れておく

sudo npm install --global yarn 

Docker

brew caskでインストール

brew install --cask docker

アーキテクチャを考慮してinstallしてくれるっぽいのでcaskでinstallしても大丈夫そうだった。

github.com

個人のRails製のWebサービスで試してみたけど、対応が必要だったのは以下ぐらいで思ったよりは全然動く。

ActiveSupport::EventedFileUpdateCheckerを使わないようにした

github.com

Chromeが動かないのでFirefoxでSystem Specを実行するようにした

RUN sudo apt -y install firefox firefox-locale-ja firefox-geckodriver
Capybara.register_driver :haedless_firefox do |app|
  browser_options = ::Selenium::WebDriver::Firefox::Options.new
  browser_options.add_argument('--headless')
  Capybara::Selenium::Driver.new(
    app,
    browser: :firefox,
    options: browser_options
  )
end

RSpec.configure do |config|
  config.before(:each, type: :system) do |example|
    example.metadata[:js] ? driven_by(:headless_chrome) : driven_by(:rack_test)
    js_driver = ENV['CI'] ? :headless_chrome : :haedless_firefox
    example.metadata[:js] ? driven_by(js_driver) : driven_by(:rack_test)
  end
end

github.com

blog.savanna.io

でも思ったよりパフォーマンスは良くない。。。この辺は開発環境でarm対応してないImageを使っているからかも。

tech.repro.io

今まで開発環境でもcimg/rubyを使ってたけど、これがarmアーキテクチャに対応してなかったため、エミュレーションが発生してたっぽい。

hub.docker.com

なのでarmに対応しているrubyイメージを使うようにした。

しかし上述の通りarmイメージではchromeが動かないため妥協してchromiumを使うようにした。

割と快適になった。

おわりに

M1 Mac、Dockerまわりとかだいぶハマるのかなと思ってましたが、意外とそこまではまらずに今のところは動いてる。