20191203のMacに関する記事は16件です。

Windowsの日本語キーボードを、ちょっとだけチューニング(英数・かなキーとEmacsキーバインド)したMacと同じ使用感にする

サマリー

Google日本語入力, Change Key, AutoHotKey を使って Windows のキーボードの設定を自分好みにしました。

何をしたいか

ここ数年はWindowsに触れない生活をしていたのですが、ちょっとした事情で新しいWindows(ゲーム機)が手元に届きました。それまでは自宅でも会社でもMacを使っていたため、Windowsのキーボードが使いづらくて仕方ありません。そこで、Windowsのキーボード設定をいじって、使い慣れているMacのキーボードの感じに可能な限り近づけます。

そもそもMacはどうなっているのか

使っているMacはUSキーボードです。Mac側のキーボードで重要なチューニングは主に以下の3点です。

  • 右Commandで日本語入力 / 左Commandで英数入力 になるようにする
  • CapsLockをControlにする
  • Controlキーを使ったEmacsの基本的なキーバインドが使える

これらは全て Karabiner (Karabinar-Elements) を使って実現しています。
Mac側の設定は本記事の主題ではないのでKarabinerの説明などは省きますが、 Karabiner-Elements の Simple modifications, Complex modifications に少し設定を加えるだけでこの状態にできます。
スクリーンショット 2019-12-03 22.34.47.png
スクリーンショット 2019-12-03 22.35.05.png

ご覧の通り、そこまでこだわったキーボード設定ではないです。もうゴリゴリに設定している人には物足りないと思いますが、Karabinerの存在すら知らなかった人には一度試してみてほしいシンプル構成です。

Windowsをいじる

IMEのオンオフ

まずはMacの「右Commandで日本語入力、左Commandで英数入力になる」という挙動を再現します。MacのUSキーボードのコマンドキーはスペースキーの左右にひとつずつありますが、僕の使っているWindowsのキーボードでは、この親指で極めてアクセスしやすい一等地に変換/無変換という何に使うのかわからないキーが我が物顔で陣取っています1

これの左側である無変換キーでIMEをオフに、また右側である変換キーでひらがな入力に切り替わってほしいので、これはGoogle日本語入力側で設定します。詳細は Google日本語入力でIME ON/OFFを変換・無変換キーに割り当てる【ver 2.0】 をご覧いただければと思いますが、ポイントは「入力文字なし」の "Henkan" を 「ひらがなに入力切替」、 "Muhenkan" を 「IMEを無効化」に設定することです。

image__6_.png

CapsLockとEmacsキーバインド

続いて、Emacsキーバインドの実現を意識しながらCapsLockの設定を変更します。左手小指のホームポジションのすぐ左という極めてアクセスしやすい一等地にありながら、いつ使うかよくわからないIMEオン状態での英数/かな切替やCapsLock機能を提供するためだけに我が物顔で陣取っているこのキーをEmacsキーバインドに有効活用できるように生まれ変わらせます2。具体的には、 CapsLock + P/N/B/F/A/E/K/H/M あたりのEmacsキーバインドが正常に動作するようにします。

基本的な考え方は AutoHotKey を使ってキーバインドを定義していくことですが、最も単純な考え方として CapsLock を直接 Control にバインドすると、 CapsLock が押しっぱなしになる現象が発生し所望の挙動になりません。その対策は AutoHotkeyでCapsLockが押しっぱなしになる現象を解消する方法 に詳しいですが、 Change Key を用いて CapsLock をF13という(物理キーボードには存在しないが、内部的には定義されている)キーに割り当て、その後 F13 + Key というキーバインドを定義していくことです。

Change Key は以下のように設定します。

image__3_.png
設定対象としてCapsLockを選ぶ。

image__4_.png
新しく開いた画面で Scan Code を選ぶ。

image (5).png
新しく開いた画面で 0x0064 を入力する(F13)。

では続いて、AutoHotKeyの設定をします。AutoHotKeyのインストール後、 AutoHotKey Script の新規作成を実施し (.ahkファイルを作り、) 以下の内容で保存します。

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; CapsLock (F13) を Ctrl のように使い、基本的なEmacsキーバインドが動くようにする。
F13 & p::Up
F13 & b::Left
F13 & n::Down
F13 & f::Right
F13 & a::send {Home}
F13 & e::send {End}
F13 & k::send +{End}{Del}
F13 & h::send {BS}
F13 & m::send {Enter}

;!F13 & Left::send ^+{Tab}

; タスクビューの移動
; Ctrl + Win + Right/Left での画面移動を Ctrl + Left/Right でもできるようにする。
^Left::^#Left
F13 & Left::^#Left
^Right::^#Right
F13 & Right::^#Right

; 無変換 + Key を、Macでいう Command + Key (Windowsでいう Control + Key) のように使えるようにする。
vk1D::send {vk1D}
vk1D & Right::send {End}
vk1D & Left::send {Home}
vk1D & q::send ^q 
vk1D & w::send ^w 
vk1D & e::send ^e 
vk1D & r::send ^r 
vk1D & t::send ^t 
vk1D & y::send ^y 
vk1D & u::send ^u 
vk1D & i::send ^i 
vk1D & o::send ^o 
vk1D & p::send ^p 
vk1D & a::send ^a 
vk1D & s::send ^s 
vk1D & d::send ^d 
vk1D & f::send ^f 
vk1D & g::send ^g 
vk1D & h::send ^h 
vk1D & j::send ^j 
vk1D & k::send ^k 
vk1D & l::send ^l 
vk1D & z::send ^z 
vk1D & x::send ^x 
vk1D & c::send ^c 
vk1D & v::send ^v 
vk1D & b::send ^b 
vk1D & n::send ^n 
vk1D & m::send ^m 
vk1D & ,::send ^, 
vk1D & .::send ^. 
vk1D & /::send ^/ 

