タグ

techfeedとRustに関するpoad1010のブックマーク (1,386)

  • Rust入門者は非同期Rustをやらないでください

    はじめに すいません、連日の記事があったため少し煽りっぽいタイトルにしてしまいました。 平常時の感覚だったら、「Rustに入門するなら、同期Rustから始めるのがおすすめ」 とかにしてた記事だと思います。 この記事で主張したいことは以下です。 Rustは難しい Rustに入門するときの題材に、"Web Backend"や"Wasmでブラウザで動く何か"などの非同期Rustで無ければ達成できない題材を採用している人はそれがRust初級者への道を阻んでいる可能性がある 過去に非同期Rustで入門した人を否定する記事ではない Rustに入門することが目的なら、非非同期Rustから始めた方が良いのではないか? ここで長く言葉の定義をしても微妙なので、下に言葉の定義 というセクションを用意してあります。 前提 タイトルに書けていない前提を書いています。 この記事の指す「Rust入門者」はLL言語(P

    Rust入門者は非同期Rustをやらないでください
    poad1010
    poad1010 2025/04/14
    この記事をおすすめしました
  • 「Rustが嫌いです。」の感想

    この記事を読んで1Rustユーザーとして思ったことを書いた。 全体を通して WASM固有の問題にハマってしまっている Rustをスクリプト言語と同じ枠で見てしまっている の2点が辛さの原因であると感じた。 前者について、この方はフロントエンドRustを使っているようだがここは確かに整備が行き届いてない分野でWASM特有の問題とJSとのFFIの辛さがもろに感じられて辛いと思う。 割となんでもかんでもRustを使う自分であってもWebフロントエンドにはおとなしくTSを使うようにしている(ただ、dioxusはホットリロードを開発中だったりと結構頑張っているようなのでいつかはRustフロントエンドも現実的になるかもしれない)。 後者について、この記事では全体的に「JSやPythonではこんなに簡単だったのにRustでは難しい/エラーが出る」という評価が多いが、これは後述するようにRustが提供

    「Rustが嫌いです。」の感想
    poad1010
    poad1010 2025/04/10
    WASM固有の問題か。 確かにWASMはほぼノータッチでWebアプリとかCLIを作るのが中心だから、確かにそこは認識が合わないのは確かだな。 Webアプリだからってメモリー安全性が要らないというのは間違い。GCのおかげでメモリ
  • 【海外記事紹介】Webフロントエンド開発の新たな潮流となるか?Rust+WebAssemblyを使用する動きが加速中 — Amazon Prime Videoにおいて7.6倍のUIレイテンシ削減

    【海外記事紹介】Webフロントエンド開発の新たな潮流となるか?Rust+WebAssemblyを使用する動きが加速中 — Amazon Prime Videoにおいて7.6倍のUIレイテンシ削減
    poad1010
    poad1010 2025/04/10
    この記事をおすすめしました
  • Rustが難しい唯一の理由

    覚えることが多い 初心者の主観ですがRustが難しい理由はこれに尽きると思います。初心者の感想として覚えることの多さについて書いていきます。 ちなみに、覚えることは多いですが、全部覚えなくても全然やっていけますし、見返りは大きいのでそのことについても書きます。 メモリ管理が難しい? よくRustが難しい理由として真っ先にに挙げられるのがメモリ管理です。しかし、これは実はそうでもないということが使い始めると分かってきました。 というのも、Rustの特徴である所有権とか借用とかライフタイムとかはメモリ管理を意識しなくてもいいようにするためのガーベージコレクションに代わる仕組みなのです。例えば私のようにWebフレームワークを使ってWebサーバーを立てるような型にはまったプログラミングを行うときは、ほとんど意識する必要がありません。 独自の言語仕様が多い 先に書いたメモリ管理だけでなく、エラー処理

    Rustが難しい唯一の理由
    poad1010
    poad1010 2025/04/09
    とても同意。 メモリー管理というか、スタックとヒープとそれらの生存期間というのは、本気で速いアプリを書く場合には抑えておかないとならない部分なので、ランタイム(GC)のおかげで手抜きができる言語とは違うって
  • A Year of Rust in ClickHouse

    poad1010
    poad1010 2025/04/09
    この記事をおすすめしました
  • Rustが嫌いです。

    0. 前書き - リモートデスクトッププロジェクトとの悲しき邂逅 私がremote-desktop-rsというクロスプラットフォームのリモートデスクトッププロジェクトを始めたとき、Rustの評判を信じていた。「メモリ安全性とパフォーマンスの素晴らしい組み合わせ」「優しいコンパイラエラー」「素晴らしいエコシステム」——当にそうだったのか? 1. 学習曲線は「少し急」ではなく「エベレスト級」 「所有権の概念を理解すれば、あとは簡単です」と言われ続けた。嘘だ。絶対に嘘だ。 1.1 所有権地獄 私はcommon/src/lib.rsで単純な「ビルド情報」構造体を作成しようとした: // 素晴らしい所有権システムと戦った結果の姿 pub fn build_info() -> BuildInfo { let build_date = chrono::Local::now().format("%Y-%

    Rustが嫌いです。
    poad1010
    poad1010 2025/04/09
    本来のコンピューティングそのものの難しさであって、GoやPythonみたいに高度なランタイムによって手抜きして知らないまま使えてしまうというのを避けられるから、安全に使えるという側面が強いのだがな。 コンパイラ
  • 安全と言われるRustの落とし穴 - Qiita

    Rustは「安全な言語」として知られています。特にメモリ安全性の面では優れた言語設計が施されていますが、それだけですべての問題が解決するわけではありません。コンパイラは多くのバグを捕捉してくれますが検出できない落とし穴も存在します。 上記の記事にRustで安全なコードを書く際によく遭遇する落とし穴と、それらを避けるためのベストプラクティスが非常によくまとまっていました。いくつか紹介します。 Rustコンパイラが検出できない問題の種類 Rustのコンパイラは優秀ですが、以下のような問題は検出できません: 数値型の変換ミスによるオーバーフロー ロジックのバグ unwrapやexpectの使用による意図しないパニック サードパーティクレートの問題のあるbuild.rsスクリプト 依存ライブラリの不適切なunsafeコード 競合状態 それでは、よくある落とし穴とその対策を見ていきましょう。 1.

    安全と言われるRustの落とし穴 - Qiita
    poad1010
    poad1010 2025/04/07
    良い記事なんだけど、どれも他の言語でも容易に起こる話であって、Rustでも clippy で指摘してくれたりはするって程度の話なんだよな。 それでも、ツールチェーンで指摘してくれるし、プログラミングの難しい部分を、少
  • RustのAnyを解説:リフレクションなしの型内省 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 前書き Rust がランタイムリフレクション(実行時リフレクション)を導入しない理由については、以下の RFC を参考にできます: 要点をまとめると、次のようになります: DI(依存性注入)は必ずしもリフレクションを使って実現する必要はなく、Rust にはより優れた実装方法がある; 派生マクロと Trait の組み合わせにより、実装をランタイムからコンパイル時に移行できる; 例えば、プロシージャルマクロを用いて、依存性注入などのリフレクション機能をコンパイル時に実現する:https://github.com/dtolnay/reflec

    RustのAnyを解説:リフレクションなしの型内省 - Qiita
  • Rustのトレイトとトレイト境界を理解する - Qiita

    Trait は他のプログラミング言語で一般的に「インターフェース(interface)」と呼ばれる機能に似ていますが、いくつかの違いがあります。Trait は特定の型が他の型と共有できる機能を持つことを Rust コンパイラに伝えます。Trait を使用することで、共通の動作を抽象的な方法で定義できます。Trait Bound を使えば、ジェネリック型が特定の動作を持つ型であることを指定できます。 簡単に言えば、Trait は Rust におけるインターフェースであり、ある型がそのインターフェースを使用する際の動作を定義するものです。Trait を使えば、複数の型間で共通の動作を制約でき、ジェネリックプログラミングの際にはジェネリック型が Trait で定義された動作に従うよう制限することも可能です。 Trait の定義 異なる型が同じ動作を持つ場合、Trait を定義して、それらの型に対

    Rustのトレイトとトレイト境界を理解する - Qiita
  • 【海外記事紹介】なぜTypeScriptはGoで書き直されたのか?C#やRustじゃない理由は?

    3月19日、海外テクノロジーメディアThe New Stackが「Microsoft TypeScript Devs Explain Why They Chose Go Over Rust, C#」と題した記事を公開した。この記事では、TypeScriptコンパイラをGoへ移植した背景や、その理由について詳しく紹介されている。 3月19日、海外テクノロジーメディアThe New Stackが「Microsoft TypeScript Devs Explain Why They Chose Go Over Rust, C#」と題した記事を公開した。この記事では、TypeScriptコンパイラをGoへ移植した背景や、その理由について詳しく紹介されている。 以下に、その内容を紹介する。 先ごろMicrosoftは、TypeScriptのコンパイラを新たなプログラミング言語であるGoに 移植す

    【海外記事紹介】なぜTypeScriptはGoで書き直されたのか?C#やRustじゃない理由は?
  • Rust製MCPライブラリの内部実装を徹底解析 - じゃあ、おうちで学べる

    はじめに 最近注目を集めているModel Context Protocol(MCP)は、大規模言語モデル(LLM)に外部ツールやサービスへのアクセス能力を提供するための標準プロトコルです。中でも公式が提供しているRust SDKはあまり注目されていませんが、私自身が必要としているためこのドキュメントを作成します。 github.com 以前は自前で実装していましたが、公式SDKが公開されたことでそちらを検討するのが良いと考えました。私の実装と比較してかなり洗練されている点が多く、多くの学びを得ることができました。 syu-m-5151.hatenablog.com この記事では、MCP Rust SDKの内部実装を深掘りし、どのようにRustの強力な型システムと非同期プログラミングモデルが活用されているかを解説します。コードの詳細な分析を通して、Rustの優れた設計パターンや実装テクニック

    Rust製MCPライブラリの内部実装を徹底解析 - じゃあ、おうちで学べる
    poad1010
    poad1010 2025/03/28
    この記事をおすすめしました
  • 【実践編】今すぐ使えるAI技術の最先端プラットフォーム完全ガイド| [第10回] PythonとRustのAIアプリ開発比較 - Qiita

    近年、AIアプリケーション開発においてPythonRustの選択肢が注目されています。記事では、PythonRustAI開発における特徴、利点、欠点、および実際のユースケースについて詳しく解説します。 1. PythonRustの概要 1.1. Pythonとは? Pythonは、シンプルな構文と豊富なライブラリを備えた高水準プログラミング言語です。AIやデータサイエンス分野で広く利用されています。 メリット: 豊富な機械学習AIライブラリ(TensorFlow, PyTorch, Scikit-learn) コードの可読性が高く、学習コストが低い Jupyter Notebookを利用したインタラクティブな開発が可能 デメリット: 実行速度が遅い(インタプリタ言語のため) GIL(Global Interpreter Lock)の影響で並列処理が制限される 1.2. Rust

    poad1010
    poad1010 2025/03/26
    この記事をおすすめしました
  • Rust非同期処理の仕組み:join! vs select!で実現する並行性 - Qiita

    Future を 1 つだけ実行する場合、非同期関数 async fn または非同期コードブロック async {} の中では .await を直接使用することができます。しかし、複数の Future を並行して実行したい場合、単に .await を使うと特定の Future が完了するまで他の並行タスクがブロックされ(直列実行)、思うように並行実行されません。 futures クレートには、Future を並行に実行できる便利なツールが多数用意されており、その中には join! マクロや select! マクロがあります。 注:futures::future モジュールには、マクロよりもさらに多機能な Future 操作用関数群が提供されています。詳しくは以下を参照: https://docs.rs/futures/latest/futures/index.html#modules ht

    Rust非同期処理の仕組み:join! vs select!で実現する並行性 - Qiita
    poad1010
    poad1010 2025/03/25
    この記事をおすすめしました
  • GPLv3、アメリカ東部夏時間の2007年6月29日(金)12時に正式リリース - GIGAZINE

    「find」はファイルやディレクトリを検索するためのLinuxのコマンドです。findのより高速かつユーザーフレンドリーなRust製代替ツール「fd」が開発されているとのことなので、実際に使い勝手を確かめてみました。 GitHub - sharkdp/fd: A simple, fast and user-friendly alternative to 'find' https://github.com/sharkdp/fd fdはWindowsでも使用可能なので、今回はWindowsでレビューを行います。まずはfdをインストールするため、スタートメニューを開いて「powershell」と検索し、検索結果にあるWindows PowerShellの「管理者として実行する」をクリック。 下記のコマンドを入力してfdをインストールします。 winget install sharkdp.fd 「

    GPLv3、アメリカ東部夏時間の2007年6月29日(金)12時に正式リリース - GIGAZINE
  • 経験談|なぜ 27万行のC++コードを削除してまで、Rustでデータベースを書き直したのか? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? TL;DR 私たちはデータベースプロジェクトを再構築するために C++Rust に置き換えました。この記事では、その理由、直面した課題、そして Rust がプロダクションレベルのプロジェクトに適しているのはどんな時かについて説明します。 RisingWave は、高性能なデータプラットフォームであり、ユーザーが馴染みのある SQL クエリを使って、イベントストリーミングのパイプラインやアプリケーションを数分で構築できるようにします。 RisingWave を作り始めたとき 私たちが RisingWave の構築を始めたのは 202

    poad1010
    poad1010 2025/03/24
    この記事をおすすめしました
  • IT技術解説③:なぜ、組み込み業界ではRustが流行らず、未だC言語が主流なのか?

    はじめに 組み込みソフトウェア開発の世界では、プログラミング言語の選択が製品の品質、開発効率、そして長期保守性に大きな影響を与えます。近年、メモリ安全性や並行処理の安全性を強みとするRust言語が様々な分野で注目を集め、採用が進んでいます。Webバックエンド、システムプログラミング、そしてLinuxカーネルのような重要なプロジェクトでもRustの導入が進んでいるにもかかわらず、組み込み開発の現場では依然としてC言語が主流であり続けています。稿では、最新の安全な言語であるRustが、なぜ組み込み開発において広く採用されず、数十年の歴史を持つC言語が今なお主要な選択肢であり続けているのか、その技術的・実務的な要因を詳しく検討します。 1.ヒープを使わない開発が多いのでRust領が発揮されない 組み込み開発では、動的メモリ管理を避ける設計が一般的です(ヒープを使わない)。 Rustの特徴で

    IT技術解説③:なぜ、組み込み業界ではRustが流行らず、未だC言語が主流なのか?
  • RustのAsync/Await入門ガイド - Qiita

    Rust の非同期プログラミングにおける async/.await async/.await は Rust に組み込まれた言語機能であり、同期コードのように記述しながら非同期処理を行うことができます。 それでは、async/.await の使い方を例を通じて学びましょう。始める前に、futures クレートを追加する必要があります。Cargo.toml ファイルを編集し、以下の内容を追加してください。

    RustのAsync/Await入門ガイド - Qiita
    poad1010
    poad1010 2025/03/22
    この記事をおすすめしました
  • 一休における C#,PythonからRustへの移行の現状と見えてきた課題

    はじめまして、一休でプロダクト開発・技術広報を行っている山(@kymmt90)といいます。 今回は「一休.comレストラン」のバックエンドのRust移行の取り組みについて、バックエンドを中心に、背景や現在の移行状況をお伝えします。 なぜRustを選定したのか?サービス概要「一休.comレストラン」は、上質なレストランを対象に店舗や事コースの検索、詳細情報の閲覧、Web予約機能を提供するサービスです。2006年にローンチされ、従来はPython・C#・VBScriptといった技術スタックを用いたシステム構成となっていました。 選定背景5年以上Pythonを中心にサービスを開発/運用してきましたが、コロナ禍や開発チームの再編成を経て、既存のコードベースのままだと事業の要求に沿った開発や運用が難しくなってきたという課題がありました。 そこで、サービスのUI自体の刷新を含めリライトしていくとい

    一休における C#,PythonからRustへの移行の現状と見えてきた課題
    poad1010
    poad1010 2025/03/22
    この記事をおすすめしました
  • 効果的なRustソースコード読解ガイド - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 1. 基モジュールから始める これらのモジュールはほぼすべてのRustプログラムで使用されるため、理解することがRust標準ライブラリを学ぶ基礎となります。 std::option::Option と std::result::Result Option は値が None である可能性がある場合に使用され、Result はエラーハンドリングに使用されます。これらの列挙型の実装を理解することは非常に重要であり、Rustにおいて null 参照を回避し、エラーを捕捉するための核心的なメカニズムです。 学習方法:これらのモジュールのドキュメ

    効果的なRustソースコード読解ガイド - Qiita
    poad1010
    poad1010 2025/03/19
    この記事をおすすめしました
  • 2025-03-14: IntelliJエージェントはよ、MCPブーム、Clineで遊ぶ、PythonからRustへ翻訳

    IntelliJでコーディングエージェントを駆使したい私はもうJetBrains IDEをメインにしていないのですが、PHPにかんしてはやはりVSCodeよりPHPStormに一日の長があり、IntelliJに返り咲けるチャンスを伺っているわけです。 今まではGooseのJetBrains MCP拡張を入れて試していたのですが、こいつはCline以上の暴れ馬ですべてを焼き尽くしてしまうので、人には勧めづらかった。 そこでClaude Codeがリリースされました。これは順当に良さそうで、MCPに対応していたので、Gooseのように連携できるなと睨みました。 検証結果をZennに投稿。この環境でしばらく過ごしてないのでまだなんとも言えないのですが、同士は試してみてほしい。 JetBrains IDEとClaude Codeを連携させて擬似ClineにするZennlaisoその翌日、なんとなく

    2025-03-14: IntelliJエージェントはよ、MCPブーム、Clineで遊ぶ、PythonからRustへ翻訳
    poad1010
    poad1010 2025/03/17
    この記事をおすすめしました