ペパボに入っての半年間で感じたこと

この記事はPepabo Advent Calendar 2015の23日目の記事です。

※技術系のエントリではありません。
GMOペパボ株式会社に2015年7月に入社して半年間たちました。ムームードメインのエンジニアとして働いています。入社3ヶ月で試用期間が終わり、やっと半年経ち来月から有給休暇が付与されます。この半年で感じたことなどを書いていきます。

スピーディーなリリースに感動

SIerに近い仕事をしていた頃は以下の様な流れが普通でした。

1. 仕様書作成(Excel)
2. 仕様書レビュー
3. テスト設計書作成(Excel)
4. テスト設計書レビュー
5. 実装
6. コードレビュー
7. 詳細テスト(UNITテスト)
8. 結合テスト(人間)
9. リリース

新卒で入った会社はこれに加えて各セグメントで承認作業があり、承認されないと次に進めなかったので更に工程が多かったです。
それが今のチームに入ってからはほぼ以下の流れです。

1. コードを修正
2. コードレビュー
3. テストが通ればリリース

仕様書は基本作りません。大きなサービス改修や機能追加の時などは仕様書を作りますが、まだそのような案件の開発には携わっていません。
コードを書く際には必ずUNITテスト、可能ならばE2Eテストを書き、E2Eテストが通っているならばそれをエビデンスにすることで人間がテストをしなくても良いルールになっています。

スピードが命

とにかくスピードを第一に仕事をすることができ、自分にとってはやりやすいです。偶然見つけた小さな不具合などもPull Requestを出してOKが出れば即リリースできるので、ユーザの良くないサービス体験を素早く改善できるところが楽しいです。
(Excelで仕様書を作るような仕事はしたくないと思っていたので、そういう環境で働けて良かった。。)

エンジニアの人数が少ない

入社する前はこれだけ大規模なWEBサービスなのだから、エンジニアの数も相当いると思っていました。しかし入社してみると少数でした。ちなみに現在ムームードメインのエンジニアは3人です。

ムームードメインは10年以上稼働しているサービスで、安定しているサービスだと思いますが、日々何かしらの不具合があったり、要望の対応であったりとタスクは常に途絶えません。それには少ないエンジニアでもまわせていける仕組みがしっかりとしていると感じています。

Github Enterprise

一番は全社的にGithub Enterpriseで仕事を進めるという点。
マネージャ、ディレクター、デザイナー、カスタマーサービスでも全てGithubのIssueとPull Requestで作業を管理しています。部門ごとに、ここはExcelしかダメ、紙でしかダメなどの差異がなく、Githubで統一されているというのは非常に仕事を進めやすいです。 文章はmarkdownで書かないといけないですが、エンジニア以外も皆使いこなしているのがすごいと思いました。

ディレクターが統計のためにSQLが書けたり、R言語が書けたりと、全社的に枠にとらわれずに仕事していこうという姿勢が見えて非常に良いと感じています。

幅広い知識が必要

エンジニアが少ない分、フロントエンド・データベース・ネットワーク・インフラなどのサービスを構成しているものは全て知っていないとやっていけません。コーディングができるだけではダメで、むしろ前述の知識を集結してコーディングに反映するべきです。ペパボに入社する前まではインフラの仕事は全くやっていないのでゼロからのスタートでしたが、できなくてもやってみるという姿勢で取り組むことで少しずつ知識が付いていることを感じています。

ペパボのコンセプトである「 いるだけで成長できる環境 」という環境は十分にあると思いますので、あとは自分の仕事への取り組み方次第だと思います。

改善していこうという気持ち

ペパボはWEBサービスとして10年を超えているサービスがいくつかあります。ただサービスとして止まっているものはなく、常に改善していこうという姿勢を内部からでも感じることができています。
ホスティングサービスでは例として以下の様なサービス向上が最近でも行われています。

ロリポップ! - モジュール版PHPに対応 lolipop.jp

ムームードメイン − HTTP/2に対応 muumuu-domain.com

ヘテムル - PHP7の提供 heteml.jp

8日目の記事で @pyama86 さんが書いていますが、既存のメールベースでのエラーチェックをログベースに変え、本当に必要なもののみSlackに通知することで埋もれがちだったエラーを素早く察知することができサービス改善することができるようになりました。
tech.pepabo.com

自分が知らないサービス向上は他サービスにもたくさんあります。
WEB業界は止まれば終わりなので、そのつもりで自分も継続してサービス改善していきたいと思っています。

まとめ

1エンジニアの視点でペパボを見ていて感じた良い点を挙げてみました。
主にムームードメインの話になっていますが、Slackのいろいろなチャンネルを見たりすると活発に議論が行われていて素晴らしいと感じます。このエントリを見て、少しでもペパボに興味を持っていただけたなら幸いです。

Gitコマンドについて調べる【git fetch】

git fetch

git fetchは、リモートリポジトリの変更をローカルリポジトリに取り込みます。ローカルリポジトリには取り込みますが、ワーキングツリーには反映されませんので、現在編集中のファイルが変更されることはありません。

$ git fetch

引数なしで実行したとき、upstreamブランチの設定がない場合はデフォルトでoriginのリモートブランチをfetchします。リモートリポジトリ名、ブランチ名を指定する事もできます。

$ git fetch [リモートリポジトリ名]
$ git fetch [リモートリポジトリ名] [ブランチ名]

例)

$ git fetch origin
$ git fetch origin master

オプション

--all

すべてのリモートブランチをfetchします。

$ git fetch --all

-p--prune

リモートブランチで消去されたブランチをローカルブランチからも自動的に消すオプションです。masterブランチにマージされ消去したリモ^とブランチもgit fetchするだけではローカルブランチからは消えません。ですので-pまたは--pruneオプションでローカルブランチからも消去します。

$ git fetch -p
$ git fetch --prune

Gitを勉強するときに役立ったもの

Git勉強中ですが、いろいろなページやスライドを見てすごく参考になりましたのでまとめました。

Git入門編

この方のスライドは本当にわかりやすかったです。コマンドことに作業ディレクトリ、ステージングエリア、Gitディレクトリの流れを図で説明していただけるのでイメージを掴むことができました。

 
 
 
こちらのアシアルさんのブログ記事も非常にわかりやすかったです。以前はSubversionを使用していたので2つのいいとこ取りをしているというとことに納得でした!

blog.asial.co.jp

コマンド編

基本的なコマンドを知るにはドットインストールがいいと思いました。

dotinstall.com  
 
 
ブランチやmarge、rebaseの違いについて学ぶには以下のスライドわかりやすかったです。何よりスライドが見やすくて、スライドの作り方としても参考になるものでした。

 
 
 
transitive.info【Git 使い方 見出し一覧】はコマンドごとにオプションや使い方を記載しているので、とても参考になりました。

transitive.info - Git 使い方 見出し一覧  
 
 

本格的に学習する

書籍としてはGithub実践入門が入門書としては良いかと思います。

www.amazon.co.jp  
 
 
Pro Gitという書籍のPDFが無料で配布されていてとてもありがたいです。

Pro Git 日本語版電子書籍公開サイト  
 
 

その他

Gitチートシートもありましたので時々参考にしています!

ndpsoftware.com