たより

Zennの「Rust」のフィード icon

Zennの「Rust」のフィード

Zennのトピック「Rust」のRSSフィードです

grepを毎回起動するの、もうやめたい。FFFでAIの検索体験を速くする

Masato13

AIエージェントでコードベースを触っていると、地味に気になるのが「検索の回数」です。 rg や grep 自体は優秀なのですが、Claude Code や Codex、OpenCode のように同じリポジトリに対して何度も検索を繰り返す使い方だと、毎回プロセスを起動して、毎回 .gitignore を読んで、毎回ファイルツリーをなめるコストが積み上がります。 1回の検索なら誤差でも、1セッションで数十回、数百回と繰り返すと、無視しにくくなってきます。 そんなときに見つけたのが FFF です。 https://github.com/dmtrKovalenko/fff FFF は Neovi...

大量のログから、目的の一行に一瞬でたどり着く Android logcat ビューアを作った

qwerfunch

Android アプリをデバッグしていると、logcat を見ない日はまずありません。 でも個人的にずっとつらかったのは、大量に流れてくるログの中から、本当に見たい一行を探し出すことでした。スクロールしては検索し、また新しいログに流されて見失う……。そもそも logcat を一行確認したいだけなのに、わざわざ Android Studio を立ち上げるのも地味に億劫で。 「ログの洪水の中から、目的の一行にすぐたどり着けるツールがほしい」 そう思って自分用に作り始めたのが LogcatOn です。気づいたらリリースできる状態まで来たので、思いきって公開しました。無料です。 https://...

タスクバーで魚を飼うアプリを、Electron→Tauriで作り直して無料のMicrosoft Storeに公開した

sobu-lab

はじめに Windows のタスクバーで熱帯魚や金魚を泳がせる小さなアプリ「Taskbar Aquarium」を作って、無料になった Microsoft Store に個人で公開しました。 最初は Electron で作ったのですが、配布サイズが MSIX で 99MB になってしまい、Tauri に移植したら 3MB まで小さくなりました。 この記事は「作って・移植して・ストアに出す」までの記録です。 特に、 Electron/Tauri 共通で苦しんだ「タスクバー押し負け」問題 Tauri 移植で踏んだ Rust 固有の罠 無料化された Microsoft Store の公開フ...

競プロのメイン言語をPythonからRustに乗り換えた話

Kawa_

はじめに こんにちは、アルバイトの川﨑です! 初のブログ執筆ということで何を書けばいいのかわからなかったのですが、PythonからRustに乗り換えて半年ほど経ち、タイミングも良かったので振り返ってみることにしました。 拙い内容になるとは思いますが、最後までお付き合いいただければと思います。 なお、筆者の執筆時点(2026/05/25)でのAtCoder Algo部門のレーティングは563(茶色)です。 実力相応のお話しか出ません。便利Tipsをお求めの場合は他記事の参照をお勧めします。 (執筆時点の筆者のレートグラフ) なぜRustへ乗り換えたのか 一般的にPythonからR...

Rustで信頼できないURLへのHTTPリクエストをreqwest-ssrf-guardで防ぐ

walf443

ユーザーの入力したURLなどにHTTPリエクストする場合、ローカルネットワークのIP直指定のリクエストや、名前解決した結果内部ネットワークになるURLなどを除外しておかないと意図せず内部情報にアクセスされてしまったり意図しない障害などにつながってしまうことがあります。 内部ネットワークであってもmTLSで認証を突破できるクライアントしか許可しないとなっているのがベストではありますがそうなっていないサーバーが1つもないというのはなかなか難しいのではないかなと思います。 rustの場合reqwestというHTTPクライアントが定番ですが、それにssrf対策のhookを加えたライブラリreqw...

cozy という小さな TUI エディタを公開しました

takaki2

Rust 製の小さな TUI エディタ cozy を GitHub と crates.io に公開しました。 GitHub: https://github.com/takakix2/cozy crates.io: https://crates.io/crates/cozy docs.rs: https://docs.rs/crate/cozy 一言でいうと、nano の代わりに気軽に使える terminal editor です。 cargo install cozy cozy とは cozy は、ターミナルでちょっとファイルを編集したいときのためのエディタです。 cozy ...

AIに書かせる前提でRust/Tauriに入門する

太田和彦

