Learn Some Rust During Hacktoberfest

Matthias Endler

HacktoberfestでRustを少し学ぼう

ディアンドル、レーダーホーゼン、プレッツェル、ビール、Rust
ディアンドル、レーダーホーゼン、プレッツェル、ビール、Rust
出典:Designed by Freepik

Open Sourceに貢献するなら、10月が最適です。少なくともGithubとDigitalOceanによれば、そういうことになります。というのも、この時期にHacktoberfestという世界規模のイベントが開催されるからです。プルリクエストを作成すれば、無料のTシャツと、たっぷりの評判が手に入ります。公式のお知らせはこちらで読めます。

自分には価値のある貢献などできない、と考える人もいます。プログラミングのスキルが足りないから、あるいはどこから始めればいいのかわからないからです。

このガイドは、そんな状況を変えるためのものです!

安全なシステムプログラミング言語であるRustに、誰でもコードで貢献できる方法を紹介します。これを書こうと思ったきっかけは、llogiqのツイートでした。

1. 取り組むRustプロジェクトを見つける

自分の仕事は評価してもらいたいものです。
そこで、まずは中規模のプロジェクトへの貢献をおすすめします。ある程度勢いがついている一方で、少人数のメンテナーによって運営されているため、助けがいつでも歓迎されるからです。対照的に、小規模なプロジェクトは元の作者にとってしか役に立たないことが多く、大規模なプロジェクトは最初は気後れしやすいうえ、ガイドラインもより厳格です。

ここでは、スターが5~100個で、今年に入ってから更新されたリポジトリを探してみましょう。Githubでは、Lucene構文に基づく高度な検索オプションを利用できます。

language:Rust stars:5..100 pushed:>2017-01-01

このフィルターに一致するプロジェクトの一覧はこちらです。

2. Rustのツールチェーンをインストールする

貢献を始めるには、動作するRustコンパイラーとcargoパッケージマネージャーが必要です。幸い、インストールは簡単なはずです。ここではrustupをおすすめします。

ターミナルで次のコマンドを実行し、画面の指示に従ってください。

curl https://sh.rustup.rs -sSf | sh

よくわからなければ、デフォルトのまま進めれば大丈夫です。インストールが終わったら、後で使うコンパイラーのnightly版も取得しておきます。

rustup install nightly

ここまでで疑問はありますか?より詳しいインストール手順はこちらにあります。

3. プロジェクトをフォークしてコンピューターにクローンする

まず、Githubのプロジェクトページ右上にある小さなforkボタンをクリックします。次に、自分のフォークをコンピューターにクローンします。

git clone [email protected]:yourusername/project.git

詳しい手順についてはこちらを参照してください。

4. ビルドできるか確認する

コードベースの変更を始める前に、まず問題なく作業できる状態か確認しましょう。プロジェクトフォルダー内で次のコマンドを実行すれば、すぐに動くはずです。

cargo build
cargo test

動かない場合は、詳しい手順をREADMEで確認するとよいでしょう。(もちろん、別のプロジェクトを選んでも構いません。)

5. 魔法のような仕掛け

ここがポイントです。リンターと呼ばれるclippyを使って、Rustのコードベースの改善できる箇所を見つけます。

clippyを使うには、次のようにインストールします。

cargo +nightly install clippy

インストール後は、好きなだけプロジェクトのルートから実行してください。

rustup run nightly cargo clippy

これで、コードベースをどう改善すればよいか、具体的な情報が得られるはずです。

出力例を示します。

warning: useless use of `format!`
   --> src/mach/header.rs:420:49
    |
420 |             let error = error::Error::Malformed(format!("bytes size is smaller than an Mach-o header"));
    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: #[warn(useless_format)] on by default
    = help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/v0.0.165/index.html#useless_format

warning: this expression borrows a reference that is immediately dereferenced by the compiler
   --> src/mach/header.rs:423:36
    |
423 |             let magic = mach::peek(&bytes, 0)?;
    |                                    ^^^^^^ help: change this to: `bytes`
    |
    = help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/v0.0.165/index.html#needless_borrow

提案のいくつかを実際に試し、プロジェクトが引き続きコンパイルできるか、テストが引き続きすべて成功するかを確認してみてください。さらに詳しく知りたい場合は、helpセクションにあるドキュメントへのリンクを確認しましょう。変更内容をレビューしやすくするため、まずは小さな変更から始めてください。

6. プルリクエストを作成する

変更内容に納得できたら、いよいよ公開する時です!変更用の新しいブランチを作成し、それを自分のフォークへプッシュするのがよいでしょう。

git checkout -b codestyle
git commit -am "Minor codestyle fixes"
git push --set-upstream origin codestyle

その後、Githubで自分のフォークのホームページを開きます。Compare & pull requestというボタンがあるはずです。意味のある説明を追加してから、プルリクエストを送信してください。

おめでとうございます!これでRustのエコシステムに貢献できました。ありがとうございます!🎉

トロフィーケース

おまけ!

手作業で修正や確認をするのが退屈そうなら、Pascal Hertleif(@killercup)によるrustfixを使って、ステップ5を自動化できます。

rustfix --yolo && cargo check

原文は Matthias Endler により に公開されました。

この記事は「gpt-5.6-luna」を使用して翻訳されました。