突撃!隣の開発環境 パート7【永和システムマネジメント編】
こんにちは!おおはしりきたけです。パート7の今回は、アジャイル開発で受託開発を行ったり、アジャイルのコーチングやidobataというグループチャットアプリなどの開発も行っている永和システムマネジメントのアジャイル事業部にお邪魔しました。インタビューに答えてくださったのは、Idobataエンジニアの寺田さんと、受託開発でエンジニアをやられている松島さんです。
突撃!隣の開発環境とは
技術事例やノウハウなどは、ブログや勉強会などで共有されることが多いと思います。しかし、各社の開発環境や開発体制などは意外と共有されていないこと多いと思います。ノウハウの流出になるかもしれませんが、それ以上に、より良い開発を目指している会社さん同士で情報交換を行い、良いチーム、良いプロダクトを作っていくという志の会社さんの為の情報共有のための企画になります。開発環境や開発体制なども技術領域によっても変わってくると思いますが、この突撃!隣のシリーズでは様々な会社さんのイケてるツールの使い方や、仕事が捗る開発体制についてインタビューを行っていく予定です。
永和システムマネジメント紹介
どんなことをやっているのか?
永和システムマネジメントのアジャイル事業部(以下永和さん)では「私たちのやり方で同じ志を持つ仲間とお客さまへの共感をもってソフトウェア開発を続けていく」というビジョンを掲げており、アジャイル事業部の事業計画書はPDFで公開されています。オブジェクト倶楽部(通称オブラブ)は私が新人エンジニアの頃非常にお世話になりました。2006年頃からRubyやアジャイルを取り入れた開発を行い、アジャイル開発といえば永和さんが思い浮かぶ方も沢山いるのではないでしょうか。先月オフィスも神田に移転され、秋葉原にあるクラスメソッドとはご近所さんです。
開発環境について
まずは、永和さんの開発環境について色々と伺っていこうかと思います。
開発言語
アジャイル事業部では、基本的にRuby(Rails)が利用されており、Ruby×Agileにと事業計画書にも書かれている通り、Rubyに特化して開発を行っています。
開発端末
入社時に希望のPCを購入することができ、60%はMacを利用していますが、20%はLinux、20%がWindowsを利用しているとのことでした。インタビューさせて頂いた、寺田さんと松島さんもLinuxを利用しているということでした。基本的にターミナルでの作業になるので、Linuxが一番適しているんだと思います。
キーボードやマウス(トラックパッド)なども購入してくれるとのことでした。写真はKinesisキーボード
コミュニケーションツール
プロジェクトを円滑にするために様々なコミュニケーションツールを使うことになります。チャットやチケットの管理などどのように行っているのか聞いてみました。
チャットツール
社内としては、Idobataを利用しており、Idobataの開発では勿論、Idobataを使っているとのことでした。受託開発の場合は、ユーザーさんに合わせる形が多いですが、新規のプロジェクトの場合などはIdobataを推奨することも多いようです。チャットでは、雑談は勿論、設計や相談事の議論も行われますし、CIの結果や、PRなど頻繁に飛ぶことも多いとのことでした。Idobataの開発はリモートで行われており、その他のツールとしてハングアウトを使って会話をすることもあるということでした。
プロジェクト管理ツール
Idobata開発チームではTrelloを使ってタスクの管理を行っており、受託開発の場合はこちらもユーザーさんに合わせることも多いですが、Pivotal TrackerやRedmineなどを使って管理されていることも多いとのことでした。最近では、githubのIssueで、ZenhubやWaffle.ioでタスクカンバン化することもあるとのことです。定番のポストイット等でタスクカンバンで管理されいることもあるようです。カンバンは見えやすいですからタスクの管理には非常に便利だと思います。
リポジトリ
基本的にgithubを使うことが多くIdobata開発チームではgithub、受託開発でも基本的にgitlhubを使うことが多くなってきていますが、昔からのプロジェクトなどはsvnで管理していることもあるとのことでした。Idobataでは公開リポジトリもあり、Idobataをhookするためのツールidobata-hooksなどが公開されています。
自動化ツール
CI環境は、基本的にJenkinsを使っている所が多いとのことでした。Jenkinsの使い方としては、テストの自動化は勿論のこと、テストのメトリクスを生成してIdobataにPushしたり、Idobataへhookさせるためのツールとして利用していることも多いとのことでした。最近では、いくつかのプロジェクトでCircle CIを使い始めたとのことでした。
開発体制
開発チーム
永和さんのアジャイル事業部では、現在26名おり、ほとんどの方がエンジニアということでした。Idobataのチームは現在は2名で開発しており、リモートワークでの開発を行っているということでした。受託チームでは、クライアントさんと一緒にチームを作って開発することが多く、チームの単位は3名程度ということでした。Scrumでは3〜9名というのがチームとして適切なメンバーということですが、実際は3〜5名くらいが動きやすいチームメンバー数だと思っています。勿論プロジェクトによって変わってくるものだと思いますが、長年アジャイルをやっている永和さんだからこそ、最適なチームメンバー数で適宜チームを回していってるんだなと思いました。
写真は、社内で開発を行っているエンジニアさん。
開発プロセスについて
私の勝手なイメージで永和さんはバリバリのScrum開発を行っていると思っていたんですが、基本はアジャイル開発ですが、プロジェクトに合わせた形でScrumでやっているチームもあれば、カンバン方式でプロジェクトを進めているチームもあったりということでした。基本的にはデイリーで朝会と夕会を行い、タスクを消化していくという部分を基本に、Scrumをやっているチームは2週間のスプリントを回したりながらやっているとのことでした。Idobataチームは、リモートワークメインの為、Trelloを使ってカンバン方式で進めているとのことでした。
Scrumではイベントが多く、開発者に対して負担になることは無いかとお聞きした所、確かにイベントは多いけど、スプリント毎にゴールがあるので、開発にリズムがでる、スクラムイベントにミーティングが集中するので、実は開発している時間が取れているというお話を聞いてなるほどなと思いました。
コミュニケーションについて
Idobataチームはリモートで行われているため、かなりコミュニケーションには気を使っているとのことでした。ソースコードレビューなどは、文字では伝わりにくいことも多いため、直接Googleハングアウトで会話しながらやりとりをしたり、ペアプロなどどうやっているのかと聞いた所、Googleハングアウトの画面共有ではどうしてもモッサリしてしまうので、ターミナルを共有するツールを自作したとのことでした。こちらはIdobataのgithub内にhokaidoという名前で公開されています。
また、チャットでのやりとりが多いので、文字でのコミュニケーションを意識しているとのことでした。例えば「言葉じりに気をつける」「ダジャレを言う」「絵文字を使う」という工夫をしているそうです。またgithubへのPullRequestに対するOKコメントであるLGTM(looks good to me)の画像なども面白い画像を使って、コードレビューの終わりにめでたさを伝えたりするそうです。確かに文字のコミュニケーションは言葉の温度感や空気感などが伝わりにくいので、文字でのコミュニケーションは工夫が必要だと思います。Idobata開発者の寺田さんが言っていた、コミュニケーションはハイコンテクストにしないといった言葉が非常に印象的で、日本では、空気読んだり、あうんの呼吸みたいなことを求めがちですが、細かいニュアンスの違いもでるので、主語と目的を伝えることを意識しているとのことでした。
リモートでは、音声が非常に重要ということですので、機器にもこだわっており以下の機器を使って音声のやりとりをスムーズにしているとのことでした。Skypeなどでやりとりしているとノイズが入るので、度々聞き返すこともありますが、ノイズはコミュニケーションの妨げでしかないので機器を使って、気持ちいいコミュニケーションを取るのも非常に重要だと思います。
会議用マイクスピーカー:PJP-10UR Googleハングアウトに使っている会議用マイクスピーカーで、指向性マイクとノイズリダクション、エコーキャンセラをそなえており、リモートでもクリアな音声のやりとりができてとても快適とのことです。話す人が複数人いる場合には、マイクが3方向についている PJP-20UR を使用しているということでした。PJP-20URは弊社でもリモートのやりとりで利用していることが多いです。
ノイズキャンセリングヘッドホン:Bose QuietComfort 25: 普段は、上記のマイクスピーカーだけで問題無いのですが、まわりの騒音が気になるときや、集中して会話したいときには重宝しているとのことでした。
テストについて
ほぼRubyなので、ユニットテストではRSpecを使ってテストが多く、受け入れテストはCucumberを使ってテストを行っているとのことです。CucumberとRSpecではテストするレイヤーが異なるということで、内部仕様をRSpecで,外部仕様をCucumberでテストしているようです。テストの書式はCucumberにより拡張されたGherkin書式で書いているとのことでした。
その他
永和さんではその他情報共有のために以下のような勉強会や共有会を行っているとのことでした。
60ミニッツ
月1で事業部で集まる日が決まっており、その時に社内勉強会が行われており、入社したメンバーが持ち回りで入社直後の方に話をする会などが開かれているとのことです。
読書会
不定期で行われており、技術メンバーが集まり読書会を行っていることも多いとのことでした。写真は永和さんのメンバーの方が執筆、翻訳した本になります。僕もアジャイル系の本はひと通り読ませていただいております。
今回登場したツール
コミュニケーション
- チャット:idobata
- チャット:ハングアウト
- リポジトリ:github
- カンバン:ZenHub
- カンバン:waffle.io
- 会議用マイクスピーカー:PJP-10UR
- ノイズキャンセリングヘッドホン:Bose QuietComfort 25
自動化
テスト
※永和システムマネジメントさんでは、上記以外にも様々なツールを利用しております。上記はインタビュー時に伺った内容のものを記載しています。
まとめ
第7回目は永和さんに突撃させてもらいました。2006年からアジャイル開発をはじめてますが、今はプロセスを上手に適用して非常に良い開発ができていると感じました。プロセスはあくまでプロセスで「良い物を作りたい」というエンジニアの志が高く、その中で創意工夫を繰り返しながら今のスタイルになってきたんだと感じました。Idobataにはロールといったものがありません。ポリシーですか?と寺田さんにさんに尋ねたら「XPのマインドが入っています」と笑顔で答えてくれたのが印象的でした。
最後に写真を取らせていただきました。左から木下さん、寺田さん、松島さん、そして私です。お忙しいところありがとうございました!!
参考リンク