Windows Terminal × NYAGOS × Scoop = ♥

no extension

アルファ・ベータ・オメガの割り振りはご想像にお任せします 😄 って,そういう話ではない。

さて,職場で Windows 10 機を支給されたので,とりあえず ATOM エディタと NYAGOS を入れたいわけですよ。

Windows 10 に ATOM を入れる

まぁこちらはサラッと。

公式ページからインストーラを取ってきて普通にインストールすればいいだけ。 なのだが,何故か Windows 版はコマンドラインからの起動が冷遇されているのよ。 古いバージョンにはあった atom.cmd がなくなっている。

じゃあ,どうやって起動するのかというと “System Settings” で

System Settings in ATOM
System Settings in ATOM

てな感じにエクスプローラ等のコンテキストメニューから開けるように設定できる。 また ATOM が起動している状態でタスクバーの ATOM アイコンをピン留めしておけば

ATOM icon in task bar
ATOM icon in task bar

みたいな感じにコンテキストメニューを展開できる。

困るのが 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 の特徴は以下の通り。

  • 利用に管理者権限は不要!
  • 実行ファイルは ~\scoop\shims に集約され、環境変数 PATH の肥大化が抑制される
  • インストーラのセットアップが簡単
  • nyagos が公式レポジトリにある (Chocolatey にもあるけど)
scoop / nyagos で始めるコマンドライン生活より

では早速。

まずは 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\\shims\\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 を取得する

そういや Gogithub.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

とすれば,最新版が取れるわけだ。

ついでに ScoopGnuPG もインストールする

ついでに ScoopGnuPG もインストールしてみよう。 あるかな?

$ 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 については以下の記事でもう少し掘り下げて紹介している。

今回はここまで

おっと。 昼休憩が終わったようだ。 次回があれば,また今度。

ブックマーク

参考図書

photo
暗号化 プライバシーを救った反乱者たち
スティーブン・レビー (著), 斉藤 隆央 (翻訳)
紀伊國屋書店 2002-02-16
単行本
4314009071 (ASIN), 9784314009072 (EAN), 4314009071 (ISBN)
評価     

20世紀末,暗号技術の世界で何があったのか。知りたかったらこちらを読むべし!

reviewed by Spiegel on 2015-03-09 (powered by PA-APIv5)

photo
暗号技術入門 第3版 秘密の国のアリス
結城 浩 (著)
SBクリエイティブ 2015-08-25 (Release 2015-09-17)
Kindle版
B015643CPE (ASIN)
評価     

SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。

reviewed by Spiegel on 2015-09-20 (powered by PA-APIv5)