TL;DR

オレオレツールをリプレースしたついでにHomebrewで公開したので公開手順等をまとめておきます。

作ったオレオレツール

toyotter

まだプログラミングの右も左も分からない大学1年生の頃~~講義中Twitterしててもバレないため~~にPythonで作ったターミナルからTwitterの操作ができるオレオレツール(legacy-toyotter)をTwitter APIの仕様変更による対応とGo言語の勉強ついでにリプレースしました。

↓ 作ったもの toyotter

$ toyotter tlでタイムラインの取得や$ toyotter tw "Hello world"でツイートができたりします。

スクリーンショット 2019-05-13 18.31.15.png

そもそも作った経緯

CUIベースのTwitterクライアントは別にわざわざ自作しなくても既存のものでいくつかあります。大学1年生の頃最初は橋本商会さんのtw(Ruby製)を使っていました。ですが、プログラミング始めたてだったこともあり、よくわからずにPCをいじり倒しすぎてGem自体がぶっ壊れる事態となりtwが使えなくなってしまいました。そこで使えなくなってしまったならば作ればいいという発想にいたり唯一勉強していたPythonで自作したわけです。これが初めてある程度形にしたアプリケーションになり大変勉強になりました。

そういう経緯もあり、プログラミングを始めたての人にはWebアプリケーションではなくCUIベースの自分がほしいと思うオレオレツールの開発を勧めています。CUIベースのオレオレツール開発の利点として、

  1. Webアプリケーションほど時間がかからずサクッと動くものが作れる
  2. 基本的に自分しか使わないからエラー処理など気にせずカッチリ作る必要がない
  3. Webアプリケーションのように覚えることが少なく小さく使えるものが作れる

などが個人的には利点だと思っています。

Homebrewでの公開

tapの作成

Homebrewの本家で公開するのはPR出したりある程度スター数が必要だったり何かとハードルが高いのでtapを作成します。手順は以下の通り

  1. Githubでhomebrew-xxxxxのリポジトリを作る。今回だとhomebrew-toyotterになる。
  2. $ brew tap <github_name>/homebrew-xxxxx でtapを作成する。今回だと $ brew tap keisuketoyota/homebrew-toyotterになる。
    ※(私の場合アカウント名はKeisukeToyotaなので $ brew tap KeisukeToyota/homebrew-toyotterのはずですが、自動的に全部小文字に変換されました。)

インストールスクリプトの作成

先程作ったhomebrew-xxxxのリポジトリにインストールスクリプトを追加します。手順は以下の通り

  1. 公開するアプリケーションと同じ名前のxxxxx.rbを作成する。今回だとtoyotter.rbになる。
  2. 以下のようにスクリプトを書く。適宜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
  1. sha256を書き換える。$ openssl sha256 toyotter_0.0.1_Darwin_x86_64.tar.gzでハッシュ値を生成しました。
  2. コミットしてプッシュする。

インストール

初期インストール

$ 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