20200405のMacに関する記事は8件です。

MacにてRailsの環境構築を試みる

はじめに

Ruby on Railsの環境構築について、最低限必要なソフトウェアとインストールのコマンドについてまとめてみました。
Rails環境構築の全体像が掴むための記事となっています。

環境構築に必要なソフトウェア用語について

railsの環境構築に必要なソフトウェアは下記に示すものになります。

・Xcode
・homebrew
・rbenv
・ruby
・gem
・rails
・bundler

それぞれの関係性は下図のようになっています。

スクリーンショット 2020-04-05 18.56.47.png

Xcode

Apple社が開発・リリースしている、アプリケーション開発に特化したソフトウェアです。

homebrew

MacOS X上でソフトウェアのインストールを単純化するためのパッケージ管理システムのことです。
わかりやすく言うと、ソフトウェアをインストールする際に、パッケージやライブラリの依存関係をうまいこと調整してインストールしてくれるシステムのことです。
ソフトウェアをインストールする前にこいつをインストールしておきましょう。

homebrewとは

rbenv

rubyのバージョンを切り替えるツール。
環境ごとやディレクトリごとにバージョンを切り替えることもできる。

ruby

プログラミング言語のひとつ。オブジェクト指向型のスクリプト言語。
ちなみにスクリプト言語とは、javaやC言語のようにコンパイルすることが不要で、簡単に実行できる特徴を持った言語のことをいいます。比較的簡単に実装できるため、比較的取り組みやすいプログラミング言語になります。

gem

gemはある機能がパッケージされたものになります。
パッケージとは、プログラムの部品であり、便利な機能をひとまとめにしたものになります。
例えばユーザーログインシステムを作成するための機能がまとまったgemがあり、インストールすることで簡単にログイン機能を実装することができるようになります。

rails

rubyのフレームワークです。Webシステムなどを開発するための機能がまとまっているgemです。
rubyでは主にこのフレームワークを用いて開発が進められています。

bundler

gemを管理するためのツールです。
gemをインストールする際に必要になります。

各ソフトウェアのインストール

Command Line Tools for Xcodeのインストール

まずはターミナルを開き、下記コマンドによりXCodeをインストールします。

$ xcode-select --install

homebrewのインストール

homebrewの公式サイトからインストールを行いましょう。
https://brew.sh/index_ja.html

下図のようなホーム画面に入るかと思います。
image.png

このページに書かれているインストールのコマンドをターミナルに打ち込んでインストールを行いましょう。

rbenvのインストール

次にrubyのバージョンを管理するrbenvをインストールしましょう。
ちなみに「rbenv」の読み方はだいたい「アールビーエンブ」と呼ばれているようです。
確かではありませんが、
"rb"→ruby
"env"→environment(環境)
の2つをつなげてrbenvとなっていると思われます。
rubyの環境を整えると言う意味合いで使われているのであろうと推測できます。

インストールのコマンドは以下になります。
rbenvとともに、ruby-buildというrbenvのプラグインも同時にインストールしておきましょう。

$ brew install rbenv ruby-build

正常にインストールされたかどうかは

rbenv -v

を打ち込み、バージョンが確認できればOKです。

PATHを通す

ここでPATHの設定をしておきます。
PATHを通すとは、あるファイルの実行を、ファイル名を打ち込むだけで実行できるようにする設定です。

ファイルをターミナルから開く際には、そのファイルが置かれている場所のフルパスを打ち込むことが必要です。

しかし毎回毎回フルパスを書くのは効率が悪いですね。

そこでPATHの設定をしておくことでファイル名だけで実行ができるようになると言う仕組みです。

このことを「PATHを通す」といいます。
※参考記事
https://qiita.com/sta/items/63e1048025d1830d12fd

・rbenvのPATHを通すコマンド

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

・ターミナルを起動したときに自動的にrbenvを使用できるようにする設定

$ echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile

※参考記事
https://qiita.com/soarflat/items/d5015bec37f8a8254380

最後にsourceコマンドを打ち、ファイルを再読み込みしておきましょう。

source ~/.bash_profile

rubyのインストール

rbenvがインストールできたら早速rubyをインストールします。

先ほどインストールしたrbenvのコマンドを使い、バージョン管理しながらインストールを行っていきます。

rubyをインストールする前に、現在インストールできるrubyのバージョンを確認しておきます。

$ rbenv install -l

下図のようにインストール可能なバージョンが一覧で表示されます。(一部抜粋)

image.png
それではインストールしたいRubyのバージョンを指定して実行します。今回はバージョン2.6.5をインストールすることにします。

$ rbenv install 2.6.5

こちらもインストールできたかの確認をしておきましょう。

ruby -v

image.png
画像のように表示されればOKです。

gemのインストール

下記の2つのgemをインストールしていきます。
・bundler
・rails

$ gem install bundler

今回はrailsの5.2.0のバージョンをインストールすることにします。

$ gem install rails --version="~>5.2.0"

