Windows Terminal × NYAGOS × Scoop = ♥
アルファ・ベータ・オメガの割り振りはご想像にお任せします 😄 って,そういう話ではない。
さて,職場で Windows 10 機を支給されたので,とりあえず ATOM エディタと NYAGOS を入れたいわけですよ。
Windows 10 に ATOM を入れる
まぁこちらはサラッと。
公式ページからインストーラを取ってきて普通にインストールすればいいだけ。
なのだが,何故か Windows 版はコマンドラインからの起動が冷遇されているのよ。
古いバージョンにはあった atom.cmd
がなくなっている。
じゃあ,どうやって起動するのかというと “System Settings” で
てな感じにエクスプローラ等のコンテキストメニューから開けるように設定できる。 また ATOM が起動している状態でタスクバーの ATOM アイコンをピン留めしておけば
みたいな感じにコンテキストメニューを展開できる。
困るのが apm
コマンドなのだが,これにはパスを通さずに直接カレントまで降りて操作するしかないだろう。
v1.52.0 なら
$ cd C:\Users\username\AppData\Local\atom\app-1.52.0\resources\app\apm\bin
まで降りる。 この場所で apm を使ってログインできる。
$ apm login
Welcome to Atom!
Before you can publish packages, you'll need an API token.
Visit your account page on Atom.io https://atom.io/account,
copy the token and paste it below when prompted.
Press [Enter] to open your account page on Atom.io.
ここで [Enter]
キーを押すと Web ブラウザでアカウントページが開く(要 GitHub アカウント)。
開かない場合は Web ブラウザで直接 https://atom.io/account
を開く。
アカウントページに表示されたアクセス・トークンを入力すればログイン完了。
Token> ****************
Saving token to Keychain done
あとは
$ apm stars --install
で ⭐ を付けたパッケージをまとめてインストールできる。 ちなみに,どのパッケージに ⭐ を付けたかは
$ apm stars
で確認できる。 その他の細々した設定は Gist に貼り付けておいたのを流用した。 なんでも取っておくものである 😄
Windows Terminal のインストール
これでようやく「メモ帳」から脱することができたので,本格的に環境を作っていこう。
かつて Windows 7 を使ってた頃はターミナル・エミュレータに ConEmu を使っていたが,本家 Microsoft からようやくまともなターミナル・エミュレータがリリースされた。
Windows Terminal は Microsoft Store からインストールできる。 ひとまずこれをインストールして起動し,既定の PowerShell 上で作業する。
Scoop のインストール
Scoop は Windows 用のパッケージ・マネージャである。 Windows 用のパッケージ・マネージャといえば Chocolatey が有名だが,今回は Scoop で。 Scoop の特徴は以下の通り。
では早速。
まずは PowerShell でスクリプトを起動できるよう権限を取得する。
PS > Set-ExecutionPolicy RemoteSigned -scope CurrentUser
既に許可を取得している場合はこの操作は不要である。 そうしておいて Scoop をインストールする。
PS > iwr -useb get.scoop.sh | iex
これで OK。 簡単!
NYAGOS のインストール
NYAGOS のインストールは scoop install
コマンドで一発 OK。
PS > scoop install nyagos
よーし,うむうむ,よーし。
Windows Terminal に NYAGOS を登録する
Windows Terminal では PowerShell を含む複数の shell を登録できる。
まずは [Ctrl+,]
で config.json
ファイル(のコピー)がメモ帳で表示される(コメントを端折っているので注意)。
これを編集して NYAGOS を登録するのだ。
具体的には以下の部分を追記する。
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"copyOnSelect": false,
"copyFormatting": false,
"profiles":
{
"defaults":
{
},
"list":
[
{
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false
},
{
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "コマンド プロンプト",
"commandline": "cmd.exe",
"hidden": false
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
},
{
"guid": "{19ddaf5e-e045-481a-bf88-37f7ebe66292}",
"hidden": false,
"name": "Nihongo Yet Another GOing Shell",
"commandline": "%USERPROFILE%\\scoop\\apps\\nyagos\\current\\nyagos.exe",
"cursorShape": "vintage",
"startingDirectory": "%USERPROFILE%"
}
]
},
"schemes": [],
"actions":
[
{ "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
{ "command": "paste", "keys": "ctrl+v" },
{ "command": "find", "keys": "ctrl+shift+f" },
{ "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }
]
}
ちなみに guid
項目はローカルマシン内で一意であればなんでもいいのだが(上の記述をそのままコピペしても無問題),気になるのであれば PowerShell の以下のコマンドで取得できる。
PS > New-Guid
Guid
----
6c48ee13-e32b-4937-95a5-7e95a2e88613
更に config.json
ファイル(のコピー)の
{
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
}
の部分を NYAGOS の GUID に書き換えれば
{
"defaultProfile": "{19ddaf5e-e045-481a-bf88-37f7ebe66292}",
}
Windows Terminal の既定の shell を NYAGOS にできる。
編集した config.json
ファイル(のコピー)を保存すれば設定が反映される。
ふぃー,よーやくここまでたどり着いた。
NYAGOS を使った楽しいアレコレは以下の Zenn 本に書かれている。
上述のセットアップについても,もう少し丁寧に書かれているので,是非どうぞ。
Go で GUID を取得する
そういや Go の github.com/google/uuid
パッケージを使えば UUID を取得可能だが, UUID は実質 GUID と同じなので,これを利用して
package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
fmt.Println(uuid.New())
}
とすれば簡単に UUID/GUID が取れる。
$ go run sample.go
f6bdc505-e417-4b7d-a247-a06504cf03a9
Scoop を使うなら git は必須
これでインストールは全て完了だが,今後のためにもう少し Scoop で遊んでみよう。
まず Scoop のバージョンを見ようとしたら
$ scoop -v
Current Scoop version:
git : 用語 'git' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください
。
発生場所 行:1 文字:1
+ git --no-pager log --oneline HEAD -n 1
+ ~~~
+ CategoryInfo : ObjectNotFound: (git:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
って,どエラ怒られた(笑) どうやら Scoop はパッケージ管理を git ベースで行っているらしく,ちゃんと使うなら git の導入が必須のようだ。 ほんじゃあ,まぁ
$ scoop install git
Scoop uses Git to update itself. Run 'scoop install git' and try again.
...
おっ,アップデートした後にもっかいやれって言ってるな。 ならば,アップデートしよう。
$ scoop update
Updating Scoop...
Updating 'main' bucket...
Checking repo... ok
The main bucket was added successfully.
Scoop was updated successfully!
'itcode"' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
exit status 1
おりょ,また変なエラーが出たよ。
itcode"
云々というのは PowerShell 絡みらしい。
なので,同じコマンドを PowerShell 上で走らせれば問題なく完了する。
うむ,次回から気をつけよう。
これでもっかい
$ scoop update git
とすれば,最新版が取れるわけだ。
ついでに Scoop で GnuPG もインストールする
ついでに Scoop で GnuPG もインストールしてみよう。 あるかな?
$ scoop search gnupg
'main' bucket:
gnupg (2.2.23)
gnupg1 (1.4.23)
$ scoop search gpg
'main' bucket:
gnupg1 (1.4.23) --> includes 'gpg.exe'
gpg (2.2.23)
どっちだよ(笑)
実はこれ,中身は同じなのだが別々のパッケージとしてインストールされちゃうようだ。 ふむむー。
まぁ,いいや。
今回は gnupg
で。
$ scoop install gnupg
Installing 'gnupg' (2.2.23) [64bit]
...
Linking ~\scoop\apps\gnupg\current => ~\scoop\apps\gnupg\2.2.23
Persisting home
'gnupg' (2.2.23) was installed successfully!
Scoop で提供されるパッケージのうち,シングルバイナリのコマンドは %USERPROFILE%\scoop\shims
フォルダに集められるのだが, GnuPG のように複数のバイナリで構成されているものは専用のフォルダを作り環境変数 PATH
にインストールしたフォルダを追加するようだ。
その際に
Linking ~\scoop\apps\gnupg\current => ~\scoop\apps\gnupg\2.2.23
のように current
フォルダをシンボリックリンクとして設置することで複数のバージョンに対応できるようにしているみたい。
GnuPG の動作確認をしておこう。
$ gpg --version
gpg (GnuPG) 2.2.23
libgcrypt 1.8.6
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: C:/Users/username/scoop/apps/gnupg/current/home
サポートしているアルゴリズム:
公開鍵: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
ハッシュ: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮: 無圧縮, ZIP, ZLIB, BZIP2
上述の Home
だが,これもシンボリックリンクが切られていて,実体は %USERPROFILE%\scoop\persist\gnupg\home
にある。
【2020-11-02 追記】 GnuPG については以下の記事でもう少し掘り下げて紹介している。
今回はここまで
おっと。 昼休憩が終わったようだ。 次回があれば,また今度。
ブックマーク
- lukesampson/scoop: A command-line installer for Windows.
- Windows用のコマンドラインインストーラScoop - Qiita
- Scoopを使ったWindows環境構築のススメ - Super!! - Qiita
- GUID生成ツール
- /bin/shに慣れた人に贈るバッチファイルの書き方
- ScoopでWindowsにおける開発環境構築を最適化しよう | さにあらず
- scoopを使ったwindows環境構築の実例 - Qiita
- Scoop で Git と SourceTree をインストール - ありふれた備忘録
参考図書
- 暗号化 プライバシーを救った反乱者たち
- スティーブン・レビー (著), 斉藤 隆央 (翻訳)
- 紀伊國屋書店 2002-02-16
- 単行本
- 4314009071 (ASIN), 9784314009072 (EAN), 4314009071 (ISBN)
- 評価
20世紀末,暗号技術の世界で何があったのか。知りたかったらこちらを読むべし!
- 暗号技術入門 第3版 秘密の国のアリス
- 結城 浩 (著)
- SBクリエイティブ 2015-08-25 (Release 2015-09-17)
- Kindle版
- B015643CPE (ASIN)
- 評価
SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。