Ubuntu Desktop 22.04 の開発環境の構築メモ

## はじめに

開発環境としての Ubuntu Desktop 22.04 LTS 日本語 Remix のインストールメモです。

インストール先のマシンは以下です。

* Thinkpad T14s Gen 4

## インストール
以下の記事を参考にしつつインストール。(Persistent file size を 4GBほど設定)
[【2023年版】UbuntuのUSBインストールメディアを作成](https://rtc-fukushima.jp/technical/6671/ )

USBメモリにUbuntu 22.04 日本語 Remix を入れて、
起動直後にF1でBIOSでセキュアブートをOFFにして、
再起動後にF12でUSBメモリを選択してブートでインストーラを起動。

解像度が640x480固定になっていて見切れていたので、Alt+F7を使いながらウィンドウを動かしてインストール。

## OSを最新にする

Ubuntu Software から諸々最新にする。
最初は無線LANが使えず、ディスプレイも正確に認識していなさそうだったが、ThinkPad Gen2のデバイス関連のアップデートで解決した。

## ホームディレクトリ内の日本語のディレクトリ名を英語に変更

「端末」から以下のコマンドを実行。

```bash
$ LANG=en_US.utf8 xdg-user-dirs-gtk-update
```

そして、上記実行後に「Update standard foloders to current language?」というウィンドウが出たので、「Update Names」ボタンを押下。

## 左 Ctrl キーと Caps Lock キーの入れ替え

```bash
$ sudo apt install gnome-tweaks
```

アクティビティから「Tweaks」を起動。

「キーボードとマウス」メニューの「追加のレイアウトオプション」で「Caps Lock behavior」の「Make Caps Lock an additional Ctrl」を選択。

## Google Chrome のインストール

```bash
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
```

## Slack のインストール

```bash
$ sudo snap install slack
```

## fish のインストール

参考記事: [fish shellが結構良かった話](https://qiita.com/hennin/items/33758226a0de8c963ddf)

```bash
$ sudo apt install fish
$ fish
$ fish_config
```

ブラウザで fish shell configuration が表示されるので、「prompt」で「Informative Vcs」を設定。
そして、~/.bashrc に以下を追記。

```bash
exec fish
```

対話式で bash を使いたい場面があったときに、上記設定をすると `bash` を実行しても `fish` が起動してしまうため、対話式で bash 　を fish 内で使うときは `~/.bashrc` を読み取らないように `~/.config/fish/config.fish` に以下を追記。

```bash
alias bash="bash --norc"
```

fisher をインストール。

```fish
$ sudo apt install curl
$ curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
```

## Emacs のインストール

以下のように Emacs 27 をインストール。(※)

```bash
$ sudo snap install --classic --beta emacs 
$ sudo apt install emacs-mozc-bin
```

.emacs を以下のように設定。

```elisp
; package.el
(require 'package)
;; MELPAを追加
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;; MELPA-stableを追加
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
;; Marmaladeを追加
(add-to-list 'package-archives  '("marmalade" . "https://marmalade-repo.org/packages/"))
;; Orgを追加
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
;; 初期化
(package-initialize)


; 細かい設定
;; site-lisp path
(add-to-list 'load-path "~/.emacs.d/site-lisp")
;;not make backup files
(setq make-backup-files nil)
;; tab width 2
(setq-default tab-width 2 indent-tabs-mode nil)

;日本語入力
;; https://qiita.com/Maizu/items/fee34328f559c7dc59d8#emacs-mozc
;;半角全角キーで日本語入力をすると、日本語入力モードで `Ctrl + [なにか]` をやるときにうまく動作しない。
;;また、`Ctrl + \` での日本語入力モードだと、「ん」を入力するときにうまくいかない。
;;上記を解決するために emacs-mozc をインストールする。
(require 'mozc)                                 ; mozcの読み込み
(set-language-environment "Japanese")           ; 言語環境を"japanese"に
(setq default-input-method "japanese-mozc")     ; IMEをjapanes-mozcに
(prefer-coding-system 'utf-8)                   ; デフォルトの文字コードをUTF-8に(require 'mozc)
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages (quote (mozc))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
```

`M-x package-list-packages` で以下をインストールする

* mozc

※ `$ sudo snap install emacs --classic` で実行すると Emacs 26 がインストールされるが、`M-x package-list-packages` の実行で Segmentation fault で落ちる問題にぶつかった。([解決のために参考にしたIssue](https://github.com/alexmurray/emacs-snap/issues/12))

## PhpStorm のインストール

Ubuntu Software から PhpStorm を検索してインストール。

プラグインは以下を入れている。

* [.env files support](https://plugins.jetbrains.com/plugin/9525--env-files-support)
* [GitLink](https://plugins.jetbrains.com/plugin/8183-gitlink)

## nvm のインストール

以下のコマンドを実行して nvm をインストール。

```fish
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
$ fisher install jorgebucaran/fish-nvm 
```

Node.js と npm をインストール。

```fish
$ nvm install 12.11.0
$ node -v
v12.11.0
$ npm -v
6.11.3
```

起動時にv12.11.0にする。
~/.config/fish/config.fish に以下を追記。

```fish
nvm use 22.14.0 > /dev/null
```

## Yarn のインストール

「[インストール|Yarn](https://yarnpkg.com/ja/docs/install#debian-stable)」を参考にしてインストール。

```fish
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn
```

## Java のインストール

### OpenJDK 11 のインストール

```fish
$ sudo apt install openjdk-11-jdk
```

## git の設定

```fish
$ sudo apt install git
$ git config --global user.name "ユーザ名"
$ git config --global user.email "メールアドレス"
$ git config --global core.editor "emacs"
```

## ssh の設定

ファイルサーバーからGitHub の秘密鍵を ~/.ssh にコピーする。
その後、以下のコマンドを実行して、オーナーユーザーの読み取り権限のみを秘密鍵に設定。

```bash
$ chmod 400 ~/.ssh/id_rsa
```

パスフレーズを毎回入力しなくて済むようにする

```bash
$ ssh-add ~/.ssh/id_rsa
$ ssh-add -l
```

## Docker のインストール

以下を読みながら、いい感じにインストールしました

* [Get Docker Engine - Community for Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/)

## PHP のインストール

```fish
$ sudo apt install php
$ php -v
PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
```

## Peek のインストール

デスクトップ画面を GIF キャプチャできるように Peek をインストールします。

```bash
$ sudo add-apt-repository ppa:peek-developers/stable

$ sudo apt update
$ sudo apt install peek
```

参考資料
[GIF形式でのキャプチャが簡単にできるPeekをUbuntuにインストールする手順と使い方](https://www.virment.com/install-use-peek-gif-recorder-ubuntu/)

## Ruby のインストール

```fish
$ sudo apt install ruby
$ sudo gem install bundler
```

## Python のインストール

```fish
$ sudo apt install python3
```

## zoom のインストール

[Zoom のサイト](https://zoom.us/download)から deb ファイルをダウンロード。

```fish
$ sudo apt install ./zoom_amd64.deb
```

参考資料
[Installing or updating Zoom on Linux](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063458#h_89c268b4-2a68-4e4c-882f-441e374b87cb)

## Visual Studio Code のインストール

snap 版だと nvm の参照先が `~/snap/code/185/.local/share/nvm` などになってしまう。
deb 版をインストールする。

```fish
sudo apt install wget gpg -y
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt update
sudo apt install code
```