ARTICLES

Rust Day 1

2019-05-03

Rust について学習を進めていく上で、活きている素材として Rocket で長年 Web デザイントレンドで使ってきたキャプチャクロールアプリをリニューアルしてみようということで勉強を始めて初日、つまり Day 1 です。

はじめてプログラミング言語を学ぶわけではない場合、今まで学習してきたプログラミング言語が学習の助けになることがあります。僕の場合は、Scala や Clojure といった、関数型プログラミングに力点がおかれている言語が Rust の理解を助けました。とはいえ、まだまだ学習途上であり、Rocket で云々以前に、Rust についてきちんと学んでいこうという気持ちに至っています。

学習をしていく上で、書籍を買うとかもいいのですが、まずは以下の日本語版のドキュメントを眺めつつ、実際に手を動かしてみるというのがしっくりきました。

特に プログラミング言語 Rust, 2nd Edition(最新版)/ The Rust Programming Language, Second Edition は、順番に読んでいくことで、文法を学習できると同時に、Rust の考え方も注入されていく流れが良いと思っています。

少し学習を進めて、良いと思っている部分は以下です。

基本的にイミュータブルな世界観

JavaScript でも、なるべく const を使いつつプログラミングをするという方は多いと思います。ただ、そもそも変数を定義したらイミュータブル (不変性) がデフォルトであるという世界観は良いですね。Rust においては、再代入を行いたい場合 mut を明示的に使わないといけなくなっています。

Result 型

例えば Web アプリケーションフレームワーク の Play framework では、Result 型というのがあり、これは処理の成功もしくはエラーなどを HTTP ステータスコードと合わせてレスポンスするために使われます。Rust の Result 型はこういった型とは異なりますが、考え方として Result 型によって処理の成功失敗を判断するという方向性は馴染みがあります。Scala では、Either がこの Result に該当するのでしょうか。

if 式、関数の戻り値

個人的に、if が値を返すようなプログラミング言語が好きで、Clojure とかも普通に if は最後に評価された値を返しており気に入っていました。同様に関数でも、return を書かなくても最後に評価された値が返るタイプの言語が好きです。Rust においても同様の機能が入っているのですが、一点、行末にセミコロンがあった場合は、空のタプルが返ってしまうという機構はまだ馴染めていません。

しばらく プログラミング言語 Rust, 2nd Edition を読み進めてみて、その後、Rocket を使っていくことにします。


ARTICLES


    AUTHOR

    原 一浩 の顔写真

    (はら) 一浩(かずひろ)

    カンソクインダストリーズ代表 / グレーティブ合同会社代表

    1998年に独立し、同年、ウェブデザイン専門のメールメディア DesignWedgeの発行を開始。Webデザイン業の傍ら、海外のWebデザインに関する情報発信を行う。
    雑誌への寄稿多数。主な著書に『はじめてのフロントエンド開発』『プロセスオブウェブデザイン』、『Play framework徹底入門』、『ウェブデザインコーディネートカタログ』など。自社製のWebデザインのクロール&キャプチャシステムvaqumをベースに、様々なリサーチを行っている。Web 検定プロジェクトメンバー

    著作一覧はこちら