量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

WSLのUbuntu環境にasdfを導入

初めに

複数の言語やツールのバージョンを一元管理できるバージョンマネージャー「asdf」をWSLのUbuntu環境に導入しました。

本記事はWSLのUbuntu環境の構築とHomeBrewのインストールが前提となっています。 rms-099.hatenablog.jp rms-099.hatenablog.jp


asdfとは

asdfはGolang・Java・Node.js・Pythonなど様々な言語やツールのバージョンをプラグイン形式で一元管理できるバージョンマネージャーです。

バージョンマネージャーは次のように各言語ごとに用意されていますが、個々にインストールするのは勿論のこと各々の環境変数をrcファイルに定義したり各マネージャーごとにサブコマンドが異なったりするので、その点においてasdfは便利です。

  • Golang ⇒ g, goenv
  • Java ⇒ javm, jenv
  • Node.js ⇒ n, nodebrew, nodenv, nvm
  • Python ⇒ pyenv

実はv0.16.0以降で大規模な刷新が行われ、それまでのBashスクリプトの集合体からGo言語でコンパイルされた単一バイナリへと生まれ変わったようです。


インストール

HomebrewからインストールするのがWSL環境では最も簡単です。

brew install asdf

~/.zshrcへの設定

旧バージョン(v0.15.0以前)ではBashスクリプトをsourceする以下の記述が必要でした。

# 旧バージョンの書き方(v0.15.0以前)
. "$(brew --prefix asdf)/libexec/asdf.sh"

v0.16.0以降はasdf本体がシェルスクリプトからバイナリに変わったため、上記の書き方は使えません。代わりにshimsディレクトリをPATHに追加する形式になりました。

# 新バージョンの書き方(v0.16.0以降)
export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"

追記後、設定を反映させます。

source ~/.zshrc

基本的な使い方

プラグインの追加

次のコマンドでGo言語のプラグインをインストールできます。

asdf plugin add golang

インストール可能なバージョンの一覧表示

asdf list all golang

指定バージョンのインストール

asdf install golang 1.24.0

バージョンの設定

旧バージョンでは globallocal といったサブコマンドを使っていましたが、v0.16.0以降は set に統一されたようです。

# 旧バージョンの書き方(v0.15.0以前)
asdf global golang 1.24.0
asdf local golang 1.24.0

# 新バージョンの書き方(v0.16.0以降)
asdf set golang 1.24.0          # カレントディレクトリの.tool-versionsに書き込む
asdf set -u golang 1.24.0       # グローバル設定(~/.tool-versionsに書き込む)

現在のバージョン確認

asdf current

WSL外からGoのビルドを実行する

WSL2ではPowerShellやコマンドプロンプトからwslコマンドを介してWSL内のコマンドを直接呼び出せます。

wsl go build ./...

Goプロジェクトのルートディレクトリでこのコマンドを実行すると、WSL内にインストールされたGoでビルドが行われます。

Windows側のパスをWSL内に渡す場合はwslpathコマンドでパスを変換できます。

wsl go build $(wsl wslpath -u 'C:\Users\username\project')

複数のディストリビューションをインストールしている場合は-dオプションで対象を指定できます。

wsl -d Ubuntu go build ./...

WSLのUbuntu環境にHomebrewをインストール

初めに

MacBookでおなじみのパッケージマネージャーであるHomebrewをWSLのUbuntu環境に導入しました。MacBookと同じ感覚でパッケージ管理ができるようになります。

本記事はWSLのUbuntu環境を構築することが前提となっています。 rms-099.hatenablog.jp


依存パッケージのインストール

sudo apt update && sudo apt install -y build-essential curl git

Homebrewのインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

~/.zshrcへのパス設定

インストール完了後、~/.zshrc に以下を追記します。

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

追記後、設定を反映させます。

source ~/.zshrc

動作確認

brew --version
brew doctor

brew doctorYour system is ready to brew. と表示されれば正常です。

WindowsにWSLでUbuntu環境を構築

初めに

WindowsPCでWSL(Windows Subsystem for Linux)を有効化し、Ubuntu環境を構築しました。またデフォルトシェルはBashですが、MacBookとの操作感を統一するためZshに変更しました。


WSLの有効化とUbuntuのインストール

PowerShellを管理者権限で開き、以下を実行します。

wsl --install

デフォルトでUbuntuがインストールされます。

インストール後はPCを再起動し、Ubuntuを起動してユーザー名とパスワードを設定します。


WSLのバージョン確認

PowerShellまたはコマンドプロンプトで以下を実行します。

wsl -l -v

出力例:

  NAME      STATE           VERSION
* Ubuntu    Running         2

VERSION 列が 2 であればWSL2として動作しています。* は現在のデフォルトのディストリビューションを示しています。

もし VERSION1 だった場合は以下のコマンドでWSL2に変換できます。

wsl --set-version Ubuntu 2

Zshのインストールとデフォルトシェルの変更

Zshのインストール

まずパッケージリストを更新してからZshをインストールします。

sudo apt update && sudo apt install -y zsh

デフォルトシェルをZshに変更

chsh -s $(which zsh)

変更を反映させるためにUbuntuを再起動(ウィンドウを閉じて再度開く)します。

