気づいたらRustだらけ

気づいたらRustだらけ
Photo by Jonathan Koh / Unsplash

Protonのブログを見ていたら、「Proton AuthenticatorをRustで作ったよ」なんて記事があったのでびっくり。

How Rust powers Proton Authenticator | Proton
To build a secure 2FA app for all major devices, Proton turned to Rust. Carlos Quintana explains why we chose Rust and why we’ll likely use it more in the future.

最近はRustがいろいろな場所で使われているのを見るね。

最近Pythonを使う機会があったのだけれど、uvっていうパッケージマネージャもRustで作られてたわ。

uv
uv is an extremely fast Python package and project manager, written in Rust.

しかも、動作が超速いし、なんかめっちゃ使いやすくて、「難しいことわかんないけどスゲー」ってなった。

Web系でRustの話題はよく見るよね。

Volta - The Hassle-Free JavaScript Tool Manager
Volta: Start your engines.
Rust-based platform for the Web
Turbopack | Next.js 日本語ドキュメント
Turbopackは、RustでJavaScriptとTypeScript向けに最適化された増分バンドラーで、Next.jsに組み込まれています。
Biome
フォーマット、リントなどが一瞬で完了します!
Tauri 2.0
The cross-platform app building toolkit

CLI系のツールなんか、ほんとうに最高ですよね~。

Rust で実装された OSS の CLI ツールたちを見てみよう - dotTrail
Rust は CLI ツールの実装というユースケースでも使用されるプログラミング言語の 1 つです。cat の代替コマンドである bat や grep の代替コマンドで高速な ripgrep など、Rust で実装された OSS の CLI ツールたちを見てみましょう!

イケイケなターミナル環境とか一時期こだわってました。

The Agentic Development Environment
Warp is an AI agent platform that lets you run multiple agents in parallel to complete any development task.
Alacritty - A cross-platform, OpenGL terminal emulator
Alacritty is a modern terminal emulator that comes with sensible defaults, but allows for extensive configuration. By integrating with other applications, rather than reimplementing their functionality, it manages to provide a flexible set of features with high performance.
Starship: Cross-Shell Prompt
Starship is the minimal, blazing fast, and extremely customizable prompt for any shell! Shows the information you need, while staying sleek and minimal. Quick installation available for Bash, Fish, ZSH, Ion, Tcsh, Elvish, Nu, Xonsh, Cmd, and Powershell.

最近はJavaにはまってるんだけれど、Rust、いつか極めたいなあ。

Read more

TailscaleのSubnet Routesを消す

SynologyのNASにTailscaleを導入し、便利に使っている。 TailscaleにはSubnet routersという機能がある。 これは、Tailscaleネットワークに接続されたデバイスが、そのデバイスが接続されているローカルネットワーク(サブネット)全体へのアクセスを他のTailscaleデバイスに提供できる機能だ。つまり、Subnet routerとして設定されたデバイスを経由することで、Tailscaleネットワーク上の他のデバイスから、そのローカルネットワーク内の機器にアクセスできるようになる。 Subnet routers · Tailscale DocsUse subnet routers to give devices outside your local network access to services within specific subnets. Extend your private network with Tailscale.Tailscale 便利そうだなと思って設定をしてみたものの、結局使うことがなかった。 公式ドキュメント

By Sakashita Yasunobu

Boids

群れに指揮者はいない 鳥の群れは、誰かが指示を出しているわけではない。魚の群れも同じ。それぞれが周囲を見て、少しだけ動く。その繰り返しが、全体として秩序ある動きを生む。 これを1986年にCraig Reynoldsがコードで再現した。名前は Boids(bird + oid)。個体に与えるルールは3つだけ。 1. Separation ── 近すぎたら離れる 2. Alignment ── 周囲と同じ方向を向く 3. Cohesion ── 群れの中心に寄る これだけで、群れは群れらしく動く。 なぜ作ったか 群れの動きは、見ていて飽きない。 * 単純なルールから複雑な動きが生まれる ── 創発(emergence)の典型例。設計していないのに、設計したかのように見える。 * 自分のブログに置きたかった ── 静的なページに、動くものがあると空気が変わる。 * Web Components で作りたかった ── どこにでも持っていける部品として。 設計の話 見えないときは止める 画面外でアニメーションを回し続けるのは無駄。Inte

By Sakashita Yasunobu

Days Elapsed

一年を「面」で見る 一年は365日。数字で見ると多いけど、並べてみると案外少ない。 12ヶ月を並べて、過去を塗りつぶして、今日を光らせる。それだけのカレンダーを作った。進捗バーが「一次元」なら、これは「二次元」の進捗表示。 Year Progress一年は50週ちょっとしかない 2026年を週で数えると、52週とちょっと。 カレンダーで見ると長そうなのに、週で数えると急に短くなる。そんな感覚を形にしたくて、このページの上の方に進捗バーを置いた。 やっていることは単純で、「今年が何%進んだか」をリアルタイムで表示しているだけ。 なぜ作ったか 理由は3つある。 1. 時間を「量」として見たかった ── イベントや予定ではなく、単純に「どれだけ経ったか」を数値で見たかった。 2. 目に見える形にしたかった ── 抽象的な「一年」を、動く数字に落とすとどう感じるか試したかった。 3. 自分の場所に置きたかった ── 誰かのツールを借りるのではなく、自分のブログに自分で作ったものを置きたかった。 実装の話 せっかく作るなら、

By Sakashita Yasunobu