前回に続き、Rustを業務アプリ開発にどのように活かそうかを考えていきたいと思います。
業務アプリといえばデータベースはつきものです。
Rustでもデータベースを利用する手段は提供されています。
mysqlやpostgresといったオープンソースのデータベースなら、ググればすぐにライブラリが出てきます。
rust postgres
rust r2d2
ライブラリの組み込みもいたって簡単。
rustのプロジェクトごとに必要な1テキストファイル「cargo.toml」に、インターネット上で管理されているrust
docでの名称と、ほしいバージョンを記載してコンパイルするだけです。
あとはライブラリをextern crate句でインポートし、使うときはuse句を書き、SQLを実行するメソッドを呼び出せばOKです。
prepared statementによるSQLの事前解析や、SQLインジェクションを防ぐプレスホルダにも対応しています。
また、ORマッパーとして「Diesel」ライブラリが、Rust業界の標準となっています。
rust diesel
これもかなりいい線をいっていると思います。
よほど特殊なSQLを書く必要があるアプリでない限り、非常に便利なライブラリと思います。
テーブル名、項目名、型とRustの構造体のフィールド、型との紐付けを定義しておけば、値の入出力を書くときに間違いがあると、Rustの強力な型チェックも相まって、コンパイル時点でエラーにしてくれます。
SQLもそのまま書くのではなく、用意されたメソッドを実行するようにします。
結合も問題なくできます。
ただ、少しでもそのDBMS特有のSQLを発行しようとしたり、Window関数を使おうとすると、それなりに面倒な記述になりますね。
その代わり、SQL標準にきちんと準拠されるので、DBMS間の移植は容易になると思います。
コンパイルが通ると、自然とそれなりの品質のものができあがります。
クエリで取得した結果を、クライアントアプリなどで使いやすいJSON形式に変換するのも、実に簡単にできるライブラリがあります。
「actixweb」公式サイトのサンプルでは、httpリクエストがあれば、クエリの結果をJSON形式にしてクライアントへ返しており、なかなか少ないコードで実現しています。
「actixweb」公式サイト diesel 利用例
ということで、これだけライブラリが充実していれば、小難しいRustでもデータベース操作は非常に楽だと感じます。
業務アプリで利用するにはうってつけではないでしょうか。
(酒)
moniswitch
今お使いの離床センサーがそのまま使える!
離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ
monipet
動物病院の犬猫の見守りをサポート
病院を離れる夜間でも安心
ASSE/CORPA
センサー、IoT、ビッグデータを活用して新たな価値を創造
「できたらいいな」を「できる」に
OSGi対応 ECHONET Lite ミドルウェア
短納期HEMS開発をサポート!
WhitePlug
手のひらサイズのLinuxサーバ
株式会社ジェイエスピー
横浜に拠点を置くソフトウェア開発・システム開発・
製品開発(monipet)、それに農業も手がけるIT企業
業務アプリといえばデータベースはつきものです。
Rustでもデータベースを利用する手段は提供されています。
mysqlやpostgresといったオープンソースのデータベースなら、ググればすぐにライブラリが出てきます。
rust postgres
rust r2d2
ライブラリの組み込みもいたって簡単。
rustのプロジェクトごとに必要な1テキストファイル「cargo.toml」に、インターネット上で管理されているrust
docでの名称と、ほしいバージョンを記載してコンパイルするだけです。
あとはライブラリをextern crate句でインポートし、使うときはuse句を書き、SQLを実行するメソッドを呼び出せばOKです。
prepared statementによるSQLの事前解析や、SQLインジェクションを防ぐプレスホルダにも対応しています。
また、ORマッパーとして「Diesel」ライブラリが、Rust業界の標準となっています。
rust diesel
これもかなりいい線をいっていると思います。
よほど特殊なSQLを書く必要があるアプリでない限り、非常に便利なライブラリと思います。
テーブル名、項目名、型とRustの構造体のフィールド、型との紐付けを定義しておけば、値の入出力を書くときに間違いがあると、Rustの強力な型チェックも相まって、コンパイル時点でエラーにしてくれます。
SQLもそのまま書くのではなく、用意されたメソッドを実行するようにします。
結合も問題なくできます。
ただ、少しでもそのDBMS特有のSQLを発行しようとしたり、Window関数を使おうとすると、それなりに面倒な記述になりますね。
その代わり、SQL標準にきちんと準拠されるので、DBMS間の移植は容易になると思います。
コンパイルが通ると、自然とそれなりの品質のものができあがります。
クエリで取得した結果を、クライアントアプリなどで使いやすいJSON形式に変換するのも、実に簡単にできるライブラリがあります。
「actixweb」公式サイトのサンプルでは、httpリクエストがあれば、クエリの結果をJSON形式にしてクライアントへ返しており、なかなか少ないコードで実現しています。
「actixweb」公式サイト diesel 利用例
ということで、これだけライブラリが充実していれば、小難しいRustでもデータベース操作は非常に楽だと感じます。
業務アプリで利用するにはうってつけではないでしょうか。
(酒)
moniswitch
今お使いの離床センサーがそのまま使える!
離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ
monipet
動物病院の犬猫の見守りをサポート
病院を離れる夜間でも安心
ASSE/CORPA
センサー、IoT、ビッグデータを活用して新たな価値を創造
「できたらいいな」を「できる」に
OSGi対応 ECHONET Lite ミドルウェア
短納期HEMS開発をサポート!
WhitePlug
手のひらサイズのLinuxサーバ
株式会社ジェイエスピー
横浜に拠点を置くソフトウェア開発・システム開発・
製品開発(monipet)、それに農業も手がけるIT企業