こちらも

$ rails -v

によりインストール完了の確認をしておきましょう

最後にデータベースのインストール

最後にデータベースのインストールをして環境構築は終了です!
今回はよく使われるmysqlというデータベースをインストールしておきます。
バージョンは5.7をインストールします。

$ brew install mysql@5.7

こちらもPATHを通す作業を行っておきます。

echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile

その後下記コマンドにより、設定の再読み込みをします。

source ~/.bash_profile

ここまでできたらmysqlを起動するコマンドを打ち込み、起動させましょう。

$ brew services start mysql@5.7

下記のように表示されれば正しく起動しています。

Starting MySQL
SUCCESS!

環境構築終了!

簡素的ですが、これで一通りrailsを使っていく環境が整いました。

環境構築はコマンドを実行していくだけの簡単な作業に思えるかも知れませんが、様々なソフトウェアをインストールする際にエラーが発生しやすく初心者殺しと言われる1つの大きな壁です。

今回は最低限必要なソフロウェアをインストールするコマンドについて記しましたが、
おそらくインストールを行っている途中でエラーが発生してうまく行かないところが出てくるかも知れません。

その時はエラーの内容を調べてどうにか頑張ってみてください。

以上、簡単ですが環境構築の手助けになればと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

IBM i (旧AS400)の自己学習メモ0�5 IBM i Access Client SolutionsをMacにインストール

Mocha TN5250 Liteだとコードページの1399が選択肢に出てこず、日本語データを扱うような環境としては不十分だと感じたので、ACS(IBM i Access Client Solutions)の環境を用意したいと思います。

Javaのインストール

ACSを利用するために、Java SE 8u241をインストールします。
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

Terminalからjava -versionを実行して以下のようになっていれば準備OK

$ java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

ACSのインストール

ACSのダウンロードページから、ACSをダウンロードします。
https://www.ibm.com/services/forms/preLogin.do?source=swg-ia
スクリーンショット 2020-03-22 16.49.30.png

ダウンロードしたzipを解凍し、IBMiAccess_v1r1 -> Mac_Application -> install_acs を実行する。

スクリーンショット 2020-03-22 16.51.28.png

開発元が不明のためこのままではインストールできないよ。という警告がMacではよく出るが、
そんな時はシステム環境設定 -> セキュリティとプライバシーから、「このまま開く」を押下する。

スクリーンショット 2020-03-22 16.53.24.png

なんか色々インストールしますか? Yes or Noと聞かれるが、とりあえず全部Yesでインストール。

ACSの設定→フリーのIBM i開発環境へ接続

ACSを起動する。

スクリーンショット 2020-03-22 16.57.34.png

一番下までスクロールして「はい」を押下。

スクリーンショット 2020-03-22 16.58.11.png

ACSが起動する。
左ペインから[管理]->[5250セッション管理機能]を選択。

スクリーンショット 2020-03-22 17.00.44.png

新規ディスプレイ・セッションボタンを押下。

スクリーンショット 2020-03-22 17.01.39.png

以下の画面イメージを参考に設定する。
今回は1399を利用したかったため、コードページを1399に設定。
設定が完了したらOKボタンを押下。

スクリーンショット 2020-03-22 17.06.51.png
ログイン画面が表示されるのでIDとパスワードを入力してOKボタンを押下。

スクリーンショット 2020-03-22 17.11.26.png
PUB400.comで作成したフリーのIBM i環境へ接続できた。
スクリーンショット 2020-03-22 17.12.52.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

シンボリックリンクとハードリンクの違いって?

シンボリックリンクとハードリンクの違いや使い分けについてご存知でしょうか?
自分はよく知らなかったので、関連する記事をいろいろ探してみました。

図として直感的にわかりやすかったのはこちらの記事。
それぞれの特徴についてもわかりやすく書かれています。
https://eng-entrance.com/linux-permission-link

シンボリックリンク

シンボリックリンクはショートカットというイメージがわかりやすいのではないでしょうか?
original_fnameというファイルを参照するシンボリックリンクsymkink_fnameを作成することを考えてみましょう。

./original_fname
./symlink_fname

ここで

cat ./symlink_fname

を実行すると

cat ./original_fname

と同等の操作を意味するはずです。
つまり、

rm ./symlink_fname

rm ./original_fname

と同等になってしまい、元のファイルoriginal_fnameを削除することになってしまいます。

これに関して、シンボリックリンク削除時の注意点が例えばこの記事に書かれています。
https://mimirswell.ggnet.co.jp/blog-165
要はrmコマンドでもリンクを削除できるけど、危ないからunlinkを使おうね、という話です。

ハードリンク

これに対し、ハードリンクはどうでしょうか。

./original_fname
./hardlink_fname

それぞれのパスは同じ実体ファイルを指し示すことになります。
この状態で

open ./hardkink_fname

を実行すると、

open <実体ファイル>

の意味になります。
面白いのは、実体ファイルへの参照カウンタのようなものがあり、

