- 投稿日:2019-12-03T23:47:35+09:00
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 に少し設定を加えるだけでこの状態にできます。
ご覧の通り、そこまでこだわったキーボード設定ではないです。もうゴリゴリに設定している人には物足りないと思いますが、Karabinerの存在すら知らなかった人には一度試してみてほしいシンプル構成です。
Windowsをいじる
IMEのオンオフ
まずはMacの「右Commandで日本語入力、左Commandで英数入力になる」という挙動を再現します。MacのUSキーボードのコマンドキーはスペースキーの左右にひとつずつありますが、僕の使っているWindowsのキーボードでは、この親指で極めてアクセスしやすい一等地に変換/無変換という何に使うのかわからないキーが我が物顔で陣取っています1。
これの左側である無変換キーでIMEをオフに、また右側である変換キーでひらがな入力に切り替わってほしいので、これはGoogle日本語入力側で設定します。詳細は Google日本語入力でIME ON/OFFを変換・無変換キーに割り当てる【ver 2.0】 をご覧いただければと思いますが、ポイントは「入力文字なし」の "Henkan" を 「ひらがなに入力切替」、 "Muhenkan" を 「IMEを無効化」に設定することです。
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 は以下のように設定します。
では続いて、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 でタブ遷移をするように設定したかったのですが、単純な方法では実現できませんでした。以下のページが参考になりました。
- https://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=Autohotkey
- 修飾キー以外のキーを修飾キーとして使う > ただし、2つ以上のキーは制御できない。
- 投稿日:2019-12-03T23:05:56+09:00
macでvtuberになる
よぉ!王国騎士ロボットVTuberのKoshiだ!
Macでvtuber になる方法を紹介する。(カレンダー遅刻組)
12/4に本文書きます。 許してください何でもしますから。
- 投稿日:2019-12-03T23:05:56+09:00
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
撮影の様子
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フォロー}応援よろしくお願いします!}$$
![]()
[ 【Koshi ステータス情報】
— Koshi?⚔王国騎士ロボット (@Koshi_VTuber) October 8, 2019
自己紹介https://t.co/80EsWFIT42

YouTube
《https://t.co/1v4W0dXPca》
マシュマロ
《https://t.co/Fve10Tbtme》
ニコ動
《https://t.co/tHLtr0IQ88》
タグ
《#Kロボ #Koshi》
さぁ、冒険を始めようか!#新人Vtuber #VTuber #Kロボ #ロボットVTuber pic.twitter.com/oerzsWu5LQYouTube 参考文献
- 投稿日:2019-12-03T20:02:41+09:00
Macにssh接続しようとするとConnection refusedと表示される
- 投稿日:2019-12-03T19:29:37+09:00
iOSでFirebaseを使用して、データベースに対してCRUDを試してみる。
Xcodeで新規プロジェクトを作成しよう
Create a new Xcode project -> SingleViewApp の順で新規プロジェクトを作成する。
UserInterfaceはStoryBoardにしておきましょう。Firebaseのプロジェクトを作成しよう
Firebaseに下記のURLからGoogleアカウントでログインします。
Firebaseログインできたら「プロジェクトを追加」ボタンでプロジェクトを追加しましょう。
Firebaseの設定をしよう
プロジェクトのコンソール画面からアプリを追加することができます。
今回は「iOS」を選択しましょう。
アプリのBundleIDを入力します。アプリ名は適当で良いです。
設定ファイルをダウンロードして、Xcodeプロジェクトに追加します。
その後プロジェクトフォルダまで移動して、ターミナルから、下記コマンドを打ちましょう。
pod initCocoaPodsをインストールしていない方は、インストールしてから行ってください。
こちらが参考になります。CocoaPodsを導入してみた - Qiita今回はRealTimeDatabase を使用するので、Podファイルに、以下の文言を追加しましょう。
pod 'Firebase/Core' pod 'Firebase/Database'ターミナルから、下記コマンドでSDKをインストールしましょう。
pod installインストールが完了したら、白いプロジェクトファイルが出来上がっていると思いますので、Xcodeで開きます。
AppDelegeteファイルに、画像のように追記します。![スクリーンショット 2019-12-03 15.22.18.png]
データベースを作成しよう
左のタブのDataBaseを選択し、RealTimeDatabaseを選択します。
今回はテストモードで開始しましょう。
これで準備完了です!
データベースに対して操作してみよう
データを追加してみよう
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のコンソール画面に移動すると、データが追加されているのが確認できます!
データを更新してみよう
先程のデータを更新します。
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を使って簡単なアプリを作ってみたい。
- 投稿日:2019-12-03T19:07:08+09:00
ShellScript Bash 変数に「*」を格納して出力する時に少し詰まったところ
目的
- ShellScriptのBashで変数に文字列として
*
を出力する際に詰まったところをまとめる結論
- 変数を出力するときに変数名を
""
で囲むecho "${変数名}"
筆者が困った流れ
- 変数
FOO
に*
を格納して出力したくなった。下記コマンドを実行して
*
を変数FOO
に格納した。FOO="*"
~/
ディレクトリで下記コマンドを実行して変数FOO
を展開しようとしたが、カレントディレクトリのフォルダが出力されてしまった。echo ${FOO} >Applications Desktop Documents Downloads Library Movies Music Pictures Public tig workspace
*
が出力されない・・・。解決方法
- 変数名を
""
で囲むことで出力することができた。下記に
*
を出力する方法を記載する。$ echo "${FOO}" >*
- 投稿日:2019-12-03T18:40:43+09:00
【Mac】Eclipse 外観の変更(ダークテーマ)
ひとまず、自身の開発環境構築用に記載。
1.外観をダークテーマに変更
環境設定(または「⌘,」) > 一般 > 外観 より「ダーク」に変更。
2.色テーマを変更
環境設定(または「⌘,」) > 一般 > 外観 > 色テーマを「Sublime Text2」に変更。
変更後は「適用して閉じる」を押下。3.以下のような画面が表示されるので、「OK」ボタンを押下
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
※私はコミット前のものを目立たせる設定にしてみました。
※以降、その他にも設定追加次第、更新する予定。
- 投稿日:2019-12-03T17:54:58+09:00
【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
を利用します。
EOF
とEOF
の間に記述されているのがApple Script部分となります。やるかやらないか.shdoOrNotCheck () { doOrNot=$(osascript << EOF display dialog "私とじゃんけんしますか?" with title "じゃんけんゲーム" with text buttons {"いいえ","はい"} default button 2 button returned of result EOF) }(試)やるかやらないか.shosascript -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。
実行するとこんな感じになります。
(分岐)じゃんけんをやらないを選択した場合
こちらは関数化せずに1行で書いてます。
1行で呼び出す場合はosascript -e
で呼び出してApple Scriptを記述していきます。やらないの・・・.shosascript -e 'display dialog "ケチ!" buttons {"(´・ω・`)"} with icon 2 with title "じゃんけんゲーム" 'display dialog:表示するメッセージ
buttons:ボタンに表示するメッセージ
with icon 2:左側に表示するアイコンを指定します
with title:タイトル部分に表示するメッセージ(はいを選択した場合)あなたはだあれ?
nameInput
という名前の関数として括っています。
name=$( ~ )という部分でname
という変数にユーザーが入力したテキストを返しています。
EOF
とEOF
の間に記述されているのがApple Script部分となります。あなたはだあれ?.shnameInput () { name=$(osascript << EOF display dialog "あなたのお名前は?" with title "じゃんけんゲーム" default answer "ここに名前を入力してください" buttons {"OK"} default button 1 text returned of result EOF) }(試)あなたはだあれ?.shosascript -e 'display dialog "あなたのお名前は?" with title "じゃんけんゲーム" default answer "ここに名前を入力してください" buttons {"OK"} default button 1'display dialog:表示するメッセージ
with title:タイトル部分に表示するメッセージ
default answer::テキストボックスにデフォルトで入れておくメッセージ
buttons:ボタンの表示
default button 1:1番目のボタンをデフォルトにするなまえあってる?
nameCheck
という名前の関数として括っています。
nameFlg=$( ~ )という部分でnameInput
でユーザーが入力したname
という変数を表示して、確認を促しています。
EOF
とEOF
の間に記述されているのがApple Script部分となります。なまえあってる?.shnameChack () { nameFlg=$(osascript << EOF display dialog "あなたのお名前は ${name} で間違いないですか?" with title "じゃんけんゲーム" with text buttons {"いいえ","はい"} default button 2 button returned of result EOF) }変数を利用する場合は
${}
を使用します。
他の部分は説明済みのため割愛します。
こんな感じになります。
どのてをだします?
selectGCP
という名前の関数として括っています。(Google Cloud Platformではない)
select=$( ~ )という部分でnameInput
でユーザーが入力したname
さんに"グー","チョキ","パー"の3つの中から1つ選んでもらい、その結果を返しています。
また、選ばれた"グー","チョキ","パー"をそれぞれ、0,1,2と置き換えてuserChoice
に入れています。(勝敗の計算に使用するため)どのてをだします?.shselectGCP () { 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 }こんな感じになります。
3つまでボタンを使えます。
3つ以上から選択させたい場合は、リスト表示も使えます。
リスト表示の仕方は、おまけとして最後の方に書いてます。いざしょうぶ!
battle
という名前の関数として括っています。
comSelect=$( ~ )という部分でRANDOM関数の結果を返しています。いざしょうぶ!.shbattle () { 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) }勝負の結果で表示される文言は本田とじゃんけんからまるパクしてます。
こんな感じです。実行部分
じゃんけん.shdoOrNotCheck 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つ以上から選択させるやつ
たくさんからえらぶ.shosascript -e 'display dialog choose from list {"グー", "チョキ", "パー","ダイナマイト", "ピストル", "つよいやつ","めっちゃ強いやつ"}'おわりに
かなりざっくり書いてしまっているのでわかりにくかったらすいません。
ユーザーの環境による値があるものだったり、特定の内容をAPIに飛ばしたり、いろいろできるのではないでしょうか。多分。
- 投稿日:2019-12-03T17:06:46+09:00
【Git】SourceTree嫌いがよく使うgitコマンド
【Git】SourceTree嫌いがよく使うgitコマンド
この記事は「ちゅらっぷす Advent Calendar 2019」の3日目です。
https://qiita.com/advent-calendar/2019/churappsSourceTree嫌い
えー唐突ですが私、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 -acheckout後に確認のために利用することが多いですかね
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ツールを利用した方が理解度高まるんじゃないかなと思ってます。上記で紹介したコマンドはどれも基本的なものですが、オプションがややこしいので何か気になる点などございましたらご指摘ください。
- 投稿日:2019-12-03T16:01:00+09:00
いまさら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!
おわり!
偉大な先人の知恵をお借りすることでつつがなく更新できた.最高!
おわり
- 投稿日:2019-12-03T13:17:11+09:00
共有作業のちょっとしたコツを教えるよ
人と共有するのって難しい
ファイル渡す、確認する、伝える…
ディレクター、デザイナー、エンジニア
育ってきた環境が違うから
すれ違いはしょうがない「自分の中では分かっているのにどう説明したらいいの」
「○○を△△でください」(えーやり直し…?)みたいな面倒くせーを無くしてサクサク進めるためのtips
まぁぐぐったら出てくる些細なことばっかりだよ!ごめんね!
Macでzipにパスワード
zipをターミナルコマンドで作成
パスワード付きzip$ zip -e -r ファイルに付ける名前.zip 対象のフォルダorファイル名 $ enter password?: パスワード入力すでにあるZipファイルにパスワードをかけるコマンドはあるが…
zipにパスワードをかける$ zipcloak -r "対象のzipファイル" $ enter password:Finderから作成したzipにパスワードをかけると
文字コードの違いで解凍できなくなる
「Mac zip パスワード」で出てくるんだけどね…
不可視ファイルを表示
触らないに越したことはない非表示ファイル
ショートカット[command] + [shift] + [.(ドット)]ターミナルで設定するとこう
$ defaults write com.apple.finder AppleShowAllFiles TRUE $ killall Finderbrewのインストール
Node.js使うときに入れてるので無意識?
AppStoreに無いもの使うとかバージョン切り替えるとか…ちょいちょい使うbrewインストール$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"GoogleDrive
ファイルを選んで…[shift] + [ z ]コピーと違って「複数のフォルダに所属させる」だけなのでファイル増えない
シンボリックリンク的な使い方ができる
作業フォルダからコピーとか事故のもとでしかない
Photoshop
画像の書き出し
レイヤー名でアセット書き出しをコントロールする
毎回書き出しとかしないpng32(透過あり)で書き出し***.png
png-24(透過なし)で書き出し****.png24
png32(透過あり)とjpgで書き出し***.png,****.jpgアイキャッチとコンテンツ用の出し分けとか
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倍のサフィックス]よく使うショートカット
cとかv以外も便利だけど意外と使われてない…
デフォルトのものレベル補正 [command] + [ l ] トーン補正 [command] + [ m ] クリッピングマスク [option] + [command] + [ g ] カーニング [shift] + [ → ] グリッド表示 [command] + [ @ ] ガイド表示 [command] + [ : ] ツール [ u ] ツール切り替え [shift] + [ u ] 選択ツール [ m ] 選択解除 [command] + [ d ]個別設定してるものレイヤースタイルのコピー [control] + [command] + [ c ] レイヤースタイルのペースト [control] + [command] + [ v ]XDの共有機能
アセットの共有
リアルタイムで共同編集できるようになったけど事故は起きます
マスターファイルのアセット作っていくときに楽になるショートカットアセット作成ショートカット[shift] + [command] + [ t ] テキストスタイルの作成 [shift] + [command] + [ k ] コンポーネントの作成 [shift] + [command] + [ c ] カラースタイルの作成誰に見せるかで共有モードを選ぶ
デザインレビュー プレゼンテーション 開発 ユーザーテスト 対象 ディレクター・企画 社外・利権者 エンジニア テストユーザー ヒント表示 ✅ ✅ ✅ ❌ コメント ✅ ❌ ✅ ❌ ナビゲーション制御 ✅ ✅ ✅ ❌ 全画面表示 ❌ ❌ ✅ ✅ デザインスペックの表示 ❌ ❌ ✅ ❌ 動きの伝え
見て自然に入ってくる動きの法則をまず守ってみる
無意識に感じる向きや動きを基本に動く方向
・画面左(下手)ネガティブ
・画面右(上手)ポジティブ
・時計回りbefore → Afterと視線誘導するとするっと伝わる
左から右に向かって行くと正の方向だと認識する
メリーゴーランドはアメリカ製以外は時計回り
時計回りは手前だけを見ると右から左に見える自然なイージングをかける
動き 始め 終わり 落とす ease-in(衝突) (反跳)ease-out 爆発 ease-out linear 消える ease-in linear 注意喚起 ease-in(表示) ease-out(消え) おだやか ease-in-out (少し止める) なんだか違和感と思ったらこんな感じで
視線の動きに逆らわない
画面静止時
左上から右上、左下から右下とZの形で動く
画像とテキストの並べ方で同じ文章でも印象が変わる
スクロール中
左上に視線が集中する
優先度の高い内容は一文にしすぎず短く並んだボタン
左をみてから右の内容を比較する
肯定、誘導したいアクションは右に配置する方がCTR高いまとめ
細々したことだけど少しでもストレスフリーで仕事しよう
サーバーエンジニア出身のデザイナー目線でお送りしました
- 投稿日:2019-12-03T13:17:04+09:00
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
- 投稿日:2019-12-03T12:22:49+09:00
Macで隠しファイルを表示する
- 投稿日:2019-12-03T10:07:10+09:00
【Mac】Eclipse.app は壊れている?
EclipseをApplicationsから起動しようとすると、
「Eclipse.app は壊れているため開けません。ゴミ箱に入れる必要があります。」
というエラーメッセージが表示され、起動することができなくなってしまった場合、次のコマンドで拡張ファイル属性(Extended Attributes;EA)を除去することで起動可能。
xattr -d com.apple.quarantine Eclipse.app/
なお、拡張ファイル属性(Extended Attributes;EA)は次のコマンドを実行することで確認可能。
xattr Eclipse.app/
※一番簡単な方法は、Ctrlキーを押しながらクリック!!
- 投稿日:2019-12-03T00:46:12+09:00
【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 support3. ディレクトリやファイルの権限を 「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コマンド集】
- 投稿日:2019-12-03T00:46:12+09:00
【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 support3. ディレクトリやファイルの権限を 「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コマンド集】