タグ

Rustに関するastk_fのブックマーク (67)

  • 満を持して始めるRust

    Developers Summit(デブサミ) 9-B-9 02/09 17:45 ~ 18:25 「満を持して始めるRust」kenkoooo RustC++の代替となることが期待されていることから、低レイヤ向け言語という印象を持っている方も多いかもしれません。しかし、Rust 1.0のリリースから7年ほど経ち、言語そのものだけでなく周辺のライブラリやツールも充実し、普段遣いのプログラミング言語として快適に開発できる環境が整っています。 セッションでは、今日からRustで開発をスタートすることを目指し、Rustそのものの紹介だけでなく、実際の開発におけるコードの書き方や、estieでの導入事例をご紹介します。

    満を持して始めるRust
  • Rust を ChatGPT だけで勉強する【実験記録】

    C++ 経験者が、ChatGPT との対話だけで Rust を学んでみる実験の記録です。 期待した回答が得られなかった際には、質問文を変えたり、回答を再生成したりしています。 AI の回答には不正確な情報が含まれている可能性もあります。不正確な技術情報が拡散しないよう、AI の回答は画像で掲載しています。

    Rust を ChatGPT だけで勉強する【実験記録】
  • Rustでクラスを表すと

    稿の目的 Rustに存在しない「クラス」をRustの既存機能の組み合わせとして表現することで、一般的なOOP言語とRustのデータ表現に対する考え方の違いと、各概念がどのように対応しているかを理解しやすくすることが主な目的です。 主な想定言語 C++, Java, JavaScript, Rubyのクラスを主に想定しています。 方針 サブタイピング Rustにはごく限定的なサブタイピングしかないため、クラスのサブタイピングに相当する変換は明示的に .as_ref() / .as_mut() として表現します。 Deref / DerefMut を使うことで、このような振る舞いを部分的に再現できる場合もあります。ただし、この用途でDeref / DerefMutを使うのは推奨されていません。 カプセル化 一般的なOOP言語では継承関係に基づいたアクセス制御 (protectedなど) が行

    Rustでクラスを表すと
  • 新米Rustaceanの🌾🦀による🌾🦀のためのRust入門「C++/C#プログラマーでも読めるようになる」

    Rustで簡単なツールを作ってみました。はじめてのTUI(モドキ)のツールです。 このバージョン0.1.0を作ったことで得られた知見をまとめてみます。 長文になってしまったので目次をうまく使ってください。(スマホ画面だと上部の目次をタップしないと表示されないので少し見づらいです。) 「いいね」、「ツイート」、「バッジを贈る」、「コメント」大歓迎です! 作成ツール紹介 みなさん、timeコマンドでコマンドの実行時間を計測しますよね?Rust製のhyperfineというツールがあり、複数回実行して平均を出したり、複数コマンドを比較できたり便利です。 これを見て私はメモリ使用量も計測できたらうれしいなと思ったんです。 そう、このmntimeコマンドを使えば、実行時間とメモリ使用量の平均値が分かるんです! そんなツールですがRustで作った経緯は、最近ターミナル環境を整えました。そのとき、モダンで

    新米Rustaceanの🌾🦀による🌾🦀のためのRust入門「C++/C#プログラマーでも読めるようになる」
  • 軽量RustフレームワークTauriでデスクトップアプリ開発をはじめよう | gihyo.jp

    TauriはRustで書かれた軽量なGUIフレームワークで、WindowsmacOSLinux向けのデスクトップアプリを開発できます。2022年6月に最初の安定版であるバージョン1.0がリリースされました。 Tauriでは、メインプロセスはRustで記述しますが、UI(User Interface)にはWeb技術を利用します。ReactVue.jsのようなJavaScriptフレームワークがそのまま使えるので、インタラクティブで見栄えの良いUIを簡単に構築できます。同種のフレームワークにElectronがありますが、後発であるTauriにはインストーラのサイズを小さくできるなどの強みがあります。 Tauriのロゴは、おうし座の二重星であるシータタウリ(θ Tauri)をモチーフ[1]にしており、Webとネイティブアプリの相互作用を意味しています。 図1 Tauriロゴ 稿では、Ta

    軽量RustフレームワークTauriでデスクトップアプリ開発をはじめよう | gihyo.jp
  • Rustはなぜ開発者に愛されているのか、そして「人を選ぶ」理由とは? 実案件でRustを採用するゆめみに聞く

    昨今、開発者の中で人気が増しているプログラミング言語「Rust」。気になっている開発者は多いものの、業務での採用はまだこれからと考えている人も多いだろう。そんな中、ゆめみではRustに力を入れ、自社内外の案件でRustの活用を進めている。なぜ、ゆめみではRustの習熟を推奨するのか。その理由とともに、Rustの特徴、実際に使って見た感想、さらにはRustの今後の展望などについて、ゆめみでRustの推進に関わっているチャレンジCTO(最高技術責任者)の池口直希氏、エンジニア兼チャレンジ取締役のスミス 祐一郎 ルーク氏、サーバサイドエンジニアの舩戸隆氏に話を聞いた。 ゆめみでRust活用を牽引するエンジニア 2006年にグレイドン・ホアレ氏という個人プロジェクトとして開発されたプログラミング言語「Rust」。2009年にMozillaが開発に参入してプロジェクト化。その後、仕様変更を繰り返し、

    Rustはなぜ開発者に愛されているのか、そして「人を選ぶ」理由とは? 実案件でRustを採用するゆめみに聞く
  • Rustエラーハンドリング・チートシート - Qiita

    Rustのエラーハンドリング関連の主要メソッドが一目でわかる、チートシートを作成しました。 Rustは型システムが複雑なので、やりたいことに適切なメソッドがあるかどうか、ドキュメントを探しまくることが多いです。エラーハンドリングもその類の1つであり、ドキュメント探索の手間を削減するために、チートシートを作成してみました。 ご活用ください。 1. チートシート 2. 関連リンク bool - doc.rust-lang.org Option - doc.rust-lang.org Result - doc.rust-lang.org

    Rustエラーハンドリング・チートシート - Qiita
  • 組込みエンジニアのためのRustのよくわからない記号まとめ - Qiita

    はじめに どうも、レガシー組込みエンジニアの@yagisawaです。 Rustを勉強しているとCでは見かけない言語仕様(主に記号の使い方)に出くわすことがあるので、チートシート的な感じでまとめてみました。 勉強が進み次第都度更新していく予定です。 「RustではXXX等に使います」と曖昧な表現をしていますが、私の勉強が足りていないだけで記事で紹介しているもの以外の使い方も存在する可能性がある旨、予めご承知おきください。 Cについても私が知らない使い方が存在する可能性がある旨、予めご承知おきください。仕事柄C89の仕様を主に扱っています。また記事の主眼はRustであるため、Cの情報の充実度については質ではありません。

    組込みエンジニアのためのRustのよくわからない記号まとめ - Qiita
  • RustでClean Architectureを実装してみる

    はじめに RustでWebアプリケーションのGraphQLバックエンドを実装してみました。その中で、できるだけClean Architectureに沿うように実装してみたので、得られた知見を公開してみたいと思います。 資料に基づきできるだけ正確な記述を目指していますが、誤りもあるかもしれません。また実装から少し時間を空けて執筆しているので、忘れている部分も多く不正確なことが書いてあるかもしれません。 Clean Architectureとは 以下のブログでRobert C. Martin(通称Uncle Bob)によって提唱されたアーキテクチャです。 その後人により書籍も出版されました。日語にも翻訳されています。 歴史について簡単に 多層アーキテクチャ (Multitier architecture) というものはかなり昔から考えられていたようです。初出についてはよくわからないのですが

    RustでClean Architectureを実装してみる
  • Rust初学者が脱初心者するためにした事 - Qiita

    🦀はじめに🦀 はじめまして、🦀カニさん🦀です。 プログラミング歴2年目の趣味グラマーで、去年はDataCampでひたすらPythonをやっていました。 しかし途中で飽きてしまいRust入門🦀 現在はRustの学習とその備忘録も兼ねて「Rust入門」というブログを運営しています。 ブログは海外製の優良テーマを買ってマニュアル通りに設定し、Github から CloudFlare Pages に自動デプロイという感じです。 なので、JavaScriptに関しては全くと言っていい程理解していません。HTMLCSSもチートシートが無いと何もわかりません。 (実は2年前はコマンドプロンプト恐怖症でした🦀💦) でも理解してなくてもマニュアル通りに進めればきちんと自分のブログが構築できるのは素晴らしい事ですね!🦀 Twitterでは仕入れた知識を断片的にアウトプットしています。-> @

    Rust初学者が脱初心者するためにした事 - Qiita
  • Rustで型レベルプログラミング

    はじめに 通常のプログラムは実行時(ランタイム)に1 + 1など様々な計算を行う。一方でコンパイラーを持つ言語では、コンパイラーの型検査やジェネリクスなどの機構を利用して、コンパイル時にも計算を行うことができる。このようなプログラミングを、コンパイル時に検査・推論される“型”[1]に注目して型レベルプログラミングと呼ばれる。 ランタイムの計算の中にはたとえばwhile(1);のような簡単な計算で無限ループといった停止しない状況に陥いることがある。コンパイル時にできる計算でこのように無限ループに陥いってコンパイルが停止しなくなってしまったら、プログラムを実行することなく自明なエラー(型があってないとか、Rustであればfreeするタイミングが自明でないなど)を検出しようというモチベーションが崩壊してしまう。したがってコンパイル時にできる計算とはランタイムに比べて非常に限定された計算しか許可さ

    Rustで型レベルプログラミング
  • Prustiを使ってRustでプログラム検証をしよう

    導入に際し、ドキュメントに書いてないこととか色々あってつらかったため、軽くメモ代わりに投稿しておきます。 また、Prusti を使う最も簡単な方法は VSCode の拡張である Prusti-Assistant を使うことですが、Vimの使用を見越しコマンドだけで使えるようにアレコレ設定しました。 Prusti の紹介 プログラミングにおいて、関数に対してプログラマが明示的に制約を課すことはよくあります。 例えば、次のような単純な関数 max を考えます。 fn max(x: i32, y: i32) -> i32 { let result = if x > y { x } else { y }; result } さて、この関数は次のような性質を持つことが期待されます。 resultはx以上かつy以上 resultはxまたはy そういった情報は多くの場合ライブラリのドキュメントなどに書い

    Prustiを使ってRustでプログラム検証をしよう
  • Rust + GitHub Actionsでマルチアーキテクチャ対応のイメージをなるべく早く作る - 名有りさんの日記

    マルチアーキテクチャ対応のイメージとは 詳しいことは書かないが、複数種類のアーキテクチャ上で実行できるイメージのことを指す。amd64 や arm64 など、異なる種類の環境でも docker run --rm hello-world として実行できるのはこれに対応しているため。 このようなビルドをGitHub Actionsで行いたくなるが、これがかなり遅い。 愚直にやると遅い docker buildx build --platform linux/amd64,linux/arm64 -t naari3/testtest . のように実行すると、必要なタイミングでQEMUが起動して対象のアーキテクチャで実行してくれるんだけど、まあ勿論のように遅い。 Googleで調べてみると、遅くならないようにする工夫がいくつかヒットする。 Rustのクロスコンパイルを利用する Rustは比較的簡単に

    Rust + GitHub Actionsでマルチアーキテクチャ対応のイメージをなるべく早く作る - 名有りさんの日記
  • 個人開発したサービスのバックエンドを Python から Rust に書き換えてみた

    はじめに 過去の記事『淡路島発着の高速バス検索サービス「GO TO AWAJI」をリリースした話』で Python を用いて個人開発サービスのバックエンドを実装したことを紹介しました。 勉強のためにこのサービスのバックエンドの一部を Rust で書き換えたので、記事で紹介させて頂きます。 クローラーサービス 今回 Python から Rust に書き換えを行ったのはクローラーと呼んでいるサービスです。 これは GCP の Cloud Run 上で動いており、 Cloud Scheduler から定期的に実行されて以下のことを行っています。 クローラーサービスのシステム構成 各バス会社の新着情報をスクレイピングする 取得した新着情報を DB (SQLite) に保存されている過去の新着情報と比較する 新しい新着情報が存在する場合DBに保存し、SendGrid で筆者宛にメールで通知する な

    個人開発したサービスのバックエンドを Python から Rust に書き換えてみた
  • Rustのグラフィクス周りメモ/wgpuとその使い方

    はじめに Rustでグラフィクスプログラムをクロスプラットフォームに書く環境が、wgpuというクレート中心に揃っていて大変素晴らしいので、それについてメモします。 記事の後半では実際にwgpuを使って三角形の描画までを試してみます。 バージョン Rust: 1.62.0 wgpu: 0.13.1 グラフィクスAPI この記事ではグラフィクスプログラミングを、グラフィクスAPIを利用したプログラミングを指すものとします。 まずはグラフィクスAPIについて最初に説明をします。 グラフィクスAPI グラフィクスのAPIとは、具体例をあげるとOpenGLやDirctX的なやつです。 現代においてリアルタイムグラフィクスを利用するプログラムを書く場合、CPUだけで実行される普通のプログラムとは違い、GPUを使うプログラムを書くことになります。 GPUを使うプログラムを書くとはどういうことかというと、

    Rustのグラフィクス周りメモ/wgpuとその使い方
  • プログラミングRust 第2版

    次世代ブラウザ開発用にMozillaによって開発されたRustは、C/C++並みのパフォーマンスと低レベルの制御能力に加え、メモリとスレッドの安全性を担保し、さらに並行性にも優れるといった特徴を持つ、優秀な言語です。書はMozillaで実際にRustを使ってFirefoxを開発している著者らによる、言語の概要と用途について解説する書籍で、Rustのほとんどの機能を詳細にカバーします。Rustのメジャーバージョンアップにより非同期処理が可能となったことに対応し、第2版では新たに非同期処理の章を設け、この機能を詳細に解説しています。Rust 2021対応。 訳者まえがき まえがき 1章 システムプログラマにもっといいものを 1.1 Rustはプログラマの負担を引き受ける 1.2 並列プログラムを飼いならす 1.3 にもかかわらずRustは速い 1.4 Rustでは協調するのも容易 2章 Ru

    プログラミングRust 第2版
  • Rustのスレッドとチャネルと共有メモリの話

    この記事ではRustのスレッドとチャネルについてご紹介します。最後に共有メモリについても少しだけ触れます。対象としてはgolangを書ける程度の中級者レベルを想定しています。 公式ドキュメントについて Rustの公式ドキュメントはとても良く書けており英語の勉強にもなります。プログラミング・チュートリアルは圧巻ですのでぜひ原文で読んでみてください。 スレッド RustのスレッドはOSスレッド(1:1 threading)になります。GolangJavaはグリーンスレッドです。 This model where a language calls the operating system APIs to create threads is sometimes called 1:1, meaning one operating system thread per one language thr

    Rustのスレッドとチャネルと共有メモリの話
  • Rustの良質な学習リソースをまとめる - BioErrorLog Tech Blog

    Rustの勉強に良さげな学習リソースをまとめます。 はじめに Rust学習リソースまとめ The Rust Programming Language Tour of Rust Rust by Example The Rust Reference The Cargo Book Crate docs Rust API Guidelines Rust Design Patterns The Rustonomicon Secure Rust Guidelines Command line apps in Rust おわりに 参考 はじめに こんにちは、@bioerrorlogです。 最近、Rustを触り始めました。 多様な領域で盛り上がりを見せているRustですが、私は最近ハマっているブロックチェーンのエコシステムでRustが使われることが直接の理由となり、Rustに入門しました。 Rustは学習

    Rustの良質な学習リソースをまとめる - BioErrorLog Tech Blog
  • Rustのコードチェックを強力にする3つのツール | κeenのHappy Hacκing Blog

    κeenです。 Rustaceanのみなさんは普段書いてるRustのコードを検証するのに cargo check や cargo test などのツールを使っているかと思いますが、それらを強力にするツールの miri 、 MIRAI 、 kani をそれぞれ紹介します。 Rustにはいくつかコードの正しさや行儀のよさを検査する方法がありますね。 cargo check や cargo test 、 あるいはビルドしたバイナリを走らせて検証したり色々手を尽くしているでしょう。 ですがこれらだけだとあらゆる種類のバグを拾いきれる訳ではないのもみなさん承知の通りだと思います。 既存の方法だと手が回らない所があるので他のアプローチでコードを検証してくれるツールがあると嬉しいですよね。 そういったツールを3つ紹介します。 先に注意しておくと、これらのツールはまだ成熟しきってはおらず使いづらい点、使い

    Rustのコードチェックを強力にする3つのツール | κeenのHappy Hacκing Blog
  • RustのWasm周りのクレートまとめと、Trunkを使ってRustで書いたWasmをブラウザ上で簡単に実行する

    wasm-packを使うことで、ビルドしてwasm-bindgen-cliでさらに変換処理を行い、npmで配布可能なパッケージにするという多段階必要なビルド手順をまとめることが可能です。 またnewコマンドのようなテンプレートから生成する機能などもあり、より手軽にWasmの実行を行えます。 後述のTrunkとの違いは、wasm-packはwebpackなどのJavaScript側で使われるバンドラーなどと合わせて使うことが想定されていることです。 webpackと合わせて使わない場合には今回のテーマであり後述するTrunkを利用したほうがより簡単にWasmの実行を行えます。 wasm-opt GitHub binaryenというリポジトリでwasm-optというツール含むいくつかのツールが作られています。 wasm-optはその名の通りWasmの最適化をしてくれるツールです。 与えるオプシ

    RustのWasm周りのクレートまとめと、Trunkを使ってRustで書いたWasmをブラウザ上で簡単に実行する