rm ./hardkink_fname

を実行すると、./hardkink_fnameというパスは削除されてしまいますが、実体ファイルは削除されません。

なぜなら、今考えている状況だと元々
./original_fname
./hardlink_fname
の2つの「参照」が存在していたため、「参照」を1つ削除してもまだ1つ残っているからです。

そして、「参照」の数が0になると、実体も削除されるらしいです。

inodeと実体ファイル

今までイメージを掴むために「実体」や「参照」という言葉を使ってきましたが、きちんと説明するにはinodeに触れる必要があります。

わかりやすいのはこちらの記事でしょうか。
https://qiita.com/katsuo5/items/fc57eaa9330d318ee342

ハードリンクの使い道

一般的に使われるのはシンボリックリンクの方らしいですね。
では逆に、ハードリンクはいつ使われるのでしょうか?

こちらの質問に対する回答を読むと、なるほど!と思えます。
https://q.hatena.ne.jp/1265361495

IMAPサーバで、送信先が複数人のメールを参照するのに使われているとのこと。
コピーせずに済む&適切に削除が行われる、ということですね。

...勉強になりました!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Applescript】MacからeGPUと外付けHDDを一気に取り外す

やりたいこと

家でeGPUや外付けHDDを繋いで使っているMacを持ち出す際、そのままケーブルを引っこ抜くと警告が出るので、ちゃんと取り外しの操作をしてからケーブルを抜きたい。

方法

on run
    tell the application "Finder" to eject (every disk whose ejectable is true)
    do shell script "/usr/bin/SafeEjectGPU Eject"
end run

2行目でHDD類の取り外し、3行目でeGPUの取り外しを行っています。
あとはそのまま.app化(ファイル-書き出す でファイルフォーマットにアプリケーションを選択)するなり、Automatorでサービス化してショートカットキーを割り当てるなり、ご自由に。

参考

簡単にMacから全てのディスクを取り外す
Proper way to disconnect eGPU through scripting |Apple Developer Forums

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOS Catalinaで死んだLilypondをDocker上で動かす

背景

macOS Catalinaにおいて、32-bit アプリケーションが切り捨てられたことを受けてLilyPondが死にました。
ということでDockerを使って動かそうという話です。
使用したDockerfile等はseekworser/lilypond-dockerfileに登録してあります。

Implementation

基本的にはDocker image上でLilyPondを動かすだけですが、なるべく意識せずに動かせるように、

  • Docker image上に/lilypondディレクトリを作成
  • Host側のカレントワーキングディレクトリを/lilypondにマウントし、container起動時に/lilypond内でlilypondコマンドを実行

ということをしています。実際に使用したDockerfileは次の通りです。

Dockerfile
from ubuntu:bionic
copy entrypoint /entrypoint

run sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list \
    && apt update \
    && apt -y install lilypond \
    && chmod +x /entrypoint

entrypoint ["/entrypoint"]
entrypoint
#! /bin/bash
cd /lilypond
lilypond "$@"

また、起動時にいちいちdockerコマンドを打つのは面倒なのでHost側のlilypondを書き換えておきます。(Host側にインストールしていたlilypondはアンインストールしておきます。)

lilypond
#! /bin/bash
docker run --rm -v $(pwd):/lilypond seekworser/lilypond "$@"

上記のファイルを作成して/usr/local/binに置き、chmod +xすれば完成です。
Screen Shot 2020-04-05 at 15.19.12.png

macOS Catalina上でlilypondが動きました!

やってみて

○ 元々、別でインストールしていたLaTeXのghostscriptとLilyPondのghostscriptが2つあって、参照がぐちゃぐちゃになっていた(一回それでハマった)ので、Docker上で環境を分離できたのはよかった。
○ 想定していたほど起動が遅いわけではない。

× Docker image上にLaTeXを別でインストールする関係で、Docker imageのサイズが1.3 GBくらいある。(確か元々はlocalのLaTeXが使えてた...はず)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

vim swapファイル 削除

Macでpathを通したいが、
誤ってswapファイルが作成されたのでbash_profileに書き込むことができない。

目的

Macでpathを通したい

bash_profileがあるかを確認する

ls -la

bash_profileを作成

source ~/.bash_profile

作成後、pathを設定したくていじっていたらよくわからないうちにbash_profile.swapが作成される
 ・途中でファイルを閉じた場合や、並行してアクセスすると作成されるらしい

swapファイルを削除する

rm ~/.bash_profile.swp 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macのdiffツール「meld」インストールメモ

(必要であれば)Homebrewをアップデート

brew update

次にHomebrew-Caskをインストール

brew tap caskroom/cask

もしインストール時、権限エラーになった際は下記コマンドを実行する

sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local

meldインストール

brew install caskroom/cask/meld

medl を起動する

ターミナルで下記コマンドを実行

meld

meldのウィンドウが立ち上がります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Finderの再起動(強制終了)

ターミナルで以下のコマンドを実行
killall Finder

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む