【Rust】第0回 プログラミング学び直しを始めてみる
はじめに
自己紹介
はじめまして。hamudoraです。今年生物系の学部を卒業予定で、来年から修士課程にすすみます。
私は6歳(5歳?)のときに実家のパソコンを初めて触ってからというもの、キー配列も覚えきれていないところから見よう見まねでプログラミング(当時はWOLF RPG エディターやHot Soup Processorというツールで遊んでいました)を続けています。
もともとゲーム開発がしたくてプログラミングをしていたのですが、最近はWebエンジニアとしてTypescriptやGo、Python等を触っており、様々な業界のプロジェクトに参加させていただいています。
最近は自分の専門性を活かし、創薬や抗体といった分野におけるシステムの開発を行っています。
本記事の目的
本記事には個人的な二つの目的があります。
- プログラミング知識のアウトプットや発信の機会を作る
- 知識を先鋭化させる
プログラミング知識のアウトプットや発信の機会を作ることについては、自分がずっとやってみたかったことです。私は15年以上、人生の7割をプログラミングとともに生きてきました。プログラミングが大好きです。今まで中高大と、ゲーム、アプリ、Webサイトなど学生開発を通して様々なプロダクトを世に出す経験を積みました。その後、スタートアップを中心として1年間で3つのプロダクトの開発案件に関わり、リリースすることができました。
私は将来ソフトウェアエンジニアとして活躍するつもりはありません。しかし、自分の専門分野において、これらで得た技術や経験を最大限活かした活動が楽しくできればと考えています。プログラミングは単にソフトウェアを作る手段を超えて、論理的思考力、抽象化能力を支える礎となる営みだと考えています。
その中でまずは、自分の学びや経験をまとめ、そしてそこに自分なりの解釈や哲学を織り込み発信するなかで、最終的には今までに培ってきた自分の、プログラミングに対する思索、そして(専門分野で生かすということを含めた)姿勢そのものが体系化されるきっかけを作ってみたいと思いました。
知識を先鋭化させることについてはより具体的です。最近はプロジェクトの中で、とにかく早く機能を実装しテストしデプロイすることを求められ続けており、時間的制約から生成AIに頼り切ってしまうこともしばしばあります。そのため、私の中での『プログラミングという営み』が破綻し、面白みがなくなってしまうと感じることがありました。
もちろん、大規模なコードをプロダクトにし、それを世に出すということ自体は大きな達成感を得られる行為です。しかし、もっとソースコードの一行一行に目を尖らせ、その息遣いに思惟を巡らすような時間も同じくらい重要な時間だと考えていますし、その営みがあってこそ、大規模なコードを目にした時に、正しくそれを捉える力が養われると思っています。
この試みはある意味、生成AIを用いたコーディングが主流になる中で、プログラミングという営みをどう定義づけるか、という問いを考える手段にもなるかもしれません。
本記事でやること
前提としてこの記事はまずは自分の備忘録として機能させながら、考えをまとめていくプラットフォームにしようと考えています。したがって、体系だった解説や知識の提供を行うことを保証しません。
本記事を執筆していくにあたり、ゼロから学ぶRustという教科書を読んでいくことにしました(私はRustに関する知識が一切ありません。文字通りゼロから学ぶつもりです)。私ははじめて触ったプログラミング言語はHSPを除くとC++であり、Siv3Dというゲームエンジンを用いたゲーム開発を行っていました。しかし、その後はWebプログラミングを学び始めたということもあり、C++からは離れていました。
最近になって、サークル時代の友人とオープンソースのOSを改良した自作OSを開発する中で、C++に再び触れていました。そのメンバーで、次はRustでブラウザの仕組みを学ぶ本を読んでみないかという話になっていたため、そもそもRustとはどういう言語なのかを学びたくなった、という安直な経緯があります。その経緯と、もともと自分が記事執筆に際し想定していた二つの目的は私の中では親和性が高いものです。
おわりに
ビジネスや研究などやることが多い中でどれくらいの頻度でアウトプットができるかはわかりませんが、細々と続けていけたらなと考えています。
そしていつかは、(研究における論文の投稿が、その研究者の自己表現の一環となるように)、自分がこれまでやってきた技術者としての歩みやプログラミングに対する考え方をまとめられればと思っています。
Discussion