Learn Some Rust During Hacktoberfest

Matthias Endler

HacktoberfestでRustを学ぼう

原文は Matthias Endler により に公開されました。 このブログを購読する

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

10月はオープンソースに貢献するのにぴったりの時期です——少なくともGitHubとDigitalOceanはそう考えています。なぜなら、この時期に2社が共催する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. 秘伝のタレ

ここからがコツです。linterの一種である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

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

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

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント