Rust開発始めてみました! ~なぜRustで開発?~
はじめに
前回、自宅開発環境構築について書きました!
そこで少し話しましたがDynabook RX73をRust開発環境に選びました!
家に眠っていたスペックよわよわノートPCにXubuntuを入れ込めば、
よわよわでも使う用途が出てくるんじゃないか?という考えのもとGemini先生に相談したところ。。
そしたら、Windows10で動かすよりもリソース圧迫しないし良いと思う!と
めちゃめちゃ肯定的な意見をもらったので、すぐにXubuntuインストールしました!
安易な気持ちでminimalインストールを選んだところ色々困ったことが起きたので、
それは別の記事で報告しようと思います!
今のところ、標準インストール → VSCodeインストール → Rust動作環境セットアップ の
セットアップが完了しているので、すぐに触れる状況にはなっています!
Windows10時代はメモリかつかつでChromeなんて起動したら80-90%台になってしまい、
ろくに動かせるような機器ではなかったのですが。。。
Xubuntu + VSCode でメモリ50%いかないくらいになっていて感動しています!
まだ何も開発していないからだとは思いますが!笑
導入が長くなってしまいましたね。。。すみません。
Rustを開発言語に選んだ理由
私がRustを開発言語に選んだ理由についてお話したいと思います!
そんなに劇的な話があるわけではないので、期待はそこそこでお願いしますー。
きっかけ
直近、CKA受験しており見事に不合格になっているのですが。。。
学習のためにKodeKloudというサイトのCKA講義を受講していました。
そこではKubernetes,AI,クラウドなど様々な分野の講義が揃っているのですが、
その中でRustの講義を見つけました!
講義未受講ですが、、、なんとなーく【Rust】に惹かれたんですよ!!
なんですかね。。音の響き?ラスト?って感じが良いんですよ!
そこからRustに興味が湧いて調べてみたところ、わりと最近の言語であることが分かりまして。
ローンチされてから10年くらいみたいですね。
C++に匹敵するくらいの処理速度と、C++で悩まされていたポインタ?などの処理が
Rustでは扱いやすくなっているらしい。というのを知りました!Gemini先生から!!
今後構築していきたいと考えている自宅開発環境ではKubernetesなどのコンテナ環境を
デプロイしようと考えており、その中で自分でアプリ開発を進めないとダメだと考えていました。
理由としてはアプリのデプロイ方法やイメージ管理?Jenkins?Podman?など、
過去参画していた案件で出てきていたワードがあまり理解できていないためです。
OpenShift / Kubernetes に触れたとき
以前参画していた案件にてOpenShift構築案件に携わっていました。(ほんの少しKubernetes)
ある案件ではOpenShiftの検証環境構築を実施していました。
OpenShift構築して何かを動かすというわけではなく、バージョン差異は何がある?
UIの変化?ツール名の変化?というような変化点の確認作業であったり、
過去バージョンでセットアップした内容を今バージョンではセットアップできるのか、
みたいな動作確認系の作業を実施していて、実際にアプリを動かす経験はありませんでした。
Kubernetes環境構築も実施しましたが、そちらも同じような観点で作業を進めたり、
サードバーティツールの導入検証などを行う程度でした。
きっと学ぶことはたくさんあったと思うのですが、上記の作業から私が学べたことは
なんか色々できる機能が備わっている箱ということだけでした。もったいない。。。
また別の案件では既存環境からの移行先環境を構築する内容だったのですが、
既存環境ではすでに業務アプリがたくさん稼働していて少し感動しました!
お!アプリが稼働している!いろいろログ出ている!と
ただ既存環境のリソースはひっ迫してきていて、状況によってはOOMKilledが発生していました。
まぁ、、ここでも色々なエラーが発生している理由をあまり理解はできていません。。
OpenShift / Kuberenets に触れた感想
先ほどお話しした案件の中で、私は箱作りだけを行っていて中身を触れてきませんでした。
役割ってものがあるのでしょうがない部分はあると思うのですが、、
ただ、箱担当だからといって中身を理解できていなければ、コンテナ分かる!とは言えないですよね。
なんの理由もなしにKubernetesのようなコンテナ環境を構築することはなく、
何らかの理由があって箱を選定して、箱の中身を決めていくんだと思うんです!
気になった言語 Rustとは?
で、Rustに話を戻しますね!
KodeKloudで見つけたRustでプログラミングして、作成したものを自宅環境で稼働する
Kubernetes上に導入してみたいと思い始めました!
Gemini先生に聞いてみたところ、Rustは下記の点で優れているらしいです!
※Gemini先生(無料版)の言葉を信じてきているので、、嘘八百だったら泣きます。
- 非常に小さいバイナリサイズ(軽量性)
- 非常に高いパフォーマンスと実行効率
- 高速な起動時間
- メモリ安全性と信頼性
- 静的リンクによる依存関係の単純化
ざっくりお伝えすると、、、
1.とても軽量なサイズでイメージに使用するOSも軽量なもの(Alpine Linux等)を選べば
イメージサイズを劇的に小さくでき、デプロイ時間・ストレージ使用量などを削減可能
2.メモリ安全性を検証しながら、C++に匹敵する高速な実行速度が提供され、
ガベージコレクション(GC)がないため、コンテナが要求するCPUやメモリリソースを削減でき、
同リソースで多くのPodを動かしたり、コスト削減が可能
3.Rustのアプリケーションはオーバーヘッドがないため、非常に高速に起動するため、
スケールアウト時などに即刻稼働でき、リクエストの急増に対応することができる
4.Rustのコンパイラは、コンパイル時にメモリ安全性を厳しくチェックするため、
実行時エラーや脆弱性の一因となるメモリリークなどを事前に防ぐことができる
予期せぬクラッシュ(OOMKIlled)などのリスク低減、アプリケーションの安定性がある
5.Rustはデフォルトで多くの依存ライブラリを静的にリンクし、単一のバイナリにまとめられる
コンテナイメージに含めるファイルが少なくなり、依存関係の管理が単純化される
らしいです!
まだまだ理解できていないし、まだ始めてもいないので???の状態です!
デメリットも聞いてみました!
ざっくり書きますね。。
- 学習難しい!開発難しい!簡単にコンパイルさせないぞ???
- 長年使われている言語に比べてライブラリや成熟度が劣っているから、
やりたいことを簡単に実現できるとは思わんでくれ! - うまくやらないとバイナリサイズは大きくなるぞ?大変だけど、頑張って慣れてくれや!
- エラーメッセージは長文だし専門用語とか入れ込むけど、それは親切心だぞ??
- Rust開発者の平均年収は高いと言われているが、それは人材が少なくて希少だからだぞ!
Rustでのチーム開発は希少な人材で組むの難しいぞ!
※年収は気にしてないです。。。初めて知りましたし、私の本業はインフラ周りです。
RustでAIチャットボットを作ってみたい!
学習は難しいけどやってみる価値はある、と感じました。
そこで私はRustでAIチャットボットを作ってみようと思っています!
Pythonなどの言語やノーコードでもAIチャットボットを作成できるみたいですね!
プログラミングなしでも開発できるようになっているのは、
社会にAIツールがあふれている証拠であり、AIプログラミングの初歩になっていると思いました。
まずは、ユーザー(私)がチャットを送ることができる程度の内容で作る予定です!
これもGemini先生の提案ですが、、、最初から色々機能詰め込んだものを作ろうとするよりも、
1つ作成してみて機能を少しずつ追加する方が進めやすいと言われました!
なので、私の第一目標はチャット送信ができるAIチャットボット作成です!
おわりに
見に来てくださった方の中でRustエンジニアの方がいらっしゃいましたら、
Rustの良い点・悪い点やGitHubなどで公開されているもの等コメントいただけると嬉しいです!
あと、今のところ無料版GeminiのコーディングパートナーやVSCodeでGitHub Copilotなど、
AIを活用して進めようと思っているのですが。。。
**コーディングに使うならこのAIがお勧め!**などありましたら、そちらもコメントいただきたいです!
食わず嫌い、、、みたいな感じで、色々名前は知っているものの手を伸ばせておらず。
少し前にスマホでGeminiが使える!!って今更ながら感動して使い始めただけなので、
より良いものがあればそちらも試してみたいと思ってます!
2025/06/27 追記
GeminiのGemって有料版じゃないと使えないんですね。。。
コーディングパートナーと1日くらいしか会話できなくておかしいなと思って
調べてみたら有料版の機能ということが分かりました。
最近はGemini CLIも登場したようなので、このタイミングでどのAIツールに頼って
開発作業を進めていくか考えたいと思います!Gemini CLIに頼りそうな気はしてます!笑
今のところ無料で使えるもので情報欲しいです!回数制限は許容します!!
今回はRust開発を始めたいと思った理由についてお話しました!
今後は実際にAIチャットボット開発を進めていく過程を報告できればと思っています!
では、また次も見に来てくださるのを楽しみにしてます!
Discussion