自社の辛みが見えてきた話
みなさんこんばんは。ぐーどらです。
6月ですね。1月7日からエンジニアしてるので、まるまる5ヶ月経ったことになります。感慨深い。これくらい働いていると、あれだけいい会社だと思えていた自社にもいくつか不満点が出てくるわけでして、この前ついついTwitterで聞いてみてしまいました。
テストコードが無い職場でcodeceptionの導入をやって、受け入れテストのテストコード書く業務を担当させられるようになった話って需要あります?
— ぐーどらくらんち (@gulDra_cranch) 2019年5月29日
反応もいただき、やはりつらたみは様々な人と共有するといいのかもと思ったので、記事にしていこうと思います。オラワクワクしてきたぞ!
さーて、先週のぐーどらさんは!
- 私だけがテスト書いてどうすんだ
- やはりそのデプロイ先は間違っている
- この素晴らしいAWSに祝福を!
私だけがテスト書いてどうすんだ
前回の記事に経緯を書いたとおり、1人でcodeceptionの導入を行いました。
先週も1人で受け入れテストを書いていました。
そう、1人で。おかげで僕はcodeceptionのSeleniumを使うブラウザテストに対しての知見は少しずつ溜まってきました。が、それは社内に僕1人なのです。
自動テストを運用するようになったとしても、メンテナンスする要員が自分一人になりそうな予感がプンプン…さらに自分自身がテストを書いた経験が豊富ではないことも重なり、(本当にこういうテストでいいのか?)という疑問が常に付き纏っています。
どう実装するのが正解なのかわからないため、プロジェクトにとって有益なテストコードをかけているのか、自社に対して有益なコードを書けているのかとても不安になります。
どうすべきか
とりあえず単体テストと機能テストは諦めました。単体テストはそもそも書けるコードになっていないですし、機能テストはそもそも私自身が書き方がわからないためです。
そのため設定と実行環境を整えられれば簡単に走らせることができるweb driverを使う受け入れテストを書くことにしました。
それだけでも結構バグを見つけられるようになっており、テストやってよかったと実感します。なにより回帰テストの時間=テストコードの実行時間なのもいいですね。
しかし、この状況からテストコードを全員でメンテナンスする文化にする問題は、明らかに自分だけでは解決できない問題なので、まずはコミュニティに頼ることにしました。6/14にYYPHPにお邪魔して、テストに関しての知見を伺おうと思います。
あとは月並みですが、テストに関する書籍やQiitaの記事をあたろうと思います。
あとは現状の1人で実行している状況がまず辛いので、CIツールをプロジェクトに導入してもらえるよう働きかけていきたいと思います。
やはりそのデプロイ先は間違っている
はい、弊社ではCIツールが使われていません。Jenkinsでさえも。
デプロイ方法はscpソフトによる手動です。言語がPHPであるため、静的webサイト感覚でデプロイ出来てしまうのが仇となりました。
走っているプロジェクトは複数ありますが、自社開発ゆえ使われているフレームワークは1つ。つまるところ、複数あるプロジェクトが同じディレクトリ構成で、全く違う内容で同じ名前のファイルが存在したりする環境を手動で選び、デプロイする作業が発生します。
入社当初は2ヶ月くらいはアップロード先が違う!を何回やらかしたことか、、、
あと開発環境からステージング環境、本番環境へのデプロイも手動なの結構笑えません。せめてバージョン管理をSVNからGitにして、マージしません、、、?差分比較も別のツール使わずに、GitのGUIクライアントで出来ますよ…
どうすべきか
CIツールだ。入れさせよう(血眼
CircleCIならSVN使えないから丁度いいと思っているのですが、TravisCIもかなりシェアを握っていると聞いています。CIツールの選定時、何を比較すればいいか詳しい方いらっしゃいましたら、是非教えてください。
この素晴らしいAWSに祝福を!
なんで本番環境のデータベースがEC2インスタンスに構築されたMySQLなんでしょう、、、
その他のサーバーも全てEC2インスタ上に乗せただけなので、多分今やってることを全部ASに載せ替えたら、色々管理してることをAWSが負担してくれるんじゃないかな…と思っています。悲しい。
どうすべきか
AWSに詳しくないので、どこかでどう間違っているという指摘が出来ません。悔しいのですが自分が学習する以外に打開策が思いつかない。学習して〜なメリットがあります!と明確に提示できるようになれば、初めて交渉のステージに立てるようになると思うので、現状は自分の実力不足としか言いようがない。
ですが、AWSインフラに口出し出来るようになれば、他社から見ても魅力的な人材なのでは?を胸に今後も頑張ろうと思います。
今後やっていくこと
- 個人開発でCIツールを使い、いい感じでGitのコミットをトリガーに自動テスト、自動デプロイできるようにする。
- AWS。スコープがでか過ぎるので、まずはデータベースから。せめてS3から学習する。ゴールはもう少し楽に運用できる状態にすること。
幸いなことは、ブラックな会社ではないことで、頭ごなしに「働けーーー!!」ではないところ。
いい感じに緩く、成果で判断される職場なので、今後も緊張感持ってエンジニアやっていきたいと思います。
実績作らなきゃ転職しようにもできませんしね。