はじめに Rust と Tauri に入門するとき、普通は Rust の文法、所有権、Cargo、Tauri のプロジェクト構成、フロントエンドと Rust の連携、権限管理、ビルド、配布までを順に学ぶ必要があります。 しかし、最近ではコーディング自体はAIコーディングエージェントに任せるため、人間が理解しておく内容が変わります。 この記事では、Rust/Tauri をすべて自分で書けるようになることではなく、AIコーディングエージェントに実装を依頼し、出てきた差分をレビューできるレベルになることを目標にします。 なお、AIコーディングエージェントとして、今回はCodex CLIを使...

SlintのScrollView内でDrag & Dropを作ろうとしたら大爆発して「2タップ方式」に革命した話

Kenji Igarashi

概要 RustのモダンGUIツールキット Slint を使って、リッチなダッシュボードを作ろうとした時の大激闘の記録です。 コンポーネントを自由に入れ替えるドラッグ&ドロップ(D&D)機能を実装しようとしたところ、Slintの「ScrollView内でのタッチイベント強奪仕様」や「z-index(重なり順序)の動的変更バグ」といった数々の罠に直面しました。 泥沼のコンパイルエラーと座標の暴走を乗り越え、最終的に 「1回タップして『移動モード』をONにしてから、全画面シールドで滑らかにずらす(2タップ方式)」 という、操作性・実装クリーンさ共に100点満点のアーキテクチャに辿り...

Wio Terminal で bCore4 を制御できるようにしてみました

Tasuku Suzuki

https://www.youtube.com/watch?v=VK_NSRCSBiU bCore4 は超小型の BLE ロボットコアです。3cm 角ほどの基板1枚で、DC モーター2個・サーボ4個・LED ポート4個を駆動でき、BLE 経由でラジコンや小型ロボットを動かせます。通常はスマートフォンの専用アプリから操作します。 これを Wio Terminal(液晶とボタンを備えた小型マイコンボード)から操作したくなりました。そのために書いたのが、Rust 製の BLE クライアント bcore(リポジトリ名 bcore-rs)です。このクレートを土台に、 Wio Terminal を...

Obsidianのvaultを壊さないための設計 — Petatto.md開発メモ(哲学編)

just2enough

「失われては困るファイルを、常駐プロセスが継続的に書き換える」 Petatto.md は、便利なメモアプリの顔をして、実態はこういうアプリです。 Obsidian vault 内の Markdown をデスクトップ付箋にする Tauri 製アプリを公開した(紹介サイト / ダウンロード)ので、機能ではなく「vault を壊さないための設計」を記録しておきます。 前提:他人のファイルを触り続けるアプリ アプリの性格を整理すると、編集の主役は Obsidian で、Petatto.md はそこに後から手を出す側です。対象はユーザーが長期間かけて書きためた vault で、Petatto....

検索エンジンを立てるほどじゃない全文検索の落としどころ

yoRyuuuuu

はじめに システム開発において、住所や商品名といったテキストデータの中から、特定の文字列を含むレコードを探したいことがあります。 このような「文書の中から目的のテキストを高速に探し出す」機能を、一般的に「全文検索」と呼びます。 全文検索を実現する手段は様々です。 MySQL や PostgreSQL に内蔵されている全文検索インデックスを利用する方法もあれば、OpenSearch や Elasticsearch のような専用の検索エンジンを採用する方法もあります。 拡張性やパフォーマンスの観点から、検索に特化した OpenSearch のような検索エンジンを選ぶことが多いです。 しか...

Android 16でWireless ADBツールが壊れる — 開発者が知るべき仕様変更と対策

hiyoyo

はじめに Android アプリ開発やスクリーンショット転送ツールを作っている方へ。 Android 16 で、Wireless ADB の挙動が変わりました。 従来の adb tcpip 5555 → adb connect <IP>:5555 のフローが 動かなくなるケース が発生しています。 この記事では、筆者が macOS 向け Android スクリーンショット自動転送アプリ「Hiyoko Shot」を開発する中で直面した問題と、その対策の考え方を共有します。 ! この記事は「何が起きているか」と「どう考えるべきか」に焦点を当てています。 具体的な実装コードは ...

sqlxで結合テーブルの構造体パターンを考える

reo

はじめに 単一テーブルの永続化対象の構造体を定義した記事等はあるが、結合テーブルはなかったので、どうすればいいか考えてみた 前提 例として、usersとclock_in_and_outsテーブルを結合したレコードを取得したい場合で考える CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255), is_delete tinyint(1) DEFAULT 0, create_date DATETIME DEFAULT CURRENT_TIMESTAMP, up...

aitm 1.0:AIをコパイロットに、ハンドルは自分で

kanfu-panda

