えいのうにっき

誤字脱字・記述の誤りなどはこちら https://github.com/a-know/blog.a-know.me へお願いします

"草APIサービス" Pixela のコマンドラインツールを作ったので、OSごとのインストール・使い方を書きます!

"草APIサービス" Pixela のコマンドラインツールを作りました! Pixelaをリリースした瞬間からほしいと思っていたので、念願が叶った!

その名も pi (読み方は )です!

github.com

pixe.la

これまでは、curl コマンドを使ったりだとか、HTTPとかに対する歩み寄りといったものを、Pixela のユーザーになろうとしてくれる方に求めざるをえない側面がありました。

ですが、今日からはこの pi を使うことで、

  • Windows
  • Mac
  • その他、Goがインストールされている環境

といった環境でも、簡単に Pixela に草を生やすことができます!「おもしろそうだけど使い方がわかんない......」と二の足を踏んでいた方に、 pi をきっかけに Pixela を使ってもらえたら嬉しいです!(もちろん、そうじゃない方にとっても便利な一品です!!)

以下に、環境ごとのインストール方法・チュートリアルを書きます。

インストール方法

Windows環境の場合

まずはダウンロードページからプログラムをダウンロードします。 pi_v1.0.0_windows_amd64.zip というのが Windows 用のそれなので、これをPCにダウンロードしてください。

ダウンロードされたファイルは zip ファイルなので、右クリック → すべて展開、などで展開します。

展開すると、「CHANGELOG.md」「LICENSE」といったファイルなどの間にまぎれて「pi」というファイルがあると思います。これが pi の本体になるので、これを C:¥WINDOWS フォルダの中にコピーします(PATHの通った場所に配置します)。

このあと、下に書いている「使いかた」でユーザー登録をするのですが、そのときにパスワード的なものを設定することになります。このタイミングでパスワードを決めておき、「コマンドプロンプト」を開いて(Windowsの検索メニューで「cmd」と入力すると出てきます)、以下のコマンドを実行しておきましょう(環境変数にパスワードをセットしておきます・この方法でセットした場合は、コマンドプロンプトを開き直すたびにセットしておく必要があります)。

set PIXELA_USER_TOKEN=thisissecret

thisissecret にあたるものは自分の考えたものに置き換えてくださいね!

macOS環境の場合

macOSの場合は、homebrewでインストールできるようにしています。「ターミナル」などで以下のコマンドを実行してください。

brew install a-know/tap/pi

このあと、下に書いている「使いかた」でユーザー登録をするのですが、そのときにパスワード的なものを設定することになります。このタイミングでパスワードを決めておき、以下のコマンドを実行しておきましょう(環境変数にパスワードをセットしておきます)。

export PIXELA_USER_TOKEN=thisissecret

thisissecret にあたるものは自分の考えたものに置き換えてくださいね!

Goがインストールされている環境の場合

Goの環境がセットアップ済みだよ、って方は、以下のコマンドでインストールできちゃいます。

go get github.com/a-know/pi/cmd/pi

このあと、下に書いている「使いかた」でユーザー登録をするのですが、そのときにパスワード的なものを設定することになります。このタイミングでパスワードを決めておき、以下のコマンドを実行しておきましょう(環境変数にパスワードをセットしておきます)。

export PIXELA_USER_TOKEN=thisissecret

thisissecret にあたるものは自分の考えたものに置き換えてくださいね!

簡単な使いかた(環境共通)

つづいて簡単な使いかた。まずは Pixela にユーザー登録しましょう。以下のコマンドを実行します。

pi users create --username a-know --token thisissecret --agree-terms-of-service yes --not-minor yes

a-know はユーザー名なので、自分のIDっぽいものを考えて入力します。thisissecret はいわゆるパスワード的なもので、さきほどインストール作業をおこなったあとに設定をしておいたものと同じ文字を入力します。--agree-terms-of-service yes というのは「利用規約に同意するかしないか」なので、ここの内容を読んでもらって、同意できるなら yes を、できないなら no を入力します。no だとPixelaを使うことはできません、ごめんなさい。

そして最後の --not-minor yes は「未成年ではないこと」です。否定形の項目でややこしいのですが、あなたが成人しているか、もしくは未成年ではあるが保護者の同意がある場合には yes とします。これも no だとPixelaを使うことはできません。

