LoginSignup
5
0

More than 1 year has passed since last update.

マカーのためのHomebrewで簡単Hacktoberfest攻略

Last updated at Posted at 2021-10-07

はじめに

IT系のイベントではしばしばパーカーやTシャツなどが賞品として与えられます。
最強のエンジニアはTシャツとパーカーを一生買わないと言われるほどです。[要出典]

しかし、初心者にとってこのような賞品を得るまでの道のりはなかなか大変です。
そんな中、毎年10月にDigitalOceanによって開催されるHacktoberfestでは、比較的簡単にTシャツをゲットすることができます。

Hacktoberfestとは

Hacktoberfestは毎年10月にDigitalOceanが開催しているイベントです。
簡単に言えば、GitHubでPull Request(PR)をいっぱいするとご褒美がもらえるイベントです。

賞品を獲得するには、以下の条件を満たすPRを10月中に4回1行う必要があります。

  • PR先レポはパブリックであること
  • 以下のいずれかを満たすこと
    • レポにhacktoberfestトピックが付いている
    • PRにhacktoberfest-acceptedラベルが付与された
  • 上の条件を満たしたのち、無効化2されずに14日経過すること

完了するとTシャツをもらったり木を植えたりできます。

Homebrewとは

HomebrewはmacOS向けのパッケージマネージャです。
大きな特徴として、パッケージの更新がコミュニティベースであることがあります。
多くのパッケージマネージャでは各パッケージにメンテナがいて、その人が担当パッケージの更新を管理しています。
一方でHomebrewは全ての更新がGitHubのPRとして行われ、決まった担当者は存在しません。

なぜHomebrewで簡単にHacktoberfestが攻略できるのか

Homebrewにはbrew bump-formula-prおよびbrew bump-cask-prという、パッケージのバージョン更新PRを半自動化するコマンドがあります。
これを使えばHomebrewの役に立ちつつ簡単にHacktoberfestを攻略できます。

あったほうがよい技能

  • gitの知識(「コミットを全部1つにまとめて!」と言われたらできる程度)
  • 英語の技能(指摘を受けたときに読んで対応できる程度(DeepL可))

具体的なフロー

バージョンが古いパッケージを探す

自分でパッケージのホームページを見て最新バージョンを確認してもいいですが、brew livecheckを使うと自動でホームページからバージョンを取得して表示してくれます。

brew livecheckは基本的には引数でパッケージ名を与えてそのパッケージの最新バージョンを確認するものです。
ただ、今回はローラー作戦で古いパッケージを探したいです。
この場合、引数なしで--installedオプションを付けて以下のように実行すると、自分の環境に入っているパッケージを全てチェックしてくれます。

% brew livecheck --installed

Screenshot 2021-10-07 at 18.32.21.png

ちなみに、インストール如何にかかわらず全てのパッケージを調べる--allもありますが、パッケージは全部で1万近くあるのでやめた方がよいです。

古いパッケージを見つけたら、右側に表示されている新しいバージョンを控えておきます。
上の画像ではaomが更新されているようなので、これを例にしてPRを作成してみます。

パッケージの種類を識別する

Homebrewが扱うパッケージには、formulacaskの二種類があります。これらの違いはここでは詳しく書きません。
どちらを更新するかによってコマンドが違うので、上で見つけたパッケージがどちらかを識別する必要があります。
識別するには、以下のコマンドでパッケージの記述を確認するとよいです。

% brew cat <パッケージ名>

formulaでは先頭行にclass <パッケージ名> < Formulaと書かれています。
caskでは先頭行にcask "<パッケージ名>" doと書かれています。

aomを見てみます。上の判断基準からするとformulaのようです。
Screenshot 2021-10-07 at 19.12.27.png

バージョン更新のPRを作成・送信する

ここまででパッケージ名、パッケージの種類、新しいバージョンの3つの情報を手に入れました。
あとはコマンドを使ってPRを送るだけですが、パッケージの種類によって以下のどちらかになります。

formulaの場合
% brew bump-formula-pr <パッケージ名> --version=<新バージョン>
caskの場合
% brew bump-cask-pr <パッケージ名> --version=<新バージョン>

特に問題がなければ、上のコマンド一発でPRが送信されます。

逆に、問題がある場合というのはたとえば以下のような場合です。

  • すでに対象のパッケージに対するPRが存在する
  • resources3が存在する

この場合、コマンドは失敗し、エラーを返します。
これらの問題を頑張って対処してもいいですし、あきらめて他のパッケージを探しに行くのもいいでしょう。

ちなみに、aomは執筆時点でPRがすでにあるのでエラーになります。

PRがマージされるまでちゃんと世話を見る

バージョン更新PRの大半はなんの問題もなくHomebrew側のテストをパスしマージされます。
一方で、更新によってテストが失敗するようになり、対処を求められる場合もあります。
自分でなんとかできるようなら対処し、難しいようなら割り当てられたレビュワーに助けを求めましょう。

おしまい

Homebrewを使う人は多いのにPRを送る人はあんまりいないので記事を書いてみました。
改善点あればお気軽にコメントください。


  1. 回数は開催年によって異なり、これは2021年の回数です 

  2. PRにinvalidラベルが付与された場合、PRはカウントされません 

  3. パッケージをビルドするために必要なソースコード以外のリソースを記述するのに用います。これがある場合はバージョン更新にあたってリソースも更新する必要があるため、コマンドによる自動PRは行えません。 

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0