目次
概要
昨今のソフトウェアの開発速度がかなり早くなった要因の一つとして度々上げられるCI/CDについて今回は触れていきたいと思います。😄
内容
CI/CDとは?
今回はCI/CDを説明するわけではなく、これらの味見をしてみたのが主題です。
CI/CDがどんなものかわからない方はまず以下の記事から見ることをおすすめします。
CIのメリット
私が思うメリットデメリットを書くので、鵜呑みにはしないでいただきたいです。🙇
メリットはたくさんあると思います。以下列挙します。
- 自動化により時短可能
- 自動化により手の出しにくい単純作業も可能
- 複数人で開発をシェアしていた場合、環境違いによって動作しないという問題が起きにくい
- 人だと気づきにくい問題も発見可能
- 自動化の可能性は無限大
CIのデメリット
デメリットはあまりない気がしますが、強いてあげると以下です。
- 単純に学習コストが高いこと
- CIを書く時間が必要
以上のように、CIはメリットが大変多く、学習の時間を取れるのであれば、ぜひやったほうがいいことだと思います。👍
やらないほうがいいシーンとしては、納期が短いプロダクトに対して、一から勉強をしてCIを導入するということです。
基本的にはやったほうが良いですが、納期を考え、優先順位をつけることは大切です。
CIの味見
さて、CI/CDを味見すると言っても、何からすればいいのかわからない。という方が多いかと思います。
そこで私が今回手を出したのはgithub actionsというものです。
githubといえばopen sourceの開発をしている人、学生などはとても馴染みのあるシステムだと思います。
githubは元々ソフトウェアのバージョン管理システムであるgitをGUIで使いやすくするためのものなのですが、バージョン管理だけでなく、ここでCIを試せるようになっています。
具体的にどのようなことができるかと言うと、ubuntuの環境をクラウドでセットアップし、必要なソフトウェアをインストールして、ビルドテストをしてみる。みたいなことができるようになります。
具体的に私が実践したものをお見せします。
今回試したのは、spell checkのCIです。
プログラムを書いていて、タイピングミス (typo)でエラーになって動かない。なんてことよくあると思います。
しかし、通常のspell check (vscodeのこれとか)だと自分の定義した変数名とかまでは追ってくれないので、あまり役に立ちません。そこで、自身の環境に合わせたオリジナルのspell checkがあると便利です。
spell checkの結果は以下のように見れます。
以下がCI部分のコードです。
name: Check spelling on: pull_request: jobs: spellcheck: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Retrieve spell check dictionary run: | curl --silent --show-error \ --output .github/workflows/.cspell.json \ https://raw.githubusercontent.com/1222-takeshi/sample_spell_dict/main/cspell/.cspell.json - uses: streetsidesoftware/cspell-action@v1.3.4 with: config: ".github/workflows/.cspell.json"
上のソースコードでは何をやっているかと言うと、pull requestが出るたびにクラウド環境にubuntuをセットアップし、ここのファイルを取得して、spell checkを行います。
このとき、参照ファイルで定義されたワード以外のものが使われているとCIがfailします。
このコードを自分のリポジトリの.github/workflows/
内に置くことでCIを試せます。
↓元のディレクトリ
https://github.com/1222-takeshi/sample-github-workflow
オリジナルのspell checkファイルはここを参考に作れます。
https://github.com/1222-takeshi/sample_spell_dict
まとめ,感想
今回は昨今の開発効率向上に大きく貢献している自動化ツールであるgithub actionsを触ってみて、CIの便利さを感じました。
上記のリポジトリにはまだspell checkしか入ってないですが、サンプルとして他のCIも試してみる予定です。