最近気に入っているOSSを淡々と紹介する

2023/12/22に公開4

はじめに

こんにちは〜!皆様いかがお過ごしでしょうか? no plan inc. CTOの @serinuntius です。
これはno plan inc.の Advent Calendar 2023の22日目の記事です。

最近気に入っているOSSとかを作者様に感謝しながら、スターを送りながら、こんなのを使用してるぜって紹介する記事です。

https://x.com/songmu/status/1737099950289571908?s=20

「OSSは使っていることを公言するだけでも貢献になる」とsongmuさんが言っていたので、私も貢献したいと思います。

紹介する順番に特に意味はありません。

rtx

  • 個人的お気に入り度: ★★★★★
  • スター数: 3700
  • Rustで作られている💯
  • LICENSE: MIT

https://github.com/jdx/rtx

初っ端は、rtxです。あらゆるプログラミング言語環境(Runtime)のマネージャーです。

公式のデモ画像を見ていただくのが一番早いと思います。

私はこれを使う前はanyenvというものを使っていたのですが、anyenvはさらにxxxenvをインストールするためのラッパーに過ぎなかったので、よくよく考えるとイマイチなのでは?と思っていました。

これはxxxenvを入れることなく直接任意の言語の任意のランタイムをインストールできるので、とても便利です。

私は知らなかったのですが、asdfというツールが元になっていて、それをRustで書き直しasdefのpluginと互換があるように書き直しているようです。

使用例はこんな感じです。

$ rtx install python 3.9.1
$ rtx install nodejs 14.15.4
$ rtx install ruby 3.0.0
$ rtx install go 1.15.7
$ rtx install deno@latest
$ rtx local python 3.9.1

コマンドのパーサーがかなり良くできていて、あまり考えなくてもいい感じにしていくれます。

sheldon

  • 個人的お気に入り度: ★★★☆☆
  • スター数: 817
  • Rustで作られている💯
  • LICENSE: MIT & Apache-2.0

https://github.com/rossmacarthur/sheldon

sheldonはRust製の高速なshellのプラグインマネージャーです。

これを使っていい感じにshellのプラグインを管理すると、shellの起動がめちゃくちゃ早くなります。

ただ今WarpというTerminalを使っていて、なぜかsheldonが動かないので、あまり使えてはいません。。。(なんかの設定が競合してるっぽい。調査の時間が取れてない)

lima

  • 個人的お気に入り度: ★★★★☆
  • スター数: 13.2k
  • Goで作られている
  • LICENSE: Apache-2.0

https://github.com/lima-vm/lima

limaはmacOS上で動く軽量なLinux仮想マシンです。

WindowsのWSL2みたいなものですが、macOS上で動くので、macOSのファイルシステムにアクセスできるので、とても便利です。
起動したLinuxマシンには、sshで接続できるので、VSCodeのRemote Developmentで接続すると、とても快適です。

UbuntuにDockerを入れて、ホストのmacからDockerを操作するという使い方をしています。

この方法を使うとDocker遅い問題やDocker Desktopが一部有償化された問題も解決できます。

たまに仮想環境がぶっ壊れて、2度のそのイメージにログインできなくなったりしてビビりましたが、なんとか使ってます。
永続化するような使い方はあまり向いてなさそうです。

ghq

  • 個人的お気に入り度: ★★★★★
  • スター数: 2.9k
  • Goで作られている
  • LICENSE: MIT

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

Gitのリポジトリを管理するツールです。

以下のようにcloneしてくれるツールなのですが、githubのorgやrepoごとにdirectoryを作ってくれるので、とても便利です。

$ ghq get https://github.com/x-motemen/ghq
# Runs `git clone https://github.com/x-motemen/ghq ~/ghq/github.com/x-motemen/ghq`

Goの慣習に従って、$GOPATH/src以下に私はリポジトリを管理しています。

これをしておくと、次のようにして、リポジトリを開くことができます。

$ cd $(ghq list -p | fzf)

これを毎回打つのは面倒なので、私は以下のようなaliasを設定しています。

alias g='cd $(ghq list -p | fzf)'

これで、gと打つだけで、リポジトリを開くことができます。
ただ問題があってリポジトリの数が増えてくると、ghq listが遅くなってきます。
これはかなり丁寧に実装されていて、だいぶ前の記憶ですが .git があるかどうかを探していたような気がします。
これは、リポジトリの数が増えると、探す時間が増えてきて、結果として遅くなってきます。

