OBONO’s Diary

へっぽこプログラマの戯言

Go 言語勉強の顛末 前編

いろいろなプログラミング言語が登場している昨今、いつまでも Java ばっかり書いてたら世の中に取り残されそうだ…という焦りから、別のプログラミング言語を勉強しようと思ったのは、まだ夏真っ盛りの暑い時期だった。(遠い目)

狙いを定めたのは Go 言語。早速、A Tour of Go を一通りやってみる。ふむふむ、なかなか面白いではないか。参考書「みんなの go 言語 現場で使える実践テクニック」を購入し、PC に環境をインストールし、いろいろ試してみる。
f:id:OBONO:20180912230727j:plain

そんな中、arduino-cli というものがリリースされたとの情報が入ってくる。どうやら Go 言語で動いているらしい。これって、Arduboy のソースコードもビルドできるんじゃね?
ということで、いろいろ試してみた結果、コマンドラインだけでビルドに成功。hex ファイルも生成してくれる。ヤッタネ。ただ、Arduino IDE 等でビルドした結果と異なるバイナリが吐かれるのだが、実機に転送して動かしてみた限りでは、特に気になる点はなかったので、まぁ、問題ないだろう。


ここで、ふと前々から気になっていた「GitHub で時々見かける、README.md に表示されてる素敵なマーク」の事が頭をよぎる。ああいうのが表示されてるリポジトリって、ちょっとカッコ良く見えるよね。
いろいろググった結果、Continuous Integration (継続的インテグレーション) 略して CI というものの一環らしい。へー。知らなかった。自分もやってみたいな…と思い、ちょっと深入りしてみる。

まずは、数ある CI サービスの中から Circle CI のアカウントを作成。ふむふむ、なるほど。Docker の技術を使って実現してるのね。Docker は数年前に仕事でちょろっと触ったことがあったので、当時の記憶を思い出しつつ、GitHub と Circle CI の連携をいろいろ試す。リポジトリに git push したら、それを契機に Circle CI 側でいろいろスクリプトが動いて、その実行結果がバッジに反映されるというわけか。

大まかな流れが把握できたので、PC に Docker が動かせる環境をインストール。Circle CI が提供している circleci/golang コンテナイメージを元に、arduino-cli と、Arduboy のソースをビルドするための諸々をかき集めたイメージを作成。このイメージ上でも Arduboy のソースのビルドが問題なくできるのを確認。イイネ。
このイメージを誰でも作れるように Dockerfile を書いて、GitHub で管理するようにする。加えて、このイメージを一般公開すべく、Docker Hub のアカウントを取得し、obono/arduboy-env という名前で docker push する。

諸々準備できたので、自分の Arduboy のソースコードを管理している GitHub リポジトリに .circleci/config.yml というファイルを追加。git push したら、ino ファイルが含まれるディレクトリひとつひとつに対して arduino-cli でビルドして回るよう仕立てる。すべてビルドが通れば、下の画像が緑色の "passing" になってくれる。

本当は、もっといろいろ素敵な事ができるとは思うのだが、自分にはこれで精一杯。

…ということで、Go 言語の勉強をしようと思ったら、なぜか GitHub に CI サービスと連携したバッジを載せることになったという話でした。

続く。


リンク