; 変換 + Key を、Macでいう Command + Key (Windowsでいう Control + Key) のように使えるようにする。
vk1C::send {vk1C}
vk1C & Right::send {End}
vk1C & Left::send {Home}
vk1C & q::send ^q 
vk1C & w::send ^w 
vk1C & e::send ^e 
vk1C & r::send ^r 
vk1C & t::send ^t 
vk1C & y::send ^y 
vk1C & u::send ^u 
vk1C & i::send ^i 
vk1C & o::send ^o 
vk1C & p::send ^p 
vk1C & a::send ^a 
vk1C & s::send ^s 
vk1C & d::send ^d 
vk1C & f::send ^f 
vk1C & g::send ^g 
vk1C & h::send ^h 
vk1C & j::send ^j 
vk1C & k::send ^k 
vk1C & l::send ^l 
vk1C & z::send ^z 
vk1C & x::send ^x 
vk1C & c::send ^c 
vk1C & v::send ^v 
vk1C & b::send ^b 
vk1C & n::send ^n 
vk1C & m::send ^m 
vk1C & ,::send ^, 
vk1C & .::send ^. 
vk1C & /::send ^/

先に述べたCapsLockをEmacsキーバインドに応用する挙動のほか、

  • Macでいう Control + Right/Left で画面移動する処理が、Windowsでも同様に実現できるようにしました。
  • Macでいう Command + W のような処理が Henkan/Muhenkan でも同様に実現できるようにしました。

以下のリンクが参考になりました。

Future Work

Google Chrome (等) のタブの遷移

Macの Google Chrome (等) では、 Command + Alt + Right/Left でタブ遷移が行えます。これを再現するために、たとえばWindowsでは Muhenkan + Alt + Right/Left でタブ遷移をするように設定したかったのですが、単純な方法では実現できませんでした。以下のページが参考になりました。


  1. その処理スペースキーでできるのになんでお前らそんなとこにおんの? 

  2. 意図せずCapsLockとShiftを同時押ししてしまい、なぜか全ての英字が大文字になる現象の理由がわからず、悔しがりながらPCを再起動した、幼い頃の経験が蘇ります。 

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

macでvtuberになる

よぉ!王国騎士ロボットVTuberのKoshiだ!
Macでvtuber になる方法を紹介する。(カレンダー遅刻組)
12/4に本文書きます。 許してください何でもしますから。

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

MacでVTuberになる【Adobe Character Animator】

この記事は,VTuber Tech #1 Advent Calendar 2019の2日目の記事です。
よぉ!私は王国騎士ロボットVTuberのKoshiだ!
MacでVTuber になる方法を紹介する。(カレンダー遅刻組)


動画撮影に必要な物

組み合わせの例
  • Mac

    • Macbook Pro / Macbook Air + ソフト + (内蔵カメラ / webカメラ) + (マイク) + (ゲームなど)
    • iMac / iMac Pro + ソフト + (内蔵カメラ / webカメラ) + (マイク) + (ゲームなど)
    • その他 Mac Pro / Mac Mini + ソフト + 内蔵カメラ/webカメラ + マイク + (ゲームなど)
  • ソフト

    • OBS Studio: 画面キャプチャ。配信と録画。無料。
    • Adobe Character Animator: 顔の表情からキャラクター(パペット)をアニメーションさせるソフト。個人月額5680円(税別)。学生月額1980円(税別)。実例はピーナッツくん[1]ピーナッツくん。 公式はこちら → Adobe Character Animator
  • カメラ

    • Character Animatorで顔を認識するために必要です。内蔵カメラがあれば特に必要ない。
    • 別途Webカメラを用いる場合、解像度が低い安い物でも大丈夫だと思う。

私の動画撮影の環境

  • MacBook Pro (15-inch, 2017)

    • macOS Mojave バージョン 10.14.6(18G103)
    • プロセッサ 2.9 GHz Intel Core i7
    • メモリ 16 GB 2133 MHz LPDDR3
    • グラフィックス Radeon Pro 560 4 GB Intel HD Graphics 630 1536 MB
  • ソフト

    • OBS Studio 24.0.2
    • Adobe Character Animator CC 2019
    • 配信をメインにするソフト ゲームなど
    • SoundFlower + LadioCast 自分の声とゲームの音を入れる
    • (変声→GarageBand)
  • 内蔵カメラ

  • マイク(AT2020USB+)

私の撮影の工夫

高品質な動画を配信するのに必要な要素は、言わずもがなパソコン本体の性能です。
私のMacbook Proより性能が高ければ高い程、高品質な配信ができると考えられます。それより性能が低いとおそらく撮影が不自由になると考えられます。動画を撮影する際はなるべく使用するソフトだけ立ち上げます。OBSとCharacter Animatorとゲームの3つだけでメモリが10GB近くになったりします。
内蔵マイクは使い物になりません。何故ならばノイズがどうしても入るからです。視聴者側にとって声の品質は大事なので必要経費に含めましょう。


最低限必要な知識

  • Character Animatorの使い方(参考)
メイドインハシモ Action Planetあくしょんプラネット
  • ゲームの音と声を入れる OBS SoundFlower LadioCastの使い方(参考)
はづきくん SLEEP FREAKS

撮影の様子

character animator capture capture window
Adobe Character Animator の画面 OBS Studio と ゲームの画面

Animator Character のメリット・デメリット

実際にやってみた感想です。

メリット

  • WindowsとMacの両方で同じデータが使える。
  • ショートカットキーで魔法が使える。

デメリット

  • キャラクター(パペット)の動きは平面的でLive2Dでできるように斜めを向いても立体的に見えない。
  • シーンのフレームレートは24fpsを推奨され、滑らかに動けない。

録画に関して

OBS Studio + Adobe Character Animator + ゲームなど(例:Minecraft)を同時に実行するため、当然パソコンにかなり負荷がかかる。 ゲームの処理、Character Animatorの処理、OBS Studioの録画処理とかなりメモリを消費するため、快適とは言えない。またこれらの組み合わせで行った場合、普通に若干遅延が起こる。 ゲームプレイ画面も低負荷に設定しておけば、操作や実況は一応行えるが、録画が完了した動画を見ると一目瞭然だ(下記私の動画を参考までに)。

伝えたいこと

以上のことから分かるようにMacでVTuberは現状向いていないと思います。しかし、MacでVTuber体験できたことは大きな一歩です。私はキャラクターになりきったことで大きな自信を持つことが出来ました。もし、この記事を見ている人の中でMacを持っている。そしてMacの多くはMacbookなので、持っているという方がいれば、Adobe Character Animatorの無料体験版があるので挑戦してみるのもいいかもしれません。


最後に

もし、この記事が役に立ったら、「いいね」「ストック」押してくれ🗡💥

$$ \mathbb{そして私の事をもっと知りたい!方は}
\mathbb{\color{red}{YouTubeチャンネル登録},\color{#00acee}{Twitterフォロー}応援よろしくお願いします!}$$

vtuber [
YouTube Twitter
参考文献

[1]ピーナッツくん ぽんぽこ&ピーナッツくん非公式Wiki

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

Macにssh接続しようとするとConnection refusedと表示される

環境

  • MacBook Pro (13-inch, 2019, Four Thunderbolt 3 Ports)
  • macOS Mojave 10.14.6

発生した問題

  • macからmacにssh接続しようとしたが"ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused"と表示される

対処法

システム環境設定 > 共有 > リモートログインにチェック

終わりに

初めはIPアドレス間違え、ファイアウォールを疑いましたが単純なミスでした

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

iOSでFirebaseを使用して、データベースに対してCRUDを試してみる。

Xcodeで新規プロジェクトを作成しよう

Create a new Xcode project -> SingleViewApp の順で新規プロジェクトを作成する。
UserInterfaceはStoryBoardにしておきましょう。

Firebaseのプロジェクトを作成しよう

Firebaseに下記のURLからGoogleアカウントでログインします。
Firebase

ログインできたら「プロジェクトを追加」ボタンでプロジェクトを追加しましょう。

Firebaseの設定をしよう

プロジェクトのコンソール画面からアプリを追加することができます。
今回は「iOS」を選択しましょう。
80edd941.png

アプリのBundleIDを入力します。アプリ名は適当で良いです。
a6627889.png

設定ファイルをダウンロードして、Xcodeプロジェクトに追加します。

その後プロジェクトフォルダまで移動して、ターミナルから、下記コマンドを打ちましょう。

pod init

CocoaPodsをインストールしていない方は、インストールしてから行ってください。
こちらが参考になります。CocoaPodsを導入してみた - Qiita

今回はRealTimeDatabase を使用するので、Podファイルに、以下の文言を追加しましょう。

pod 'Firebase/Core'
pod 'Firebase/Database'

ターミナルから、下記コマンドでSDKをインストールしましょう。

pod install

インストールが完了したら、白いプロジェクトファイルが出来上がっていると思いますので、Xcodeで開きます。
97c2bdae.png

AppDelegeteファイルに、画像のように追記します。![スクリーンショット 2019-12-03 15.22.18.png]18a76768.png

データベースを作成しよう

左のタブのDataBaseを選択し、RealTimeDatabaseを選択します。
今回はテストモードで開始しましょう。
スクリーンショット 2019-12-03 15.47.01.png

5859c80c.png

これで準備完了です!

データベースに対して操作してみよう

データを追加してみよう

viewDidLoad に以下のように書いて実行します。

override func viewDidLoad() {
    super.viewDidLoad()
    let ref = Database.database().reference()

    // KeyValue型の配列を用意しておきます。
    let user = ["name":"Tarou Yamada", "age":"20", "favorite":"jogging"]

    // データを追加します。idは自動で設定してくれます。
    ref.child("Users").childByAutoId().setValue(user)
}

Firebaseのコンソール画面に移動すると、データが追加されているのが確認できます!
51ece462.png

データを更新してみよう

先程のデータを更新します。

override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference()

    // 先程のIDを指定します。(人によって変わるので、自分のDatabaseからコピペしてね)
    let id = "-Lv9asdz8vsqeZSZQdyh"
    // 先程のIDを指定してデータを上書きします。
    ref.child("Users/\(id)/name").setValue("名無しの権兵衛")
}

データを削除してみよう

先程のデータを削除します。

override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference()

    // 先程のIDを指定します。(人によって変わるので、自分のDatabaseからコピペしてね)
    let id = "-Lv9asdz8vsqeZSZQdyh"
    // 先程のIDを指定してデータを削除します。
    ref.child("Users/\(id)").removeValue()
}

データを取得してみよう

サンプルデータを作ろう

FireBaseのコンソール画面で、データを直接編集することができます。
めんどくさい人は、下記のJSONをファイルにして、FireBaseのインポートしましょう。

test.json
{
  "Users" : {
    "-Lv4cGsQbS3cXDLTErXS" : {
      "age" : "18",
      "favoriteFood" : "クッキー",
      "name" : "田中 花子"
    },
    "-Lv8Lrf3ii9bB5p6rcIc" : {
      "age" : "22",
      "favoriteFood" : "牛丼",
      "name" : "山田 太郎"
    },
    "-Lv8gSwpG-ZkEbPsbORu" : {
      "age" : "13",
      "favoriteFood" : "たこ焼き",
      "name" : "木村 正人"
    },
    "-Lv8vAUr79kcpoygkpDl" : {
      "age" : "26",
      "favoriteFood" : "寿司",
      "name" : "川上 純子"
    }
  }
}

サンプルデータを取得してみよう

下記コードで、Xcodeのコンソールに取得結果が表示されます。

override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference()

    // データの変更を監視(observe)してるため、変更されればリアルタイムで実行されます。
    ref.child("Users").observe(.value) { (snapshot) in
        // Users直下のデータの数だけ繰り返す。
        for data in snapshot.children {
            let snapData = data as! DataSnapshot

            // Dictionary型にキャスト
            let user = snapData.value as! [String: Any]
            print(user)
        }
    }
}

まとめ

環境の設定から、CRUDの基本的なところまでは押さえられたはず。 次はFirebaseを使って簡単なアプリを作ってみたい。

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

ShellScript Bash 変数に「*」を格納して出力する時に少し詰まったところ

目的

  • ShellScriptのBashで変数に文字列として*を出力する際に詰まったところをまとめる

結論

  • 変数を出力するときに変数名を""で囲む
  • echo "${変数名}"

筆者が困った流れ

  1. 変数FOO*を格納して出力したくなった。
  2. 下記コマンドを実行して*を変数FOOに格納した。

    FOO="*"
    
  3. ~/ディレクトリで下記コマンドを実行して変数FOOを展開しようとしたが、カレントディレクトリのフォルダが出力されてしまった。

    echo ${FOO}
    >Applications Desktop Documents Downloads Library Movies Music Pictures Public tig workspace
    
  4. *が出力されない・・・。

