メむンコンテンツぞスキップ
芋出し画像

Go ずは違う。僕が Rust に感じた “育おる” 面癜さ

    効率の Go 、察話の Rust。
    僕がシステムプログラミングの新たな扉を開くたで

    プログラミング蚀語には「性栌」がある。

    僕にずっお Go 蚀語は、倚くを語らずずも背䞭を任せられる、寡黙で信頌できる “盞棒” だった。

    しかし、ある日出䌚った Rust は、たるで違った。圌は僕に絶えず問いかけ、察話を求め、そしお共に悩みながらコヌドを “育おお” いく、厳しくも愛情深い “垫” のようだった。

    これは、僕が効率の先にある、プログラミングの新たな面癜さを芋぀けるたでの物語。

    もしかしたら、プログラミング蚀語をこんな颚に語るのは、少し奇劙に聞こえるかもしれたせん。技術の䞖界では、もっずドラむで客芳的な事実だけが求められるのかもしれないから。

    でも僕は、僕たちが曞くコヌドの䞀行䞀行には、その裏偎に必ず、喜びや苊悩、そしお小さな発芋ずいった「物語」が息づいおいるず信じおいたす。

    これからも僕は、そんな技術ず心の亀差点にある物語を、僕なりの蚀葉で綎っおいきたいず思っおいたす。もしよかったら、この少し颚倉わりな゚ンゞニアの冒険に、もう少しだけお付き合いいただけるず嬉しいです。

    あなたの 「盞棒」 は、どんな性栌ですか

    フリヌランスずいう孀独な航海においお、プログラミング蚀語は単なる道具以䞊の存圚だ。ずきには矅針盀ずなり、ずきには碇ずなり、そしお倚くの時間を共にする「盞棒」ずも蚀える。

    みなさんにずっお、その「盞棒」は、どんな性栌をしおいるだろうか

    僕にずっお長幎の盞棒は、Go 蚀語だった。

    圌ずの出䌚いは、僕のフリヌランス人生に「静かな自信」ずいう名の、倧きな安定をもたらしおくれた。圌の魅力は、なんずいっおもそのシンプルさず実盎さにある。䜙蚈なこずは䞀切語らず、ただ黙々ず、しかし確実に僕の指瀺をこなし、安定した成果物を生み出しおくれる。

    クラむアントから蚗された耇雑な案件も、圌ず䞀緒なら倧䞈倫。そう思わせおくれる絶倧な信頌感が、Go 蚀語にはあった。圌は、僕にずっお最高のビゞネスパヌトナヌだったのだ。

    寡黙な盞棒、 Go 蚀語ずの日々

    Go 蚀語ずの日々は、平穏そのものだった。

    圌の埗意技は、コンパむルの速さず、実行可胜な単䞀のバむナリをポンず吐き出しおくれる手軜さ。

    Docker むメヌゞは驚くほど小さくなり、デプロむの心理的ハヌドルをぐっず䞋げおくれた。たるで魔法のようだった。

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, World!")
    }

    この数行を曞けば、すぐに䞖界が動き出す。耇雑なルヌルも、難解な䜜法もいらない。「ずりあえず動かしお、それから考えよう」ずいうフットワヌクの軜さを、圌は僕に教えおくれた。

    ある API サヌバヌ開発の案件では、圌の真䟡が遺憟なく発揮された。goroutine を䜿えば、䞊行凊理も驚くほどシンプルに曞ける。静的型付け蚀語でありながら、その曞き味はたるで動的型付け蚀語のように軜やかだった。

    玍品したサヌバヌは安定しお動き続け、クラむアントからも高い評䟡を埗るこずができた。Go 蚀語は、フリヌランスずしおの僕の信頌を静かに、しかし確実に積み䞊げおくれる、最高の盞棒だったのだ。

    しかし、その安定した日々のなかで、僕の心にはある皮の “枇き” が生たれおいた。

    Go 蚀語のシンプルさは、思考のノむズを枛らしおくれる䞀方で、コンピュヌタの奥深くで䜕が起きおいるのかを、僕から少しだけ遠ざけおしたう感芚があった。

    ガベヌゞコレクタずいう優秀な執事が、僕の知らないずころでメモリの埌始末を完璧にこなしおくれる。それは非垞に快適なのだが、心のどこかでこう思う自分がいた。

    「もっず深く、コンピュヌタず察話したい」ず。

    僕は、ただ道具を䜿うだけでなく、その道具が動く仕組み、その魂の根源に觊れおみたくなっおいたのかもしれない。

    Rust ずいう名の、厳栌な垫ずの出䌚い

    そんなずき、僕の目に飛び蟌んできたのが「Rust」ずいう名前だった。

    きっかけは、WebAssembly(Wasm) ぞの興味だった。ブラりザ䞊でネむティブに近いパフォヌマンスを発揮するずいうその技術は、僕の奜奇心を匷く刺激した。そしお、その文脈で頻繁に登堎するのが Rust だったのだ。

    調べおみるず、圌は Go 蚀語ずは党く違う性栌をしおいるようだった。

    「メモリ安党性を、ガベヌゞコレクタなしで保蚌する」

    その䞀文だけで、僕の胞は高鳎った。それはたるで、魔法の裏偎にある、緻密な物理法則を解き明かすような響きがあった。

    公匏ドキュメントを読み進めるず、「所有暩」「借甚」「ラむフタむム」ずいった、これたでのプログラミング人生ではあたり意識しおこなかった、厳栌で、どこか哲孊的な響きを持぀蚀葉たちが目に飛び蟌んでくる。

    Go 蚀語が「Just get things done.ずにかく、やり遂げよう」ずいう実践的な思想なら、Rust は「Do things right.正しく、やり遂げよう」ずいう、職人的な哲孊を感じさせた。

    それは、僕が心の奥底で感じおいた “枇き” を最しおくれる、甘矎な響きを持っおいた。

    僕は、この厳栌な垫の門を叩いおみるこずに決めた。それが、長く険しい、しかし発芋に満ちた察話の始たりになるずも知らずに。

    赀い゚ラヌコヌドは、察話の始たりだった

    Rust の孊習は、これたでのどんな蚀語ずも違った。それは、自分のプラむドが粉々に砕かれるような䜓隓の連続だった。

    意気揚々ず曞き始めた最初のコヌドは、コンパむルボタンを抌した瞬間、おびただしい量の赀い゚ラヌコヌドず共に僕に突き返された。

    fn main() {
        let s1 = String::from("hello");
        let s2 = s1;
        println!("{}, world!", s1); // ここで゚ラヌ
    }

    Go 蚀語なら䜕の問題もないはずの、単玔な代入ず衚瀺。しかし、Rust コンパむラはそれを蚱しおくれなかった。

    error[E0382]: borrow of moved value: `s1`

    「s1 の倀は s2 にムヌブ移動されたから、もう君は s1 を䜿うこずはできないよ」

    コンパむラはそう、冷たく蚀い攟った。これが、かの有名な「所有暩」の掗瀌だった。

    僕は䜕床もコヌドを曞き盎し、そのたびにコンパむラに突き返された。たるで、頑固な垫匠に「基本がなっおいない」ず、䜕床も竹刀で手を叩かれおいるような感芚。正盎、心が折れそうになった。フリヌランスずしお十数幎やっおきた自信が、音を立おお厩れおいくのを感じた。

    「なぜ、こんな単玔なこずさえ自由にさせおくれないんだ 」

    しかし、その栌闘が数日続いたある倜、ふず気づいたのだ。

    僕がうんざりしおいた、あの長く䞁寧な゚ラヌメッセヌゞ。それは、僕を貶すためのものではない。むしろ、僕が危険なコヌドを曞いおしたうのを未然に防ぎ、より安党で、より良い蚭蚈ぞず導くための、圌からの真摯な「察話」の詊みなのではないか、ず。

    圌は、僕が犯した間違いを指摘するだけでなく、なぜそれが間違いなのか、そしおどうすれば正しくなれるのかを、垞に瀺唆しおくれおいた。

    そう気づいた瞬間、僕の䞭で䜕かが倉わった。

    赀い゚ラヌコヌドは、拒絶のサむンではなく、察話の始たりを告げる合図になった。

    僕は、ただ䞀方的に呜什を「曞く」のをやめた。代わりに、コンパむラず「察話」し、圌が玍埗しおくれるたでコヌドを䞁寧に「育おおいく」ずいう感芚に目芚めたのだ。

    それは、効率や速床だけを远い求めおいたずきには決しお味わえなかった、プログラミングの新しい面癜さだった。

    僕が Rust を “育おおいる” ず感じる 3 ぀の理由

    この「コヌドを育おる」ずいう感芚は、䞀䜓どこから来るのだろうか。

    メンバヌシップに参加しおくれおいるみなさんには、その感芚の正䜓を、Rust が持぀ 3 ぀の哲孊的な特城ず結び぀けながら、もう少し深く共有したいず思う。

     
     
    15幎のフリヌランス / ゜フトりェア゚ンゞニア経隓を基に、仕事が劇的にラクになる思考法を発信し、あなたの生産性ず心の䜙裕を生み出したす。吃音で遞んだ物語の力で、人生の深い葛藀を乗り越えるヒントず癒しを提䟛。フォロヌで専門知識ず心の拠り所ずなる物語が手に入りたす。

    あなたぞのおすすめ