初回起動時にZshの設定ウィザードが表示された場合、0 を入力すると空の ~/.zshrc が生成されます。

動作確認

echo $SHELL
# /usr/bin/zsh と表示されればOK

CCleanerからストレージセンサーへ

CCleaner

10年ほど前に購入したWindowsノートPCではCCleanerを使って不要ファイルの削除や履歴の消去を行っていました。 一時期は有償のPro版を使用したりと重宝していたんですが、タスクマネージャーで確認するとCPUをそこそこ使用していたり再インストール時にAvastのインストールを求められたりするのが気になっていました。

ストレージセンサー

今年購入したWindowsノートPCにはストレージセンサーという機能が標準搭載されています。 一時ファイルを自動的に削除してくれるようなので、今回はこれをオンにしました。 ただし今のところ効果を実感できる場面はありません。 バックグラウンドで動いているはずなので、ディスクがある程度埋まってきたときに真価を発揮するのかもしれません。

最近使ったファイルの履歴を消去

CCleanerには最近使ったファイルの履歴を消去する機能がありましたが、ストレージセンサーにはその機能がありません。 そこで代替手段としてグループポリシーエディターを使い、「終了時に最近使ったファイルの履歴を消去する」設定をオンにしました。

グループポリシーエディター_終了時に最近使ったファイルの履歴を消去する
「Windowsキー」+「R」を押して【ファイル名を指定して実行】ダイアログを開き、「gpedit.msc」と入力して「OK」すればグループポリシーエディターを開くことができますが、WindowsがPro版じゃないと使用できないかもです。

WindowsのPCを買い替えたのでLINEアプリのトーク履歴を移行してみた

はじめに

WindowsPCを10年ぶりに買い替えたついでに、LINEのトーク履歴も移行してみました。
LINEのPC版はスマートフォン版と異なり、クラウドへの自動バックアップに対応していないため、手動でファイルをコピーする必要があります。
この記事では実際に確認した手順を元に古いWindowsPCから新しいWindowsPCへLINEのメッセージ履歴を移行する方法を紹介します。

用意するもの

  • 古いPCと新しいPCの両方が使える状態であること
  • USBメモリまたは外付けHDDなど、ファイルを一時的に保存できる外部メディア

手順1:古いPCから3つのフォルダをコピーする

エクスプローラーのアドレスバーに以下を入力してEnterキーを押します。

%LOCALAPPDATA%

このフォルダ( C:\Users\<ユーザー名>\AppData\Local に相当)の中から以下の3つのフォルダを探してUSBメモリにコピーします。

フォルダ名 内容
--- ---
LINE トーク履歴・設定データ
LineCall 通話関連データ
LineMediaPlayer メディアプレーヤー関連データ

AppData フォルダが見えない場合、エクスプローラーの「表示」メニューから「隠しファイル」を表示する設定にする。

手順2:新しいPCの%LOCALAPPDATA%に3つのフォルダを貼り付ける

※この手順は新しいPCにLINEをインストールするに行う。

新しいPCでも同様にエクスプローラーのアドレスバーに %LOCALAPPDATA% と入力し、USBメモリからコピーした上述の3つのフォルダを貼り付けます。

手順3:新しいPCにLINEをインストールして起動する

公式サイトからLINEをダウンロードしてインストールします。

インストール後にLINEを起動すると、各トークに過去のメッセージ履歴が表示された状態でログインできます。

手順4:古いPCからLINEをアンインストールする

新しいPCへの移行が完了したら、古いPCのLINEをアンインストールします。
アンインストールすると、古いPC内に残っていたLINEのキャッシュデータも合わせて削除されます。

※同一アカウントが複数のPCで同時にログイン状態になっていると、意図しない動作につながる場合があります。

おわりに

手順をまとめると以下のとおりです。

  1. 古いPCの %LOCALAPPDATA% から LINE | LineCall | LineMediaPlayer の3フォルダをUSBメモリにコピー
  2. 新しいPCの %LOCALAPPDATA% に3フォルダを貼り付け(LINEインストール前に行う)
  3. 新しいPCにLINEをインストールして起動 → トーク履歴が引き継がれた状態で使用開始
  4. 古いPCからLINEをアンインストール

push済みコミットをリモートから消す方法

最近AIに頼ってばっかりで毎回同じことを聞いてしまうことがあるのでメモしておく。

状況

不要なコミットをpushしてしまった。ローカルだけでなくリモートの履歴からも取り除きたい。

手順

1. ローカルで巻き戻す。

直前の1件を取り消す。

git reset --hard HEAD~1

直前の3件を取り消す。

git reset --hard HEAD~3
2. リモートを上書きする。
git push --force-with-lease origin <ブランチ名>
オプション 動作
--force ローカルの内容でリモートを必ず上書きする。
--force-with-lease リモートがローカルと一致している時だけpushする。他人が先にpushしていれば失敗するので、誤って上書きしにくい。

Githubのリポジトリのフォークを一覧表示

ブラウザだとアルファベット順でしか表示できなさそう。
コマンドならばソート条件をいくつか指定できる。
例えば以下の例だとウォッチャー数の大小順となる。

curl https://api.github.com/repos/owner/repo_name/forks?sort=watchers