今どきのキャッチアップの開発環境~キャッチアップのハイパーくまさんこと内場が紹介します~
こんにちは、内場です。
最近ブログで腰痛のとこととか椅子のこととか書いてもらってましたが、おかげさまで割と復活してきました。子供とアグレッシブな遊びが出来るまでもうちょっとなんですが、程々にやってます。そんな腰痛騒動から早3ヶ月、キャッチアップに入社してからはもう半年が経ちました。時が経つのは早いですね〜
PHPフレームワーク
キャッチアップでは主に CakePHP を使ってアプリケーション開発を行ってます。
私、EC-CUBE や WordPress 等のオープンソースアプリケーションのカスタマイズの経験はあったんですけど、キャッチアップに入社するまでフレームワーク自体そこまで使ったことありませんでした。
フレームワークの経験がほぼなかったので技術をつけたい!って思ってキャッチアップ入社を決めたって一面もあったり。
で、半年くらい使ってきた CakePHP ですが、他のフレームワークと比べると学習コストが低いと挙げられている通り、フォルダ構成とルーティングあたりがわかれば、基本的な MVC 構造は割とすぐに書けるようになる印象です。
さらに認証とかフォームのバリデーション等、よく使うコンポーネントがあらかじめ準備されているのも便利ですし時間の短縮になります。
キャッチアップが開発元となっている baserCMS も、CakePHP を利用しています。
最近では CakePHP3 を触る機会も貰って開発してます。
最新フレームワークはまた一段と楽しいですね〜
MAMPやVagrantを使ったローカル開発環境
キャッチアップでは、開発を行う際、基本的に開発環境を自分のローカルPC上に準備します。
サクッと準備する時は MAMP、サーバー要件に沿って環境を準備するときは VM(Virtual Machine) で構築します。
さらに複数人で VM 使うときは Vagrant で構築する環境要件を共有します。
MAMP は Mac OS 上に LAMP 環境をまとめて作れるツールで、 Windows では XAMPP を使われてる方が多いかと思います。
気軽にローカルで開発するときはホントに重宝しますね。
でも欠点として個々人のPCの環境に依存しちゃうケースがあります。
Vagrant は VirturalBox 等の仮想マシン上に仮想環境を構築する際のヘルプツールです。
複数人で開発する際に仮想環境の環境を簡単に共有することができるので便利です。
また MAMP と違って開発環境を同時にいくつも立てることが可能なので、
たとえば PHP のバージョンが少しずつ違う仮想マシンを複数台同時に起動なんてことも設定ファイルを準備したら可能です。
おかげでここ半年くらいでインフラ周りも少し強くなれました。
まだ手は出せてないけどサーバー周りの自動化ツールとか、仮想環境だったら Docker とかも機会を見つけて触れてみたいです。
MAMPやVagrantを使ったローカル開発環境 PHPUnitを利用した単体テスト
毎回ではないけど PHPUnit を使用して単体テストを行いながら開発を進めるケースもあります。
PHPで動作テストを行うと言えば・・・
手作業でブラウザからURLを叩いて 〜 フォームに値を入れて 〜 送信して 〜 エラーがなければデータベースを確認して 〜
って感じで行うことが多いかと思います。
フォームの項目が多い時や仕様がちょこちょこ変わって繰り返しテストが発生した時とか萎えます。
PHPUnit 等のテストツールだとメンドウなテストを自動化できるんで結構楽できます。
事前に「この入力が来たらこのように出力する」等のテストコードを準備する必要がありますが、一度準備すれば後は何度でも利用可能なので、影響範囲が大きいプログラムを修正した後に、改めて全体的にテストを実行する際に自動で行うことが可能になります。
また他の機能を追加したことによるデグレ対策にも役立ちます。
使ってみた印象としては、手作業のテストに加えてさらに安心感が得られるな〜なんて思ってます。
テストコード自体がテストの仕様書になるのでその点もいいですねー。
プルリクエスト
これも毎回じゃないけど、人数が多いプロジェクトになるとプルリクベースで作業が進みます。
GitHub、Backlog、Bitbucket あたりで課題チケットと連携させて使用してます。
よくあげられてるメリットとして・・・
・課題ごとのパッチファイルを作成するので(基本的に)他の課題に影響しない
・コードのレビューをしてもらえる
なんてのがあるようですけどまさにその通りで、やってるとなかなか心地良かったりします。
キャッチアップに入るまでは個人用以外に Git を使う場面がなかったんですが、なんだか意識高い系エンジニアになった気分です(笑)
まとめ
紹介したのはごく一部なのですが、キャッチアップでは働き方や開発環境、PCナドナド…で
新しいやり方や環境を積極的に取り込んでます。
手をあげたら採用されやすい職場環境ですので、新しいもの好きのエンジニアにとって働きやすい環境かと思います。
関連リンク
CakePHP:http://cakephp.org
baserCMS:http://basercms.net
MAMP:https://www.mamp.info/en/
Vagrant:https://www.vagrantup.com
VirtualBox:https://www.virtualbox.org
PHPUnit:https://phpunit.de
GitHub:https://github.com
Backlog:http://www.backlog.jp
Bitbucket:https://bitbucket.org
Git:https://git-scm.com