エンジニア以外もバッチをたたけるようにしたい
例えば
- マスタデータを反映したりとか
- キャラクターデータをdevelopサーバーからstagingサーバーへ反映したいとか
- 時々サイトのバナーの画像を入れ替えたいとか
- etc,etc,etc
のようなちょっとした作業をバッチファイルにして持っているプロダクトは多いと思います。(僕の想像力が欠如しているのですが皆さんはきっといろいろ持っているでしょう)
で, 毎回この作業をするときに毎回エンジニアがなんか依頼されてsshで入ってバッチたたいてってめんどくさいじゃないですか。なんならssh入れるようにしたところで, わかんなーいこわーいとか言われるわけですよ。
なんか管理画面があってそれに毎回実装とかもめんどくさいじゃないですか, なんなら特定の環境でしか使わないこともあるわけで, 本番では出しません!とかもうUIつくるのすらめんどくさいじゃないですか。しかも使うのは月一以下だったりするわけですよ。
そういうちょっとしたたまにある作業に対しての一つの回答です。
非エンジニア向けバッチは全部Jenkinsにしなよ
Jenkinsなら簡単にwebGUIを作成できます。
作業サーバーをスレーブにしちゃえばそこにcloneしてもいいし, 最悪サービスを動かしているディレクトリ上で動かしてもOKです。
なんならパラメータを指定することもできます。
実行後に本当に実行していいのかの確認ボタンを出すこともできます。
1度方法を教えてしまえば全て使い方は一緒です。
メリット
- エンジニアはちょっと~これやってくださいよ~みたいなのが減る
- 非エンジニアは自分でできるようになるのでお願いするコミュニケーションコストが減る
ちょっと気を付けること
- 名前はわかりやすくしましょう。
- パラメータはできる限り減らしましょう。(増えると拒否感強くなる)
- このジョブを実行すると何が起こるのかをいつもより詳しく書きましょう。
- できれば一回(メインで使う人と)一緒にやってみましょう。
別にJenkinsである必要はないよ
僕がJenkinsが得意なので表題にはJenkinsと書いていますが, 他のCIツールでも大丈夫ですし, 当然Jenkins等のCIツール以外を使用することがいい結果になる場合もあります。
- ローカルで使うバッチ
- CIツールが基本サーバーなので各人のPCで動かすのは大変
- ダブルクリックでバッチファイル動かすとかでもいい
- Windowsなら簡単にC#でGUIが作れるので簡単にかぶせてもいい(バッチ呼び出しが少し面倒くさいけれど)
- CIツールが基本サーバーなので各人のPCで動かすのは大変
- グラフや集計
- DBのデータを加工したり検索するのはJenkins等のCIツールだけではちょっと辛い
- Re:dash,Superset等が適当
- DBのデータを加工したり検索するのはJenkins等のCIツールだけではちょっと辛い
- 3Dや2D等
- 3DならMayaやUnity等のスクリプトがいいことがある
- 2DならPhotoshop等のスクリプトがいいことがある
また, 利用人数が多いなどがあれば, 普通に管理画面等を作成したほうがいい場合も多いです。
言いたかったこと
コミュニケーションコストはエンジニアが減らせるよ!
そのために適当なツール使うと割と便利よ