それで私は新しいツールを作りました。

pacifica

  • 個人的お気に入り度: ★★★★★
  • スター数: 3
  • Rustで作られている💯
  • LICENSE: MIT

https://github.com/serinuntius/pacifica

これは、 ghq list の代わりになるツールです。
ただ厳密には完全に代替できるわけではないです。高速化のために丁寧な .git を探す処理を省いています。
その代わりに、リポジトリの数が増えても高速に動作するようになっています。

環境によると思いますが、100倍くらい速くなりました。

ちなみにこれはRustの勉強のために作ったもので、他の解ももちろんあります。

fzf

  • 個人的お気に入り度: ★★★★★
  • スター数: 56.2k
  • Goで作られている
  • LICENSE: MIT

https://github.com/junegunn/fzf

Goで作成された、コマンドラインでのインタラクティブな検索ツールです。

ollama

  • 個人的お気に入り度: ★★★★★
  • スター数: 26.9k
  • Goで作られている
  • LICENSE: MIT

https://github.com/jmorganca/ollama

Local LLMを超簡単に動かせるツールです。

llama2を動かすのにインストールしておけば、以下のコマンドだけで動かすことができます。

ollama run llama2

これが結構お手軽で、とても便利です。

# Chat with a model
curl http://localhost:11434/api/chat -d '{
  "model": "mistral",
  "messages": [
    { "role": "user", "content": "why is the sky blue?" }
  ]
}'

こんな感じでAPIも生えるので、簡単に動かせるので、とても便利です。

mlx

  • 個人的お気に入り度: ★★★★★
  • スター数: 10k
  • C++で作られている
  • LICENSE: MIT

https://github.com/ml-explore/mlx

Apple SiliconのMacで、機械学習のArrayを高速に計算するためのライブラリです。

詳しくは記事も書いてますので、そちらに任せます。

https://zenn.dev/noplan_inc/articles/f68a885497922f

aicommits

  • 個人的お気に入り度: ★★★★★
  • スター数: 6.7k
  • TypeScriptで作られている
  • LICENSE: MIT

https://github.com/Nutlope/aicommits

LLMがコミットメッセージを生成してくれるツールです。

めちゃくちゃ便利で、これがないと生きていけないです。
Copilotの生産性向上を感じている人は、ぜひこれも使ってみてください。

今までは雑に git add . とかで雑にまとめてコミットしてましたが、これを使ってからは、コミットメッセージをちゃんと書くようになりました。(自分で書いてないけどw)

wireguard

  • 個人的お気に入り度: ★★★★★
  • スター数: 2.4k
  • Goで作られている
  • LICENSE: MIT

https://github.com/WireGuard/wireguard-go

VPNのためのツールです。
VPNのくせにめちゃくちゃ高速かつ簡単にセットアップできて、とても便利です。

月$10とかのめちゃ安いインスタンスで、社用のVPNを建てたのですが、全員で使ってるわけではないとわいえ、遅さで困ったことがありません。

ぜひ構築してみてください。

gts

  • 個人的お気に入り度: ★★★★★
  • スター数: 4.7k
  • TypeScriptで作られている
  • LICENSE: Apache-2.0

https://github.com/google/gts

TypeScriptのためのlinterです。
No lint rule, No configを謳っており、とても便利です。

今までeslint, prettierをいい感じにセットアップしていましたが、これを使うと、それらを全部一気にやってくれます。
なんも迷わんくてよかったんや・・・。

いざとなったら、eslintとかprettierの設定を書き換えることもできるので、自由度も高いです。

zod

  • 個人的お気に入り度: ★★★★★
  • スター数: 27.6k
  • TypeScriptで作られている
  • LICENSE: MIT

https://github.com/colinhacks/zod

TypeScriptのためのスキーマバリデーションライブラリです。
今年になって初めて使ったのですが、正直これなしでTypeScriptを書くのはもう無理です。
それぐらい便利です。

勝手にベストオブライブラリ2023に選ばせていただきます。

shadcn/ui

  • 個人的お気に入り度: ★★★★★
  • スター数: 37.1k
  • TypeScriptで作られている
  • LICENSE: MIT

https://github.com/shadcn-ui/ui

Reactのためのコンポーネントライブラリです。

