Skip to content
This repository has been archived by the owner on Mar 30, 2024. It is now read-only.

Commit

Permalink
Reconstruct posts and transfered old posts to this site
Browse files Browse the repository at this point in the history
  • Loading branch information
paveg committed Mar 23, 2024
1 parent 6f15bd9 commit cc778aa
Show file tree
Hide file tree
Showing 15 changed files with 1,587 additions and 19 deletions.
17 changes: 1 addition & 16 deletions components/category-badge.tsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,10 @@
import { Badge } from './ui/badge';
import { ALL_CATEGORIES } from '@/utils/constants';

type Props = {
badgeString?: string;
};

type CategoryTypes =
| 'technology'
| 'programming'
| 'productivity'
| 'lifestyle'
| 'gadgets'
| 'other';
const ALL_CATEGORIES = [
'technology',
'programming',
'productivity',
'lifestyle',
'gadgets',
'other',
];

function isSuit(value: string) {
return ALL_CATEGORIES.includes(value);
}
Expand Down
243 changes: 243 additions & 0 deletions content/posts/2023/fish-to-zsh.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
---
title: Go back to zsh from fish in 2023
description: '2023年にfishからzshへで戻ったのでそのことについてのメモなどを書きます'
publishedDate: 2023-09-12
lastUpdatedDate: 2024-03-23
heroImage: https://funailog.imgix.net/2023/terminal.png?auto=format,compress,enhance
category: programming
isPublished: true
---

dotfiles[^1]って本来頻繁に弄るべきではないと思いつつ、いくらでも改善できるので時間を忘れて弄りがちですね。

昨今、「生産性」や「作業効率」、「自動化・省力化」などの単語やDXといった言葉もあらゆる場面で耳にするようになりました。
その中でもITエンジニアは、最も効率化や自動化を行って生産性を高められる職種であると思います。

プログラマの三大美徳(「怠惰」「短気」「傲慢」)にもあるように、同じ事を何度も繰り返さずに楽をするために努力する、生産性を意識することはある種プログラマにとっては必須のスキルでもあると考えます。

生産性を高めればこそ、より多くの時間を確保できるようになり、より多くのことに取り組むことができるので、スキルアップにも最適と言えます。

## fishとは?