解決方法

  • 変数名を""で囲むことで出力することができた。
  • 下記に*を出力する方法を記載する。

    $ echo "${FOO}"
    >*
    
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】Eclipse 外観の変更(ダークテーマ)

ひとまず、自身の開発環境構築用に記載。

1.外観をダークテーマに変更

環境設定(または「⌘,」) > 一般 > 外観 より「ダーク」に変更。

image.png

2.色テーマを変更

環境設定(または「⌘,」) > 一般 > 外観 > 色テーマを「Sublime Text2」に変更。
変更後は「適用して閉じる」を押下。

image.png

3.以下のような画面が表示されるので、「OK」ボタンを押下

image.png

4.一度、Eclipseを終了する

5.ダークテーマ設定時に読み込んでいるCSSの修正

/Applications/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.ui.themes_1.2.1.v9999-9999/css/e4-dark_mac.css

CTabFolder Tree, CTabFolder Canvas {
    background-color: #2F2F2F;
    /* color: #CCC; <-- 変更前 */
    color: #ffdf7f; 
}

6.Eclipseを-cleanで起動する

7.GitまたはSVNのコミット前ファイルの文字色を変更する。

変更後は「適用して閉じる」を押下。

環境設定(または「⌘,」) > 一般 > 外観 > 色とフォント > Git

※私はコミット前のものを目立たせる設定にしてみました。

image.png

※以降、その他にも設定追加次第、更新する予定。

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

【Mac】Apple Scriptの練習がてらじゃんけんアプリを作ってみる

はじめに

先日、
【Mac】シェルスクリプトをmacOS App化してみる
という記事を書かせていただきましたが、本当はこっちがやりたかったんです。
App化するところは↑の記事を参考にしてください。

Apple Scriptを使うとユーザーに選択画面を表示したり、テキスト入力画面を表示させることが簡単にできます。
シェルから呼び出せるので結構気軽に使えます。
いろいろなスクリプトで使っているのですが、ごちゃごちゃしてきたのでじゃんけんアプリという形でまとめてみようと思います。

使用環境

macOS 10.13.6
特に関係ないと思います。(なんとなくアップグレードしてない・・・)

ざっくり設計

  • じゃんけんしますか?(YES or NO分岐)
  • あなたのお名前は?(テキストボックス入力)
  • 名前の確認(入力された変数の代入)
  • 出す手の選択(ボタン3つのパターン)
  • 結果表示(変数の代入と繰り返し)

じゃんじゃん内容

スクリプトにする用と、ターミナルで表示を試す用の二つ記載します。
ターミナルで試す用は(試)とつけます。
スクリプトにする用をコピペした後に関数名を実行でもOKです。
最終的にはスクリプトにする用のみマージします。

じゃんけん、やるかやらないか

後々、繰り返し使っているのでdoOrNotCheckという名前の関数として括っています。
doOrNot=$( ~ )という部分でdoOrNotという変数にじゃんけんをやるかやらないかの回答("はい" or "いいえ")を返しています。
Apple Scriptを呼び出す場合は、osascriptを利用します。
EOFEOFの間に記述されているのがApple Script部分となります。

やるかやらないか.sh
doOrNotCheck () {
doOrNot=$(osascript << EOF
display dialog "私とじゃんけんしますか?" with title "じゃんけんゲーム" with text buttons {"いいえ","はい"} default button 2
button returned of result
EOF)
}
(試)やるかやらないか.sh
osascript -e 'display dialog "私とじゃんけんしますか?" with title "じゃんけんゲーム" with text buttons {"いいえ","はい"} default button 2'

display dialog:表示するメッセージ
with title:タイトル部分に表示するメッセージ
with text buttons:表示するボタン
default button 2:2番目のボタンをデフォルトにする
button returns of result:押されたボタンの値を返す

そう、普通に英語っぽいんですよね。Apple Script。
実行するとこんな感じになります。
スクリーンショット 2019-12-03 11.54.57.png

(分岐)じゃんけんをやらないを選択した場合

こちらは関数化せずに1行で書いてます。
1行で呼び出す場合はosascript -eで呼び出してApple Scriptを記述していきます。

やらないの・・・.sh
osascript -e 'display dialog "ケチ!" buttons {"(´・ω・`)"} with icon 2 with title "じゃんけんゲーム" '

display dialog:表示するメッセージ
buttons:ボタンに表示するメッセージ
with icon 2:左側に表示するアイコンを指定します
with title:タイトル部分に表示するメッセージ

こんな感じになります。
スクリーンショット 2019-12-03 11.57.41.png

(はいを選択した場合)あなたはだあれ?

nameInputという名前の関数として括っています。
name=$( ~ )という部分でnameという変数にユーザーが入力したテキストを返しています。
EOFEOFの間に記述されているのがApple Script部分となります。

あなたはだあれ?.sh
nameInput () {
name=$(osascript << EOF
display dialog "あなたのお名前は?" with title "じゃんけんゲーム" default answer "ここに名前を入力してください" buttons {"OK"} default button 1
text returned of result
EOF)
}
(試)あなたはだあれ?.sh
osascript -e 'display dialog "あなたのお名前は?" with title "じゃんけんゲーム" default answer "ここに名前を入力してください" buttons {"OK"} default button 1'

display dialog:表示するメッセージ
with title:タイトル部分に表示するメッセージ
default answer::テキストボックスにデフォルトで入れておくメッセージ
buttons:ボタンの表示
default button 1:1番目のボタンをデフォルトにする

こんな感じになります。
スクリーンショット 2019-12-03 12.12.12.png

なまえあってる?

nameCheckという名前の関数として括っています。
nameFlg=$( ~ )という部分でnameInputでユーザーが入力したnameという変数を表示して、確認を促しています。
EOFEOFの間に記述されているのがApple Script部分となります。

なまえあってる?.sh
nameChack () {
nameFlg=$(osascript << EOF
display dialog "あなたのお名前は ${name} で間違いないですか?"  with title "じゃんけんゲーム" with text buttons {"いいえ","はい"} default button 2
button returned of result
EOF)
}

変数を利用する場合は${}を使用します。
他の部分は説明済みのため割愛します。
こんな感じになります。
スクリーンショット 2019-12-03 12.17.52.png

どのてをだします?

