新卒1年目がオレオレツールをHomebrewで公開してみた
TL;DR
オレオレツールをリプレースしたついでにHomebrewで公開したので公開手順等をまとめておきます。
作ったオレオレツール
toyotter
まだプログラミングの右も左も分からない大学1年生の頃~~講義中Twitterしててもバレないため~~にPythonで作ったターミナルからTwitterの操作ができるオレオレツール(legacy-toyotter)をTwitter APIの仕様変更による対応とGo言語の勉強ついでにリプレースしました。
↓ 作ったもの toyotter
$ toyotter tl
でタイムラインの取得や$ toyotter tw "Hello world"
でツイートができたりします。
そもそも作った経緯
CUIベースのTwitterクライアントは別にわざわざ自作しなくても既存のものでいくつかあります。大学1年生の頃最初は橋本商会さんのtw(Ruby製)を使っていました。ですが、プログラミング始めたてだったこともあり、よくわからずにPCをいじり倒しすぎてGem自体がぶっ壊れる事態となりtw
が使えなくなってしまいました。そこで使えなくなってしまったならば作ればいいという発想にいたり唯一勉強していたPythonで自作したわけです。これが初めてある程度形にしたアプリケーションになり大変勉強になりました。
そういう経緯もあり、プログラミングを始めたての人にはWebアプリケーションではなくCUIベースの自分がほしいと思うオレオレツールの開発を勧めています。CUIベースのオレオレツール開発の利点として、
- Webアプリケーションほど時間がかからずサクッと動くものが作れる
- 基本的に自分しか使わないからエラー処理など気にせずカッチリ作る必要がない
- Webアプリケーションのように覚えることが少なく小さく使えるものが作れる
などが個人的には利点だと思っています。
Homebrewでの公開
tapの作成
Homebrewの本家で公開するのはPR出したりある程度スター数が必要だったり何かとハードルが高いのでtapを作成します。手順は以下の通り
- Githubで
homebrew-xxxxx
のリポジトリを作る。今回だとhomebrew-toyotter
になる。 $ brew tap <github_name>/homebrew-xxxxx
でtapを作成する。今回だと$ brew tap keisuketoyota/homebrew-toyotter
になる。
※(私の場合アカウント名はKeisukeToyota
なので$ brew tap KeisukeToyota/homebrew-toyotter
のはずですが、自動的に全部小文字に変換されました。)
インストールスクリプトの作成
先程作ったhomebrew-xxxx
のリポジトリにインストールスクリプトを追加します。手順は以下の通り
- 公開するアプリケーションと同じ名前の
xxxxx.rb
を作成する。今回だとtoyotter.rb
になる。 - 以下のようにスクリプトを書く。適宜
toyotter
になっているところを書き換えてもらえば動くと思います。
require "formula"
HOMEBREW_TOYOTTER_VERSION='0.0.1'
class Toyotter < Formula
url "https://github.com/KeisukeToyota/toyotter/releases/download/v#{HOMEBREW_TOYOTTER2_VERSION}/toyotter2_#{HOMEBREW_TOYOTTER_VERSION}_Darwin_x86_64.tar.gz"
homepage "https://github.com/KeisukeToyota/toyotter"
sha256 "46b958c5e203307e82e3661fbc2a124b71f38228cd4599cc4f950f60fcdfb864"
version "v#{HOMEBREW_TOYOTTER_VERSION}"
head 'https://github.com/KeisukeToyota/toyotter.git', :branch => 'master'
def install
bin.install 'toyotter'
end
end
- sha256を書き換える。
$ openssl sha256 toyotter_0.0.1_Darwin_x86_64.tar.gz
でハッシュ値を生成しました。 - コミットしてプッシュする。
インストール
初期インストール
$ brew tap <github_name>/homebrew-xxxxx
$ brew install xxxxxx
アップグレード
$ brew upgrade xxxxxx
おわり
だいたいこんな感じでHomebrewで初めてオレオレツールを公開しました。(特に手順を記録していなかったので間違ってるかもしれないので間違ってたらコメントか編集リクエストください…)
しかし、毎回リリースのたびに各プラットフォームごとにビルドしてタグ付けしてhomebrew用のリポジトリも書き換えてハッシュ値生成してとすごくめんどくさい…
そこでgoreleaserを利用することでこのめんどくさい手順をほとんど省略できることを知ったのでまた時間があればgoreleaser
についても紹介しようと思います。
参考
- https://qiita.com/saa/items/85ed5e914d424fbf9fd6
- https://qiita.com/sakajunquality/items/48b5138986056eb4b49c