2024/07/27 TechRAMEN 2024 Conference 概要: 私にとって何番目の言語になるかはもう数えていませんが、昨年 Rust を学び、 OSS の開発ができるところまでやってきました。私はそれまで Rust の学習に何度か挫折しており、今回ようやくその壁を乗り越えたので…
![これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT](https://cdn-ak-scissors.b.st-hatena.com/image/square/6375a85ff80ec224c4ccccbf7c7f89aa38d3aca1/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fa9ca4fc4176244d291930e3335b84cdc%2Fslide_0.jpg%3F31202965)
最近いろんなところで採用事例が増えてきたRustですが、Webサービス開発でのAPIサーバーを書くのにRustは向いてないと言われたりします。Rustの第一のターゲットはシステムプログラミングでありGCがないためAPIサーバー開発でシビアなメモリ管理はしたくないというのは一理あるのですが、RustでAPIサーバーの開発を実際にやってみるとむしろ開発体験が結構いいなと感じます。パフォーマンスのために難しい所有権を無理にがんばるみたいなマイナスのイメージはほとんど当てはまらなかったです。 Rustの難しいライフタイム、所有権があまり出てこない Rustにおいて難しいとされるライフタイム、所有権といった概念があり私も書く前はかなり身構えていたのですが、これに苦しむことは思ったよりも少ないです。その要因はWebサーバーで扱う処理のほとんどがリクエスト・レスポンスモデルでデータの流れが一方向でシンプ
Introcusion つい先日、「Rust版のRails」ともいわれている、 Locoというフレームワークを教えてもらいました。 Railsは昔ちょっとさわった程度なのですが、 Rustで手軽にRailsライクなアプリ開発はおもしろそうなので、 試してみました。 Loco? Locoについて簡単に説明します。 このblog記事で、Locoって何? なんでRustなの?とか誰のためのフレームワーク?みたいなことが書いてあります。 軽く説明すると、↓です。 Locoって何? Loco は、Rails からインスピレーションを得た Rust用のWebフレームワーク ほぼすべての Rails 機能が含まれている Controllerとaxum経由のルーティング ActiveRecordライクにSeaORMでモデル操作 rrgenでコード生成 その他いろいろ。詳しくは元記事で RubyでいいならR
気合いで実装、どうもかわしんです。 この記事は Rust Advent Calendar 2023 の6日目 兼 情報検索・検索技術 Advent Calendar 2023 の 6 日目です。 Rust で SQLite をフルスクラッチで実装しています。 github.com なぜ SQLite を Rust で再実装しようと思ったのかについては以前の記事で紹介しています。一言で言えば、誰も Rust で SQLite を書いている人がいなかったからやってみたのですが、そもそも SQLite が強すぎるということが再実装しているうちにわかってきて絶望しています。 kawasin73.hatenablog.com 4 ヶ月前にこの記事を書いたときは簡単な SELECT 文しか実行できなかったのですが、現時点では SELECT, INSERT, DELETE 文をサポートし、express
C++はRustが登場する前から成熟度の高い言語だった。開発者はC++からRustに切り替える必要があるのだろうか。必ずしもそうとは限らない。C++とRustの品質、両言語の相違点と類似点を調べて、どちらのプログラミング言語を選ぶかを決めたい。 C++はRustが登場する前から成熟度の高い言語だった。開発者はC++からRustに切り替える必要があるのだろうか。必ずしもそうとは限らない。 新たなプロジェクトに携わるプログラマーは、プログラミング言語の選択肢が不足することはない。プログラミング言語「C++」と「Rust」は、 ブラウザベースのソフトウェアからビデオゲームに至るまで、さまざまなプロジェクトに適しており、それぞれに利点がある。 C++は効率的で信頼性の高いプログラミング言語だ。信頼性、パフォーマンス、スケーラビリティの高さから開発者はC++を選ぶ。C++の標準テンプレートライブラリ
はじめに この文章はGoでシンプルなL7ロードバランサーを作成するというKasun Vithanageさんの記事を参考にRustでL7ロードバランサーを書いてみたという記事です。ロードバランサーについて、ちゃんと勉強するならそっちを見た方が良いかもしれません。 またこの記事を書いている途中にactix-webのexampleのレポジトリがガッツリとactix-web 2.0-alpha.3に書き換えられました。actix-webの2系はfuturesの0.3系を使っております(actix-webの1系はfuturesの0.1でした)。多いに参考にさせてもらっております。途中までサンプルなしで2.0-alpha.1を強引に動かしていたので非常に助かりました。 成果物 https://github.com/rchaser53/rlb 実装する内容について NginxのようなL7ロードバランサー
セキュリティを盾に一点突破。どうもかわしんです。最近 Rust で SQLite を実装してます。 以前の記事で HTTP Parser を Rust で実装しようとしたものの、すでに実装されていたので断念しましたが、いい題材を見つけました。SQLite です。開発中のリポジトリはこれです。 github.com 今の時点では、Read Only で1つの WHERE 句を持った SELECT 文しか処理できないですが、以下の機能を実装しています。 sqlite3 で生成された database ファイルの読み取り (cursor.rs, btree.rs, record.rs) SQL 文の解析 (token.rs, parser.rs) テーブルとインデックスのメタデータのパース (schema.rs) 動的なファイルの読み込み (pager.rs) SQL クエリとスキーマ情報を元に
本連載では、Webブラウザー上でJavaScriptとともに動作できるバイナリ形式のプログラムファイル「WebAssembly」を、Rustプログラミング言語で実装する方法を説明していきます。前回はRust/WebAssemblyとJavaScriptとのデータ交換について説明しました。今回は、ログ出力とファイルサイズ縮小の方法、および、成果物をパッケージにして世界に公開する方法を説明していきます。 はじめに 本連載では、Webフロントエンド開発において注目されているバイナリ形式のプログラムファイルWebAssemblyを、Rustで実装して活用する方法を説明しています。 より本格的にプログラムを開発するには、正しく動作させるまでにデバッグを行う必要があります。本記事ではデバッグ時に利用できるログ出力について説明します。また、アプリの読み込み速度をより速くできる、ファイルサイズ縮小方法につ
こんにちは大櫛です。Travis CIがオープンソースプロジェクトで使いづらくなったり、Azure PipelinesからGitHub Actionsになった途端*1爆発的な流行が生まれたりと、CIサービスにおいてもここ数年で色々な動きがありました。 特に技術記事・ブログのトレンドや企業のリクルート向け資料を見ていると、GitHub Actionsの利用が進んでいるような印象を受けます。 今回はそんなGitHub Actionsについて、Rust projectで使う際に知っておいた方がいいことやactionを紹介していきます。 以下の情報は執筆時点(2023-02-19)のものに基づいています。閲覧時には無効・誤ったものになっている可能性がありますので、必ず最新の情報・状態を確認するようにしてください。 actions-rs(非推奨) まずはじめに、執筆時点では使用を控えた方がいいact
はじめに 皆様こんにちは、株式会社プラハのAwataです。 今日は、以前書いたリーダーの振り返り記事で軽く触れていた、RustでのAPI開発についての記事を書いていこうと思います。 結論RustでWebは辛い!という話なんですが、約5か月くらいRustでWeb開発をしたので、今後の参考になるようなことを書いていこうと思います。 ぜひ最後までお付き合いください。 TL;DR RustでWeb開発はまだ早いかもしれない。 RustでDDDはやりやすい。ただしDIがやりにくい場合があるので、そこは要注意。 Rustはモジュールの仕組みが協力なので、モジュラモノリスはやりやすい。 サンプルリポジトリはこちら Rustはやっぱり難しいけど人気の理由も少し分かった気がする そもそもなぜRustでやってみようとなったのか 前例が少ない中、どうしてRustで開発しようと思ったのか気になる方も多いと思います
Developers Summit(デブサミ) 9-B-9 02/09 17:45 ~ 18:25 「満を持して始めるRust」kenkoooo RustはC++の代替となることが期待されていることから、低レイヤ向け言語という印象を持っている方も多いかもしれません。しかし、Rust 1.0のリリースから7年ほど経ち、言語そのものだけでなく周辺のライブラリやツールも充実し、普段遣いのプログラミング言語として快適に開発できる環境が整っています。 本セッションでは、今日からRustで開発をスタートすることを目指し、Rustそのものの紹介だけでなく、実際の開発におけるコードの書き方や、estieでの導入事例をご紹介します。
機運高まるRust言語に入門しよう Windows自体の開発に使われていることも判明、次期Android OSの開発言語にも採用、ついにLinuxでも採用される(かも)とのことで最近機運が高まっているMozilla発のRust言語。 このエントリでは商業本を分野別に、その中では発行日が新しい順にまとめてみました。第2版がある本の初版含め合計約25冊。そのうち2022年に出たのが計9冊、【追記】2023年に2冊と、数えてみると既にけっこうな冊数になっています。Go言語の日本語の本が確か合計15冊前後ぐらいだったので負けずに盛り上がっていますね。 機運高まるRust言語に入門しよう 補足的にRust本の傾向 入門者向けの本 動かして学ぶ!Rust入門 パーフェクトRust ゼロから学ぶRust システムプログラミングの基礎から線形型システムまで (KS情報科学専門書) 手を動かして考えればよく
エディタ支援 言語の公式がエディタ支援(LSP等)を提供しているかを示しています。 自動テスト 言語の公式が自動テスト(ユニットテスト等)を備えているかを示しています。 リンタ 言語の公式がリンタを提供しているかを示しています。 ビルドシステム 言語の公式がビルドシステムを提供しているかを示しています。 パッケージマネージャ 言語の公式がパッケージマネージャを提供しているかを示しています。 フォーマッタ 言語の公式がフォーマッタを提供しているかを示しています。 手続き型 言語のプログラミングパラダイムが手続き型プログラミングを強くサポートしているかどうかを示しています。 オブジェクト指向 言語のプログラミングパラダイムがオブジェクト指向プログラミングを強くサポートしているかどうかを示しています。 関数型 言語のプログラミングパラダイムが関数型プログラミングを強くサポートしているかどうかを示
メモリー関連の不具合を減らすために、「Android」の新しいコードにRustを使用するというGoogleの判断は、成果を挙げているようだ。この数年で、Androidのメモリー安全性関連の脆弱性は半分以下になった。この成果が達成された時期は、GoogleがCやC++からメモリー安全性の高いプログラミング言語であるRustに切り替えた時期と一致する。 Androidに発見されたセキュリティホールの中で、最も件数が多かったカテゴリーがメモリー安全性関連の脆弱性でなかったのは2022年が初めであり、Googleは1年前に、「Android Open Source Project(AOSP)」で新しいコードのデフォルト言語をRustに切り替えている。 GoogleがAndroidに使用しているほかのメモリー安全性を備えた言語には、JavaやJava互換のKotlinがある。AOSPで主流の言語はま
TauriはRustで書かれた軽量なGUIフレームワークで、Windows、macOS、Linux向けのデスクトップアプリを開発できます。2022年6月に最初の安定版であるバージョン1.0がリリースされました。 Tauriでは、メインプロセスはRustで記述しますが、UI(User Interface)にはWeb技術を利用します。ReactやVue.jsのようなJavaScriptフレームワークがそのまま使えるので、インタラクティブで見栄えの良いUIを簡単に構築できます。同種のフレームワークにElectronがありますが、後発であるTauriにはインストーラのサイズを小さくできるなどの強みがあります。 Tauriのロゴは、おうし座の二重星であるシータタウリ(θ Tauri)をモチーフ[1]にしており、Webとネイティブアプリの相互作用を意味しています。 図1 Tauriロゴ 本稿では、Ta
Rustを第二言語として採用してデバイスドライバなどのモジュールをRustで書けるようにする「Rust for Linux」が近々マージされる予定だともLinus氏自身が発言しています。 そんな期待のかかるRust for Linuxですが、提案された当初は期待こそされていたものの、様々な懸念点も指摘されていました。 その1つが標準ライブラリの一部であるallocクレートの設計です。 このクレートはヒープ領域を扱うBox、Vec、StringなどRustではお馴染みの構造体を提供しています。 Rustの標準ライブラリはOSのサポートを前提とした構造体も多くあります。そのため、OSそのものを書くようなベアメタルプログラミングにおいて標準ライブラリをそのまま使うことはできません。 使えるのはcoreと呼ばれる依存関係のない全く無いライブラリがありますが、allocはOSのサポートが必要なヒープ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く