ほとんどのAIターミナルには、暗黙の前提があります。「AIがドライバーである」という前提です。やりたいことを伝えれば、AIが何を実行するかを決め、ユーザーはよく理解しないまま承認する——それもひとつの哲学です。aitm は、別の哲学で作りました。 aitm において、AI はコパイロットです。環境を見て、ファイルを読み、ツールを呼び出し、コマンドを提案する。しかし、常にこの順序です:AIが提案し、あなたが決め、実行される。ハンドルはあなたの手に残ります。 些細な違いのように聞こえるかもしれません。でも 1.0 をシップするにあたって、それがコードの上でどういう意味を持つか、じっくり考え抜...

Rust を学ぶために、漫画ビューア gashuu(画集)を作った

Yasuyuki Takeo

はじめに AI を前提にすると、新しいプログラミング言語の学び方はどう変わるのか。 これまでは、本を読む、チュートリアルを写経する、小さなものを作りながら覚える、という流れが多かった。もちろん今でもそれは有効だ。ただ、生成 AI がある程度まとまったコードを書けるようになった今、別の学び方もあるのではないかと思った。 今回試したのは、「AI にある程度動くところまで作ってもらい、そのコードを読み、直しながら学ぶ」という方法だ。 題材にしたのは Rust で作るコミックビューア gashuu。Rust と Slint で作ったクロスプラットフォームのデスクトップアプリだ。 この記事では...

画面(見た目)は雑、設計はガチ。Rust×Slintで動的レイアウトを完璧に制御する3大設計図

Kenji Igarashi

はじめに ハローワールドのような入門レベルの文法解説は、裏で個人的にやればいい。公式ドキュメントの最初の1ページ目をコピペしたような記事は、わざわざ時間を割いて読む価値がない。 本記事では、今朝記事にしていたRustとSlintで実装したMITライセンスのUI基盤『dashboard-core』の「設計(パラダイム)」の核心だけを示す。 自分一人で抱え込んで満足するのではなく、他人がデザインをガワ替えして自分の基盤として再利用できるように、MITライセンス(改造自由) で公開している。 リポジトリ: https://github.com/kenjiigarashi/dashboa...

RustでABC461 (A ~ D)

石垣島産石垣

ABC 461 参加記録 戦績 問題 結果 時間 ペナルティ A AC 1:31 0 B AC 3:12 0 C AC 11:59 0 D AC 24:32 0 レート変動: 909 -> 980(+71) 各問題メモ A - Armor 考えたこと 4(よ)6(ろ)1(い)...ってこと?! 問題文そのまま実装するだけ 問題ページ https://atcoder.jp/contests/abc461/tasks/abc461_a 提出コード https://atcoder.jp/contests/abc461/submissi...

Rustでエラー原因をsourceとDisplayの両方に書いてはいけない理由

ultimatile

! TL;DR 責務分担: Displayは自エラーの説明。source()は原因へのリンク。reporterは全体の表示。 原因を#[source]/#[from]で露出するなら、同じ原因を#[error("...: {0}")]でDisplayに重ねない。 重ねるとanyhow等のreporterがsource()を辿り、同じ原因が重複表示される。 文脈ありなら#[error("自レイヤの文脈")]+#[source]。文脈なしラッパーなら#[error(transparent)]。 error.to_string()単独なら例外的にありうる。reporter併用ではfoot...

Rust で Cheminformatics のライブラリ chematic をゼロから開発している話

kent-tokyo

Cheminformatics ツール(RDKit、OpenBabel など)の多くは C++ で書かれ、JavaScript での利用は Emscripten を経由してコンパイルされます。そうすると WASM バイナリは 30~50 MB に膨れ上がり、ビルド環境は cmake・clang・Emscripten SDK と複雑化します。 もし C/C++ をゼロにしたら どうなるのか。その答えが chematic です。Pure Rust で cheminformatics ライブラリをスクラッチから書き、npm パッケージとして WASM で公開しました。バイナリサイズは ~550...

AI時代のサーバーサイド開発を考えて、Next.jsフルスタックからRustへ移行した話

たろ

私たち株式会社Eye Universe は、美容サロン向けにAIエージェントをノーコードで構築できるプラットフォームを中心に、予約や物流など美容サロンの業務を支えるプロダクトを開発・運営しているスタートアップです。 もともとは開発速度を重視し、Next.jsをフルスタックに使う構成で開発してきました。しかし、ユーザー数やユースケースが増え、WebアプリだけでなくiOSアプリからも使われるサーバーサイドの責務が大きくなるにつれて、主要なサーバーサイド処理をRustで書いたAPIサーバーへ移行しました。 この記事では、Rustを採用した理由を「高速だから」という観点だけではなく、AIコーディ...