selectGCPという名前の関数として括っています。(Google Cloud Platformではない)
select=$( ~ )という部分でnameInputでユーザーが入力したnameさんに"グー","チョキ","パー"の3つの中から1つ選んでもらい、その結果を返しています。
また、選ばれた"グー","チョキ","パー"をそれぞれ、0,1,2と置き換えてuserChoiceに入れています。(勝敗の計算に使用するため)

どのてをだします?.sh
selectGCP () {
select=$(osascript << EOF
display dialog "${name} さんはどの手を出しますか?"  with title "じゃんけんゲーム" buttons{"グー","チョキ","パー"}
button returned of result
EOF)
if [ $select = "グー" ]
  then
    userChoice=0
  elif [[ $select = "チョキ" ]]
  then userChoice=1
else
  userChoice=2
fi
}

こんな感じになります。
スクリーンショット 2019-12-03 12.19.42.png
3つまでボタンを使えます。
3つ以上から選択させたい場合は、リスト表示も使えます。
リスト表示の仕方は、おまけとして最後の方に書いてます。

いざしょうぶ!

battleという名前の関数として括っています。
comSelect=$( ~ )という部分でRANDOM関数の結果を返しています。

いざしょうぶ!.sh
battle () {
comSelect=$(($RANDOM % 3))
if [ $comSelect = 0 ]
  then
    comChoice="グー"
  elif [ $comSelect = 1 ]
    then
      comChoice="チョキ"
  else
    comChoice="パー"
fi
result=$((comSelect - userChoice))
battleResult=$(if [ $result -eq 1 ] || [ $result -eq -2 ]
  then
    osascript << EOT
    display dialog "あなたの手:${select} \nvs \nCOMの手:${comChoice} \n\nやるやん。明日は俺にリベンジさせて。"  with title "じゃんけんゲーム" with text buttons {"おわる","もう一回!"} default button 2
button returned of result
EOT
elif [ $result -eq -1 ] || [ $result -eq 2 ]
  then
    osascript << EOT
    display dialog "あなたの手:${select} \nvs \nCOMの手:${comChoice} \n\n俺の勝ち!\nなんで負けたか、明日まで考えといてください。\nそしたら何かが見えてくるはずです。"  with title "じゃんけんゲーム" with text buttons {"おわる","もう一回!"} default button 2
button returned of result
EOT
else
  osascript << EOT
  display dialog "あなたの手:${select} \nvs \nCOMの手:${comChoice} \n\nあいこは負けと一緒。"  with title "じゃんけんゲーム" with text buttons {"おわる","もう一回!"} default button 2
button returned of result
EOT
fi)
}

勝負の結果で表示される文言は本田とじゃんけんからまるパクしてます。
こんな感じです。

スクリーンショット 2019-12-03 12.34.56.png
スクリーンショット 2019-12-03 12.35.07.png
スクリーンショット 2019-12-03 12.35.24.png

実行部分

じゃんけん.sh
doOrNotCheck

if [ $doOrNot = "いいえ" ]
#やらないの・・・
  then
    osascript -e 'display dialog "ケチ!" buttons {"(´・ω・`)"} with icon 2 with title "じゃんけんゲーム" '
  exit
else
  nameInput
  nameChack
  while [ $nameFlg != "はい" ]
  do
    nameInput
    nameChack
  done
fi

selectGCP
battle

while [ $battleResult != "おわる" ]
do
  selectGCP
  battle
done

以上、ここまでに紹介したものを上からすべて一つのshファイルに記述することで、じゃんけんができるようになります!

(おまけ)4つ以上から選択させるやつ

たくさんからえらぶ.sh
osascript -e 'display dialog choose from list {"グー", "チョキ", "パー","ダイナマイト", "ピストル", "つよいやつ","めっちゃ強いやつ"}'

こんな感じ。
スクリーンショット 2019-12-03 17.41.51.png

おわりに

かなりざっくり書いてしまっているのでわかりにくかったらすいません。
ユーザーの環境による値があるものだったり、特定の内容をAPIに飛ばしたり、いろいろできるのではないでしょうか。多分。

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

【Git】SourceTree嫌いがよく使うgitコマンド

【Git】SourceTree嫌いがよく使うgitコマンド

この記事は「ちゅらっぷす Advent Calendar 2019」の3日目です。
https://qiita.com/advent-calendar/2019/churapps

SourceTree嫌い

えー唐突ですが私、SourceTreeが嫌いでして。
嫌いな理由はいくつかありますが、周りと同調できないダメな人間です。
そもそもGUIに苦手意識があって予告なくUIの変更などがあるともうキレそう。というかキレてます(苦笑)

基本的なコマンドばかりですが、SourceTreeを利用し続けていたら知らなかったかもしれないオプションも紹介しますので是非お付き合いください。

clone

## base branchを参照、フォルダ名はリポジトリ名依存
$ git clone リポジトリ名

## ブランチを指定、指定のフォルダ名でcloneする
$ git clone リポジトリ名 -b ブランチ名(省略時はbase_branch) フォルダ名

ブランチ、フォルダ名指定オプション付きでgit cloneします。

diff

## ファイル差分
$ git diff

「どのファイルにどんな変更加えたっけ?」って時に使ってました。
git addする直前とかですかね。
現在ではVSCodeのプラグインで差分や履歴が一目瞭然なのであまり使う機会はなくなりました。

status

## 変更点の確認
$ git status

変更、削除、新規ファイルなのか見る際に利用します。

remote

## リポジトリのプッシュ先などを確認
$ git remote -v

複数案件を並行で進めてる時が多いので、「これ本当に〇〇案件のリポジトリでPush先もおかしくないよな?」と不安になった際につかいます。

branch

## 現在のブランチ
$ git branch

## remote含む全てのブランチ
$ git branch -a

checkout後に確認のために利用することが多いですかね

checkout

## ブランチの切り替え
$ git checkout ブランチ名

## ブランチを作成しつつ切り替え
$ git checkout -b ブランチ名

Checkoutの際に-bオプションで、新規でローカルブランチを作成しつつCheckoutできます。

commit

## 通常のコミット(add済み)
$ git commit -m "動かないけどマージしたい"

## addも一緒にするcommit
$ git commit -a -m "なぜか動くからリリースしようぜ"

git addが面倒なので僕はだいたい-aオプション付きでCommitします。

push

## 通常
$ git push

## 新規ローカルブランチ
$ git push --set-upstream origin ブランチ名

