✅ はじめに
記事をご覧いただきありがとうございます。
現在、友人と始めた大学生スタートアップで主にフロントエンドを担当している kohta です。
大学入学とともに独学でプログラミングを始め、複数社のインターンシップや業務委託を経て現在に至ります。普段は会社のサービスを作りながら大学に通いつつ、日々技術の習得に明け暮れています。
この記事は、「CS(コンピュータサイエンス)専攻ではない私が、なぜ今Rustを選ぶのか」そして「どうやって独り立ちを目指すのか」 という決意表明と学習ロードマップです。どうぞよろしくお願いします🙇
❓ なぜ、今 Rust なのか?
「なぜGoやPythonではなく、学習コストが高いRustなのか?」
この問いに対して、私には明確な回答があります。理由は以下の4点です。
- 非CS専攻(法学部)としての「低レイヤー知識」への渇望
- フロントエンドの限界を超え、個人でサービスを完結させる力が欲しい
- 「最難関」という言葉への挑戦心
- 市場価値と年収への期待(正直に!)
🎓 法学部としてのコンプレックスと渇望
私は法学部法学科に所属しており、大学でCS(コンピュータサイエンス)を体系的に学んでいません。
プログラミングにのめり込めばのめり込むほど、CS専攻の方々が持つ「メモリ管理」や「DBの内部構造」といった基礎体力の差に悔しさを感じてきました。
フロントエンド(TypeScript/Next.js)だけでは見えにくい、 「裏側で何が起きているか」 を理解したい。そのためには、ガベージコレクションがなく、メモリを意識せざるを得ないRustこそが、今の私に最も必要な「矯正ギプス」だと確信しました。
🚀 「自分のサービス」を作りきるために
AI時代において、フロントエンドの知識だけでは立ち行かない危機感があります。「あ、このサービス面白そう」と思っても、DB設計やネットワーク構築で手が止まってしまう憤りを何度も感じました。
Next.jsのAPI Routesでもバックエンドは書けますが、パフォーマンスや堅牢性を突き詰め、 「自信を持って技術選定し、自走できるエンジニア」 になるためには、より骨太なバックエンド言語の習得が必要でした。
🔥 あえて「茨の道」を行く
私は「一番難しい」と言われると燃えるタイプです(笑)
Rustを習得すれば、メモリ安全性の概念や所有権システムを通じて、GoやJavaなど他の言語を扱う際にも「より良いコード」が書けるようになると考えています。
また、客観的な事実としてRustエンジニアの市場価値・年収が高いことも、学習の大きなモチベーションです(お金は日々金欠の私にとって非常に重要ポイント)
☑️ 具体的にどう勉強を進めていくのか
「独り立ち」できるRustエンジニアになるため、以下の3ステップで学習を進めます。
学習の進捗やコードは、すべて GitHub で公開し、逃げ場をなくして取り組みます。
- The Book(公式ドキュメント)を読み・理解する
- 書籍・Udemyでの実践学習
- 自作Webサービスの構築(Blogサイトなど)
1. The Book を読み・理解する
Rustの登竜門と言われる公式ドキュメント『The Rust Programming Language』(通称:The Book)を読み込みます。
重要なのは「ただ読むだけ」にしないことです。
法学部出身の私にとって、低レイヤーの専門用語(スタック、ヒープ、ポインタなど)は高い壁です。安易に読み飛ばさず、 「中学生でもわかるレベル」 まで噛み砕いて理解し、自分なりの言葉や図解でQiitaにアウトプットしていきます。
-
今後の記事予定:
- 「所有権」を日常生活に例えてみた
-
modとuseは「部屋割り」と「住所」で理解する - 構造体とEnumの使い分け
2. 書籍・Udemyでの実践と写経
The Bookで基礎概念を叩き込んだ後は、より実践的な教材で手を動かします。
現在、私の学習リポジトリには以下の教材用ディレクトリを準備しています。
- 『実践Rust入門』: 言語仕様の深い理解と、CLIツールの作成などを通じてRustの作法を学びます。
- Udemy講座: ハンズオン形式で、実際に動くアプリケーションを作りながら「Rustで開発する感覚」を体に馴染ませます。
ここでは、単に写経するだけでなく、Rust特有のAPIデザインや命名規則(as_, to_, into_ の使い分けなど)を意識し、「なぜこう書くのか?(メモリコストはどうなのか?)」を常に自問自答しながら進めます。
3. Blogサイト構築(バックエンド実装)
最終的なゴールは、Rustを用いてフルスタックなWebアプリケーションを自走して構築することです。
具体的には、リポジトリ内の backend_rust プロジェクトにて、以下の機能を実装したBlogシステム等を構築します。
- Webサーバー構築: Actix-web や Axum などのフレームワーク選定
- DB操作: SQLx や Diesel を用いた安全なデータベース接続
- API設計: フロントエンド(React/Next.js)と連携するREST/GraphQL API
ここで「メモリ管理」や「型安全性」の恩恵を肌で感じ、フロントエンドエンジニアとしての知見と融合させることが目標です。
📢 成長の記録:2つのGitHubリポジトリで公開中
「勉強した気になって終わり」にしないよう、学習の軌跡と開発の様子をすべてGitHubでリアルタイムに公開しています。
綺麗なコードだけではなく、コンパイラに怒られながら試行錯誤している「泥臭い過程」もそのまま残しています。
現在は、役割の異なる以下の2つのリポジトリを運用しています。
1. 基礎体力をつける「修行の場」 🏋️
👉 GitHub: Rust_Development_Environment
こちらは日々のインプット用リポジトリです。
The Book(公式ドキュメント)、Udemy、技術書などの写経コードや、理解を深めるための実験的なコードを保管しています。
法学部出身の私が、ポインタやメモリ管理といった低レイヤーの概念と格闘している「ありのままのログ」です。
2. 実践投入する「試合の場」 🏟️
そしてこちらが、現在進行形で開発している自作ブログサービスのバックエンドです。
学習リポジトリで得た知識を総動員し、フロントエンド(Next.js)と連携する本格的なAPIサーバーの実装に挑戦しています。
- 所有権と借用の実践
- 実践的なDB設計と操作
- エラーハンドリング
など、実プロダクト開発ならではの壁にぶつかりながら少しずつ形にしています。
さいごに
「法学部卒で普通のフロントエンドエンジニアにRustなんて無謀だ」と思われるかもしれません。
ですが、わからないからこそ、基礎から徹底的に噛み砕いて理解する過程には価値があると信じています。
これからQiitaを通じて、私がつまずいたポイントや、それをどう乗り越えたかを 「非CS専攻の方にもわかりやすく」 共有していきます。
同じように未経験の分野に挑戦している方、Rust勉強中の方、ぜひ一緒に頑張りましょう!
アドバイスやミスの指摘(優しめでお願いします笑)、コメントでお待ちしております!