どんなコンポーネントがあるかは、以下のサイトを見ていただくのが一番早いと思います。
https://ui.shadcn.com/

これを使うと、めちゃくちゃ簡単に、かつ綺麗なUIを作ることができます。
デザインが決まってないようなときに、とりあえずこれを使って作っておくと、綺麗なUIができあがると思います。

auto-form

  • 個人的お気に入り度: ★★★★★
  • スター数: 1.4k
  • TypeScriptで作られている
  • LICENSE: MIT

https://github.com/vantezzen/auto-form

Reactのためのフォームライブラリです。

zodとshadcn/uiを使っていると、フォームのバリデーションとかがめちゃくちゃ簡単にできるのですが、それをさらに簡単にしてくれるライブラリです。
実装するのはzodのスキーマだけです。

hono

  • 個人的お気に入り度: ★★★★★
  • スター数: 9.4k
  • TypeScriptで作られている
  • LICENSE: MIT

Edgeで動くめちゃくちゃ速いwebのためのフレームワークです。
どんな環境でも動くので、めちゃくちゃ便利です。
とはいえ、Cloudflareと合わせて使うのが一番DXは良いと思います。

あまりにも好きすぎて記事も書きました。
https://zenn.dev/noplan_inc/articles/fd917e638e38e6

好きな機能はいくつかあります!

  • zodValidator: zodのスキーマを使ってバリデーションを行うことができます。
  • Zod OpenAPI Hono: zodのスキーマを使ってOpenAPIを生成することができます。
  • hc: hono clientのことで、型付のHTTPクライアントです。これを使うと、APIの呼び出しを型付けできます。

OSSにスターを送ろう!

無料で使わせていただいているOSSに感謝を込めてスターを送りましょう!
それが作者様にとっての励みになることでしょう。
それぐらいはできるでしょう!

まとめ

素晴らしいOSSを作ってくださった作者様たちに感謝します。
微力ながらも、スターを送りながら、これからも使わせていただきます。
少しでも貢献できるようにと、紹介してみました!

もちろん問題があれば、issueを立てて、PRを送っていきます!
No OSS, No Life!

no plan株式会社について

  • no plan株式会社は 「テクノロジーの力でZEROから未来を創造する、精鋭クリエイター集団」 です。
  • ブロックチェーン/AI技術をはじめとした、Webサイト開発、ネイティブアプリ開発、チーム育成、などWebサービス全般の開発から運用や教育、支援なども行っています。よくわからない、ふわふわしたノープラン状態でも大丈夫!ご一緒にプランを立てていきましょう!
  • no plan株式会社について
  • no plan株式会社 | web3実績
  • no plan株式会社 | ブログ一覧

エンジニアの採用も積極的に行なっていますので、興味がある方は是非ご連絡ください!

Discussion

serinuntiusserinuntius

ありがとうございます。

https://dev.classmethod.jp/articles/lima-using-docker-on-macos-without-docker-rancher-desktop-app/

Rancher DesktopはMacの場合バックエンドでLimaが動いているようで、クラッシュの優位差はないのではないかと思います。

あえてLimaをそのまま使うモチベーションもあったりするので、このままLimaとさせてください!

参考文献

https://docs.rancherdesktop.io/faq/
https://github.com/rancher-sandbox/rancher-desktop/blob/1c61d124dd2f6f0968fcea77c22c45a0d55665cd/scripts/dependencies/lima.ts#L19
https://github.com/rancher-sandbox/rancher-desktop-lima

serinuntiusserinuntius

ご存知だと思いますが、Tailscaleも中でWireguard使ってるので、最安で運用するのであればWireguardを使う選択肢もありだと思っています!

https://tailscale.com/compare/wireguard

We suspect that using WireGuard directly will be most appealing if you have a small, stable number of Linux servers whose connections you want to secure. Using Tailscale will make the most sense if you want things to Just Work, you are administering a VPN for many different users, or if you want the extra features or centralized ACLs Tailscale offers.
But everyone’s network and needs are different. And we’ve helped debug a lot of networks; when we say everyone’s network is different, we know whereof we speak, and we mean it!
Using WireGuard directly is a very reasonable choice, and if you’re thinking about doing it, we encourage you to give it a try. If you later decide that you want the convenience and extra features that Tailscale offers, it’s easy to switch.

まあでもTailscale公式も言ってる通り、ユースケースによって異なると思うのでご自由になさったらいいと思いますが!