新規ローカルブランチでgit pushすると--set-upstreamオプションつけろなどと怒られますね。
ちなみに後者の方でpushすると、プルリク用のURLが発行されるのでリンクにアクセスするだけでプルリク作成画面へ飛べます。便利。

GUIを使わない理由

多分ですけど、「コマンドで仕事してる俺カッケェェェ」って思ってるんだと思います笑
でも正直、コマンドベースで動きをある程度覚えてからGUIツールを利用した方が理解度高まるんじゃないかなと思ってます。

上記で紹介したコマンドはどれも基本的なものですが、オプションがややこしいので何か気になる点などございましたらご指摘ください。

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

いまさらMacTeXの更新

はじめに

Catalinaにしたついでに,今更ながらTeX Live 2019へのアップグレードをしましたのメモ

状況

OS X v10.15.1
TeX Live 2018が入っているけど面倒なことはしないで2019にしたい.

参考にしたページ

いつものって感じだけど参考にしたページ
- TeX wikiのMacTeXのページ
- TeX wikiのヒラギノのページ
- MacTeX 2019 のインストール&日本語環境構築法
- TeX Live 2018 から 2019 へのアップグレード

MacTeXをいれるところ

TeX wikiのMacTeXのページから,ミラーサイトにとんで,インストーラを落として起動.
アプリケーションは競合しないようにしてくれるらしい?ので,ここまでは簡単.

tlmgrの更新

ちょっと躓いたのでメモ.
上記記事等には,

sudo tlmgr update --self --all

を実行とだけ書いてあるけど,これをやると,ローカルのtlmgrのバージョン(2018)とリモートリポジトリのバージョン(2019)が違うので怒られる.
そこで,

sudo tlmgr path remove

で現在のtlmgrのパスを切ってやったところ,tlmgrの2019版が勝手に選ばれるようになった.
もしかしたら去年のわたしが変な設定をしただけかもしれないけど,一応メモしておく.

この更新が時間かかるからTeX Liveの更新きらい.

ヒラギノ対応

TeX wikiのヒラギノのページに従ってコマンドを順次コピペしていくだけ.

一応,現在のフォントマップの設定は

kanji-config-updmap-sys status

で見られるので,これで

CURRENT family for ja: hiragino-highsierra-pron

が返ってくればOK!

おわり!

偉大な先人の知恵をお借りすることでつつがなく更新できた.最高!
おわり

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

共有作業のちょっとしたコツを教えるよ

人と共有するのって難しい

ファイル渡す、確認する、伝える…

ディレクター、デザイナー、エンジニア
育ってきた環境が違うから
すれ違いはしょうがない

「自分の中では分かっているのにどう説明したらいいの」
「○○を△△でください」(えーやり直し…?)

みたいな面倒くせーを無くしてサクサク進めるためのtips

まぁぐぐったら出てくる些細なことばっかりだよ!ごめんね!

Macでzipにパスワード

zipをターミナルコマンドで作成

パスワード付きzip
$ zip -e -r ファイルに付ける名前.zip 対象のフォルダorファイル名
$ enter password?: パスワード入力

すでにあるZipファイルにパスワードをかけるコマンドはあるが…

zipにパスワードをかける
$ zipcloak -r "対象のzipファイル"
$ enter password:

Finderから作成したzipにパスワードをかけると
文字コードの違いで解凍できなくなる
oh 「Mac zip パスワード」で出てくるんだけどね…

不可視ファイルを表示

触らないに越したことはない非表示ファイル

ショートカット
 [command] + [shift] + [.(ドット)]

ターミナルで設定するとこう

$ defaults write com.apple.finder AppleShowAllFiles TRUE
$ killall Finder

brewのインストール

Node.js使うときに入れてるので無意識?
AppStoreに無いもの使うとかバージョン切り替えるとか…ちょいちょい使う

brewインストール
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

hatena最近Xcodeは一旦消してからアップデートする

GoogleDrive

ファイルを選んで…
 [shift] + [ z ]

コピーと違って「複数のフォルダに所属させる」だけなのでファイル増えない
シンボリックリンク的な使い方ができる
normal 作業フォルダからコピーとか事故のもとでしかない

Photoshop

画像の書き出し

レイヤー名でアセット書き出しをコントロールする
毎回書き出しとかしない

png32(透過あり)で書き出し
***.png
png-24(透過なし)で書き出し
****.png24
png32(透過あり)とjpgで書き出し
***.png,****.jpg

ok複数の形式は,(カンマ)で区切ればOK

アイキャッチとコンテンツ用の出し分けとか
Google先生に怒られた時に使う低画質

画質は拡張子の後ろに1〜10(10%〜100%)の整数つけて調整

画質40%
***.jpg4
高画質とうんこ画質
***.jpg10,***.jpg4

大きさの指定はファイル名の前に%で指定

2xで書き出す
200%***.png

フォルダ分けして書き出す