fishは、[fish shell](https://fishshell.com/)と呼ばれるシェルの一種で、 Friendly interactive shellの略称です。
普段何気なく利用しているシェルは、bashやzshなどが多いと思いますが、fishはその中でも比較的新しいシェルです。

- **ユーザーフレンドリー**
- **対話的利用**

上記の2つを意識して作られており、利用当時は設定もほぼ不要なため非常に楽に導入して利用することが可能です。

ただ一方で **POSIX[^2]非互換** という致命的な問題も抱えています。そのため、bashの際に使ってたシェルスクリプトが動かないなどの問題が発生することもあります。
私自身は、約2年ほどfishを利用しました。細かい問題はありつつ、それなりに使えるシェルだと思っていました。

## なぜfishを辞めるのか

理由は幾つかありますが、大きく言えば全体を見たらそこまで効率的なシェルではないと感じたからです。

スクリプト互換性の問題は、個人的には致命的な問題でした。fishを利用していると、bashで書かれたスクリプトが動かないことが多々ありました。
会社で利用するスクリプトなどの互換性がないと、その度自分で書き換えることになりfishのシンタックスに苛つきを覚えつつも書き換えていました。

またログインシェルをfishに変えると、POSIX非互換のためか問題に頻繁に遭遇しました。

[デフォルトシェルをfishに変えるな](https://sa-nitawaki.medium.com/%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%92fish%E3%81%AB%E5%A4%89%E3%81%88%E3%82%8B%E3%81%AA-d9233b39335e)

## fishからzshへ

2023年のシェル事情をざっくり調べてみましたが、あまりトレンドに変化はないように感じます。気になったのは以下です。

- [nushell](https://www.nushell.sh/)
- bash

結局POSIX非互換という部分が強く、代替シェルは選択肢にあがりませんでした。そのため、zshに戻ることにしました。

非互換という理由だけに留まらず、MacOSのデフォルトシェルがzshになったことも大きな理由です。恐らく、今後もzshはトレンドとして継続していくと思われます。

## 環境構築

### zshのインストール

```bash
sudo apt update -y && sudo apt install zsh
```

そして、ログインシェルに設定します。

```bash
chsh -s /bin/zsh
```

zshについては各ファイルを細かく分割するとか、プラグインを利用するとか、分割後のファイルをコンパイルして読み込み速度を早くするようなアレがあるんですが、ここでは一旦省略します。

```bash
> tre -a zsh.d
zsh.d
├── .zprofile
├── .zshenv
├── .zshrc
├── README.md
└── mods
├── alias.zsh
├── core.zsh
├── func.zsh
├── history.zsh
├── keybind.zsh
├── local.zsh
├── plugin.zsh
└── util.zsh
```

### XDG Base Directory の設定

https://wiki.archlinux.jp/index.php/XDG_Base_Directory

明示的に以下の環境変数を設定しておきます。デフォルト準拠です。

```bash
# XDG Base Directory
export XDG_CONFIG_HOME=$HOME/.config
export XDG_CACHE_HOME=$HOME/.cache
export XDG_DATA_HOME=$HOME/.local/share
```

### promptの設定

starshipで設定します。

```bash
curl -sS https://starship.rs/install.sh | sh
```

上記を実行後、設定ファイルを作成し想定するパスに配置します。

### asdfの設定

各言語ランタイムについては、複数プロダクトで異なるものを利用する可能性があるため、バージョン管理が必須です。
asdfで管理するため、設定しておきます。

公式に従って以下を実行後に、 `.zshrc` に読み込む設定を追加します。

```bash
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0
```

### ghqの設定

https://github.com/x-motemen/ghq

各種リポジトリを管理するために、ghqを利用します。asdfからgoをインストール後、以下を実行します。
GHQのルートディレクトリは、HOMEにしています。go getでインストールすると、デフォルトでHOME配下にインストールされるためです。

```bash
go install github.com/x-motemen/ghq@latest
```

### fzfの設定

fzfのリポジトリをghq配下にcloneしたあとに、ルートディレクトリへ移動して以下を実行します。
あとは全部yesで良いです。その後自分の好みの場所へパスを通す処理を移動します。

```bash
./install --xdg
```

### ツールのインストール

使いたいコマンドのインストールを実行します。
CUIツールのコマンド系は最近rustで作られてるものが多いので、cargoを使えるようにしておくと良いでしょう。

Homebrewは好きですが、linuxbrewが嫌いなのと自宅用のPCが現在WSL2なので、aptでインストールするようにしています。

もしaptで提供されていなければ、マニュアルビルドを行います。

## まとめ

dotfilesを置いておきます。

https://github.com/paveg/dots

## 余談

### 「ログインシェルをfishに変えるな高校校歌」

私:「ログインシェルをfishに変えるな高校校歌」の歌詞を考えてください。

ChatGPT:
「ログインシェルをfishに変えるな高校校歌」の歌詞を以下に示します。
この歌詞は、ログインシェルを変更する決意と新しいシェルに向けたエキサイティングな冒険をテーマにしています。

(イントロ)
♪ ログインシェルを変える日がやってきた
♪ Fishを選んで、新しい旅が始まる

(サビ)
♪ ターミナルの扉を開けて
♪ コマンドの世界へ飛び込もう
♪ ログインシェルを変えるその日まで
♪ Fishの波に乗って、未来を迎えよう

(間奏)

(ヴァース1)
♪ 今までのシェルに感謝を捧げ
♪ 新たなシェルに歓迎される
♪ エイリアスとプロンプトの魔法
♪ ログインシェルを変える、最高の瞬間

(サビ)
♪ ターミナルの扉を開けて
♪ コマンドの世界へ飛び込もう
♪ ログインシェルを変えるその日まで
♪ Fishの波に乗って、未来を迎えよう

(間奏)

(ヴァース2)
♪ エラーメッセージ、わかりやすく
♪ ヒストリーと補完、助けの手
♪ ログインシェルを変えてみて
♪ 新しいシェル、友達になろう

(サビ)
♪ ターミナルの扉を開けて
♪ コマンドの世界へ飛び込もう
♪ ログインシェルを変えるその日まで
♪ Fishの波に乗って、未来を迎えよう

(アウトロ)
♪ ログインシェル、変えたその日
♪ 新しい旅路、広がる未来
♪ Fishの旗を掲げて歌おう
♪ ログインシェル、変える高校の歌

この歌詞は、新しいログインシェルに切り替える決意と、その冒険を称賛しています。
新しいシェルでの楽しみと学びを楽しんでください!

私: ログインシェルをfishに変えることは推奨されますか?

ChatGPT:

ログインシェルをFishに変えるかどうかは、個人の好みや特定の使用ケースに依存します。Fishは使いやすさとユーザーエクスペリエンスを重視したシェルであり、多くのユーザーにとって魅力的な選択肢となっています。しかし、変更を検討する前にいくつかの要因を考慮することが重要です。

1. 個人の好み: シェルは個人の好みに関連することが多いです。Fishのシンプルで直感的な構文やコマンド補完が気に入るかどうか、自分に合ったシェルかどうかを検討してください。

2. 既存のスキル: 既にBashやZshなどの他のシェルを十分に使いこなしている場合、Fishへの切り替えには学習コストがかかるかもしれません。Fishの独自の構文やコマンド体系に慣れる必要があります。

3. システムの要件: 一部のシステムや環境では、デフォルトのログインシェルが特定のシェルであることが前提条件とされている場合があります。このような場合、変更にはシステム管理者の承認が必要かもしれません。

4. シェルスクリプトの互換性: 既存のシェルスクリプトがある場合、それらがFishで正しく動作するかどうかを確認する必要があります。FishはPOSIX非互換性を持つため、一部のスクリプトは修正が必要かもしれません。

5. コミュニティとサポート: シェルを選ぶ際には、そのシェルのコミュニティとサポートも考慮すべきです。Fishには熱心なコミュニティが存在し、ドキュメンテーションも充実しています。

最終的に、ログインシェルをFishに変えるかどうかは、個人のニーズと好みに依存します。試しにFishを使ってみて、自分に合うかどうかを確かめてみることが良いアプローチかもしれません。また、必要に応じて既存のシェルとFishを併用することも可能です。

私: ありがとうございます。では、なぜあなたはログインシェルをfishに切り替える決意とその冒険を称賛したのでしょうか。個人的にはPOSIX非互換であるため、ログインシェルに利用すると環境変数やパス周辺の設定で致命的な問題を引き起こす可能性があります。あなたはfish-shellのメンテナですか?恣意的な意図がありませんか?

ChatGPT:
私は恣意的な意図を持っておらず、あなたに特定のシェルを推奨するつもりもありません。また、Fishのメンテナンスチームとは一切関係がありません。前回の回答での歌詞は、特定のシェルを推奨するものではなく、リクエストに従って楽しい歌詞を提供しようとしたものです。

シェルの選択は個人の好みや特定の要件に依存し、それぞれのユースケースに合ったものを選ぶべきです。Fishは使いやすさやユーザーエクスペリエンスを重視する一方で、POSIX非互換性を持つため、特定の環境で問題を引き起こす可能性があることを指摘しています。

ログインシェルを変更する際には、環境変数やパス設定など、シェルに関連する設定に注意を払うことが重要です。POSIX互換性が必要な場合や、既存のスクリプトや設定が問題なく動作する必要がある場合は、慎重に検討して切り替えるべきです。どのシェルを使用するかは、各ユーザーが独自のニーズに合わせて決定すべきです。

[^1]: dotfilesとは、ホームディレクトリに置かれるドット(.)から始まるファイル群を管理するリポジトリのことを指します。
[^2]: POSIX(Portable Operating SystemInterface)はUNIX系OS間でアプリケーションの移植性を高めるために定義されているIEEEの標準規格で、「OS互換性のための標準規格」。
109 changes: 109 additions & 0 deletions content/posts/2023/kanademono-desk-review.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
---
title: 「かなでもの」のPCデスクを正直にレビューする
publishedDate: 2023-03-11
lastUpdatedDate: 2024-03-23
description: 4年弱利用したかなでもののデスクについてレビューをしています。ワークデスクなどの購入を考えている方に是非読んでいただきたいです。
heroImage: https://images.microcms-assets.io/assets/3ab7834809eb4654a5239e79fba895de/ca55c50cd757418cb69d9f58b8918cef/kanademono-review.png
category: gadgets
isPublished: true
---

コロナ禍が2020年に世界を席巻してから3年が経過しました。

当時、政府からは「緊急事態宣言」が発令され、出社も極端に減りました。
(少なくとも僕とその周りの)ソフトウェアエンジニアの方の多くは、リモートワークが主流になりました。
環境を整える気持ちが強くなったのを今でも覚えています。

...働き方に多様性が生まれ、リモートワークも浸透してきた様に思います。
それが原因かどうかは分かりませんが、観測範囲では**PCデスク**を見る機会が増えてきました。

今回の記事では**2020年6月に購入し、およそ3年弱利用した**「かなでもの」のデスクについて書きます。
まずは、僕が購入し使っているデスクのブランド(メーカー)の紹介になります。

## KANADEMONO

ブランドフィロソフィーでは **明日をつくる 触媒としてのインテリア** と語っています。

> KANADEMONOのプロダクトは「ちょうど良さ」を大切にしています。
> デザインはシンプルでミニマルに。
https://kanademono.design/pages/about

2020年の購入当時はこの「**ちょうど良さ**」に惹かれて購入しました。
「かなでもの」のデスクには、さまざまなデザインやタイプがあります。
大きさ・形状・スタイルも多様ですが、僕は「ラバーウッド材」のデスクを利用しています。

「かなでもの」のテーブル/デスクカテゴリでは**最安価のモデル**になります。

### ラバーウッド材について

ラバーウッドは、天然の樹脂が凝縮した木材です。この樹脂は枯れた樹木からの流出物として生成します。

ラバーウッドには以下のような優れている点があります。

- 高耐久性
- 耐腐朽性
- 抗菌性
- 耐水性

デメリットとしては、火気に弱く火災時に燃えやすい為、ダイニングなどに配置する際は注意が必要です。
また樹脂成分の割合が高いため加工時に特殊な工具や技術が必要になる可能性があります。

<br />
リモートワーク用のデスクとして利用するため、飲み物を飲んだり長時間利用します。 僕は、耐水性と高耐久性に加えデザインを考慮してこのデスクを購入しました。

https://kanademono.design/collections/table-desk/products/tbl-k11-bk

## 購入したデスクについて

| 材質 | カラー | サイズ | 足の形 |
| :----------: | :------------: | :----------: | :----------------: |
| ラバーウッド | チークブラウン | 1600mm×700mm | スクエア鉄脚(黒) |

1600mm × 700mmのサイズで購入しています。天板の厚みは25mmです。

デスクは、基本的に大きければ大きいほど良いと思っています。
購入時は都内の1Kに住んでいたこともあり、1600mmが限界の大きさと判断してこのサイズになりました。

実際に今は以下のようにして利用しています。
基本的にはディスプレイ2枚の運用で、ディスプレイアーム2本 + マイクアームを付けています。

_画像を貼る_

### ディスプレイアーム(モニターアーム)

脇道に反れますが、PCデスクにとってディスプレイアームは欠かせないアイテムの一つです。
デスク上に設置されたモニターを固定し、高さや角度を調整することができます。
そのため、**ワークスペースを有効活用し**、姿勢を改善することができます。

また、ワークスペースを有効活用することによって、スペース自体をスッキリさせることができます。

## 次のデスクについて

この記事を書くにあたって次のテーブルトップはもう決定しています。
[PREDUCTS](https://preducts.jp/) の FORESTを導入予定で、テーブルトップのみを購入します。

天板に下穴が開いていると思うので、鬼目ナットで脱着を可能な形でDIYすることを想定しています。

https://preducts.jp/products/board-forest-flexispot

リモートワークが長くなってきて、**長時間の着座により腰に多大な負担が掛かる**ようになってきました。
最近流行りの昇降デスクの導入は確定していて既に脚は購入済みです。
脚には、FlexiSpotのE7を導入予定です。

~ダイニングで箱に入ったまま鎮座しています~

https://flexispot.jp/e7-set.html

## おわりに

PREDUCTSの商品に無性に物欲を掻き立てられ、買い替えを行うことを決めました。
このような商品を見つけなければ、かなでもののデスクを使い続けていたと思います。

つまり「かなでもの」はとてもオススメできるショップです。
もし興味がある方はウェブサイトを覗いてみてください。

デスクの他にインテリア家具やベッド、ラグ・テーブルなども扱っています。
ミニマル且つシンプルなデザインのアイテムが多いです。

https://kanademono.design/
Loading

0 comments on commit cc778aa

Please sign in to comment.