このコマンドを実行すると、うまくいくと下のようなメッセージが表示されます。

{"message":"Success.","isSuccess":true}

いかにも成功感がありますね!

それでは続いて、グラフを新規登録しましょう。以下のコマンドを実行します。

pi graphs create -u a-know -g my-first-graph -n "My first graph" -i commits -t int -c shibafu -z "Asia/Tokyo"

コマンドの内容の解説は以下の通りです!

  • -u a-know
    • さきほど決めたユーザーIDです!
  • -g my-first-graph
    • グラフIDです!それっぽいものにしてください!
  • -n "My first graph"
    • グラフにつけられる名前です!
  • -i commits
    • グラフで扱う数字の単位です! kg とか m とか、好きな単位を指定してください!
  • -t int
    • グラフで扱いたい数値が整数なら int を、小数値なら float を、指定してください!
  • -c shibafu
  • -z "Asia/Tokyo"
    • いわゆるタイムゾーンってやつです!日本時間を基準にしたいなら -z "Asia/Tokyo" でよいです!

このコマンドの実行も success したら、試しにちょっと草を生やしてみましょう!以下のコマンドを実行します。

pi pixel post -u a-know -g my-first-graph -d 20190101 -q 5

コマンドの内容の解説は以下の通りです!

  • -u a-know
    • ユーザーIDです!
  • -g my-first-graph
    • さきほど決めたグラフIDです!
  • -d 20190101
    • 草を生やしたい日付を入力します!
  • -q 5
    • 記録したい数値を入力します!マイナス値でもOKです!

このコマンドもサクセスしたら、最後にグラフを見てみましょう!以下のコマンドを実行すると、

pi graphs detail -u a-know -g my-first-graph

実行結果として https://pixe.la/v1/users/a-know/graphs/my-first-graph.html のようなURLが表示されると思います!すると......?

f:id:a-know:20190224162330p:plain

おめでとうございます!! それでは pi とともに良い Pixela ライフを!!

(興味のある方向け)pi の開発について

開発に着手したのは2月の中旬(2月16日)くらいで、今の状態にまで出来上がったのが昨日くらい。jessevdk/go-flags べんり。

これまでにも↓のようなものは作ったことはあったのだけど、

blog.a-know.me

blog.a-know.me

a-knowkabu よりはいいものができたんじゃないかなーうれしいなー、というかんじです(pi がやってること自体は至極シンプルなのでドヤ顔できるようなものでは全くないのですが...)。

今回の実装は、同僚であり先輩エンジニアでもある id:Songmu さんのリポジトリ群、とくに Songmu/ghg を参考にしまくりました。

github.com

と、いうのも、a-knowkabu を作りながら「なんか、こうじゃないはずなんだよな...」という "しっくりきてなさ" も感じていて。一方で Songmu さんは、それこそ呼吸をするようにGoでいろんな便利ツールを作っているので、今回はいっそのこと、彼の作り方に完全に倣ってみよう、と思ったためです。コードやテストコードのみならず、Makefile の構成や書き方、果ては TravisYaml ファイルの書き方にいたるまで、大いに参考にさせてもらいました!

Makefile などのファイルを見ると、主体となるコードそのもの以外の、その周辺のこともすごくよく伝わってきました。Songmuさんは、普段こんなかんじに便利な道具を便利につかえるように整備して開発を進めているのか、と、一人感心しながら作業を進めていました。

macOS向けの homebrew による配布についても、結局さいごに行き着いたのはSongmuさんのリポジトリ。僕はここまでこっそり作業をしていたのに、彼はなぜかそれを察して前々日に Homebrewで自作ツールを簡単にインストール可能にする | おそらくはそれさえも平凡な日々 こういうエントリーをしれっと書いてくれたりして、すごすぎる。

...とまぁ、先人の知恵のおかげもあって、こうして pi をリリースすることができました。そう、先人の知恵といえば、直前に読んだ「UNIXという考え方」( 「UNIXという考え方」を読んだ - えいのうにっき )からもめっちゃ良い作用を受けられたと思ってます。

とはいえリリースして終わりではなくまだやりたいことがあって、トークンなどの情報を環境変数からだけではなく設定ファイルから( ~/.config/pi/config.yml みたいなところから)も読み込めるようにしたい、と思ってます!がんばるぞ!