フォルダ分けして書き出し
[フォルダ名]/***.png

全ての画像に同じ設定を使う場合は空レイヤーに設定する
※Defaultの設定は必須

等倍、2倍、3倍で書き出す
default @1x/, 200% @2x/ @2x
default [等倍のフォルダ名], 200% [2倍フォルダ名]/[2倍のサフィックス]

normal 余白込みの書き出しはベクトルマスクを追加する

よく使うショートカット

cとかv以外も便利だけど意外と使われてない…

デフォルトのもの
レベル補正  [command] + [ l ]
トーン補正  [command] + [ m ]
クリッピングマスク [option] + [command] + [ g ]
カーニング [shift] + []
グリッド表示 [command] + [ @ ]
ガイド表示 [command] + [ : ]
ツール [ u ]
ツール切り替え [shift] + [ u ]
選択ツール [ m ]
選択解除 [command] + [ d ]
個別設定してるもの
レイヤースタイルのコピー    [control] + [command] + [ c ]
レイヤースタイルのペースト  [control] + [command] + [ v ]

normalスタイルコピーは地味に便利です

XDの共有機能

アセットの共有

リアルタイムで共同編集できるようになったけど事故は起きます
マスターファイルのアセット作っていくときに楽になるショートカット

アセット作成ショートカット
[shift] + [command] + [ t ] テキストスタイルの作成
[shift] + [command] + [ k ] コンポーネントの作成
[shift] + [command] + [ c ] カラースタイルの作成

heart カラーは追加時にパレットにも追加すると便利

誰に見せるかで共有モードを選ぶ

デザインレビュー プレゼンテーション 開発 ユーザーテスト
対象 ディレクター・企画 社外・利権者 エンジニア テストユーザー
ヒント表示
コメント
ナビゲーション制御
全画面表示
デザインスペックの表示

14.png.psや.aiのデザインデータはXDで読み込むだけでいい

動きの伝え

見て自然に入ってくる動きの法則をまず守ってみる
無意識に感じる向きや動きを基本に

動く方向

・画面左(下手)ネガティブ
・画面右(上手)ポジティブ
・時計回り

before → Afterと視線誘導するとするっと伝わる
左から右に向かって行くと正の方向だと認識する
メリーゴーランドはアメリカ製以外は時計回り
時計回りは手前だけを見ると右から左に見える

tab.pngマリオが左から右に走るわけ

自然なイージングをかける

動き 始め 終わり
落とす ease-in(衝突) (反跳)ease-out
爆発 ease-out linear
消える ease-in linear
注意喚起 ease-in(表示) ease-out(消え)
おだやか ease-in-out (少し止める)

なんだか違和感と思ったらこんな感じで

視線の動きに逆らわない

画面静止時
左上から右上、左下から右下とZの形で動く
画像とテキストの並べ方で同じ文章でも印象が変わる
image_left.png
image_right.png
スクロール中
左上に視線が集中する
優先度の高い内容は一文にしすぎず短く

並んだボタン
左をみてから右の内容を比較する
肯定、誘導したいアクションは右に配置する方がCTR高い

まとめ

細々したことだけど少しでもストレスフリーで仕事しよう
サーバーエンジニア出身のデザイナー目線でお送りしました

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

Macで古いpyenv環境を除却してupdate

pyenvが古いようなので更新しようと思ったができない。
witchで確認したところ以下のような表示。なんだったか思い出せない。

sot528@mac ~ % which pyenv
pyenv () {
    local command
    command="${1:-}"
    if [ "$#" -gt 0 ]
    then
        shift
    fi
    case "$command" in
        (activate | deactivate | rehash | shell) eval "$(pyenv "sh-$command" "$@")" ;;
        (*) command pyenv "$command" "$@" ;;
    esac
}

原因

昔、pyenvの環境を構築した際にbrewが対応しておらず手動で行っていた。

対応

ルートディレクトリに構築していたので、それを削除してbrewで入れ直す。

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

Macで隠しファイルを表示する

前提

  • MacOS Sierra

ターミナルで見たい

-a オプションをつける。

terminal
$ ls -a

Finder で見たい

ショートカット command + shift + . で表示できる。

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

【Mac】Eclipse.app は壊れている?

EclipseをApplicationsから起動しようとすると、
「Eclipse.app は壊れているため開けません。ゴミ箱に入れる必要があります。」
というエラーメッセージが表示され、起動することができなくなってしまった場合、

次のコマンドで拡張ファイル属性(Extended Attributes;EA)を除去することで起動可能。

xattr -d com.apple.quarantine Eclipse.app/

なお、拡張ファイル属性(Extended Attributes;EA)は次のコマンドを実行することで確認可能。

xattr Eclipse.app/

※一番簡単な方法は、Ctrlキーを押しながらクリック!!

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

【Rails】bundle install エラー「Errno::EACCES: Permission denied @ rb_sysopen -」の権限視点からの対応策 (mysql2)

備忘録です。
自身の記事ですが【Rails環境構築】MySQL2が原因で「bundle install」失敗した時の対処法のようなPATHの変更でも解決できない状況に陥ったため。

環境

OS       : Mac OS Catalina 10.15.1
Ruby      : v 2.6.3p62
Rails      : v 6.0.1
Homebrew  : v 2.1.16
Bundle    : v 1.17.2
MySQL    : v 8.0.18 for osx10.15 on x86_64 (Homebrew)

その他
※ username は個人の作業ユーザ名になります。

$ whoami
=> username

エラー

$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installingfor. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
( ↑ bashの設定によって色が変わってたりするものの本稿でのエラーには関係なし)

省略

Installing mysql2 0.5.2 with native extensions
Errno::EACCES: Permission denied @ rb_sysopen -
/Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2/CHANGELOG.md
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

対応

1. 上記エラーに記載されたディレクトリへ移動

cd /Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/

2. 該当ディレクトリでファイルの詳細を表示(権限確認)

$ ls -la
total 64
drwxr-xr-x  10 root   staff    320 12  2 22:08 .
drwxr-xr-x  69 username  staff   2208 12  2 22:08 ..
-rw-r--r--   1 root   staff     87 12  2 22:08 CHANGELOG.md
-rw-r--r--   1 root   staff   1078 12  2 22:08 LICENSE
-rw-r--r--   1 root   staff  24534 12  2 22:08 README.md
drwxr-xr-x   4 root   staff    128 12  2 22:08 examples
drwxr-xr-x   3 root   staff     96 12  2 22:08 ext
drwxr-xr-x   4 root   staff    128 12  2 22:08 lib
drwxr-xr-x  10 root   staff    320 12  2 22:08 spec
drwxr-xr-x   6 root   staff    192 12  2 22:08 support

3. ディレクトリやファイルの権限を 「root」 → 「username」 に変更&確認

$ sudo chown -R username .
$ ls -la
total 64
drwxr-xr-x  10 username  staff    320 12  2 22:08 .
drwxr-xr-x  69 username  staff   2208 12  2 22:08 ..
-rw-r--r--   1 username  staff     87 12  2 22:08 CHANGELOG.md
-rw-r--r--   1 username  staff   1078 12  2 22:08 LICENSE
-rw-r--r--   1 username  staff  24534 12  2 22:08 README.md
drwxr-xr-x   4 username  staff    128 12  2 22:08 examples
drwxr-xr-x   3 username  staff     96 12  2 22:08 ext
drwxr-xr-x   4 username  staff    128 12  2 22:08 lib
drwxr-xr-x  10 username  staff    320 12  2 22:08 spec
drwxr-xr-x   6 username  staff    192 12  2 22:08 support

変更されていればok

4. 「bundle install」(成功 or 再度エラーの対応)

恐らくここで完了する方もいれば、筆者のようにまたエラー発生する方もいるかと思います。
「うわ、また同じエラーだ😑」と感じるかもしれませんが、
エラー先の場所をよくよく見ると、gem内(1回目)とextensions内(2回目)で異なるので再度ディレクトリへ移動して権限変更を繰り返します。

$ bundle install

省略

Errno::EACCES: Permission denied @ rb_sysopen -
/Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/gem_make.out
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2
$ cd /Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/
$ ls -la
total 128
drwxr-xr-x   4 root   staff    128 12  2 22:08 .
drwxr-xr-x  12 username  staff    384 12  2 22:08 ..
-rw-r--r--   1 root   staff   1999 12  2 22:08 gem_make.out
-rw-r--r--   1 root   staff  58721 12  2 22:08 mkmf.log
$ sudo chown -R username .
$ ls -la
total 128
drwxr-xr-x   4 username  staff    128 12  2 22:08 .
drwxr-xr-x  12 username  staff    384 12  2 22:08 ..
-rw-r--r--   1 username  staff   1999 12  2 22:08 gem_make.out
-rw-r--r--   1 username  staff  58721 12  2 22:08 mkmf.log
$ bundle install

省略

Bundle complete! 17 Gemfile dependencies, 75 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

これにて終了です!

その他

誤解や「このやり方のが断然いい」などあれば、ご指摘頂けると幸いです m(_ _)m

参考記事

rails newでErrno::EACCES: Permission denied @ dir_s_mkdir -の対処法 - Qiita
Errno::EACCES: Permission denied @ dir_s_mkdir が出たので対処した - mimikunの技術メモ
lsコマンドの使い方と覚えたい15のオプション【Linuxコマンド集】

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

【Rails】 bundle install エラー「Errno::EACCES: Permission denied @ rb_sysopen -」の権限視点からの対応策 (mysql2)

備忘録です。
自身の記事ですが【Rails環境構築】MySQL2が原因で「bundle install」失敗した時の対処法のようなPATHの変更でも解決できない状況に陥ったため。

環境

OS       : Mac OS Catalina 10.15.1
Ruby      : v 2.6.3p62
Rails      : v 6.0.1
Homebrew  : v 2.1.16
Bundle    : v 1.17.2
MySQL    : v 8.0.18 for osx10.15 on x86_64 (Homebrew)

その他
※ username は個人の作業ユーザ名になります。

$ whoami
=> username

エラー

$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installingfor. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
( ↑ bashの設定によって色が変わってたりするものの本稿でのエラーには関係なし)

省略

Installing mysql2 0.5.2 with native extensions
Errno::EACCES: Permission denied @ rb_sysopen -
/Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2/CHANGELOG.md
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

対応

1. 上記エラーに記載されたディレクトリへ移動

cd /Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/

2. 該当ディレクトリでファイルの詳細を表示(権限確認)

$ ls -la
total 64
drwxr-xr-x  10 root   staff    320 12  2 22:08 .
drwxr-xr-x  69 username  staff   2208 12  2 22:08 ..
-rw-r--r--   1 root   staff     87 12  2 22:08 CHANGELOG.md
-rw-r--r--   1 root   staff   1078 12  2 22:08 LICENSE
-rw-r--r--   1 root   staff  24534 12  2 22:08 README.md
drwxr-xr-x   4 root   staff    128 12  2 22:08 examples
drwxr-xr-x   3 root   staff     96 12  2 22:08 ext
drwxr-xr-x   4 root   staff    128 12  2 22:08 lib
drwxr-xr-x  10 root   staff    320 12  2 22:08 spec
drwxr-xr-x   6 root   staff    192 12  2 22:08 support

3. ディレクトリやファイルの権限を 「root」 → 「username」 に変更&確認

$ sudo chown -R username .
$ ls -la
total 64
drwxr-xr-x  10 username  staff    320 12  2 22:08 .
drwxr-xr-x  69 username  staff   2208 12  2 22:08 ..
-rw-r--r--   1 username  staff     87 12  2 22:08 CHANGELOG.md
-rw-r--r--   1 username  staff   1078 12  2 22:08 LICENSE
-rw-r--r--   1 username  staff  24534 12  2 22:08 README.md
drwxr-xr-x   4 username  staff    128 12  2 22:08 examples
drwxr-xr-x   3 username  staff     96 12  2 22:08 ext
drwxr-xr-x   4 username  staff    128 12  2 22:08 lib
drwxr-xr-x  10 username  staff    320 12  2 22:08 spec
drwxr-xr-x   6 username  staff    192 12  2 22:08 support

変更されていればok

4. 「bundle install」(成功 or 再度エラーの対応)

恐らくここで完了する方もいれば、筆者のようにまたエラー発生する方もいるかと思います。
「うわ、また同じエラーだ😑」と感じるかもしれませんが、
エラー先の場所をよくよく見ると、gem内(1回目)とextensions内(2回目)で異なるので再度ディレクトリへ移動して権限変更を繰り返します。

$ bundle install

省略

Errno::EACCES: Permission denied @ rb_sysopen -
/Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/gem_make.out
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2
$ cd /Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/
$ ls -la
total 128
drwxr-xr-x   4 root   staff    128 12  2 22:08 .
drwxr-xr-x  12 username  staff    384 12  2 22:08 ..
-rw-r--r--   1 root   staff   1999 12  2 22:08 gem_make.out
-rw-r--r--   1 root   staff  58721 12  2 22:08 mkmf.log
$ sudo chown -R username .
$ ls -la
total 128
drwxr-xr-x   4 username  staff    128 12  2 22:08 .
drwxr-xr-x  12 username  staff    384 12  2 22:08 ..
-rw-r--r--   1 username  staff   1999 12  2 22:08 gem_make.out
-rw-r--r--   1 username  staff  58721 12  2 22:08 mkmf.log
$ bundle install

省略

Bundle complete! 17 Gemfile dependencies, 75 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

これにて終了です!

その他

誤解や「このやり方のが断然いい」などあれば、ご指摘頂けると幸いです m(_ _)m

参考記事

rails newでErrno::EACCES: Permission denied @ dir_s_mkdir -の対処法 - Qiita
Errno::EACCES: Permission denied @ dir_s_mkdir が出たので対処した - mimikunの技術メモ
lsコマンドの使い方と覚えたい15のオプション【Linuxコマンド集】

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