Rust による外部 REST サービスとの非同期通信実装

JSONPlaceholder(https://jsonplaceholder.typicode.com/)は、RESTful インターフェースの動作検証に特化した無料のモック API サービスです。本稿では、Rust を用いてこのサービスと連携し、CRUD 操作を非同期で実行する方法を解説します。 対象エンドポイントとデータ構造 以下のエンドポイントを対象とします: GET /posts/1 — 単一投稿の取得 GET /posts — 投 ...

7月21日 21:38 投稿

Rust製マイクロサービスをDocker+Kubernetesで本番投入するまで

概要 Rustで書かれたHTTP APIをコンテナ化し、Kubernetesクラスタへデプロイするまでの実践手順を解説します。マルチステージビルドによる最小イメージの作り方、非特権ユーザでの実行、水平オートスケール設定までカバーします。 Rustプロジェクトの準備 以下のディレクトリ構成で新規プロジェクトを作成します。 . ├── Cargo.toml ├── src │ └── main.rs ├── Dock ...

7月17日 21:23 投稿

Rustの非同期・同期処理とスレッドモデルの仕組み

Tokioなどの非同期ランタイムを用いた開発では、main関数に#[tokio::main]マクロを付与して記述するケースが一般的です。一見すると非同期関数として動作するように見えますが、コンパイル時に展開される実際のコード構造は同期ベースです。このマクロは構文糖衣であり、内部的には以下のような同期関数に展開されます。 fn main() { let rt = tokio::runtime::Builder ...

7月17日 21:12 投稿

Rust/C/C++ ハイブリッドビルドの実践 - Buck2ビルドツール徹底解説

Buck2ビルドツールの技術的特徴 Meta社が開発した次世代ビルドシステムBuck2は、2023年にオープンソース化された多言語対応ツールです。C/C++、Java、Go、Rust、Python、Haskellなど幅広い言語をサポートし、従来のBuck(Buck1)に対して2倍の高速処理を実現しています。 主要技術仕様 コアエンジンをRustで実装し、パフォーマンスを最適化 Starlark言語を使用した拡張可 ...

7月17日 18:49 投稿

Rustの所有権を深く理解する

Rustの「所有権」は、学習曲線が急峻になる原因の一つと言われています。本記事では、『Rustプログラミング言語』の第4章を基礎としながら、この概念について解説します。重要な解説を補足し、読者がより深く理解できるようにします。 予備知識:ヒープとスタック まず説明しましょう:なぜ所有権を理解するためにスタックとヒープの知識が必要なのでしょうか?『Rustプ ...

7月15日 16:58 投稿

RustでPostgreSQLデータベースに接続する方法

1. 同期接続の実装 まず、Cargo.tomlに以下のクレートを追加します: postgres = "0.19.7" use postgres::{Client, NoTls, error::Error}; fn main() -> Result<(), Error> { let mut db_connection = Client::connect("host=localhost port=5432 dbname=myappdb user=appuser password=mypassword", NoTls).unwrap(); for record in db_connection.qu ...

7月14日 23:50 投稿

Actix Web CI/CDパイプラインの構築と自動デプロイの実践

CI/CDプロセスの基本構成 Rustの高速WebフレームワークであるActix Webにおいて、CI/CDプロセスを効率的に構築するための手順を解説します。コードの変更から本番環境への自動デプロイまでを一貫して自動化することで、開発効率と品質の向上を実現します。 環境要件の確認 CI/CD設定を始める前に、以下の条件を満たしていることを確認してください: プロジェクトがGit ...

7月9日 00:31 投稿

Windows上のVSCodeからUbuntuサーバーへSSH接続し、Rustアプリケーションの開発とデバッグを行う方法

前提とアーキテクチャ方針 Windowsマシン上に導入したVisual Studio Code(VSCode)から、Linux系OS(Ubuntu等)を搭載したリモートホストへSSH経由で接続し、ネイティブな開発体験を得る手法を解説します。本アプローチでは、ローカル側のUI操作とリモート側のコンパイル・実行環境を分離することで、ネットワーク遅延を最小限に抑えつつ、専用ビルドサーバーやクラウドイ ...

7月6日 23:13 投稿

Rustにおける単調時計を用いた高精度時間間隔の取得方法

システムクロックと単調クロックの比較 システムクロック(墙上时钟)は、私たちが日常的に使用する時間を指します。一方、単調クロック(monotonic clock)は特定の時点から経過した時間を計測し、絶対的な時間値は意味を持ちません。 オペレーティングシステムは、この2種類の時間をそれぞれ提供しています。システムクロックはUTC(協定世界時)で表現され、うるう秒 ...

6月30日 21:25 投稿

Rustエディションの主要な構文変化と新機能

Rust 2015 と Rust 2018 の違い loop の戻り値 Rust 2018以降、loopブロック内でbreakに値を渡すことで、ループ全体の戻り値を直接変数に代入できます。 // 従来の書き方 let x; loop { x = 7; break; } // 新しい書き方(戻り値を直接代入) let x = loop { break 7; }; impl Trait 構文 引数や戻り値の型としてトレイトを直接指定する場合にimpl Traitを使用 ...

6月30日 19:55 投稿